| ;(function (root, factory) { | 
|     if (typeof exports === "object") { | 
|         // CommonJS | 
|         module.exports = exports = factory(require("./core")); | 
|     } | 
|     else if (typeof define === "function" && define.amd) { | 
|         // AMD | 
|         define(["./core"], factory); | 
|     } | 
|     else { | 
|         // Global (browser) | 
|         factory(root.CryptoJS); | 
|     } | 
| }(this, function (CryptoJS) { | 
|   | 
|     (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); | 
|         } | 
|     }()); | 
|   | 
|   | 
|     return CryptoJS.enc.Utf16; | 
|   | 
| })); |