var Util=function(){function w(a){function d(m,h){return m<<h|m>>>32-h}function e(m){var h="",n,i;for(n=7;n>=0;n--){i=m>>>n*4&15;h+=i.toString(16)}return h}function x(m){m=m.replace(/\r\n/g,"\n");for(var h="",n=0;n<m.length;n++){var i=m.charCodeAt(n);if(i<128)h+=String.fromCharCode(i);else{if(i>127&&i<2048)h+=String.fromCharCode(i>>6|192);else{h+=String.fromCharCode(i>>12|224);h+=String.fromCharCode(i>>6&63|128)}h+=String.fromCharCode(i&63|128)}}return h}var q,k=new Array(80),r=1732584193,s=4023233417,
t=2562383102,u=271733878,v=3285377520,c,b,f,g,l,o;c=x(a);b=c.length;var p=[];for(a=0;a<b-3;a+=4){q=c.charCodeAt(a)<<24|c.charCodeAt(a+1)<<16|c.charCodeAt(a+2)<<8|c.charCodeAt(a+3);p.push(q)}switch(b%4){case 0:a=2147483648;break;case 1:a=c.charCodeAt(b-1)<<24|8388608;break;case 2:a=c.charCodeAt(b-2)<<24|c.charCodeAt(b-1)<<16|32768;break;case 3:a=c.charCodeAt(b-3)<<24|c.charCodeAt(b-2)<<16|c.charCodeAt(b-1)<<8|128;break}for(p.push(a);p.length%16!=14;)p.push(0);p.push(b>>>29);p.push(b<<3&4294967295);
for(q=0;q<p.length;q+=16){for(a=0;a<16;a++)k[a]=p[q+a];for(a=16;a<=79;a++)k[a]=d(k[a-3]^k[a-8]^k[a-14]^k[a-16],1);c=r;b=s;f=t;g=u;l=v;for(a=0;a<=19;a++){o=d(c,5)+(b&f|~b&g)+l+k[a]+1518500249&4294967295;l=g;g=f;f=d(b,30);b=c;c=o}for(a=20;a<=39;a++){o=d(c,5)+(b^f^g)+l+k[a]+1859775393&4294967295;l=g;g=f;f=d(b,30);b=c;c=o}for(a=40;a<=59;a++){o=d(c,5)+(b&f|b&g|f&g)+l+k[a]+2400959708&4294967295;l=g;g=f;f=d(b,30);b=c;c=o}for(a=60;a<=79;a++){o=d(c,5)+(b^f^g)+l+k[a]+3395469782&4294967295;l=g;g=f;f=d(b,30);
b=c;c=o}r=r+c&4294967295;s=s+b&4294967295;t=t+f&4294967295;u=u+g&4294967295;v=v+l&4294967295}return(e(r)+e(s)+e(t)+e(u)+e(v)).toLowerCase()}function y(a){return a.replace(/^\s+|\s+$/g,"")}function z(a,d){if(Array.prototype.forEach)return a.forEach(d);for(var e=0,x=a.length;e<x;e++)e in a&&d.call(null,a[e],e,a)}function j(a,d,e){return Math.min(e,Math.max(d,a))}return{sha1:w,trim:y,each:z,clamp:j}}(),Events=function(){function w(a,d){if(!j[a]||j[a].length===0)return Events;j[a].length===0?j[a][0].call(d):
Util.each(j[a],function(e){e.call(d||null)});return Events}function y(a,d){if(!j[a]){j[a]=[d];return Events}j[a].push(d);return Events}function z(a){j[a]=[];return Events}var j={};return{emit:w,listen:y,clear:z}}(),Keys={ENTER:13,TAB:9,UP:38,DOWN:40,SQ_BKT_LEFT:27,SQ_BKT_RIGHT:29};

