Web Spider案例 网洛克 第三题 AAEncode加密 练习(七)
声明
此次案例只为学习交流使用,抓包内容、敏感网址、数据接口均已做脱敏处理,切勿用于其他非法用途;
文章目录
- 声明
- 一、资源推荐
- 二、逆向目标
- 三、抓包分析 & 下断分析逆向
- 3.1 抓包分析
- 3.2 下断分析逆向拿到混淆JS代码
- 3.3 AAEncode解决方式
- 四、JS代码调试 & 完整JS代码
- 4.1 JS代码调试
- 4.2 完整JS代码
- 五、python代码实现
- 总结
提示:以下是本篇文章正文内容,下面案例可供参考
一、资源推荐
Web Spider 常见混淆EVAL、AA、JJ、JSFUCK:https://blog.csdn.net/EXIxiaozhou/article/details/128767669
网洛者 - 反反爬虫训练平台网址:https://wangluozhe.com/
JS逆向加密解密工具Crypto Magician、乐易助手、WT-JS 下载使用:https://blog.csdn.net/EXIxiaozhou/article/details/128034062
二、逆向目标
本次案例会使用三种方式解析混淆JS代码
三、抓包分析 & 下断分析逆向
3.1 抓包分析
1、POST,https://wangluozhe.com/challenge/api/3;
2、逆向加密参数:_signature,可以发现加密参数的长度是112;
3.2 下断分析逆向拿到混淆JS代码
1、通过启动器,进入代码定义处;
2、在此处下断点,window.get_sign();
;
3、翻页刷新网站;
4、复制混淆JS代码
window.date = Date.now().toString().slice(5,13);゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+/*´∇`*/(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚ー゚)+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚ー゚)+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚Θ゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) - (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚Θ゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((o^_^o) +(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+((o^_^o) - (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(c^_^o)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) - (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (゚Θ゚))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+(o^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚) + (o^_^o))+((゚ー゚) + (゚Θ゚))+(゚Д゚)[゚o゚]) (゚Θ゚)) ('_');
3.3 AAEncode解决方式
常见的三种AAEncode解决方式
- 1、加密,解密地址:http://www.hiencode.com/aaencode.html
- 2、去掉代码最后一个符号 (‘_’) 后,复制代码在浏览器控制台打印即可看到源码;
- 3、在混淆代码处打断点,一步一步往下跟,就能跟到源码处;
1、在线解密,有些时候不起作用,不能解决大部分的混淆;
2、去掉代码最后一个符号 (‘_’) 后,复制代码在浏览器控制台打印即可看到源码,点进去可以看到详细的JS代码;
3、在混淆代码处打断点,一步一步往下跟,就能跟到源码处;
四、JS代码调试 & 完整JS代码
4.1 JS代码调试
1、跟进加密代码处,可以发现使用了encryptByDES加密方式,并且检测了window.document.location.href,走的是try的调用方式;
window.document.location.href:‘https://wangluozhe.com/challenge/3’
key:‘1677760251000’ // 时间戳
message = :‘https://wangluozhe.com/challenge/3’ + ‘|’ + Date.parse(new Date()).toString();
2、通过以上的代码分析,可以将代码修改一下,并补充检测的属性(window.document.location.href)
3、关于CryptoJS 模块,可以通过npm安装再引入模块,也可以通过工具生成CryptoJS 的源码,我这边直接复制了CryptoJS 的源码;
4.2 完整JS代码
window = this;var CryptoJS = new CryptoJS;
function CryptoJS (root, factory) {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)) & 0xff;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] &= 0xffffffff << (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 = 0x3ade68b1;var mask = 0xffffffff;return function() {m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;var result = ((m_z << 0x10) + m_w) & mask;result /= 0x100000000;result += 0.5;return result * (Math.random() > .5 ? 1 : -1);}});for (var i = 0, rcache; i < nBytes; i += 4) {var _r = r((rcache || Math.random()) * 0x100000000);rcache = _r() * 0x3ade67b7;words.push((_r() * 0x100000000) | 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)) & 0xff;hexChars.push((bite >>> 4).toString(16));hexChars.push((bite & 0x0f).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)) & 0xff;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) & 0xff) << (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)) & 0xff;var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;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))) & 0x3f));}}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)) * 0x100000000) | 0;}}());var MD5 = C_algo.MD5 = Hasher.extend({_doReset: function() {this._hash = new WordArray.init([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]);},_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)) & 0x00ff00ff) | (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00));}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] |= 0x80 << (24 - nBitsLeft % 32);var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);var nBitsTotalL = nBitsTotal;dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = ((((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) | (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00));dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ((((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) | (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00));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)) & 0x00ff00ff) | (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);}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([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]);},_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)) + 0x5a827999;} else if (i < 40) {t += (b ^ c ^ d) + 0x6ed9eba1;} else if (i < 60) {t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;} else {t += (b ^ c ^ d) - 0x359d3e2a;}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] |= 0x80 << (24 - nBitsLeft % 32);dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);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)) * 0x100000000) | 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] |= 0x80 << (24 - nBitsLeft % 32);dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);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)) & 0xffff;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)) & 0xffff);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] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));}return WordArray.create(words, utf16StrLength * 2);}};function swapEndian(word) {return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);}}());(function() {if (typeof ArrayBuffer != 'function') {return;}var C = CryptoJS;var C_lib = C.lib;var WordArray = C_lib.WordArray;var superInit = WordArray.init;var subInit = WordArray.init = function(typedArray) {if (typedArray instanceof ArrayBuffer) {typedArray = new Uint8Array(typedArray);}if (typedArray instanceof Int8Array || (typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray) || typedArray instanceof Int16Array || typedArray instanceof Uint16Array || typedArray instanceof Int32Array || typedArray instanceof Uint32Array || typedArray instanceof Float32Array || typedArray instanceof Float64Array) {typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);}if (typedArray instanceof Uint8Array) {var typedArrayByteLength = typedArray.byteLength;var words = [];for (var i = 0; i < typedArrayByteLength; i++) {words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);}superInit.call(this, words, typedArrayByteLength);} else {superInit.apply(this, arguments);}};subInit.prototype = WordArray;}());(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 _zl = WordArray.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);var _zr = WordArray.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);var _sl = WordArray.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]);var _sr = WordArray.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]);var _hl = WordArray.create([0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);var _hr = WordArray.create([0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({_doReset: function() {this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);},_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)) & 0x00ff00ff) | (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00));}var H = this._hash.words;var hl = _hl.words;var hr = _hr.words;var zl = _zl.words;var zr = _zr.words;var sl = _sl.words;var sr = _sr.words;var al, bl, cl, dl, el;var ar, br, cr, dr, er;ar = al = H[0];br = bl = H[1];cr = cl = H[2];dr = dl = H[3];er = el = H[4];var t;for (var i = 0; i < 80; i += 1) {t = (al + M[offset + zl[i]]) | 0;if (i < 16) {t += f1(bl, cl, dl) + hl[0];} else if (i < 32) {t += f2(bl, cl, dl) + hl[1];} else if (i < 48) {t += f3(bl, cl, dl) + hl[2];} else if (i < 64) {t += f4(bl, cl, dl) + hl[3];} else {t += f5(bl, cl, dl) + hl[4];}t = t | 0;t = rotl(t, sl[i]);t = (t + el) | 0;al = el;el = dl;dl = rotl(cl, 10);cl = bl;bl = t;t = (ar + M[offset + zr[i]]) | 0;if (i < 16) {t += f5(br, cr, dr) + hr[0];} else if (i < 32) {t += f4(br, cr, dr) + hr[1];} else if (i < 48) {t += f3(br, cr, dr) + hr[2];} else if (i < 64) {t += f2(br, cr, dr) + hr[3];} else {t += f1(br, cr, dr) + hr[4];}t = t | 0;t = rotl(t, sr[i]);t = (t + er) | 0;ar = er;er = dr;dr = rotl(cr, 10);cr = br;br = t;}t = (H[1] + cl + dr) | 0;H[1] = (H[2] + dl + er) | 0;H[2] = (H[3] + el + ar) | 0;H[3] = (H[4] + al + br) | 0;H[4] = (H[0] + bl + cr) | 0;H[0] = t;},_doFinalize: function() {var data = this._data;var dataWords = data.words;var nBitsTotal = this._nDataBytes * 8;var nBitsLeft = data.sigBytes * 8;dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ((((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00));data.sigBytes = (dataWords.length + 1) * 4;this._process();var hash = this._hash;var H = hash.words;for (var i = 0; i < 5; i++) {var H_i = H[i];H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);}return hash;},clone: function() {var clone = Hasher.clone.call(this);clone._hash = this._hash.clone();return clone;}});function f1(x, y, z) {return ((x) ^ (y) ^ (z));}function f2(x, y, z) {return (((x) & (y)) | ((~x) & (z)));}function f3(x, y, z) {return (((x) | (~ (y))) ^ (z));}function f4(x, y, z) {return (((x) & (z)) | ((y) & (~ (z))));}function f5(x, y, z) {return ((x) ^ ((y) | (~ (z))));}function rotl(x, n) {return (x << n) | (x >>> (32 - n));}C.RIPEMD160 = Hasher._createHelper(RIPEMD160);C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);}(Math));(function() {var C = CryptoJS;var C_lib = C.lib;var Base = C_lib.Base;var C_enc = C.enc;var Utf8 = C_enc.Utf8;var C_algo = C.algo;var HMAC = C_algo.HMAC = Base.extend({init: function(hasher, key) {hasher = this._hasher = new hasher.init();if (typeof key == 'string') {key = Utf8.parse(key);}var hasherBlockSize = hasher.blockSize;var hasherBlockSizeBytes = hasherBlockSize * 4;if (key.sigBytes > hasherBlockSizeBytes) {key = hasher.finalize(key);}key.clamp();var oKey = this._oKey = key.clone();var iKey = this._iKey = key.clone();var oKeyWords = oKey.words;var iKeyWords = iKey.words;for (var i = 0; i < hasherBlockSize; i++) {oKeyWords[i] ^= 0x5c5c5c5c;iKeyWords[i] ^= 0x36363636;}oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;this.reset();},reset: function() {var hasher = this._hasher;hasher.reset();hasher.update(this._iKey);},update: function(messageUpdate) {this._hasher.update(messageUpdate);return this;},finalize: function(messageUpdate) {var hasher = this._hasher;var innerHash = hasher.finalize(messageUpdate);hasher.reset();var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));return hmac;}});}());(function() {var C = CryptoJS;var C_lib = C.lib;var Base = C_lib.Base;var WordArray = C_lib.WordArray;var C_algo = C.algo;var SHA1 = C_algo.SHA1;var HMAC = C_algo.HMAC;var PBKDF2 = C_algo.PBKDF2 = Base.extend({cfg: Base.extend({keySize: 128 / 32,hasher: SHA1,iterations: 1}),init: function(cfg) {this.cfg = this.cfg.extend(cfg);},compute: function(password, salt) {var cfg = this.cfg;var hmac = HMAC.create(cfg.hasher, password);var derivedKey = WordArray.create();var blockIndex = WordArray.create([0x00000001]);var derivedKeyWords = derivedKey.words;var blockIndexWords = blockIndex.words;var keySize = cfg.keySize;var iterations = cfg.iterations;while (derivedKeyWords.length < keySize) {var block = hmac.update(salt).finalize(blockIndex);hmac.reset();var blockWords = block.words;var blockWordsLength = blockWords.length;var intermediate = block;for (var i = 1; i < iterations; i++) {intermediate = hmac.finalize(intermediate);hmac.reset();var intermediateWords = intermediate.words;for (var j = 0; j < blockWordsLength; j++) {blockWords[j] ^= intermediateWords[j];}}derivedKey.concat(block);blockIndexWords[0]++;}derivedKey.sigBytes = keySize * 4;return derivedKey;}});C.PBKDF2 = function(password, salt, cfg) {return PBKDF2.create(cfg).compute(password, salt);};}());(function() {var C = CryptoJS;var C_lib = C.lib;var Base = C_lib.Base;var WordArray = C_lib.WordArray;var C_algo = C.algo;var MD5 = C_algo.MD5;var EvpKDF = C_algo.EvpKDF = Base.extend({cfg: Base.extend({keySize: 128 / 32,hasher: MD5,iterations: 1}),init: function(cfg) {this.cfg = this.cfg.extend(cfg);},compute: function(password, salt) {var cfg = this.cfg;var hasher = cfg.hasher.create();var derivedKey = WordArray.create();var derivedKeyWords = derivedKey.words;var keySize = cfg.keySize;var iterations = cfg.iterations;while (derivedKeyWords.length < keySize) {if (block) {hasher.update(block);}var block = hasher.update(password).finalize(salt);hasher.reset();for (var i = 1; i < iterations; i++) {block = hasher.finalize(block);hasher.reset();}derivedKey.concat(block);}derivedKey.sigBytes = keySize * 4;return derivedKey;}});C.EvpKDF = function(password, salt, cfg) {return EvpKDF.create(cfg).compute(password, salt);};}());(function() {var C = CryptoJS;var C_lib = C.lib;var WordArray = C_lib.WordArray;var C_algo = C.algo;var SHA256 = C_algo.SHA256;var SHA224 = C_algo.SHA224 = SHA256.extend({_doReset: function() {this._hash = new WordArray.init([0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4]);},_doFinalize: function() {var hash = SHA256._doFinalize.call(this);hash.sigBytes -= 4;return hash;}});C.SHA224 = SHA256._createHelper(SHA224);C.HmacSHA224 = SHA256._createHmacHelper(SHA224);}());(function(undefined) {var C = CryptoJS;var C_lib = C.lib;var Base = C_lib.Base;var X32WordArray = C_lib.WordArray;var C_x64 = C.x64 = {};var X64Word = C_x64.Word = Base.extend({init: function(high, low) {this.high = high;this.low = low;}});var X64WordArray = C_x64.WordArray = Base.extend({init: function(words, sigBytes) {words = this.words = words || [];if (sigBytes != undefined) {this.sigBytes = sigBytes;} else {this.sigBytes = words.length * 8;}},toX32: function() {var x64Words = this.words;var x64WordsLength = x64Words.length;var x32Words = [];for (var i = 0; i < x64WordsLength; i++) {var x64Word = x64Words[i];x32Words.push(x64Word.high);x32Words.push(x64Word.low);}return X32WordArray.create(x32Words, this.sigBytes);},clone: function() {var clone = Base.clone.call(this);var words = clone.words = this.words.slice(0);var wordsLength = words.length;for (var i = 0; i < wordsLength; i++) {words[i] = words[i].clone();}return clone;}});}());(function(Math) {var C = CryptoJS;var C_lib = C.lib;var WordArray = C_lib.WordArray;var Hasher = C_lib.Hasher;var C_x64 = C.x64;var X64Word = C_x64.Word;var C_algo = C.algo;var RHO_OFFSETS = [];var PI_INDEXES = [];var ROUND_CONSTANTS = [];(function() {var x = 1,y = 0;for (var t = 0; t < 24; t++) {RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;var newX = y % 5;var newY = (2 * x + 3 * y) % 5;x = newX;y = newY;}for (var x = 0; x < 5; x++) {for (var y = 0; y < 5; y++) {PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;}}var LFSR = 0x01;for (var i = 0; i < 24; i++) {var roundConstantMsw = 0;var roundConstantLsw = 0;for (var j = 0; j < 7; j++) {if (LFSR & 0x01) {var bitPosition = (1 << j) - 1;if (bitPosition < 32) {roundConstantLsw ^= 1 << bitPosition;} else {roundConstantMsw ^= 1 << (bitPosition - 32);}}if (LFSR & 0x80) {LFSR = (LFSR << 1) ^ 0x71;} else {LFSR <<= 1;}}ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);}}());var T = [];(function() {for (var i = 0; i < 25; i++) {T[i] = X64Word.create();}}());var SHA3 = C_algo.SHA3 = Hasher.extend({cfg: Hasher.cfg.extend({outputLength: 512}),_doReset: function() {var state = this._state = []for (var i = 0; i < 25; i++) {state[i] = new X64Word.init();}this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;},_doProcessBlock: function(M, offset) {var state = this._state;var nBlockSizeLanes = this.blockSize / 2;for (var i = 0; i < nBlockSizeLanes; i++) {var M2i = M[offset + 2 * i];var M2i1 = M[offset + 2 * i + 1];M2i = ((((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) | (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00));M2i1 = ((((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) | (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00));var lane = state[i];lane.high ^= M2i1;lane.low ^= M2i;}for (var round = 0; round < 24; round++) {for (var x = 0; x < 5; x++) {var tMsw = 0,tLsw = 0;for (var y = 0; y < 5; y++) {var lane = state[x + 5 * y];tMsw ^= lane.high;tLsw ^= lane.low;}var Tx = T[x];Tx.high = tMsw;Tx.low = tLsw;}for (var x = 0; x < 5; x++) {var Tx4 = T[(x + 4) % 5];var Tx1 = T[(x + 1) % 5];var Tx1Msw = Tx1.high;var Tx1Lsw = Tx1.low;var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));for (var y = 0; y < 5; y++) {var lane = state[x + 5 * y];lane.high ^= tMsw;lane.low ^= tLsw;}}for (var laneIndex = 1; laneIndex < 25; laneIndex++) {var lane = state[laneIndex];var laneMsw = lane.high;var laneLsw = lane.low;var rhoOffset = RHO_OFFSETS[laneIndex];if (rhoOffset < 32) {var tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));var tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));} else {var tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));var tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));}var TPiLane = T[PI_INDEXES[laneIndex]];TPiLane.high = tMsw;TPiLane.low = tLsw;}var T0 = T[0];var state0 = state[0];T0.high = state0.high;T0.low = state0.low;for (var x = 0; x < 5; x++) {for (var y = 0; y < 5; y++) {var laneIndex = x + 5 * y;var lane = state[laneIndex];var TLane = T[laneIndex];var Tx1Lane = T[((x + 1) % 5) + 5 * y];var Tx2Lane = T[((x + 2) % 5) + 5 * y];lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);}}var lane = state[0];var roundConstant = ROUND_CONSTANTS[round];lane.high ^= roundConstant.high;lane.low ^= roundConstant.low;;}},_doFinalize: function() {var data = this._data;var dataWords = data.words;var nBitsTotal = this._nDataBytes * 8;var nBitsLeft = data.sigBytes * 8;var blockSizeBits = this.blockSize * 32;dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;data.sigBytes = dataWords.length * 4;this._process();var state = this._state;var outputLengthBytes = this.cfg.outputLength / 8;var outputLengthLanes = outputLengthBytes / 8;var hashWords = [];for (var i = 0; i < outputLengthLanes; i++) {var lane = state[i];var laneMsw = lane.high;var laneLsw = lane.low;laneMsw = ((((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) | (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00));laneLsw = ((((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) | (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00));hashWords.push(laneLsw);hashWords.push(laneMsw);}return new WordArray.init(hashWords, outputLengthBytes);},clone: function() {var clone = Hasher.clone.call(this);var state = clone._state = this._state.slice(0);for (var i = 0; i < 25; i++) {state[i] = state[i].clone();}return clone;}});C.SHA3 = Hasher._createHelper(SHA3);C.HmacSHA3 = Hasher._createHmacHelper(SHA3);}(Math));(function() {var C = CryptoJS;var C_lib = C.lib;var Hasher = C_lib.Hasher;var C_x64 = C.x64;var X64Word = C_x64.Word;var X64WordArray = C_x64.WordArray;var C_algo = C.algo;function X64Word_create() {return X64Word.create.apply(X64Word, arguments);}var K = [X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd), X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc), X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019), X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118), X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe), X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2), X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1), X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694), X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3), X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65), X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483), X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5), X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210), X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4), X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725), X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70), X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926), X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df), X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8), X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b), X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001), X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30), X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910), X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8), X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53), X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8), X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb), X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3), X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60), X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec), X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9), X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b), X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207), X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178), X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6), X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b), X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493), X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c), X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a), X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)];var W = [];(function() {for (var i = 0; i < 80; i++) {W[i] = X64Word_create();}}());var SHA512 = C_algo.SHA512 = Hasher.extend({_doReset: function() {this._hash = new X64WordArray.init([new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b), new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1), new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f), new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)]);},_doProcessBlock: function(M, offset) {var H = this._hash.words;var H0 = H[0];var H1 = H[1];var H2 = H[2];var H3 = H[3];var H4 = H[4];var H5 = H[5];var H6 = H[6];var H7 = H[7];var H0h = H0.high;var H0l = H0.low;var H1h = H1.high;var H1l = H1.low;var H2h = H2.high;var H2l = H2.low;var H3h = H3.high;var H3l = H3.low;var H4h = H4.high;var H4l = H4.low;var H5h = H5.high;var H5l = H5.low;var H6h = H6.high;var H6l = H6.low;var H7h = H7.high;var H7l = H7.low;var ah = H0h;var al = H0l;var bh = H1h;var bl = H1l;var ch = H2h;var cl = H2l;var dh = H3h;var dl = H3l;var eh = H4h;var el = H4l;var fh = H5h;var fl = H5l;var gh = H6h;var gl = H6l;var hh = H7h;var hl = H7l;for (var i = 0; i < 80; i++) {var Wi = W[i];if (i < 16) {var Wih = Wi.high = M[offset + i * 2] | 0;var Wil = Wi.low = M[offset + i * 2 + 1] | 0;} else {var gamma0x = W[i - 15];var gamma0xh = gamma0x.high;var gamma0xl = gamma0x.low;var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));var gamma1x = W[i - 2];var gamma1xh = gamma1x.high;var gamma1xl = gamma1x.low;var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));var Wi7 = W[i - 7];var Wi7h = Wi7.high;var Wi7l = Wi7.low;var Wi16 = W[i - 16];var Wi16h = Wi16.high;var Wi16l = Wi16.low;var Wil = gamma0l + Wi7l;var Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);var Wil = Wil + gamma1l;var Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);var Wil = Wil + Wi16l;var Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);Wi.high = Wih;Wi.low = Wil;}var chh = (eh & fh) ^ (~eh & gh);var chl = (el & fl) ^ (~el & gl);var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);var majl = (al & bl) ^ (al & cl) ^ (bl & cl);var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));var Ki = K[i];var Kih = Ki.high;var Kil = Ki.low;var t1l = hl + sigma1l;var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);var t1l = t1l + chl;var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);var t1l = t1l + Kil;var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);var t1l = t1l + Wil;var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);var t2l = sigma0l + majl;var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);hh = gh;hl = gl;gh = fh;gl = fl;fh = eh;fl = el;el = (dl + t1l) | 0;eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;dh = ch;dl = cl;ch = bh;cl = bl;bh = ah;bl = al;al = (t1l + t2l) | 0;ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;}H0l = H0.low = (H0l + al);H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));H1l = H1.low = (H1l + bl);H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));H2l = H2.low = (H2l + cl);H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));H3l = H3.low = (H3l + dl);H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));H4l = H4.low = (H4l + el);H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));H5l = H5.low = (H5l + fl);H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));H6l = H6.low = (H6l + gl);H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));H7l = H7.low = (H7l + hl);H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));},_doFinalize: function() {var data = this._data;var dataWords = data.words;var nBitsTotal = this._nDataBytes * 8;var nBitsLeft = data.sigBytes * 8;dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;data.sigBytes = dataWords.length * 4;this._process();var hash = this._hash.toX32();return hash;},clone: function() {var clone = Hasher.clone.call(this);clone._hash = this._hash.clone();return clone;},blockSize: 1024 / 32});C.SHA512 = Hasher._createHelper(SHA512);C.HmacSHA512 = Hasher._createHmacHelper(SHA512);}());(function() {var C = CryptoJS;var C_x64 = C.x64;var X64Word = C_x64.Word;var X64WordArray = C_x64.WordArray;var C_algo = C.algo;var SHA512 = C_algo.SHA512;var SHA384 = C_algo.SHA384 = SHA512.extend({_doReset: function() {this._hash = new X64WordArray.init([new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507), new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939), new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511), new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)]);},_doFinalize: function() {var hash = SHA512._doFinalize.call(this);hash.sigBytes -= 16;return hash;}});C.SHA384 = SHA512._createHelper(SHA384);C.HmacSHA384 = SHA512._createHmacHelper(SHA384);}());CryptoJS.lib.Cipher || (function(undefined) {var C = CryptoJS;var C_lib = C.lib;var Base = C_lib.Base;var WordArray = C_lib.WordArray;var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;var C_enc = C.enc;var Utf8 = C_enc.Utf8;var Base64 = C_enc.Base64;var C_algo = C.algo;var EvpKDF = C_algo.EvpKDF;var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({cfg: Base.extend(),createEncryptor: function(key, cfg) {return this.create(this._ENC_XFORM_MODE, key, cfg);},createDecryptor: function(key, cfg) {return this.create(this._DEC_XFORM_MODE, key, cfg);},init: function(xformMode, key, cfg) {this.cfg = this.cfg.extend(cfg);this._xformMode = xformMode;this._key = key;this.reset();},reset: function() {BufferedBlockAlgorithm.reset.call(this);this._doReset();},process: function(dataUpdate) {this._append(dataUpdate);return this._process();},finalize: function(dataUpdate) {if (dataUpdate) {this._append(dataUpdate);}var finalProcessedData = this._doFinalize();return finalProcessedData;},keySize: 128 / 32,ivSize: 128 / 32,_ENC_XFORM_MODE: 1,_DEC_XFORM_MODE: 2,_createHelper: (function() {function selectCipherStrategy(key) {if (typeof key == 'string') {return PasswordBasedCipher;} else {return SerializableCipher;}}return function(cipher) {return {encrypt: function(message, key, cfg) {return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);},decrypt: function(ciphertext, key, cfg) {return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);}};};}())});var StreamCipher = C_lib.StreamCipher = Cipher.extend({_doFinalize: function() {var finalProcessedBlocks = this._process( !! 'flush');return finalProcessedBlocks;},blockSize: 1});var C_mode = C.mode = {};var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({createEncryptor: function(cipher, iv) {return this.Encryptor.create(cipher, iv);},createDecryptor: function(cipher, iv) {return this.Decryptor.create(cipher, iv);},init: function(cipher, iv) {this._cipher = cipher;this._iv = iv;}});var CBC = C_mode.CBC = (function() {var CBC = BlockCipherMode.extend();CBC.Encryptor = CBC.extend({processBlock: function(words, offset) {var cipher = this._cipher;var blockSize = cipher.blockSize;xorBlock.call(this, words, offset, blockSize);cipher.encryptBlock(words, offset);this._prevBlock = words.slice(offset, offset + blockSize);}});CBC.Decryptor = CBC.extend({processBlock: function(words, offset) {var cipher = this._cipher;var blockSize = cipher.blockSize;var thisBlock = words.slice(offset, offset + blockSize);cipher.decryptBlock(words, offset);xorBlock.call(this, words, offset, blockSize);this._prevBlock = thisBlock;}});function xorBlock(words, offset, blockSize) {var iv = this._iv;if (iv) {var block = iv;this._iv = undefined;} else {var block = this._prevBlock;}for (var i = 0; i < blockSize; i++) {words[offset + i] ^= block[i];}}return CBC;}());var C_pad = C.pad = {};var Pkcs7 = C_pad.Pkcs7 = {pad: function(data, blockSize) {var blockSizeBytes = blockSize * 4;var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;var paddingWords = [];for (var i = 0; i < nPaddingBytes; i += 4) {paddingWords.push(paddingWord);}var padding = WordArray.create(paddingWords, nPaddingBytes);data.concat(padding);},unpad: function(data) {var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;data.sigBytes -= nPaddingBytes;}};var BlockCipher = C_lib.BlockCipher = Cipher.extend({cfg: Cipher.cfg.extend({mode: CBC,padding: Pkcs7}),reset: function() {Cipher.reset.call(this);var cfg = this.cfg;var iv = cfg.iv;var mode = cfg.mode;if (this._xformMode == this._ENC_XFORM_MODE) {var modeCreator = mode.createEncryptor;} else {var modeCreator = mode.createDecryptor;this._minBufferSize = 1;}if (this._mode && this._mode.__creator == modeCreator) {this._mode.init(this, iv && iv.words);} else {this._mode = modeCreator.call(mode, this, iv && iv.words);this._mode.__creator = modeCreator;}},_doProcessBlock: function(words, offset) {this._mode.processBlock(words, offset);},_doFinalize: function() {var padding = this.cfg.padding;if (this._xformMode == this._ENC_XFORM_MODE) {padding.pad(this._data, this.blockSize);var finalProcessedBlocks = this._process( !! 'flush');} else {var finalProcessedBlocks = this._process( !! 'flush');padding.unpad(finalProcessedBlocks);}return finalProcessedBlocks;},blockSize: 128 / 32});var CipherParams = C_lib.CipherParams = Base.extend({init: function(cipherParams) {this.mixIn(cipherParams);},toString: function(formatter) {return (formatter || this.formatter).stringify(this);}});var C_format = C.format = {};var OpenSSLFormatter = C_format.OpenSSL = {stringify: function(cipherParams) {var ciphertext = cipherParams.ciphertext;var salt = cipherParams.salt;if (salt) {var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);} else {var wordArray = ciphertext;}return wordArray.toString(Base64);},parse: function(openSSLStr) {var ciphertext = Base64.parse(openSSLStr);var ciphertextWords = ciphertext.words;if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {var salt = WordArray.create(ciphertextWords.slice(2, 4));ciphertextWords.splice(0, 4);ciphertext.sigBytes -= 16;}return CipherParams.create({ciphertext: ciphertext,salt: salt});}};var SerializableCipher = C_lib.SerializableCipher = Base.extend({cfg: Base.extend({format: OpenSSLFormatter}),encrypt: function(cipher, message, key, cfg) {cfg = this.cfg.extend(cfg);var encryptor = cipher.createEncryptor(key, cfg);var ciphertext = encryptor.finalize(message);var cipherCfg = encryptor.cfg;return CipherParams.create({ciphertext: ciphertext,key: key,iv: cipherCfg.iv,algorithm: cipher,mode: cipherCfg.mode,padding: cipherCfg.padding,blockSize: cipher.blockSize,formatter: cfg.format});},decrypt: function(cipher, ciphertext, key, cfg) {cfg = this.cfg.extend(cfg);ciphertext = this._parse(ciphertext, cfg.format);var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);return plaintext;},_parse: function(ciphertext, format) {if (typeof ciphertext == 'string') {return format.parse(ciphertext, this);} else {return ciphertext;}}});var C_kdf = C.kdf = {};var OpenSSLKdf = C_kdf.OpenSSL = {execute: function(password, keySize, ivSize, salt) {if (!salt) {salt = WordArray.random(64 / 8);}var key = EvpKDF.create({keySize: keySize + ivSize}).compute(password, salt);var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);key.sigBytes = keySize * 4;return CipherParams.create({key: key,iv: iv,salt: salt});}};var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({cfg: SerializableCipher.cfg.extend({kdf: OpenSSLKdf}),encrypt: function(cipher, message, password, cfg) {cfg = this.cfg.extend(cfg);var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);cfg.iv = derivedParams.iv;var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);ciphertext.mixIn(derivedParams);return ciphertext;},decrypt: function(cipher, ciphertext, password, cfg) {cfg = this.cfg.extend(cfg);ciphertext = this._parse(ciphertext, cfg.format);var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);cfg.iv = derivedParams.iv;var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);return plaintext;}});}());CryptoJS.mode.CFB = (function() {var CFB = CryptoJS.lib.BlockCipherMode.extend();CFB.Encryptor = CFB.extend({processBlock: function(words, offset) {var cipher = this._cipher;var blockSize = cipher.blockSize;generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);this._prevBlock = words.slice(offset, offset + blockSize);}});CFB.Decryptor = CFB.extend({processBlock: function(words, offset) {var cipher = this._cipher;var blockSize = cipher.blockSize;var thisBlock = words.slice(offset, offset + blockSize);generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);this._prevBlock = thisBlock;}});function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {var iv = this._iv;if (iv) {var keystream = iv.slice(0);this._iv = undefined;} else {var keystream = this._prevBlock;}cipher.encryptBlock(keystream, 0);for (var i = 0; i < blockSize; i++) {words[offset + i] ^= keystream[i];}}return CFB;}());CryptoJS.mode.ECB = (function() {var ECB = CryptoJS.lib.BlockCipherMode.extend();ECB.Encryptor = ECB.extend({processBlock: function(words, offset) {this._cipher.encryptBlock(words, offset);}});ECB.Decryptor = ECB.extend({processBlock: function(words, offset) {this._cipher.decryptBlock(words, offset);}});return ECB;}());CryptoJS.pad.AnsiX923 = {pad: function(data, blockSize) {var dataSigBytes = data.sigBytes;var blockSizeBytes = blockSize * 4;var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;var lastBytePos = dataSigBytes + nPaddingBytes - 1;data.clamp();data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);data.sigBytes += nPaddingBytes;},unpad: function(data) {var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;data.sigBytes -= nPaddingBytes;}};CryptoJS.pad.Iso10126 = {pad: function(data, blockSize) {var blockSizeBytes = blockSize * 4;var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));},unpad: function(data) {var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;data.sigBytes -= nPaddingBytes;}};CryptoJS.pad.Iso97971 = {pad: function(data, blockSize) {data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));CryptoJS.pad.ZeroPadding.pad(data, blockSize);},unpad: function(data) {CryptoJS.pad.ZeroPadding.unpad(data);data.sigBytes--;}};CryptoJS.mode.OFB = (function() {var OFB = CryptoJS.lib.BlockCipherMode.extend();var Encryptor = OFB.Encryptor = OFB.extend({processBlock: function(words, offset) {var cipher = this._ciphervar blockSize = cipher.blockSize;var iv = this._iv;var keystream = this._keystream;if (iv) {keystream = this._keystream = iv.slice(0);this._iv = undefined;}cipher.encryptBlock(keystream, 0);for (var i = 0; i < blockSize; i++) {words[offset + i] ^= keystream[i];}}});OFB.Decryptor = Encryptor;return OFB;}());CryptoJS.pad.NoPadding = {pad: function() {},unpad: function() {}};(function(undefined) {var C = CryptoJS;var C_lib = C.lib;var CipherParams = C_lib.CipherParams;var C_enc = C.enc;var Hex = C_enc.Hex;var C_format = C.format;var HexFormatter = C_format.Hex = {stringify: function(cipherParams) {return cipherParams.ciphertext.toString(Hex);},parse: function(input) {var ciphertext = Hex.parse(input);return CipherParams.create({ciphertext: ciphertext});}};}());(function() {var C = CryptoJS;var C_lib = C.lib;var BlockCipher = C_lib.BlockCipher;var C_algo = C.algo;var SBOX = [];var INV_SBOX = [];var SUB_MIX_0 = [];var SUB_MIX_1 = [];var SUB_MIX_2 = [];var SUB_MIX_3 = [];var INV_SUB_MIX_0 = [];var INV_SUB_MIX_1 = [];var INV_SUB_MIX_2 = [];var INV_SUB_MIX_3 = [];(function() {var d = [];for (var i = 0; i < 256; i++) {if (i < 128) {d[i] = i << 1;} else {d[i] = (i << 1) ^ 0x11b;}}var x = 0;var xi = 0;for (var i = 0; i < 256; i++) {var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;SBOX[x] = sx;INV_SBOX[sx] = x;var x2 = d[x];var x4 = d[x2];var x8 = d[x4];var t = (d[sx] * 0x101) ^ (sx * 0x1010100);SUB_MIX_0[x] = (t << 24) | (t >>> 8);SUB_MIX_1[x] = (t << 16) | (t >>> 16);SUB_MIX_2[x] = (t << 8) | (t >>> 24);SUB_MIX_3[x] = t;var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);INV_SUB_MIX_3[sx] = t;if (!x) {x = xi = 1;} else {x = x2 ^ d[d[d[x8 ^ x2]]];xi ^= d[d[xi]];}}}());var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];var AES = C_algo.AES = BlockCipher.extend({_doReset: function() {if (this._nRounds && this._keyPriorReset === this._key) {return;}var key = this._keyPriorReset = this._key;var keyWords = key.words;var keySize = key.sigBytes / 4;var nRounds = this._nRounds = keySize + 6;var ksRows = (nRounds + 1) * 4;var keySchedule = this._keySchedule = [];for (var ksRow = 0; ksRow < ksRows; ksRow++) {if (ksRow < keySize) {keySchedule[ksRow] = keyWords[ksRow];} else {var t = keySchedule[ksRow - 1];if (!(ksRow % keySize)) {t = (t << 8) | (t >>> 24);t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];t ^= RCON[(ksRow / keySize) | 0] << 24;} else if (keySize > 6 && ksRow % keySize == 4) {t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];}keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;}}var invKeySchedule = this._invKeySchedule = [];for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {var ksRow = ksRows - invKsRow;if (invKsRow % 4) {var t = keySchedule[ksRow];} else {var t = keySchedule[ksRow - 4];}if (invKsRow < 4 || ksRow <= 4) {invKeySchedule[invKsRow] = t;} else {invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^ INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];}}},encryptBlock: function(M, offset) {this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);},decryptBlock: function(M, offset) {var t = M[offset + 1];M[offset + 1] = M[offset + 3];M[offset + 3] = t;this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);var t = M[offset + 1];M[offset + 1] = M[offset + 3];M[offset + 3] = t;},_doCryptBlock: function(M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {var nRounds = this._nRounds;var s0 = M[offset] ^ keySchedule[0];var s1 = M[offset + 1] ^ keySchedule[1];var s2 = M[offset + 2] ^ keySchedule[2];var s3 = M[offset + 3] ^ keySchedule[3];var ksRow = 4;for (var round = 1; round < nRounds; round++) {var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];s0 = t0;s1 = t1;s2 = t2;s3 = t3;}var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];M[offset] = t0;M[offset + 1] = t1;M[offset + 2] = t2;M[offset + 3] = t3;},keySize: 256 / 32});C.AES = BlockCipher._createHelper(AES);}());(function() {var C = CryptoJS;var C_lib = C.lib;var WordArray = C_lib.WordArray;var BlockCipher = C_lib.BlockCipher;var C_algo = C.algo;var PC1 = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4];var PC2 = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32];var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];var SBOX_P = [{0x0: 0x808200,0x10000000: 0x8000,0x20000000: 0x808002,0x30000000: 0x2,0x40000000: 0x200,0x50000000: 0x808202,0x60000000: 0x800202,0x70000000: 0x800000,0x80000000: 0x202,0x90000000: 0x800200,0xa0000000: 0x8200,0xb0000000: 0x808000,0xc0000000: 0x8002,0xd0000000: 0x800002,0xe0000000: 0x0,0xf0000000: 0x8202,0x8000000: 0x0,0x18000000: 0x808202,0x28000000: 0x8202,0x38000000: 0x8000,0x48000000: 0x808200,0x58000000: 0x200,0x68000000: 0x808002,0x78000000: 0x2,0x88000000: 0x800200,0x98000000: 0x8200,0xa8000000: 0x808000,0xb8000000: 0x800202,0xc8000000: 0x800002,0xd8000000: 0x8002,0xe8000000: 0x202,0xf8000000: 0x800000,0x1: 0x8000,0x10000001: 0x2,0x20000001: 0x808200,0x30000001: 0x800000,0x40000001: 0x808002,0x50000001: 0x8200,0x60000001: 0x200,0x70000001: 0x800202,0x80000001: 0x808202,0x90000001: 0x808000,0xa0000001: 0x800002,0xb0000001: 0x8202,0xc0000001: 0x202,0xd0000001: 0x800200,0xe0000001: 0x8002,0xf0000001: 0x0,0x8000001: 0x808202,0x18000001: 0x808000,0x28000001: 0x800000,0x38000001: 0x200,0x48000001: 0x8000,0x58000001: 0x800002,0x68000001: 0x2,0x78000001: 0x8202,0x88000001: 0x8002,0x98000001: 0x800202,0xa8000001: 0x202,0xb8000001: 0x808200,0xc8000001: 0x800200,0xd8000001: 0x0,0xe8000001: 0x8200,0xf8000001: 0x808002}, {0x0: 0x40084010,0x1000000: 0x4000,0x2000000: 0x80000,0x3000000: 0x40080010,0x4000000: 0x40000010,0x5000000: 0x40084000,0x6000000: 0x40004000,0x7000000: 0x10,0x8000000: 0x84000,0x9000000: 0x40004010,0xa000000: 0x40000000,0xb000000: 0x84010,0xc000000: 0x80010,0xd000000: 0x0,0xe000000: 0x4010,0xf000000: 0x40080000,0x800000: 0x40004000,0x1800000: 0x84010,0x2800000: 0x10,0x3800000: 0x40004010,0x4800000: 0x40084010,0x5800000: 0x40000000,0x6800000: 0x80000,0x7800000: 0x40080010,0x8800000: 0x80010,0x9800000: 0x0,0xa800000: 0x4000,0xb800000: 0x40080000,0xc800000: 0x40000010,0xd800000: 0x84000,0xe800000: 0x40084000,0xf800000: 0x4010,0x10000000: 0x0,0x11000000: 0x40080010,0x12000000: 0x40004010,0x13000000: 0x40084000,0x14000000: 0x40080000,0x15000000: 0x10,0x16000000: 0x84010,0x17000000: 0x4000,0x18000000: 0x4010,0x19000000: 0x80000,0x1a000000: 0x80010,0x1b000000: 0x40000010,0x1c000000: 0x84000,0x1d000000: 0x40004000,0x1e000000: 0x40000000,0x1f000000: 0x40084010,0x10800000: 0x84010,0x11800000: 0x80000,0x12800000: 0x40080000,0x13800000: 0x4000,0x14800000: 0x40004000,0x15800000: 0x40084010,0x16800000: 0x10,0x17800000: 0x40000000,0x18800000: 0x40084000,0x19800000: 0x40000010,0x1a800000: 0x40004010,0x1b800000: 0x80010,0x1c800000: 0x0,0x1d800000: 0x4010,0x1e800000: 0x40080010,0x1f800000: 0x84000}, {0x0: 0x104,0x100000: 0x0,0x200000: 0x4000100,0x300000: 0x10104,0x400000: 0x10004,0x500000: 0x4000004,0x600000: 0x4010104,0x700000: 0x4010000,0x800000: 0x4000000,0x900000: 0x4010100,0xa00000: 0x10100,0xb00000: 0x4010004,0xc00000: 0x4000104,0xd00000: 0x10000,0xe00000: 0x4,0xf00000: 0x100,0x80000: 0x4010100,0x180000: 0x4010004,0x280000: 0x0,0x380000: 0x4000100,0x480000: 0x4000004,0x580000: 0x10000,0x680000: 0x10004,0x780000: 0x104,0x880000: 0x4,0x980000: 0x100,0xa80000: 0x4010000,0xb80000: 0x10104,0xc80000: 0x10100,0xd80000: 0x4000104,0xe80000: 0x4010104,0xf80000: 0x4000000,0x1000000: 0x4010100,0x1100000: 0x10004,0x1200000: 0x10000,0x1300000: 0x4000100,0x1400000: 0x100,0x1500000: 0x4010104,0x1600000: 0x4000004,0x1700000: 0x0,0x1800000: 0x4000104,0x1900000: 0x4000000,0x1a00000: 0x4,0x1b00000: 0x10100,0x1c00000: 0x4010000,0x1d00000: 0x104,0x1e00000: 0x10104,0x1f00000: 0x4010004,0x1080000: 0x4000000,0x1180000: 0x104,0x1280000: 0x4010100,0x1380000: 0x0,0x1480000: 0x10004,0x1580000: 0x4000100,0x1680000: 0x100,0x1780000: 0x4010004,0x1880000: 0x10000,0x1980000: 0x4010104,0x1a80000: 0x10104,0x1b80000: 0x4000004,0x1c80000: 0x4000104,0x1d80000: 0x4010000,0x1e80000: 0x4,0x1f80000: 0x10100}, {0x0: 0x80401000,0x10000: 0x80001040,0x20000: 0x401040,0x30000: 0x80400000,0x40000: 0x0,0x50000: 0x401000,0x60000: 0x80000040,0x70000: 0x400040,0x80000: 0x80000000,0x90000: 0x400000,0xa0000: 0x40,0xb0000: 0x80001000,0xc0000: 0x80400040,0xd0000: 0x1040,0xe0000: 0x1000,0xf0000: 0x80401040,0x8000: 0x80001040,0x18000: 0x40,0x28000: 0x80400040,0x38000: 0x80001000,0x48000: 0x401000,0x58000: 0x80401040,0x68000: 0x0,0x78000: 0x80400000,0x88000: 0x1000,0x98000: 0x80401000,0xa8000: 0x400000,0xb8000: 0x1040,0xc8000: 0x80000000,0xd8000: 0x400040,0xe8000: 0x401040,0xf8000: 0x80000040,0x100000: 0x400040,0x110000: 0x401000,0x120000: 0x80000040,0x130000: 0x0,0x140000: 0x1040,0x150000: 0x80400040,0x160000: 0x80401000,0x170000: 0x80001040,0x180000: 0x80401040,0x190000: 0x80000000,0x1a0000: 0x80400000,0x1b0000: 0x401040,0x1c0000: 0x80001000,0x1d0000: 0x400000,0x1e0000: 0x40,0x1f0000: 0x1000,0x108000: 0x80400000,0x118000: 0x80401040,0x128000: 0x0,0x138000: 0x401000,0x148000: 0x400040,0x158000: 0x80000000,0x168000: 0x80001040,0x178000: 0x40,0x188000: 0x80000040,0x198000: 0x1000,0x1a8000: 0x80001000,0x1b8000: 0x80400040,0x1c8000: 0x1040,0x1d8000: 0x80401000,0x1e8000: 0x400000,0x1f8000: 0x401040}, {0x0: 0x80,0x1000: 0x1040000,0x2000: 0x40000,0x3000: 0x20000000,0x4000: 0x20040080,0x5000: 0x1000080,0x6000: 0x21000080,0x7000: 0x40080,0x8000: 0x1000000,0x9000: 0x20040000,0xa000: 0x20000080,0xb000: 0x21040080,0xc000: 0x21040000,0xd000: 0x0,0xe000: 0x1040080,0xf000: 0x21000000,0x800: 0x1040080,0x1800: 0x21000080,0x2800: 0x80,0x3800: 0x1040000,0x4800: 0x40000,0x5800: 0x20040080,0x6800: 0x21040000,0x7800: 0x20000000,0x8800: 0x20040000,0x9800: 0x0,0xa800: 0x21040080,0xb800: 0x1000080,0xc800: 0x20000080,0xd800: 0x21000000,0xe800: 0x1000000,0xf800: 0x40080,0x10000: 0x40000,0x11000: 0x80,0x12000: 0x20000000,0x13000: 0x21000080,0x14000: 0x1000080,0x15000: 0x21040000,0x16000: 0x20040080,0x17000: 0x1000000,0x18000: 0x21040080,0x19000: 0x21000000,0x1a000: 0x1040000,0x1b000: 0x20040000,0x1c000: 0x40080,0x1d000: 0x20000080,0x1e000: 0x0,0x1f000: 0x1040080,0x10800: 0x21000080,0x11800: 0x1000000,0x12800: 0x1040000,0x13800: 0x20040080,0x14800: 0x20000000,0x15800: 0x1040080,0x16800: 0x80,0x17800: 0x21040000,0x18800: 0x40080,0x19800: 0x21040080,0x1a800: 0x0,0x1b800: 0x21000000,0x1c800: 0x1000080,0x1d800: 0x40000,0x1e800: 0x20040000,0x1f800: 0x20000080}, {0x0: 0x10000008,0x100: 0x2000,0x200: 0x10200000,0x300: 0x10202008,0x400: 0x10002000,0x500: 0x200000,0x600: 0x200008,0x700: 0x10000000,0x800: 0x0,0x900: 0x10002008,0xa00: 0x202000,0xb00: 0x8,0xc00: 0x10200008,0xd00: 0x202008,0xe00: 0x2008,0xf00: 0x10202000,0x80: 0x10200000,0x180: 0x10202008,0x280: 0x8,0x380: 0x200000,0x480: 0x202008,0x580: 0x10000008,0x680: 0x10002000,0x780: 0x2008,0x880: 0x200008,0x980: 0x2000,0xa80: 0x10002008,0xb80: 0x10200008,0xc80: 0x0,0xd80: 0x10202000,0xe80: 0x202000,0xf80: 0x10000000,0x1000: 0x10002000,0x1100: 0x10200008,0x1200: 0x10202008,0x1300: 0x2008,0x1400: 0x200000,0x1500: 0x10000000,0x1600: 0x10000008,0x1700: 0x202000,0x1800: 0x202008,0x1900: 0x0,0x1a00: 0x8,0x1b00: 0x10200000,0x1c00: 0x2000,0x1d00: 0x10002008,0x1e00: 0x10202000,0x1f00: 0x200008,0x1080: 0x8,0x1180: 0x202000,0x1280: 0x200000,0x1380: 0x10000008,0x1480: 0x10002000,0x1580: 0x2008,0x1680: 0x10202008,0x1780: 0x10200000,0x1880: 0x10202000,0x1980: 0x10200008,0x1a80: 0x2000,0x1b80: 0x202008,0x1c80: 0x200008,0x1d80: 0x0,0x1e80: 0x10000000,0x1f80: 0x10002008}, {0x0: 0x100000,0x10: 0x2000401,0x20: 0x400,0x30: 0x100401,0x40: 0x2100401,0x50: 0x0,0x60: 0x1,0x70: 0x2100001,0x80: 0x2000400,0x90: 0x100001,0xa0: 0x2000001,0xb0: 0x2100400,0xc0: 0x2100000,0xd0: 0x401,0xe0: 0x100400,0xf0: 0x2000000,0x8: 0x2100001,0x18: 0x0,0x28: 0x2000401,0x38: 0x2100400,0x48: 0x100000,0x58: 0x2000001,0x68: 0x2000000,0x78: 0x401,0x88: 0x100401,0x98: 0x2000400,0xa8: 0x2100000,0xb8: 0x100001,0xc8: 0x400,0xd8: 0x2100401,0xe8: 0x1,0xf8: 0x100400,0x100: 0x2000000,0x110: 0x100000,0x120: 0x2000401,0x130: 0x2100001,0x140: 0x100001,0x150: 0x2000400,0x160: 0x2100400,0x170: 0x100401,0x180: 0x401,0x190: 0x2100401,0x1a0: 0x100400,0x1b0: 0x1,0x1c0: 0x0,0x1d0: 0x2100000,0x1e0: 0x2000001,0x1f0: 0x400,0x108: 0x100400,0x118: 0x2000401,0x128: 0x2100001,0x138: 0x1,0x148: 0x2000000,0x158: 0x100000,0x168: 0x401,0x178: 0x2100400,0x188: 0x2000001,0x198: 0x2100000,0x1a8: 0x0,0x1b8: 0x2100401,0x1c8: 0x100401,0x1d8: 0x400,0x1e8: 0x2000400,0x1f8: 0x100001}, {0x0: 0x8000820,0x1: 0x20000,0x2: 0x8000000,0x3: 0x20,0x4: 0x20020,0x5: 0x8020820,0x6: 0x8020800,0x7: 0x800,0x8: 0x8020000,0x9: 0x8000800,0xa: 0x20800,0xb: 0x8020020,0xc: 0x820,0xd: 0x0,0xe: 0x8000020,0xf: 0x20820,0x80000000: 0x800,0x80000001: 0x8020820,0x80000002: 0x8000820,0x80000003: 0x8000000,0x80000004: 0x8020000,0x80000005: 0x20800,0x80000006: 0x20820,0x80000007: 0x20,0x80000008: 0x8000020,0x80000009: 0x820,0x8000000a: 0x20020,0x8000000b: 0x8020800,0x8000000c: 0x0,0x8000000d: 0x8020020,0x8000000e: 0x8000800,0x8000000f: 0x20000,0x10: 0x20820,0x11: 0x8020800,0x12: 0x20,0x13: 0x800,0x14: 0x8000800,0x15: 0x8000020,0x16: 0x8020020,0x17: 0x20000,0x18: 0x0,0x19: 0x20020,0x1a: 0x8020000,0x1b: 0x8000820,0x1c: 0x8020820,0x1d: 0x20800,0x1e: 0x820,0x1f: 0x8000000,0x80000010: 0x20000,0x80000011: 0x800,0x80000012: 0x8020020,0x80000013: 0x20820,0x80000014: 0x20,0x80000015: 0x8020000,0x80000016: 0x8000000,0x80000017: 0x8000820,0x80000018: 0x8020820,0x80000019: 0x8000020,0x8000001a: 0x8000800,0x8000001b: 0x0,0x8000001c: 0x20800,0x8000001d: 0x820,0x8000001e: 0x20020,0x8000001f: 0x8020800}];var SBOX_MASK = [0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000, 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f];var DES = C_algo.DES = BlockCipher.extend({_doReset: function() {var key = this._key;var keyWords = key.words;var keyBits = [];for (var i = 0; i < 56; i++) {var keyBitPos = PC1[i] - 1;keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;}var subKeys = this._subKeys = [];for (var nSubKey = 0; nSubKey < 16; nSubKey++) {var subKey = subKeys[nSubKey] = [];var bitShift = BIT_SHIFTS[nSubKey];for (var i = 0; i < 24; i++) {subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);}subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);for (var i = 1; i < 7; i++) {subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);}subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);}var invSubKeys = this._invSubKeys = [];for (var i = 0; i < 16; i++) {invSubKeys[i] = subKeys[15 - i];}},encryptBlock: function(M, offset) {this._doCryptBlock(M, offset, this._subKeys);},decryptBlock: function(M, offset) {this._doCryptBlock(M, offset, this._invSubKeys);},_doCryptBlock: function(M, offset, subKeys) {this._lBlock = M[offset];this._rBlock = M[offset + 1];exchangeLR.call(this, 4, 0x0f0f0f0f);exchangeLR.call(this, 16, 0x0000ffff);exchangeRL.call(this, 2, 0x33333333);exchangeRL.call(this, 8, 0x00ff00ff);exchangeLR.call(this, 1, 0x55555555);for (var round = 0; round < 16; round++) {var subKey = subKeys[round];var lBlock = this._lBlock;var rBlock = this._rBlock;var f = 0;for (var i = 0; i < 8; i++) {f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];}this._lBlock = rBlock;this._rBlock = lBlock ^ f;}var t = this._lBlock;this._lBlock = this._rBlock;this._rBlock = t;exchangeLR.call(this, 1, 0x55555555);exchangeRL.call(this, 8, 0x00ff00ff);exchangeRL.call(this, 2, 0x33333333);exchangeLR.call(this, 16, 0x0000ffff);exchangeLR.call(this, 4, 0x0f0f0f0f);M[offset] = this._lBlock;M[offset + 1] = this._rBlock;},keySize: 64 / 32,ivSize: 64 / 32,blockSize: 64 / 32});function exchangeLR(offset, mask) {var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;this._rBlock ^= t;this._lBlock ^= t << offset;}function exchangeRL(offset, mask) {var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;this._lBlock ^= t;this._rBlock ^= t << offset;}C.DES = BlockCipher._createHelper(DES);var TripleDES = C_algo.TripleDES = BlockCipher.extend({_doReset: function() {var key = this._key;var keyWords = key.words;this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));},encryptBlock: function(M, offset) {this._des1.encryptBlock(M, offset);this._des2.decryptBlock(M, offset);this._des3.encryptBlock(M, offset);},decryptBlock: function(M, offset) {this._des3.decryptBlock(M, offset);this._des2.encryptBlock(M, offset);this._des1.decryptBlock(M, offset);},keySize: 192 / 32,ivSize: 64 / 32,blockSize: 64 / 32});C.TripleDES = BlockCipher._createHelper(TripleDES);}());(function() {var C = CryptoJS;var C_lib = C.lib;var StreamCipher = C_lib.StreamCipher;var C_algo = C.algo;var RC4 = C_algo.RC4 = StreamCipher.extend({_doReset: function() {var key = this._key;var keyWords = key.words;var keySigBytes = key.sigBytes;var S = this._S = [];for (var i = 0; i < 256; i++) {S[i] = i;}for (var i = 0, j = 0; i < 256; i++) {var keyByteIndex = i % keySigBytes;var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;j = (j + S[i] + keyByte) % 256;var t = S[i];S[i] = S[j];S[j] = t;}this._i = this._j = 0;},_doProcessBlock: function(M, offset) {M[offset] ^= generateKeystreamWord.call(this);},keySize: 256 / 32,ivSize: 0});function generateKeystreamWord() {var S = this._S;var i = this._i;var j = this._j;var keystreamWord = 0;for (var n = 0; n < 4; n++) {i = (i + 1) % 256;j = (j + S[i]) % 256;var t = S[i];S[i] = S[j];S[j] = t;keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);}this._i = i;this._j = j;return keystreamWord;}C.RC4 = StreamCipher._createHelper(RC4);var RC4Drop = C_algo.RC4Drop = RC4.extend({cfg: RC4.cfg.extend({drop: 192}),_doReset: function() {RC4._doReset.call(this);for (var i = this.cfg.drop; i > 0; i--) {generateKeystreamWord.call(this);}}});C.RC4Drop = StreamCipher._createHelper(RC4Drop);}());CryptoJS.mode.CTRGladman = (function() {var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();function incWord(word) {if (((word >> 24) & 0xff) === 0xff) {var b1 = (word >> 16) & 0xff;var b2 = (word >> 8) & 0xff;var b3 = word & 0xff;if (b1 === 0xff) {b1 = 0;if (b2 === 0xff) {b2 = 0;if (b3 === 0xff) {b3 = 0;} else {++b3;}} else {++b2;}} else {++b1;}word = 0;word += (b1 << 16);word += (b2 << 8);word += b3;} else {word += (0x01 << 24);}return word;}function incCounter(counter) {if ((counter[0] = incWord(counter[0])) === 0) {counter[1] = incWord(counter[1]);}return counter;}var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({processBlock: function(words, offset) {var cipher = this._ciphervar blockSize = cipher.blockSize;var iv = this._iv;var counter = this._counter;if (iv) {counter = this._counter = iv.slice(0);this._iv = undefined;}incCounter(counter);var keystream = counter.slice(0);cipher.encryptBlock(keystream, 0);for (var i = 0; i < blockSize; i++) {words[offset + i] ^= keystream[i];}}});CTRGladman.Decryptor = Encryptor;return CTRGladman;}());(function() {var C = CryptoJS;var C_lib = C.lib;var StreamCipher = C_lib.StreamCipher;var C_algo = C.algo;var S = [];var C_ = [];var G = [];var Rabbit = C_algo.Rabbit = StreamCipher.extend({_doReset: function() {var K = this._key.words;var iv = this.cfg.iv;for (var i = 0; i < 4; i++) {K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) | (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);}var X = this._X = [K[0], (K[3] << 16) | (K[2] >>> 16), K[1], (K[0] << 16) | (K[3] >>> 16), K[2], (K[1] << 16) | (K[0] >>> 16), K[3], (K[2] << 16) | (K[1] >>> 16)];var C = this._C = [(K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)];this._b = 0;for (var i = 0; i < 4; i++) {nextState.call(this);}for (var i = 0; i < 8; i++) {C[i] ^= X[(i + 4) & 7];}if (iv) {var IV = iv.words;var IV_0 = IV[0];var IV_1 = IV[1];var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);var i1 = (i0 >>> 16) | (i2 & 0xffff0000);var i3 = (i2 << 16) | (i0 & 0x0000ffff);C[0] ^= i0;C[1] ^= i1;C[2] ^= i2;C[3] ^= i3;C[4] ^= i0;C[5] ^= i1;C[6] ^= i2;C[7] ^= i3;for (var i = 0; i < 4; i++) {nextState.call(this);}}},_doProcessBlock: function(M, offset) {var X = this._X;nextState.call(this);S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);for (var i = 0; i < 4; i++) {S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);M[offset + i] ^= S[i];}},blockSize: 128 / 32,ivSize: 64 / 32});function nextState() {var X = this._X;var C = this._C;for (var i = 0; i < 8; i++) {C_[i] = C[i];}C[0] = (C[0] + 0x4d34d34d + this._b) | 0;C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;for (var i = 0; i < 8; i++) {var gx = X[i] + C[i];var ga = gx & 0xffff;var gb = gx >>> 16;var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);G[i] = gh ^ gl;}X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;}C.Rabbit = StreamCipher._createHelper(Rabbit);}());CryptoJS.mode.CTR = (function() {var CTR = CryptoJS.lib.BlockCipherMode.extend();var Encryptor = CTR.Encryptor = CTR.extend({processBlock: function(words, offset) {var cipher = this._ciphervar blockSize = cipher.blockSize;var iv = this._iv;var counter = this._counter;if (iv) {counter = this._counter = iv.slice(0);this._iv = undefined;}var keystream = counter.slice(0);cipher.encryptBlock(keystream, 0);counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0for (var i = 0; i < blockSize; i++) {words[offset + i] ^= keystream[i];}}});CTR.Decryptor = Encryptor;return CTR;}());(function() {var C = CryptoJS;var C_lib = C.lib;var StreamCipher = C_lib.StreamCipher;var C_algo = C.algo;var S = [];var C_ = [];var G = [];var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({_doReset: function() {var K = this._key.words;var iv = this.cfg.iv;var X = this._X = [K[0], (K[3] << 16) | (K[2] >>> 16), K[1], (K[0] << 16) | (K[3] >>> 16), K[2], (K[1] << 16) | (K[0] >>> 16), K[3], (K[2] << 16) | (K[1] >>> 16)];var C = this._C = [(K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)];this._b = 0;for (var i = 0; i < 4; i++) {nextState.call(this);}for (var i = 0; i < 8; i++) {C[i] ^= X[(i + 4) & 7];}if (iv) {var IV = iv.words;var IV_0 = IV[0];var IV_1 = IV[1];var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);var i1 = (i0 >>> 16) | (i2 & 0xffff0000);var i3 = (i2 << 16) | (i0 & 0x0000ffff);C[0] ^= i0;C[1] ^= i1;C[2] ^= i2;C[3] ^= i3;C[4] ^= i0;C[5] ^= i1;C[6] ^= i2;C[7] ^= i3;for (var i = 0; i < 4; i++) {nextState.call(this);}}},_doProcessBlock: function(M, offset) {var X = this._X;nextState.call(this);S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);for (var i = 0; i < 4; i++) {S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);M[offset + i] ^= S[i];}},blockSize: 128 / 32,ivSize: 64 / 32});function nextState() {var X = this._X;var C = this._C;for (var i = 0; i < 8; i++) {C_[i] = C[i];}C[0] = (C[0] + 0x4d34d34d + this._b) | 0;C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;for (var i = 0; i < 8; i++) {var gx = X[i] + C[i];var ga = gx & 0xffff;var gb = gx >>> 16;var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);G[i] = gh ^ gl;}X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;}C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);}());CryptoJS.pad.ZeroPadding = {pad: function(data, blockSize) {var blockSizeBytes = blockSize * 4;data.clamp();data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);},unpad: function(data) {var dataWords = data.words;var i = data.sigBytes - 1;while (!((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {i--;}data.sigBytes = i + 1;}};return CryptoJS;
}function encryptByDES(message, key) {var keyHex = CryptoJS.enc.Utf8.parse(key);var encrypted = CryptoJS.DES.encrypt(message, keyHex, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});return encrypted.ciphertext.toString();
}function getSign(){var message = 'https://wangluozhe.com/challenge/3';message = message + '|' + Date.parse(new Date()).toString();var key = Date.parse(new Date()).toString();window.sign = encryptByDES(message, key);return window.sign
}// console.log(getSign());
五、python代码实现
import time
import execjs
import requestsclass Spider(object):def __init__(self):with open(file='js_encrypt.js', mode='r', encoding='utf-8') as fis:js_code = fis.read() # 读取JS代码文件self.js_obj = execjs.compile(js_code) # 激将JS代码传入self.headers = {'Accept': 'application/json, text/javascript, */*; q=0.01','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/110.0.0.0 Safari/537.36','Cookie': '自己账户的cookie'}self.url = 'https://wangluozhe.com/challenge/api/3'self.count_number = 0def getParams(self, page):form_data = {'page': page,'count': 10,'_signature': self.js_obj.call("getSign")}return form_datadef request_server(self, page):form_data = self.getParams(page)print("当前参数:", form_data)response = requests.post(url=self.url, headers=self.headers, data=form_data)for items in response.json()['data']:print(f"当前值:{self.count_number} + {items['value']} = {self.count_number+items['value']}")self.count_number += items['value']def runs(self):for page in range(1, 100+1):self.request_server(page=page)time.sleep(1.5)print(f"100页的所有数据并加和:{self.count_number}")if __name__ == '__main__':Spider().runs()
总结
推荐 - 网洛者反爬练习平台第三题AAEncode 加密:https://blog.csdn.net/kdl_csdn/article/details/121977337
相关文章:
Web Spider案例 网洛克 第三题 AAEncode加密 练习(七)
声明 此次案例只为学习交流使用,抓包内容、敏感网址、数据接口均已做脱敏处理,切勿用于其他非法用途; 文章目录声明一、资源推荐二、逆向目标三、抓包分析 & 下断分析逆向3.1 抓包分析3.2 下断分析逆向拿到混淆JS代码3.3 AAEncode解决方…...
【javaScript面试题】2023前端最新版javaScript模块,高频24问
🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:博主收集的关于javaScript的面试题 目录 一、2023javaScript面试题精选 1.js的数据类型…...
Hadoop集群启动从节点没有DataNode
一、问题背景 之前启动hadoop集群的时候都没有问题,今天启动hadoop集群的时候,从节点的DataNode没有启动起来。 二、解决思路 遇见节点起不来的情况,可以去看看当前节点的日志文件 我进入当前从节点的hadoop安装目录的Logs文件下去查看日…...
FIFO IP Core
FIFO IP Core 先进先出的缓存器常常被用于数据的缓存,或者高速异步数据交互(跨时钟信号传递)和RAM和ROM的区别是没有地址线,无法指定地址 写时钟(Write Clock Domain),读时钟写复位(wr_rst),读…...
从FPGA说起的深度学习(四)
这是新的系列教程,在本教程中,我们将介绍使用 FPGA 实现深度学习的技术,深度学习是近年来人工智能领域的热门话题。在本教程中,旨在加深对深度学习和 FPGA 的理解。用 C/C 编写深度学习推理代码高级综合 (HLS) 将 C/C 代码转换为硬…...
pytorch入门7--自动求导和神经网络
深度学习网上自学学了10多天了,看了很多大神的课总是很快被劝退。终于,遇到了一位对小白友好的刘二大人,先附上链接,需要者自取:https://b23.tv/RHlDxbc。 下面是课程笔记。 一、自动求导 举例说明自动求导。 torch中的…...
QT 之wayland 事件处理分析基于qt5wayland5.14.2
1. Qt wayland 初始化 接收鼠标/案件,触摸屏等事件事件 QWaylandNativeInterface : public QPlatformNativeInterface 在QWaylandNativeInterface 继承qpa 接口类QPlatformNativeInterface; 1.1 初始化鼠标: void *QWaylandNativeInterface::nativeR…...
【this 和 super 的区别】
在 Java 中,this 和 super 都是关键字,表示当前对象和父类对象。 this 关键字可以用于以下几种情况: 引用当前对象的成员变量,方法和构造方法,用于区分局部变量和成员变量重名的情况; 调用当前类的另外一…...
K8s:Monokle Desktop 一个集Yaml资源编写、项目管理、集群管理的 K8s IDE
写在前面 Monokle Desktop 是 kubeshop 推出的一个开源的 K8s IDE相关项目还有 Monokle CLI 和 Monokle Cloud相比其他的工具,Monokle Desktop 功能较全面,涉及 k8s 管理的整个生命周期博文内容:Monokle Desktop 下载安装,项目管理…...
自动化测试实战篇(8),jmeter并发测试登录接口,模拟从100到1000个用户同时登录测试服务器压力
首先进行使用jmeter进行并发测试之前就需要搞清楚线程和进程的区别还需要理解什么是并发、高并发、并行。还需要理解高并发中的以及老生常谈的,TCP三次握手协议和TCP四次握手协议**TCP三次握手协议指:****TCP四次挥手协议:**进入Jmeter&#…...
ATTCK v12版本战术实战研究—持久化(二)
一、前言前几期文章中,我们介绍了ATT&CK中侦察、资源开发、初始访问、执行战术、持久化战术的知识。那么从前文中介绍的相关持久化子技术来开展测试,进行更深一步的分析。本文主要内容是介绍攻击者在运用持久化子技术时,在相关的资产服务…...
python函数式编程
1 callable内建函数判断一个名字是否为一个可调用函数 >>> import math >>> x 1 >>> y math.sqrt >>> callable(x) False >>> callable(y) True 2 记录函数(文档字符串) >>> def square(x): …...
3.linux下安装mysql
1.安装前的环境准备 查看是否安装过mysql 首先检测Linux操作系统中是否安装了MySQL: # rpm -qa | grep -i mysql 卸载安装包 如果有信息出现,则进行删除,命令如下: # rpm -e --nodeps 包名 删除老版本mysql的开发头文件和…...
17、MySQL分库分表,原理实战
MySQL分库分表,原理实战 1.MyCAT分布式架构入门及双主架构1.1 主从架构1.2 MyCAT安装1.3 启动和连接1.4 配置文件介绍2.MyCAT读写分离架构2.1 架构说明2.2 创建用户2.3 schema.xml2.4 连接说明2.5 读写测试2.6 当前是单节点3.MyCAT高可用读写分离架构3.1 架构说明3.3 schema.xm…...
【C++的OpenCV】第九课-OpenCV图像常用操作(六):图像形态学-阈值的概念、功能及操作(threshold()函数))
目录一、阈值(thresh)的概念二、阈值在图形学中的用途三、阈值的作用和操作3.1 在OpenCV中可以进行的阈值操作3.2 操作实例3.2.1 threshold()函数介绍3.2.2 实例3.2.3 结果上节课的内容(作者还是鼓励各位同学按照顺序进行学习哦)&…...
[Java代码审计]—MCMS
环境搭建 MCMS 5.2.4:https://gitee.com/mingSoft/MCMS/tree/5.2.4/利用 idea 打开项目 创建数据库 mcms,导入 doc/mcms-5.2.8.sql 修改 src/main/resources/application-dev.yml 中关于数据库设置参数 启动项目登录后台 http://localhost:8080/ms/l…...
《程序员面试金典(第6版)》面试题 01.08. 零矩阵
题目描述 编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。 示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3] -示例2: 输入:[1, 1, 1, 1, 2] 输出:[1, 2] 提示: 链表长度在[0, 20000]范…...
初识 Python
文章目录简介用途解释器命令行模式交互模式输入和输出简介 高级编程语言,解释型语言代码在执行时会逐行翻译成 CPU 能理解的机器码代码精简,但运行速度慢基础代码库丰富,还有大量第三方库代码不能加密 用途 网络应用工具软件包装其他语言开…...
常用sql语句分享
SELECT COUNT(DISTINCT money) FROM ac_association_course;#COUNT() 函数返回匹配指定条件的行数SELECT AVG(money) FROM ac_association_course;#AVG 函数返回数值列的平均值。NULL 值不包括在计算中SELECT id FROM ac_association_course order by id desc limit 1;#返回最大…...
极狐GitLab DevSecOps 为企业许可证安全合规保驾护航
本文来自: 小马哥 极狐(GitLab) 技术布道师 开源许可证是开源软件的法律武器,是第三方正确使用开源软件的安全合规依据。 根据 Linux 发布的 SBOM 报告显示,98% 的企业都在使用开源软件(中文版报告详情)。随着开源使用…...
后端程序员的前端基础-前端三剑客之HTML
文章目录1 HTML简介1.1 什么是HTML1.2 HTML能做什么1.3 HTML书写规范2 HTML基本标签2.1 结构标签2.2 排版标签2.3 块标签2.4 基本文字标签2.5 文本格式化标签2.6 标题标签2.7 列表标签(清单标签)2.8 图片标签2.9 链接标签2.10 表格标签3 HTML表单标签3.1 form元素常用属性3.2 i…...
VS2019加载解决方案时不能自动打开之前的文档(回忆消失)
✏️作者:枫霜剑客 📋系列专栏:C实战宝典 🌲上一篇: 错误error c3861 :“_T“:找不到标识符 逐梦编程,让中华屹立世界之巅。 简单的事情重复做,重复的事情用心做,用心的事情坚持做; 文章目录前言一、问题描…...
ConcurrentHashMap-Java八股面试(五)
系列文章目录 第一章 ArrayList-Java八股面试(一) 第二章 HashMap-Java八股面试(二) 第三章 单例模式-Java八股面试(三) 第四章 线程池和Volatile关键字-Java八股面试(四) 提示:动态每日更新算法题,想要学习的可以关注一下 文章目录系列文章目录一、…...
互联网衰退期,测试工程师35岁的路该怎么走...
国内的互联网行业发展较快,所以造成了技术研发类员工工作强度比较大,同时技术的快速更新又需要员工不断的学习新的技术。因此淘汰率也比较高,超过35岁的基层研发类员工,往往因为家庭原因、身体原因,比较难以跟得上工作…...
Windows Cannot Initialize Data Bindings 问题的解决方法
前言 拿到一个调试程序, 怎么折腾都打不开, 在客户那边, 尝试了几个系统版本, 发现Windows 10 21H2 版本可以正常运行。 尝试 系统篇 系统结果公司电脑 Windows 8有问题…下载安装 Windows10 22H2问题依旧下载安装 Windows10 21H2问题依旧家里的 笔记本Window 11正常 网上…...
Leetcode每日一题 1487. 保证文件名唯一
Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…...
Linux常用命令——lsusb命令
在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) lsusb 显示本机的USB设备列表信息 补充说明 lsusb命令用于显示本机的USB设备列表,以及USB设备的详细信息。 lsusb命令是一个学习USB驱动开发,认识USB设备的助手,推荐大家使用…...
Python——我愿称之为最简单的语言
Python——我愿称之为最简单的语言开发工具基础语法变量和数据类型列表和元组字典if语句while语句函数类文件与异常测试代码参考书籍:《python编程从入门到实践》 开发工具 python编程环境分为两个部分:python解释器和文本编辑器。运行.py文件时&#…...
java.io.IOException: Broken pipe
1、问题出现的场景 线上环境,拉取对账单,走的接口的形式,当天单量比较大,就出现了,拉取订单超时,报了个错java.io.IOException: Broken pipe。 2、解决方案 我们设置的超时时间是100S,由于当…...
Python——列表排序和赋值
(1)列表排序: 列表排序方法 ls.sort() 对列表ls 中的数据在原地进行排序 ls [13, 5, 73, 4, 9] ls.sort()ls.sort(reverseFalse) 默认升序,reverseTrue,降序 ls [13, 5, 73, 4, 9] ls.sort(reverseTrue)key指定排序时…...
wordpress读者墙不显示/百度广告一天多少钱
1. 背景 每次登陆shell 遇到需要敲一行命令来查看一个问题或者升级一个应用时就感觉很麻烦,可以考虑将函数放到特定的位置,这样每次登陆shell时就会重新载入。 2. 登陆shell时读取命令的流程 当你登录Linux系统时,bash shell会作为登录she…...
企业怎么样上各大网站做宣传/什么是论坛推广
查看SELinux状态: 1、##如果 SELinux status 参数为enabled即为开启状态 /usr/sbin/sestatus -v 2、也可以用这个命令检查 getenforce 关闭SELinux: 1、临时关闭(不用重启机器): setenforce 0 …...
做宣传网站/最佳bt磁力狗
1.在我们写APP的时候经常会遇到这种情况,点击一个按钮后,通过网络异步操作从后台获取信息,然后再展示到UI,例如 public class MyActivity extends BaseActivity {private void getUser(){LoadingDialog loadingDialognew LoadingD…...
网站绑定微信号/平面设计培训费用一般是多少
junit 报错 java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayNametestSelectByExample], 坑了我三个点的问题 不是没写 Test,不是 public,参数,返回值,修饰符的错误,也不是 spring 包与 junit 的…...
如何建淘客网站/网站制作推广
打开idea的Terminal,输入 npm install -g webpack webpack-cli...
江苏省建设注册中心网站首页/2022年最近十大新闻
导读: 新一篇: Linux那些事儿 之 戏说USB(9)我是谁| 旧一篇: Linux那些事儿 之 戏说USB(7)我是一棵树(二)奥义是什么?看过圣斗士不?人是人他妈生的,妖是妖他妈生的,大家都是讨口饭吃,不用这么耍我吧。 那么…...