| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | /*CryptoJS v3.1.2code.google.com/p/crypto-js(c) 2009-2013 by Jeff Mott. All rights reserved.code.google.com/p/crypto-js/wiki/License*/(function () {    // Shortcuts    var C = CryptoJS;    var C_lib = C.lib;    var WordArray = C_lib.WordArray;    var C_enc = C.enc;    /**     * UTF-16 BE encoding strategy.     */    var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {        /**         * Converts a word array to a UTF-16 BE string.         *         * @param {WordArray} wordArray The word array.         *         * @return {string} The UTF-16 BE string.         *         * @static         *         * @example         *         *     var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);         */        stringify: function (wordArray) {            // Shortcuts            var words = wordArray.words;            var sigBytes = wordArray.sigBytes;            // Convert            var utf16Chars = [];            for (var i = 0; i < sigBytes; i += 2) {                var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;                utf16Chars.push(String.fromCharCode(codePoint));            }            return utf16Chars.join('');        },        /**         * Converts a UTF-16 BE string to a word array.         *         * @param {string} utf16Str The UTF-16 BE string.         *         * @return {WordArray} The word array.         *         * @static         *         * @example         *         *     var wordArray = CryptoJS.enc.Utf16.parse(utf16String);         */        parse: function (utf16Str) {            // Shortcut            var utf16StrLength = utf16Str.length;            // Convert            var words = [];            for (var i = 0; i < utf16StrLength; i++) {                words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);            }            return WordArray.create(words, utf16StrLength * 2);        }    };    /**     * UTF-16 LE encoding strategy.     */    C_enc.Utf16LE = {        /**         * Converts a word array to a UTF-16 LE string.         *         * @param {WordArray} wordArray The word array.         *         * @return {string} The UTF-16 LE string.         *         * @static         *         * @example         *         *     var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);         */        stringify: function (wordArray) {            // Shortcuts            var words = wordArray.words;            var sigBytes = wordArray.sigBytes;            // Convert            var utf16Chars = [];            for (var i = 0; i < sigBytes; i += 2) {                var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);                utf16Chars.push(String.fromCharCode(codePoint));            }            return utf16Chars.join('');        },        /**         * Converts a UTF-16 LE string to a word array.         *         * @param {string} utf16Str The UTF-16 LE string.         *         * @return {WordArray} The word array.         *         * @static         *         * @example         *         *     var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);         */        parse: function (utf16Str) {            // Shortcut            var utf16StrLength = utf16Str.length;            // Convert            var words = [];            for (var i = 0; i < utf16StrLength; i++) {                words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));            }            return WordArray.create(words, utf16StrLength * 2);        }    };    function swapEndian(word) {        return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);    }}());
 |