window = {};
navigator = {};
RSA = function() {
function t(t, e) {
return new r(t, e)
}
function e(t, e) {
if (e < t.length + 11) return uv_alert("Message too long for RSA"),
null;
for (var i = new Array, n = t.length - 1; n >= 0 && e > 0;) {
var o = t.charCodeAt(n--);
i[--e] = o
}
i[--e] = 0;
for (var p = new Y, s = new Array; e > 2;) {
for (s[0] = 0; 0 == s[0];)
p.nextBytes(s);
i[--e] = s[0]
}
return i[--e] = 2,
i[--e] = 0,
new r(i)
}
function i() {
this.n = null,
this.e = 0,
this.d = null,
this.p = null,
this.q = null,
this.dmp1 = null,
this.dmq1 = null,
this.coeff = null
}
function n(e, i) {
null != e && null != i && e.length > 0 && i.length > 0 ? (this.n = t(e, 16),
this.e = parseInt(i, 16)) : uv_alert("Invalid RSA public key")
}
function o(t) {
return t.modPowInt(this.e, this.n)
}
function p(t) {
var i = e(t, this.n.bitLength() + 7 >> 3);
if (null == i) return null;
var n = this.doPublic(i);
if (null == n) return null;
var o = n.toString(16);
return 0 == (1 & o.length) ? o : "0" + o
}
function r(t, e, i) {
null != t && ("number" == typeof t ? this.fromNumber(t, e, i) : null == e && "string" != typeof t ? this.fromString(t, 256) : this.fromString(t, e))
}
function s() {
return new r(null)