UNPKG

hybridstart

Version:

A hybrid application development framework

1,126 lines (1,097 loc) 113 kB
/* app JS SDK Version:2.4.0 update: 移除app.ajax错误检查 date:2018-04-27 * /*! Sea.js 2.2.1 | seajs.org/LICENSE.md */ !function(a,b){function c(a){return function(b){return{}.toString.call(b)=="[object "+a+"]"}}function d(){return A++}function e(a){return a.match(D)[0]}function f(a){for(a=a.replace(E,"/");a.match(F);)a=a.replace(F,"/");return a=a.replace(G,"$1/")}function g(a){var b=a.length-1,c=a.charAt(b);return"#"===c?a.substring(0,b):".js"===a.substring(b-2)||a.indexOf("?")>0||".css"===a.substring(b-3)||"/"===c?a:a+".js"}function h(a){var b=v.alias;return b&&x(b[a])?b[a]:a}function i(a){var b=v.paths,c;return b&&(c=a.match(H))&&x(b[c[1]])&&(a=b[c[1]]+c[2]),a}function j(a){var b=v.vars;return b&&a.indexOf("{")>-1&&(a=a.replace(I,function(a,c){return x(b[c])?b[c]:a})),a}function k(a){var b=v.map,c=a;if(b)for(var d=0,e=b.length;e>d;d++){var f=b[d];if(c=z(f)?f(a)||a:a.replace(f[0],f[1]),c!==a)break}return c}function l(a,b){var c,d=a.charAt(0);if(J.test(a))c=a;else if("."===d)c=f((b?e(b):v.cwd)+a);else if("/"===d){var g=v.cwd.match(K);c=g?g[0]+a.substring(1):a}else c=v.base+a;return 0===c.indexOf("//")&&(c=location.protocol+c),c}function m(a,b){if(!a)return"";a=h(a),a=i(a),a=j(a),a=g(a);var c=l(a,b);return c=k(c)}function n(a){return a.hasAttribute?a.src:a.getAttribute("src",4)}function o(a,b,c){var d=S.test(a),e=L.createElement(d?"link":"script");if(c){var f=z(c)?c(a):c;f&&(e.charset=f)}p(e,b,d,a),d?(e.rel="stylesheet",e.href=a):(e.async=!0,e.src=a),T=e,R?Q.insertBefore(e,R):Q.appendChild(e),T=null}function p(a,c,d,e){function f(){a.onload=a.onerror=a.onreadystatechange=null,d||v.debug||Q.removeChild(a),a=null,c()}var g="onload"in a;return!d||!V&&g?(g?(a.onload=f,a.onerror=function(){C("error",{uri:e,node:a}),f()}):a.onreadystatechange=function(){/loaded|complete/.test(a.readyState)&&f()},b):(setTimeout(function(){q(a,c)},1),b)}function q(a,b){var c=a.sheet,d;if(V)c&&(d=!0);else if(c)try{c.cssRules&&(d=!0)}catch(e){"NS_ERROR_DOM_SECURITY_ERR"===e.name&&(d=!0)}setTimeout(function(){d?b():q(a,b)},20)}function r(){if(T)return T;if(U&&"interactive"===U.readyState)return U;for(var a=Q.getElementsByTagName("script"),b=a.length-1;b>=0;b--){var c=a[b];if("interactive"===c.readyState)return U=c}}function s(a){var b=[];return a.replace(X,"").replace(W,function(a,c,d){d&&b.push(d)}),b}function t(a,b){this.uri=a,this.dependencies=b||[],this.exports=null,this.status=0,this._waitings={},this._remain=0}if(!a.seajs){var u=a.seajs={version:"2.2.1"},v=u.data={},w=c("Object"),x=c("String"),y=Array.isArray||c("Array"),z=c("Function"),A=0,B=v.events={};u.on=function(a,b){var c=B[a]||(B[a]=[]);return c.push(b),u},u.off=function(a,b){if(!a&&!b)return B=v.events={},u;var c=B[a];if(c)if(b)for(var d=c.length-1;d>=0;d--)c[d]===b&&c.splice(d,1);else delete B[a];return u};var C=u.emit=function(a,b){var c=B[a],d;if(c)for(c=c.slice();d=c.shift();)d(b);return u},D=/[^?#]*\//,E=/\/\.\//g,F=/\/[^/]+\/\.\.\//,G=/([^:/])\/\//g,H=/^([^/:]+)(\/.+)$/,I=/{([^{]+)}/g,J=/^\/\/.|:\//,K=/^.*?\/\/.*?\//,L=document,M=e(L.URL),N=L.scripts,O=L.getElementById("seajsnode")||N[N.length-1],P=e(n(O)||M);u.resolve=m;var Q=L.head||L.getElementsByTagName("head")[0]||L.documentElement,R=Q.getElementsByTagName("base")[0],S=/\.css(?:\?|$)/i,T,U,V=+navigator.userAgent.replace(/.*(?:AppleWebKit|AndroidWebKit)\/(\d+).*/,"$1")<536;u.request=o;var W=/"(?:\\"|[^"])*"|'(?:\\'|[^'])*'|\/\*[\S\s]*?\*\/|\/(?:\\\/|[^\/\r\n])+\/(?=[^\/])|\/\/.*|\.\s*require|(?:^|[^$])\brequire\s*\(\s*(["'])(.+?)\1\s*\)/g,X=/\\\\/g,Y=u.cache={},Z,$={},_={},ab={},bb=t.STATUS={FETCHING:1,SAVED:2,LOADING:3,LOADED:4,EXECUTING:5,EXECUTED:6};t.prototype.resolve=function(){for(var a=this,b=a.dependencies,c=[],d=0,e=b.length;e>d;d++)c[d]=t.resolve(b[d],a.uri);return c},t.prototype.load=function(){var a=this;if(!(a.status>=bb.LOADING)){a.status=bb.LOADING;var c=a.resolve();C("load",c);for(var d=a._remain=c.length,e,f=0;d>f;f++)e=t.get(c[f]),e.status<bb.LOADED?e._waitings[a.uri]=(e._waitings[a.uri]||0)+1:a._remain--;if(0===a._remain)return a.onload(),b;var g={};for(f=0;d>f;f++)e=Y[c[f]],e.status<bb.FETCHING?e.fetch(g):e.status===bb.SAVED&&e.load();for(var h in g)g.hasOwnProperty(h)&&g[h]()}},t.prototype.onload=function(){var a=this;a.status=bb.LOADED,a.callback&&a.callback();var b=a._waitings,c,d;for(c in b)b.hasOwnProperty(c)&&(d=Y[c],d._remain-=b[c],0===d._remain&&d.onload());delete a._waitings,delete a._remain},t.prototype.fetch=function(a){function c(){u.request(g.requestUri,g.onRequest,g.charset)}function d(){delete $[h],_[h]=!0,Z&&(t.save(f,Z),Z=null);var a,b=ab[h];for(delete ab[h];a=b.shift();)a.load()}var e=this,f=e.uri;e.status=bb.FETCHING;var g={uri:f};C("fetch",g);var h=g.requestUri||f;return!h||_[h]?(e.load(),b):$[h]?(ab[h].push(e),b):($[h]=!0,ab[h]=[e],C("request",g={uri:f,requestUri:h,onRequest:d,charset:v.charset}),g.requested||(a?a[g.requestUri]=c:c()),b)},t.prototype.exec=function(){function a(b){return t.get(a.resolve(b)).exec()}var c=this;if(c.status>=bb.EXECUTING)return c.exports;c.status=bb.EXECUTING;var e=c.uri;a.resolve=function(a){return t.resolve(a,e)},a.async=function(b,c){return t.use(b,c,e+"_async_"+d()),a};var f=c.factory,g=z(f)?f(a,c.exports={},c):f;return g===b&&(g=c.exports),delete c.factory,c.exports=g,c.status=bb.EXECUTED,C("exec",c),g},t.resolve=function(a,b){var c={id:a,refUri:b};return C("resolve",c),c.uri||u.resolve(c.id,b)},t.define=function(a,c,d){var e=arguments.length;1===e?(d=a,a=b):2===e&&(d=c,y(a)?(c=a,a=b):c=b),!y(c)&&z(d)&&(c=s(""+d));var f={id:a,uri:t.resolve(a),deps:c,factory:d};if(!f.uri&&L.attachEvent){var g=r();g&&(f.uri=g.src)}C("define",f),f.uri?t.save(f.uri,f):Z=f},t.save=function(a,b){var c=t.get(a);c.status<bb.SAVED&&(c.id=b.id||a,c.dependencies=b.deps||[],c.factory=b.factory,c.status=bb.SAVED)},t.get=function(a,b){return Y[a]||(Y[a]=new t(a,b))},t.use=function(b,c,d){var e=t.get(d,y(b)?b:[b]);e.callback=function(){for(var b=[],d=e.resolve(),f=0,g=d.length;g>f;f++)b[f]=Y[d[f]].exec();c&&c.apply(a,b),delete e.callback},e.load()},t.preload=function(a){var b=v.preload,c=b.length;c?t.use(b,function(){b.splice(0,c),t.preload(a)},v.cwd+"_preload_"+d()):a()},u.use=function(a,b){return t.preload(function(){t.use(a,b,v.cwd+"_use_"+d())}),u},t.define.cmd={},a.define=t.define,u.Module=t,v.fetchedList=_,v.cid=d,u.require=function(a){var b=t.get(t.resolve(a));return b.status<bb.EXECUTING&&(b.onload(),b.exec()),b.exports};var cb=/^(.+?\/)(\?\?)?(seajs\/)+/;v.base=(P.match(cb)||["",P])[1],v.dir=P,v.cwd=M,v.charset="utf-8",v.preload=function(){var a=[],b=location.search.replace(/(seajs-\w+)(&|$)/g,"$1=1$2");return b+=" "+L.cookie,b.replace(/(seajs-\w+)=1/g,function(b,c){a.push(c)}),a}(),u.config=function(a){for(var b in a){var c=a[b],d=v[b];if(d&&w(d))for(var e in c)d[e]=c[e];else y(d)?c=d.concat(c):"base"===b&&("/"!==c.slice(-1)&&(c+="/"),c=l(c)),v[b]=c}return C("config",a),u}}}(this); /* Seajs.style.js */ !function(){var a,b=/\W/g,c=document,d=document.getElementsByTagName("head")[0]||document.documentElement;seajs.importStyle=function(e,f){if(!f||(f=f.replace(b,"-"),!c.getElementById(f))){var g;if(!a||f?(g=c.createElement("style"),f&&(g.id=f),d.appendChild(g)):g=a,void 0!==g.styleSheet){if(c.getElementsByTagName("style").length>31)throw new Error("Exceed the maximal count of style tags in IE");g.styleSheet.cssText+=e}else g.appendChild(c.createTextNode(e));f||(a=g)}},define("seajs/seajs-style/1.0.2/seajs-style",[],{})}(); /*! root路径内部依赖 */ (function(){ var selfPath = window.location.href; var widgetPath = "../"; var pathMatch = selfPath.match(/\/view(.+)$/); if(pathMatch && pathMatch[1]){ selfPath = pathMatch[1]; var index = -1; var pathDeep = 0; do { index = selfPath.indexOf("/", index + 1); if (index != -1) { pathDeep++; } } while (index != -1); if(pathDeep){ widgetPath =""; for(var deepStart = 0;deepStart<pathDeep;deepStart++){ widgetPath += "../"; } } } seajs.root = widgetPath.substring(0, widgetPath.length-1); })(); //console.log(seajs.root) /*! seajs设置 */ seajs.config({ base: seajs.root + "/sdk/modules", paths: { "lib": seajs.root + "/res/lib", "sdk": seajs.root + "/sdk", "view": seajs.root + "/view" }, alias: { "jquery" : "jquery/3/jquery", "validform": "validform/validform" } }); "use strict"; /*! app对象 */ var apputil = (function(document, undefined) { var idSelectorRE = /^#([\w-]+)$/; var classSelectorRE = /^\.([\w-]+)$/; var tagSelectorRE = /^[\w-]+$/; var $ = function(selector, context) { context = context || document; if (!selector) return wrap(); if (typeof selector === 'object') if ($.isArrayLike(selector)) { return wrap($.slice.call(selector), null); } else { return wrap([selector], null); } if (typeof selector === 'function') return selector(); if (typeof selector === 'string') { try { selector = selector.trim(); if (idSelectorRE.test(selector)) { var found = document.getElementById(RegExp.$1); return wrap(found ? [found] : []); } return wrap($.qsa(selector, context), selector); } catch (e) {} } return wrap(); }; var wrap = function(dom, selector) { dom = dom || []; dom.__proto__ = $.fn; dom.selector = selector || ''; return dom; }; /** * extend(simple) * @param {type} target * @param {type} source * @param {type} deep * @returns {unresolved} */ $.extend = function() { var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; if (typeof target === "boolean") { deep = target; target = arguments[i] || {}; i++; } if (typeof target !== "object" && !$.isFunction(target)) { target = {}; } if (i === length) { target = this; i--; } for (; i < length; i++) { if ((options = arguments[i]) != null) { for (name in options) { src = target[name]; copy = options[name]; if (target === copy) { continue; } if (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))) { if (copyIsArray) { copyIsArray = false; clone = src && $.isArray(src) ? src : []; } else { clone = src && $.isPlainObject(src) ? src : {}; } target[name] = $.extend(deep, clone, copy); } else if (copy !== undefined) { target[name] = copy; } } } } return target; }; /** * each * @param {type} elements * @param {type} callback * @returns {_L8.$} */ $.each = function(elements, callback, hasOwnProperty) { if (!elements) { return this; } if (typeof elements.length === 'number') { [].every.call(elements, function(el, idx) { return callback.call(el, idx, el) !== false; }); } else { for (var key in elements) { if (hasOwnProperty) { if (elements.hasOwnProperty(key)) { if (callback.call(elements[key], key, elements[key]) === false) return elements; } } else { if (callback.call(elements[key], key, elements[key]) === false) return elements; } } } return elements; }; /** * slice(array) */ $.slice = [].slice; var class2type = {}; $.each(['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Object', 'Error'], function(i, name) { class2type["[object " + name + "]"] = name.toLowerCase(); }); $.type = function(obj) { return obj == null ? String(obj) : class2type[{}.toString.call(obj)] || "object"; }; /** * isArray */ $.isArray = Array.isArray || function(object) { return object instanceof Array; }; /** * isArrayLike * @param {Object} obj */ $.isArrayLike = function(obj) { var length = !!obj && "length" in obj && obj.length; var type = $.type(obj); if (type === "function" || $.isWindow(obj)) { return false; } return type === "array" || length === 0 || typeof length === "number" && length > 0 && (length - 1) in obj; }; /** * isWindow(需考虑obj为undefined的情况) */ $.isWindow = function(obj) { return obj != null && obj === obj.window; }; /** * isObject */ $.isObject = function(obj) { return $.type(obj) === "object"; }; /** * isPlainObject */ $.isPlainObject = function(obj) { return $.isObject(obj) && !$.isWindow(obj) && Object.getPrototypeOf(obj) === Object.prototype; }; /** * isEmptyObject * @param {Object} o */ $.isEmptyObject = function(o) { for (var p in o) { if (p !== undefined) { return false; } } return true; }; /** * isFunction */ $.isFunction = function(value) { return $.type(value) === "function"; }; /** * querySelectorAll * @param {type} selector * @param {type} context * @returns {Array} */ $.qsa = function(selector, context) { context = context || document; return $.slice.call(classSelectorRE.test(selector) ? context.getElementsByClassName(RegExp.$1) : tagSelectorRE.test(selector) ? context.getElementsByTagName(selector) : context.querySelectorAll(selector)); }; /* * $.trim */ $.trim = function(string) { if (string && string.split) { return string.trim(); } }; /** * trigger event * @param {type} element * @param {type} eventType * @param {type} eventData * @returns {_L8.$} */ $.trigger = function(element, eventType, eventData) { element.dispatchEvent(new CustomEvent(eventType, { detail: eventData, bubbles: true, cancelable: true })); return this; }; /** * $.fn */ $.fn = { each: function(callback) { [].every.call(this, function(el, idx) { return callback.call(el, idx, el) !== false; }); return this; }, on: function(eventType, child, handle) { [].every.call(this, function(el, idx) { if ($.isFunction(child)) { return el.addEventListener(eventType, child); } if(!child && $.isFunction(handle)){ return el.addEventListener(eventType, handle); } el.addEventListener(eventType, function(event) { var childNode = el.querySelectorAll(child); if (childNode.length) { var target = event.target, isHand; while (target && (target !== el)) { $.each(childNode, function(i, ele) { if (ele === target) { handle.call(target, { target: target, detail: event.detail, touches: event.touches && event.touches[0] ? { clientX: event.touches[0].clientX, clientY: event.touches[0].clientY, screenX: event.touches[0].screenX, screenY: event.touches[0].screenY, } : null }); return isHand = true; } }); if (isHand) { break; } target = target.parentNode; } } }); }); return this; }, tap: function(child, handle) { if($.isFunction(child)){ handle = child; child = null; } [].every.call(this, function(el, idx) { $(el).on('touchstart', child, function(e) { e.target.setAttribute('data-touch', 1); }).on('touchcancel', child, function(e) { e.target.removeAttribute('data-touch'); }).on('touchmove', child, function(e) { e.target.removeAttribute('data-touch'); }).on('touchend', child, function(e) { if (e.target.getAttribute('data-touch')) { e.target.removeAttribute('data-touch'); handle.call(e.target, e); } }); }); return this; }, trigger: function(eventType, data) { [].every.call(this, function(el, idx) { return $.trigger(el, eventType, data); }); return this; }, data: function(attribute, value) { if (value === void 0) { return this[0].dataset[attribute] === void 0 ? this[0].getAttribute('data-' + attribute) : this[0].dataset[attribute] } [].every.call(this, function(el, idx) { return el.dataset[attribute] = value; }); return this; } }; return $; })(document); /* app对象 */ (function(global) { var app = {}; var $ = apputil; var readyQueue = []; var execReadyQueue = function() { var i = 0, len = readyQueue.length; for (; i < len; i++) { readyQueue[i]() }; readyQueue.length = 0; }; var ready = function(callback) { if($.isFunction(callback) && callback.toString().replace(/\s+/g, '') !== 'function(){}'){ if (window.api) { callback(); }else{ readyQueue.push(callback); } } }; window.apiready = execReadyQueue; var exit = function(silent) { var targetStor = appcfg.set.temporary.split(','); targetStor.forEach(function(name){ localStorage.removeItem(name); }); api.closeWidget({ silent: !!silent, animation: { type: appcfg.set.windowAnimate, subType: 'from_bottom', duration: appcfg.set.animateDuration } }) }; function subscribe(eventName, callback) { api.addEventListener({ name: eventName }, function(ret) { callback(ret.value) }); }; function publish(eventName, msg) { api.sendEvent({ name: eventName, extra: msg }); }; var appEventQueue = {}; var appEventDequeue = function(type, param) { if(appEventQueue[type]){ appEventQueue[type].forEach(function(e, i) { if (typeof e === 'function') { e(param); } }); } } function events(type, cb) { var appEventDequeueCb = function(ret, err){ if(err){ return console.log(JSON.stringify(err)); } appEventDequeue(type, ret); }; if (!type || !type.split) { return null; } if (!appEventQueue[type]) { appEventQueue[type] = []; switch (type) { case 'batterylow': api.addEventListener({ name: 'batterylow' }, appEventDequeueCb); break; case "batterystatus": api.addEventListener({ name: 'batterystatus' }, appEventDequeueCb); break; case "offline": api.addEventListener({ name:'offline' }, appEventDequeueCb); break; case "online": api.addEventListener({ name:'online' }, appEventDequeueCb); break; case "pause": api.addEventListener({ name:'pause' }, appEventDequeueCb); break; case "resume": api.addEventListener({ name:'resume' }, appEventDequeueCb); break; case "shake": api.addEventListener({ name:'shake' }, appEventDequeueCb); break; default: console.warn('不支持的app事件:' + type); } } if (typeof cb === 'function') { appEventQueue[type].push(cb); } }; function key(keyName, cb) { if (!keyName || !keyName.split) { return null; } if (!appEventQueue[keyName]) { appEventQueue[keyName] = []; switch (keyName) { case 'keyback': api.addEventListener({ name: 'keyback' }, function(ret, err){ if(ret !== void 0){ appEventDequeue(keyName, ret); } }); break; case 'keymenu': api.addEventListener({ name: 'keymenu' }, function(ret, err){ if(ret !== void 0){ appEventDequeue(keyName, ret); } }); break; default: console.warn('不支持的按键名称:' + keyName); } } if (typeof cb === 'function') { appEventQueue[keyName].push(cb); } }; function off(eventType){ if(eventType && eventType.split){ return api.removeEventListener({ name: eventType }); } }; function readyEval(callback){ return function(){ if(window.api){ return callback.apply(null, arguments); }else{ var fname = callback.toString().match(/function\s*(\w+)\s*\(/); console.warn('runtime is not ready for function ' + (fname ? fname[1] : "anonymous") + "()."); } } } app = { util: $, ready: ready, readyEval: readyEval, subscribe: readyEval(subscribe), publish: readyEval(publish), on: readyEval(events), off: readyEval(off), key: readyEval(key), exit: readyEval(exit) }; global.app = app; })(this); /* 本地存储模块 */ (function(app) { var $ = apputil; function remove(key) { if (key && key.split) { return localStorage.removeItem(key) } }; function leaveSpace() { var space = 1024 * 1024 * 5 - unescape(encodeURIComponent(JSON.stringify(localStorage))).length; return space }; function val(key, value) { if (value === void(0)) { var lsVal = localStorage.getItem(key); if(lsVal && lsVal.indexOf('autostringify-') === 0 ){ return JSON.parse(lsVal.split('autostringify-')[1]); }else{ return lsVal; } }else { if ($.isPlainObject(value) || $.isArray(value)) { value = 'autostringify-' + JSON.stringify(value); }; return localStorage.setItem(key, value); } }; function clear(force){ if(force){ localStorage.clear(); }else{ var safeKey = appcfg.set.safeStorage ? appcfg.set.safeStorage.split(',') : [], lskey; for (lskey in window.localStorage){ if(safeKey.indexOf(lskey)===-1){ localStorage.removeItem(lskey); } } } } app.storage = { clear: clear, leaveSpace: leaveSpace, remove: remove, val: val } })(app); /* 扩展app对象 */ (function(app) { //loading var $ = app.util, loading = { hide: app.readyEval(function() { this.timer && (this.timer = clearTimeout(this.timer)); return api.hideProgress(); }), show: app.readyEval(function(msg, opt) { var that = this; if ($.isPlainObject(msg)) { opt = msg; msg = opt.text || appcfg.loading.text } opt = $.extend({ text: msg || appcfg.loading.text, title: appcfg.loading.title, anim: appcfg.loading.anim, delay: 0 }, opt || {}); var doShow = function() { return api.showProgress({ animationType: opt.anim, title: opt.title, text: opt.text }); } if (opt.delay > 0) { that.timer = setTimeout(doShow, opt.delay); } else { doShow(); } }) }; /* param: duration anim param bar closeself fullPath pop [title] */ var _openView = function(param, leval1, leval2) { var dura = appcfg.set.animateDuration, anim = appcfg.set.windowAnimate, viewName, url, crossParam; if ($.isPlainObject(param)) { dura = param.duration || dura; anim = param.anim || anim; crossParam = param.param; if ($.isPlainObject(crossParam)) { if (!!param.pop) { crossParam.shellIsPop = 1 } } } else { crossParam = param; param = {}; }; if (crossParam === null || crossParam === void(0)) { app.storage.remove('crossParam'); }else{ app.storage.val('crossParam', crossParam); } //网页 if (/^https*\:\/\//.test(leval1)) { url = leval1; if (!!param.bar) { return _openView({ param: $.extend({ url: url, title: param.title || '' }, param), closeself: !!param.closeself, type: anim }, 'common', 'shell'); } else { viewName = 'webpage' + Math.random(); } } else if (param.fullPath) { //全路径 viewName = leval1; url = leval1; } else { //openView路径 if (leval2 && leval2.split) { viewName = leval1 + '_' + leval2; url = seajs.root + '/view/' + leval1 + '/' + leval2 + '/temp.html'; } else { viewName = leval1; url = seajs.root + '/view/' + leval1 + '/temp.html'; } }; if (!!param.pop) { //弹出浮层 app.window.openPopover({ name: viewName, url: url }); } else if (!!param.bar) { _openView({ param: { url: url, title: param.title || '', show: 1 }, type: anim }, 'common', 'shell'); } else { if (param.closeback) { window.isBack = true; app.storage.val('winCloseCondition', 'closeback'); } if (param.closeself) { app.storage.val('winCloseCondition', api.winName); } app.window.open($.extend($.isPlainObject(param) ? param : {}, { name: viewName, url: url, param: crossParam, anim: anim })); } return viewName; }; var getParam = function() { return app.storage.val('crossParam'); }; var _pull = { init: app.readyEval(function(cb) { if (!$.isFunction(cb)) { return null; } var that = this; that.timer = setTimeout(that.stop, appcfg.set.outime); api.setCustomRefreshHeaderInfo(appcfg.pull, cb); }), stop: app.readyEval(function() { api.refreshHeaderLoadDone(); this.timer && (this.timer = clearTimeout(this.timer)); }) }; function _openToast(msg, config) { //delay,onclose,location,duration var opt = { msg: msg, duration: 1000, location: 'bottom' }; if($.isPlainObject(config)){ $.extend(opt, config); if(opt.delay){ opt.duration = opt.delay; } }else if(!isNaN(parseInt(config))){ opt.duration = parseInt(config); } if(typeof opt.onclose === 'function'){ setTimeout(opt.onclose, opt.duration); } return api.toast(opt); }; var alert = function(msg, sure, config){ return api.alert($.extend({ msg: msg, }, config || {}), sure); }; var confirm = function(msg, sure, cancel, config){ return api.confirm($.extend({ msg: msg, buttons: ['确定', '取消'] }, config || {}), function(ret, err) { var index = ret.buttonIndex; if(index===1){ typeof sure === 'function' && sure(); }else{ typeof cancel === 'function' && cancel() } }); }; var prompt = function(sure, cancel, config){ return api.prompt($.extend({ buttons: ['确定', '取消'] }, config || {}), function(ret, err) { var index = ret.buttonIndex; var text = ret.text; if(index===1){ typeof sure === 'function' && sure(text); }else{ typeof cancel === 'function' && cancel(text) } }); }; var actionSheet = function(config, callback){ if (!$.isPlainObject(config) || !$.isArray(config.buttons) || !config.buttons.length) { return console.warn('actionSheet参数错误'); }; return api.actionSheet($.extend({ title: '', buttons: [], destructiveTitle: '', cancelTitle: '取消', style: { layerColor: 'rgba(0,0,0,0.6)' } }, config), function(ret, err) { typeof callback === 'function' && callback(ret.buttonIndex); }); }; $.extend(app, { loading: loading, openView: _openView, getParam: getParam, pull: _pull, toast: app.readyEval(_openToast), alert: app.readyEval(alert), confirm: app.readyEval(confirm), prompt: app.readyEval(prompt), actionSheet: app.readyEval(actionSheet) }); })(app); /* 窗口模块 */ (function(app) { var $ = app.util; var subscribeGlobslQueue = []; var bounceCallQueue = []; var multiPopoverQueue = {}; var currentOS = ""; var keyFuncMapper = {}; function open(config) { //url必须 var param = config.param, anim = config.anim || appcfg.set.windowAnimate, subType = config.subType || appcfg.set.animateSubType, dura = config.duration || appcfg.set.animateDuration; if (!config.name) { config.name = 'win-' + config.url; } if (window.api) { param!==void 0 && app.storage.val('crossParam', param); api.openWin($.extend(config, { pageParam: $.isPlainObject(param) ? param : {}, animation: { type: anim, subType: subType, duration: dura }, progress: { type: 'page' }, useWKWebView: true, slidBackEnabled:false, overScrollMode: 'scrolls' })); return config.name; } else { window.location.href = config.url } } function close(winName, config) { if (!window.api) { return window.history.go(-1); }; if (winName && winName.split) { if(config.isFrame){ api.closeFrame({ name: winName }); }else{ api.closeWin({ name: winName, animation: { type: config.anim || appcfg.set.windowAnimate, duration: config.duration || appcfg.set.animateDuration } }); } } else { if (api.frameName) { api.closeFrame(); } else { api.closeWin() } } }; function popoverElement(config) { //id, url var id = config.id; var ele = $("#" + id); if (!ele.length) { return console.warn('popoverElement: Error param,' + JSON.stringify(config)); } ele = ele[0]; var offset = ele.getBoundingClientRect(); var top = isNaN(parseInt(config.top, 10)) ? offset.top : parseInt(config.top, 10); var left = isNaN(parseInt(config.left, 10)) ? offset.left : parseInt(config.left, 10); var name = config.name ? config.name : id; return openPopover($.extend(config, { name: name, left: left, top: top, width: offset.width || offset.right - offset.left, height: offset.height || offset.bottom - offset.top, param: config.param, bounces: config.bounce })); }; function openPopover(config) { //url必须 var left = config.left || 0, top = config.top || 0, width = config.width || 'auto', height = config.height || 'auto'; if (!config.name) { config.name = 'pop-' + config.url; } app.storage.val('popoverTopHash', config.top || 0); if(config.param){ app.storage.val('crossParam', config.param); } api.openFrame({ name: config.name, url: config.url, rect: { x: left, y: top, w: width, h: height, marginLeft: config.marginLeft, marginTop: config.marginTop, marginBottom: config.marginBottom, marginRight: config.marginRight }, customRefreshHeader: 'UIPullRefreshFlash', useWKWebView: true, hScrollBarEnabled: false, pageParam: $.isPlainObject(config.param) ? config.param : {}, bgColor: appcfg.set.bgColor, bounces: !!config.bounce, overScrollMode: 'scrolls' }); return config.name; }; function animPopover(config) { //name, callback var opt = $.extend({ delay: 0, duration: appcfg.set.animateDuration, curve: 'ease_in_out', repeatCount: 0, translation: { x: 0, y: 0, z: 0 } }, config || {}); //IOS不允许传递包含function的对象 var cbTemp = opt.callback; delete opt.callback; api.animation(opt, function(ret, err) { typeof cbTemp === 'function' && cbTemp(ret, err); }); return opt.name; } function setPopover(config) { //name var opt = $.extend({ rect: { x: 0, y: 0, w: 0, h: 0 } }, config || {}); api.setFrameAttr(opt); return opt.name }; function evaluate(name, frameName, script) { if ($.isPlainObject(name)) { var paramObj = name; name = paramObj.name || ''; frameName = paramObj.frameName || ''; script = paramObj.script || ''; } api.execScript({ name: name || api.winName, frameName: frameName, script: script }); }; //手势事件 var touchObj = { clear: function() { this.timer && clearTimeout(this.timer); this.timer = null; this.x = null; this.y = null; this.lastMove = null; } }; var $body = $('body')[0]; $body.addEventListener('touchstart', function(e) { if (e.touches && !touchObj.timer) { touchObj.timer = setTimeout(function() { touchObj.timer = clearTimeout(touchObj.timer); }, 100); touchObj.x = e.touches[0].clientX; touchObj.y = e.touches[0].clientY; } }); $body.addEventListener('touchmove', function(e) { if (e.touches && touchObj.x && touchObj.y) { if (!touchObj.timer) { touchObj.x = touchObj.x - e.touches[0].clientX; touchObj.y = touchObj.y - e.touches[0].clientY; if (Math.abs(touchObj.y) > Math.abs(touchObj.x)) { touchObj.lastMove = 'y'; if (touchObj.y > 0) { windowEventDequeue('swipdown'); } else { windowEventDequeue('swipup'); } } else { touchObj.lastMove = 'x'; if (touchObj.x > 0) { windowEventDequeue('swipright'); } else { windowEventDequeue('swipleft'); } } return touchObj.clear(); } } }); $body.addEventListener('touchend', function() { touchObj.clear(); }); $body.addEventListener('touchcancel', function() { touchObj.clear(); }); var windowEventQueue = {}; var windowEventDequeue = function(type) { windowEventQueue[type] && windowEventQueue[type].forEach(function(e, i) { if (typeof e === 'function') { e(type); } }); } //窗口事件 function events(type, cb) { var windowEventDequeueCb = function(ret, err){ if(err){ return console.log(JSON.stringify(err)); } windowEventDequeue(type, ret); } if (!type || !type.split) { return null; } if (!windowEventQueue[type]) { windowEventQueue[type] = []; switch (type) { case "pause": if (!windowEventQueue[type].length) { api.addEventListener({ name: 'viewdisappear' }, windowEventDequeueCb); } break; case "resume": if (!windowEventQueue[type].length) { api.addEventListener({ name: 'viewappear' }, windowEventDequeueCb); } break; case "scrolltobottom": api.addEventListener({ name:'scrolltobottom', extra:{ threshold:0 //设置距离底部多少距离时触发,默认值为0,数字类型 } }, windowEventDequeueCb); break; case "swipleft": break; case "swipright": break; case "swipup": break; case "swipdown": break; default: console.warn('不支持的window事件:' + type); } } if (typeof cb === 'function') { windowEventQueue[type].push(cb); } }; app.window = { open: open, close: close, on: events, evaluate: app.readyEval(evaluate), popoverElement: app.readyEval(popoverElement), openPopover: app.readyEval(openPopover), animPopover: app.readyEval(animPopover), setPopover: app.readyEval(setPopover) } })(app); /* crypto模块 */ (function(app) { var CryptoJS=CryptoJS||(function(Math,undefined){var create=Object.create||(function(){function F(){}return function(obj){var subtype;F.prototype=obj;subtype=new F();F.prototype=null;return subtype}}());var C={};var C_lib=C.lib={};var Base=C_lib.Base=(function(){return{extend:function(overrides){var subtype=create(this);if(overrides){subtype.mixIn(overrides)}if(!subtype.hasOwnProperty("init")||this.init===subtype.init){subtype.init=function(){subtype.$super.init.apply(this,arguments)}}subtype.init.prototype=subtype;subtype.$super=this;return subtype},create:function(){var instance=this.extend();instance.init.apply(instance,arguments);return instance},init:function(){},mixIn:function(properties){for(var propertyName in properties){if(properties.hasOwnProperty(propertyName)){this[propertyName]=properties[propertyName]}}if(properties.hasOwnProperty("toString")){this.toString=properties.toString}},clone:function(){return this.init.prototype.extend(this)}}}());var WordArray=C_lib.WordArray=Base.extend({init:function(words,sigBytes){words=this.words=words||[];if(sigBytes!=undefined){this.sigBytes=sigBytes}else{this.sigBytes=words.length*4}},toString:function(encoder){return(encoder||Hex).stringify(this)},concat:function(wordArray){var thisWords=this.words;var thatWords=wordArray.words;var thisSigBytes=this.sigBytes;var thatSigBytes=wordArray.sigBytes;this.clamp();if(thisSigBytes%4){for(var i=0;i<thatSigBytes;i++){var thatByte=(thatWords[i>>>2]>>>(24-(i%4)*8))&255;thisWords[(thisSigBytes+i)>>>2]|=thatByte<<(24-((thisSigBytes+i)%4)*8)}}else{for(var i=0;i<thatSigBytes;i+=4){thisWords[(thisSigBytes+i)>>>2]=thatWords[i>>>2]}}this.sigBytes+=thatSigBytes;return this},clamp:function(){var words=this.words;var sigBytes=this.sigBytes;words[sigBytes>>>2]&=4294967295<<(32-(sigBytes%4)*8);words.length=Math.ceil(sigBytes/4)},clone:function(){var clone=Base.clone.call(this);clone.words=this.words.slice(0);return clone},random:function(nBytes){var words=[];var r=(function(m_w){var m_w=m_w;var m_z=987654321;var mask=4294967295;return function(){m_z=(36969*(m_z&65535)+(m_z>>16))&mask;m_w=(18000*(m_w&65535)+(m_w>>16))&mask;var result=((m_z<<16)+m_w)&mask;result/=4294967296;result+=0.5;return result*(Math.random()>0.5?1:-1)}});for(var i=0,rcache;i<nBytes;i+=4){var _r=r((rcache||Math.random())*4294967296);rcache=_r()*987654071;words.push((_r()*4294967296)|0)}return new WordArray.init(words,nBytes)}});var C_enc=C.enc={};var Hex=C_enc.Hex={stringify:function(wordArray){var words=wordArray.words;var sigBytes=wordArray.sigBytes;var hexChars=[];for(var i=0;i<sigBytes;i++){var bite=(words[i>>>2]>>>(24-(i%4)*8))&255;hexChars.push((bite>>>4).toString(16));hexChars.push((bite&15).toString(16))}return hexChars.join("")},parse:function(hexStr){var hexStrLength=hexStr.length;var words=[];for(var i=0;i<hexStrLength;i+=2){words[i>>>3]|=parseInt(hexStr.substr(i,2),16)<<(24-(i%8)*4)}return new WordArray.init(words,hexStrLength/2)}};var Latin1=C_enc.Latin1={stringify:function(wordArray){var words=wordArray.words;var sigBytes=wordArray.sigBytes;var latin1Chars=[];for(var i=0;i<sigBytes;i++){var bite=(words[i>>>2]>>>(24-(i%4)*8))&255;latin1Chars.push(String.fromCharCode(bite))}return latin1Chars.join("")},parse:function(latin1Str){var latin1StrLength=latin1Str.length;var words=[];for(var i=0;i<latin1StrLength;i++){words[i>>>2]|=(latin1Str.charCodeAt(i)&255)<<(24-(i%4)*8)}return new WordArray.init(words,latin1StrLength)}};var Utf8=C_enc.Utf8={stringify:function(wordArray){try{return decodeURIComponent(escape(Latin1.stringify(wordArray)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(utf8Str){return Latin1.parse(unescape(encodeURIComponent(utf8Str)))}};var BufferedBlockAlgorithm=C_lib.BufferedBlockAlgorithm=Base.extend({reset:function(){this._data=new WordArray.init();this._nDataBytes=0},_append:function(data){if(typeof data=="string"){data=Utf8.parse(data)}this._data.concat(data);this._nDataBytes+=data.sigBytes},_process:function(doFlush){var data=this._data;var dataWords=data.words;var dataSigBytes=data.sigBytes;var blockSize=this.blockSize;var blockSizeBytes=blockSize*4;var nBlocksReady=dataSigBytes/blockSizeBytes;if(doFlush){nBlocksReady=Math.ceil(nBlocksReady)}else{nBlocksReady=Math.max((nBlocksReady|0)-this._minBufferSize,0)}var nWordsReady=nBlocksReady*blockSize;var nBytesReady=Math.min(nWordsReady*4,dataSigBytes);if(nWordsReady){for(var offset=0;offset<nWordsReady;offset+=blockSize){this._doProcessBlock(dataWords,offset)}var processedWords=dataWords.splice(0,nWordsReady);data.sigBytes-=nBytesReady}return new WordArray.init(processedWords,nBytesReady)},clone:function(){var clone=Base.clone.call(this);clone._data=this._data.clone();return clone},_minBufferSize:0});var Hasher=C_lib.Hasher=BufferedBlockAlgorithm.extend({cfg:Base.extend(),init:function(cfg){this.cfg=this.cfg.extend(cfg);this.reset()},reset:function(){BufferedBlockAlgorithm.reset.call(this);this._doReset()},update:function(messageUpdate){this._append(messageUpdate);this._process(); return this},finalize:function(messageUpdate){if(messageUpdate){this._append(messageUpdate)}var hash=this._doFinalize();return hash},blockSize:512/32,_createHelper:function(hasher){return function(message,cfg){return new hasher.init(cfg).finalize(message)}},_createHmacHelper:function(hasher){return function(message,key){return new C_algo.HMAC.init(hasher,key).finalize(message)}}});var C_algo=C.algo={};return C}(Math));(function(){var C=CryptoJS;var C_lib=C.lib;var WordArray=C_lib.WordArray;var C_enc=C.enc;var Base64=C_enc.Base64={stringify:function(wordArray){var words=wordArray.words;var sigBytes=wordArray.sigBytes;var map=this._map;wordArray.clamp();var base64Chars=[];for(var i=0;i<sigBytes;i+=3){var byte1=(words[i>>>2]>>>(24-(i%4)*8))&255;var byte2=(words[(i+1)>>>2]>>>(24-((i+1)%4)*8))&255;var byte3=(words[(i+2)>>>2]>>>(24-((i+2)%4)*8))&255;var triplet=(byte1<<16)|(byte2<<8)|byte3;for(var j=0;(j<4)&&(i+j*0.75<sigBytes);j++){base64Chars.push(map.charAt((triplet>>>(6*(3-j)))&63))}}var paddingChar=map.charAt(64);if(paddingChar){while(base64Chars.length%4){base64Chars.push(paddingChar)}}return base64Chars.join("")},parse:function(base64Str){var base64StrLength=base64Str.length;var map=this._map;var reverseMap=this._reverseMap;if(!reverseMap){reverseMap=this._reverseMap=[];for(var j=0;j<map.length;j++){reverseMap[map.charCodeAt(j)]=j}}var paddingChar=map.charAt(64);if(paddingChar){var paddingIndex=base64Str.indexOf(paddingChar);if(paddingIndex!==-1){base64StrLength=paddingIndex}}return parseLoop(base64Str,base64StrLength,reverseMap)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="};function parseLoop(base64Str,base64StrLength,reverseMap){var words=[];var nBytes=0;for(var i=0;i<base64StrLength;i++){if(i%4){var bits1=reverseMap[base64Str.charCodeAt(i-1)]<<((i%4)*2);var bits2=reverseMap[base64Str.charCodeAt(i)]>>>(6-(i%4)*2);words[nBytes>>>2]|=(bits1|bits2)<<(24-(nBytes%4)*8);nBytes++}}return WordArray.create(words,nBytes)}}());(function(Math){var C=CryptoJS;var C_lib=C.lib;var WordArray=C_lib.WordArray;var Hasher=C_lib.Hasher;var C_algo=C.algo;var T=[];(function(){for(var i=0;i<64;i++){T[i]=(Math.abs(Math.sin(i+1))*4294967296)|0}}());var MD5=C_algo.MD5=Hasher.extend({_doReset:function(){this._hash=new WordArray.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(M,offset){for(var i=0;i<16;i++){var offset_i=offset+i;var M_offset_i=M[offset_i];M[offset_i]=((((M_offset_i<<8)|(M_offset_i>>>24))&16711935)|(((M_offset_i<<24)|(M_offset_i>>>8))&4278255360))}var H=this._hash.words;var M_offset_0=M[offset+0];var M_offset_1=M[offset+1];var M_offset_2=M[offset+2];var M_offset_3=M[offset+3];var M_offset_4=M[offset+4];var M_offset_5=M[offset+5];var M_offset_6=M[offset+6];var M_offset_7=M[offset+7];var M_offset_8=M[offset+8];var M_offset_9=M[offset+9];var M_offset_10=M[offset+10];var M_offset_11=M[offset+11];var M_offset_12=M[offset+12];var M_offset_13=M[offset+13];var M_offset_14=M[offset+14];var M_offset_15=M[offset+15];var a=H[0];var b=H[1];var c=H[2];var d=H[3];a=FF(a,b,c,d,M_offset_0,7,T[0]);d=FF(d,a,b,c,M_offset_1,12,T[1]);c=FF(c,d,a,b,M_offset_2,17,T[2]);b=FF(b,c,d,a,M_offset_3,22,T[3]);a=FF(a,b,c,d,M_offset_4,7,T[4]);d=FF(d,a,b,c,M_offset_5,12,T[5]);c=FF(c,d,a,b,M_offset_6,17,T[6]);b=FF(b,c,d,a,M_offset_7,22,T[7]);a=FF(a,b,c,d,M_offset_8,7,T[8]);d=FF(d,a,b,c,M_offset_9,12,T[9]);c=FF(c,d,a,b,M_offset_10,17,T[10]);b=FF(b,c,d,a,M_offset_11,22,T[11]);a=FF(a,b,c,d,M_offset_12,7,T[12]);d=FF(d,a,b,c,M_offset_13,12,T[13]);c=FF(c,d,a,b,M_offset_14,17,T[14]);b=FF(b,c,d,a,M_offset_15,22,T[15]);a=GG(a,b,c,d,M_offset_1,5,T[16]);d=GG(d,a,b,c,M_offset_6,9,T[17]);c=GG(c,d,a,b,M_offset_11,14,T[18]);b=GG(b,c,d,a,M_offset_0,20,T[19]);a=GG(a,b,c,d,M_offset_5,5,T[20]);d=GG(d,a,b,c,M_offset_10,9,T[21]);c=GG(c,d,a,b,M_offset_15,14,T[22]);b=GG(b,c,d,a,M_offset_4,20,T[23]);a=GG(a,b,c,d,M_offset_9,5,T[24]);d=GG(d,a,b,c,M_offset_14,9,T[25]);c=GG(c,d,a,b,M_offset_3,14,T[26]);b=GG(b,c,d,a,M_offset_8,20,T[27]);a=GG(a,b,c,d,M_offset_13,5,T[28]);d=GG(d,a,b,c,M_offset_2,9,T[29]);c=GG(c,d,a,b,M_offset_7,14,T[30]);b=GG(b,c,d,a,M_offset_12,20,T[31]);a=HH(a,b,c,d,M_offset_5,4,T[32]);d=HH(d,a,b,c,M_offset_8,11,T[33]);c=HH(c,d,a,b,M_offset_11,16,T[34]);b=HH(b,c,d,a,M_offset_14,23,T[35]);a=HH(a,b,c,d,M_offset_1,4,T[36]);d=HH(d,a,b,c,M_offset_4,11,T[37]);c=HH(c,d,a,b,M_offset_7,16,T[38]);b=HH(b,c,d,a,M_offset_10,23,T[39]);a=HH(a,b,c,d,M_offset_13,4,T[40]);d=HH(d,a,b,c,M_offset_0,11,T[41]);c=HH(c,d,a,b,M_offset_3,16,T[42]);b=HH(b,c,d,a,M_offset_6,23,T[43]);a=HH(a,b,c,d,M_offset_9,4,T[44]);d=HH(d,a,b,c,M_offset_12,11,T[45]);c=HH(c,d,a,b,M_offset_15,16,T[46]);b=HH(b,c,d,a,M_offset_2,23,T[47]);a=II(a,b,c,d,M_offset_0,6,T[48]);d=II(d,a,b,c,M_offset_7,10,T[49]);c=II(c,d,a,b,M_offset_14,15,T[50]);b=II(b,c,d,a,M_offset_5,21,T[51]);a=II(a,b,c,d,M_offset_12,6,T[52]);d=II(d,a,b,c,M_offset_3,10,T[53]);c=II(c,d,a,b,M_offset_10,15,T[54]);b=II(b,c,d,a,M_offset_1,21,T[55]);a=II(a,b,c,d,M_offset_8,6,T[56]);d=II(d,a,b,c,M_offset_15,10,T[57]); c=II(c,d,a,b,M_offset_6,15,T[58]);b=II(b,c,d,a,M_offset_13,21,T[59]);a=II(a,b,c,d,M_offset_4,6,T[60]);d=II(d,a,b,c,M_offset_11,10,T[61]);c=II(c,d,a,b,M_offset_2,15,T[62]);b=II(b,c,d,a,M_offset_9,21,T[63]);H[0]=(H[0]+a)|0;H[1]=(H[1]+b)|0;H[2]=(H[2]+c)|0;H[3]=(H[3]+d)|0},_doFinalize:function(){var data=this._data;var dataWords=data.words;var nBitsTotal=this._nDataBytes*8;var nBitsLeft=data.sigBytes*8;dataWords[nBitsLeft>>>5]|=128<<(24-nBitsLeft%32);var nBitsTotalH=Math.floor(nBitsTotal/4294967296);var nBitsTotalL=nBitsTotal;dataWords[(((nBitsLeft+64)>>>9)<<4)+15]=((((nBitsTotalH<<8)|(nBitsTotalH>>>24))&16711935)|(((nBitsTotalH<<24)|(nBitsTotalH>>>8))&4278255360));dataWords[(((nBitsLeft+64)>>>9)<<4)+14]=((((nBitsTotalL<<8)|(nBitsTotalL>>>24))&16711935)|(((nBitsTotalL<<24)|(nBitsTotalL>>>8))&4278255360));data.sigBytes=(dataWords.length+1)*4;this._process();var hash=this._hash;var H=hash.words;for(var i=0;i<4;i++){var H_i=H[i];H[i]=(((H_i<<8)|(H_i>>>24))&16711935)|(((H_i<<24)|(H_i>>>8))&4278255360)}return hash},clone:function(){var clone=Hasher.clone.call(this);clone._hash=this._hash.clone();return clone}});function FF(a,b,c,d,x,s,t){var n=a+((b&c)|(~b&d))+x+t;return((n<<s)|(n>>>(32-s)))+b}function GG(a,b,c,d,x,s,t){var n=a+((b&d)|(c&~d))+x+t;return((n<<s)|(n>>>(32-s)))+b}function HH(a,b,c,d,x,s,t){var n=a+(b^c^d)+x+t;return((n<<s)|(n>>>(32-s)))+b}function II(a,b,c,d,x,s,t){var n=a+(c^(b|~d))+x+t;return((n<<s)|(n>>>(32-s)))+b}C.MD5=Hasher._createHelper(MD5);C.HmacMD5=Hasher._createHmacHelper(MD5)}(Math));(function(){var C=CryptoJS;var C_lib=C.lib;var WordArray=C_lib.WordArray;var Hasher=C_lib.Hasher;var C_algo=C.algo;var W=[];var SHA1=C_algo.SHA1=Hasher.extend({_doReset:function(){this._hash=new WordArray.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(M,offset){var H=this._hash.words;var a=H[0];var b=H[1];var c=H[2];var d=H[3];var e=H[4];for(var i=0;i<80;i++){if(i<16){W[i]=M[offset+i]|0}else{var n=W[i-3]^W[i-8]^W[i-14]^W[i-16];W[i]=(n<<1)|(n>>>31)}var t=((a<<5)|(a>>>27))+e+W[i];if(i<20){t+=((b&c)|(~b&d))+1518500249}else{if(i<40){t+=(b^c^d)+1859775393}else{if(i<60){t+=((b&c)|(b&d)|(c&d))-1894007588}else{t+=(b^c^d)-899497514}}}e=d;d=c;c=(b<<30)|(b>>>2);b=a;a=t}H[0]=(H[0]+a)|0;H[1]=(H[1]+b)|0;H[2]=(H[2]+c)|0;H[3]=(H[3]+d)|0;H[4]=(H[4]+e)|0},_doFinalize:function(){var data=this._data;var dataWords=data.words;var nBitsTotal=this._nDataBytes*8;var nBitsLeft=data.sigBytes*8;dataWords[nBitsLeft>>>5]|=128<<(24-nBitsLeft%32);dataWords[(((nBitsLeft+64)>>>9)<<4)+14]=Math.floor(nBitsTotal/4294967296);dataWords[(((nBitsLeft+64)>>>9)<<4)+15]=nBitsTotal;data.sigBytes=dataWords.length*4;this._process();return this._hash},clone:function(){var clone=Hasher.clone.call(this);clone._hash=this._hash.clone();return clone}});C.SHA1=Hasher._createHelper(SHA1);C.HmacSHA1=Hasher._createHmacHelper(SHA1)}());(function(Math){var C=CryptoJS;var C_lib=C.lib;var WordArray=C_lib.WordArray;var Hasher=C_lib.Hasher;var C_algo=C.algo;var H=[];var K=[];(function(){function isPrime(n){var sqrtN=Math.sqrt(n);for(var factor=2;factor<=sqrtN;factor++){if(!(n%factor)){return false}}return true}function getFractionalBits(n){return((n-(n|0))*4294967296)|0}var n=2;var nPrime=0;while(nPrime<64){if(isPrime(n)){if(nPrime<8){H[nPrime]=getFractionalBits(Math.pow(n,1/2))}K[nPrime]=getFractionalBits(Math.pow(n,1/3));nPrime++}n++}}());var W=[];var SHA256=C_algo.SHA256=Hasher.extend({_doReset:function(){this._hash=new WordArray.init(H.slice(0))},_doProcessBlock:function(M,offset){var H=this._hash.words;var a=H[0];var b=H[1];var c=H[2];var d=H[3];var e=H[4];var f=H[5];var g=H[6];var h=H[7];for(var i=0;i<64;i++){if(i<16){W[i]=M[offset+i]|0}else{var gamma0x=W[i-15];var gamma0=((gamma0x<<25)|(gamma0x>>>7))^((gamma0x<<14)|(gamma0x>>>18))^(gamma0x>>>3);var gamma1x=W[i-2];var gamma1=((gamma1x<<15)|(gamma1x>>>17))^((gamma1x<<13)|(gamma1x>>>19))^(gamma1x>>>10);W[i]=gamma0+W[i-7]+gamma1+W[i-16]}var ch=(e&f)^(~e&g);var maj=(a&b)^(a&c)^(b&c);var sigma0=((a<<30)|(a>>>2))^((a<<19)|(a>>>13))^((a<<10)|(a>>>22));var sigma1=((e<<26)|(e>>>6))^((e<<21)|(e>>>11))^((e<<7)|(e>>>25));var t1=h+sigma1+ch+K[i]+W[i];var t2=sigma0+maj;h=g;g=f;f=e;e=(d+t1)|0;d=c;c=b;b=a;a=(t1+t2)|0}H[0]=(H[0]+a)|0;H[1]=(H[1]+b)|0;H[2]=(H[2]+c)|0;H[3]=(H[3]+d)|0;H[4]=(H[4]+e)|0;H[5]=(H[5]+f)|0;H[6]=(H[6]+g)|0;H[7]=(H[7]+h)|0},_doFinalize:function(){var data=this._data;var dataWords=data.words;var nBitsTotal=this._nDataBytes*8;var nBitsLeft=data.sigBytes*8;dataWords[nBitsLeft>>>5]|=128<<(24-nBitsLeft%32);dataWords[(((nBitsLeft+64)>>>9)<<4)+14]=Math.floor(nBitsTotal/4294967296);dataWords[(((nBitsLeft+64)>>>9)<<4)+15]=nBitsTotal;data.sigBytes=dataWords.length*4;this._process();return this._hash},clone:function(){var clone=Hasher.clone.call(this);clone._hash=this._hash.clone();return clone}});C.SHA256=Hasher._createHelper(SHA256);C.HmacSHA256=Hasher._createHmacHelper(SHA256)}(Math));(function(){var C=CryptoJS;var C_lib=C.lib;var WordArray=C_lib.WordArray;var C_enc=C.enc;var Utf16BE=C_enc.Utf16=C_enc.Utf16BE={stringify:function(wordArray){var words=wordArray.words; var sigBytes=wordArray.sigBytes;var utf16Chars=[];for(var i=0;i<sigBytes;i+=2){var codePoint=(words[i>>>2]>>>(16-(i%4)*8))&65535;utf16Chars.push(String.fromCharCode(codePoint))}return utf16Chars.join("")},parse:function(utf16Str){var utf16StrLength=utf16Str.length;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)}};C_enc.Utf16LE={stringify:function(wordArray){var words=wordArray.words;var sigBytes=wordArray.sigBytes;var utf16Chars=[];for(var i=0;i<sigBytes;i+=2){var codePoint=swapEndian((words[i>>>2]>>>(16-(i%4)*8))&65535