Skip to content

Instantly share code, notes, and snippets.

@alpgul
Last active July 22, 2021 12:41
Show Gist options
  • Save alpgul/816053e8b5ef42beb7037c017a01df8c to your computer and use it in GitHub Desktop.
Save alpgul/816053e8b5ef42beb7037c017a01df8c to your computer and use it in GitHub Desktop.
Tampermonkey extension.js GM_screenShot
! function ( e ) {
function t( r ) {
if ( n[ r ] ) return n[ r ].exports;
var i = n[ r ] = {
i: r,
l: !1,
exports: {}
};
return e[ r ].call( i.exports, i, i.exports, t ), i.l = !0, i.exports
}
var n = {};
t.m = e, t.c = n, t.d = function ( e, n, r ) {
t.o( e, n ) || Object.defineProperty( e, n, {
enumerable: !0,
get: r
} )
}, t.r = function ( e ) {
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty( e, Symbol.toStringTag, {
value: "Module"
} ), Object.defineProperty( e, "__esModule", {
value: !0
} )
}, t.t = function ( e, n ) {
if ( 1 & n && ( e = t( e ) ), 8 & n ) return e;
if ( 4 & n && "object" == typeof e && e && e.__esModule ) return e;
var r = Object.create( null );
if ( t.r( r ), Object.defineProperty( r, "default", {
enumerable: !0,
value: e
} ), 2 & n && "string" != typeof e )
for ( var i in e ) t.d( r, i, function ( t ) {
return e[ t ]
}.bind( null, i ) );
return r
}, t.n = function ( e ) {
var n = e && e.__esModule ? function () {
return e.default
} : function () {
return e
};
return t.d( n, "a", n ), n
}, t.o = function ( e, t ) {
return {}.hasOwnProperty.call( e, t )
}, t.p = "", t( t.s = 70 )
}( [ function ( e, t, n ) {
"use strict";
Object.defineProperty( t, "__esModule", {
value: !0
} ), t.normalizeLocale = t.I18N = void 0;
const r = n( 3 ),
i = n( 14 ),
s = n( 2 ),
o = window.rea,
a = "en";
let l = {},
c = {},
A = null;
const d = [],
u = ( e, ...t ) => {
const n = [],
r = e => {
for ( let t = 0; t < e.length; t++ ) Array.isArray( e[ t ] ) ? r( e[ t ] ) : n.push( String( e[ t ] ) )
};
return r( t ), o.i18n.getMessage( e, n )
},
p = e => new Promise( ( t, n ) => {
const r = `_locales/${e}/messages.json`;
i.getRaw( r, r => {
try {
if ( r ) return t( JSON.parse( r ) )
} catch ( t ) {
s.logger.log( "i18n: parsing locale " + e + " failed!" )
}
n()
} )
} ),
h = async e => {
e = e.concat( a );
let t = -1,
n = null;
const r = async () => {
if ( t++, t < e.length ) {
const i = e[ t ];
if ( !i || !_.includes( i ) ) return r();
try {
const e = await p( i );
n = i, l = e
} catch ( e ) {
return r()
}
if ( !b && i != a ) try {
const e = await p( a );
c = e || {}
} catch ( e ) {}
}
};
return await r(), n
}, f = e => e ? e.replace( /-/g, "_" ).split( "_" ).map( ( e, t ) => t ? e.toUpperCase() : e.toLowerCase() ).join( "_" ) : e;
t.normalizeLocale = f;
const g = ( e, t ) => {
let n, i;
return t = t || ( A ? [ A, A.split( "_" )[ 0 ] ].concat( d ).filter( e => e ) : d ), r.each( t, ( t, s ) => {
const o = Number( s );
if ( r.each( e, ( e, r ) => {
const s = Number( r ),
a = f( e ),
l = a.split( /_/ )[ 0 ];
if ( a == t ) return i = s, !1;
l == t && ( void 0 === n || o < n ) && ( i = s, n = o )
} ), void 0 !== i ) return !1
} ), void 0 === i ? i : e[ i ]
},
m = [ {
name: "Arabic - ‎‫العربية‬‎",
value: "ar"
}, {
name: "Chinese (Simplified) - 中文(简体中文)",
value: "zh_CN"
}, {
name: "Chinese (Traditional) - 中文(繁體)",
value: "zh_TW"
}, {
name: "Croatian - hrvatski",
value: "hr"
}, {
name: "Czech - čeština",
value: "cs"
}, {
name: "Danish - dansk",
value: "da"
}, {
name: "English",
value: "en"
}, {
name: "French - français",
value: "fr"
}, {
name: "German - Deutsch",
value: "de"
}, {
name: "Hindi - हिन्दी",
value: "hi"
}, {
name: "Hungarian - magyar",
value: "hu"
}, {
name: "Indonesian - Indonesia",
value: "id"
}, {
name: "Italian - italiano",
value: "it"
}, {
name: "Japanese - 日本語",
value: "ja"
}, {
name: "Korean - 한국어",
value: "ko"
}, {
name: "Norwegian - norsk",
value: "nb"
}, {
name: "Polish - polski",
value: "pl"
}, {
name: "Portuguese (Brazil) - português (Brasil)",
value: "pt_BR"
}, {
name: "Portuguese (Portugal) - português (Portugal)",
value: "pt_PT"
}, {
name: "Russian - русский",
value: "ru"
}, {
name: "Serbian - српски",
value: "sr"
}, {
name: "Slovak - slovenčina",
value: "sk"
}, {
name: "Spanish - español",
value: "es"
}, {
name: "Turkish - Türkçe",
value: "tr"
}, {
name: "Ukrainian - українська",
value: "uk"
}, {
name: "Vietnamese - Tiếng Việt",
value: "vi"
} ],
_ = m.map( e => e.value ),
b = !( void 0 === o ) && o.i18n.native_support,
v = {
init: async () => {
const e = async () => {
A || b || ( A = await h( d ) )
}, t = f( b ? o.i18n.getUILanguage() : navigator.language );
if ( t ) {
const e = [ t ],
n = t.split( /_/ );
n[ 0 ] !== t && e.push( n[ 0 ] ), e.forEach( e => {
d.unshift( e )
} )
}
await e(),
b && ( await new Promise( e => {
o.i18n.getAcceptLanguages( t => {
t.forEach( e => {
d.push( f( e ) )
} ), e()
} )
} ), await e() )
},
getMessage: ( e, ...t ) => {
let n;
return A && ( n = l[ e ] || c[ e ] ) ? ( ( e, t ) => {
let n, r = e.message;
return n = 1 == t.length && Array.isArray( t[ 0 ] ) ? t[ 0 ] : t, e.placeholders && Object.entries( e.placeholders ).forEach( ( [ e, t ] ) => {
try {
const i = Number( t.content.replace( /^\$/, "" ) ) - 1;
let o;
i < n.length ? ( o = n[ i ], r = r.replace( "$" + e + "$", o ) ) : s.logger.log( 'i18n: invalid argument count on processing "' + r + '" with args ' + JSON.stringify( n ) )
} catch ( e ) {
s.logger.log( 'i18n: error processing "' + r + '" with args ' + JSON.stringify( n ) )
}
} ), r
} )( n, t ) : ( b && ( n = u( e, ...t ) ) || ( n = function ( e, ...t ) {
let n = e;
1 == t.length && Array.isArray( t[ 0 ] ) && ( t = t[ 0 ] );
const r = new RegExp( "(^|_)0[a-zA-Z]+0(_|$)" );
for ( let e = 0; e < t.length; e++ ) {
const i = n.match( r );
if ( !i ) {
s.logger.log( "i18n: getMessage(): wrong argument count!!!" );
break
}
n = n.replace( r, ( i[ 1 ] ? " " : "" ) + t[ e ] + ( i[ 2 ] ? " " : "" ) )
}
return n.replace( /_/g, " " )
}( e, ...t ), s.logger.warn( "i18n: missing translation" + n ) ), n )
},
getOriginalMessage: u,
normalizeLocale: f,
getTranslation: ( e, t ) => {
let n, r;
if ( e && ( r = e[ t + "_i18n" ] || {} ) ) {
e[ t ] && ( r = {
...r,
en: e[ t ]
} );
const i = g( Object.keys( r ) );
void 0 !== i && ( n = r[ i ] )
}
return n || e[ t ]
},
setLocale: async e => {
let t = e;
if ( "null" === e && ( t = null ), t && ( t = f( t ) ), !t && b ) A = t;
else if ( t !== A ) return h( [ t, ...d, A ].filter( e => e ) ).then( t => {
A = t, A != e && s.logger.log( "i18n: retrieving locale " + t + " failed!" )
} )
},
getLocale: () => A,
getUiLocale: () => f( A || b ? o.i18n.getUILanguage() : d[ 0 ] || navigator.language || a ),
getBestLocale: g,
supported: m
};
t.I18N = v
}, function ( e, t ) {
"use strict";
Object.defineProperty( t, "__esModule", {
value: !0
} ), t.Deferred = void 0;
const n = e => {
const t = ( () => {
let e, t;
const r = [],
i = [],
s = e => {
i.push( e ), o()
},
o = () => {
if ( void 0 !== e ) {
let n;
for ( ; i.length; ) n = i.shift(), void 0 !== n.state && n.state !== e || ( t = ( "function" == typeof n.f ? n.f.call( a, t ) : n.f ) || t )
}
},
a = {
promise: () => a,
done: e => ( s( {
state: !0,
f: e
} ), a ),
fail: e => ( s( {
state: !1,
f: e
} ), a ),
always: e => ( s( {
f: e
} ), a ),
progress: e => ( e && r.push( e ), a ),
then: ( e, r, i ) => n( n => {
[ {
fn: "done",
forward: "resolve",
f: e
}, {
fn: "fail",
forward: "reject",
f: r
}, {
fn: "progress",
forward: "notify",
f: i
} ].forEach( e => {
a[ e.fn ]( ( ...r ) => {
const i = e.f ? e.f( t ) : void 0,
s = i && "function" == typeof i.promise ? i.promise() : null,
o = i && "function" == typeof i.then ? i : null;
if ( s ) s.done( n.resolve ).fail( n.reject ).progress( n.notify );
else if ( o ) o.then( n.resolve, n.reject );
else {
const t = e.f ? [ i ] : r;
n[ e.forward ]( t[ 0 ] )
}
} )
} )
} ).promise(),
each: e => {
const t = n();
return a.then( r => {
const i = Array.isArray( r ) ? r : [ r ];
n.when( i.map( t => e( t ) ) ).then( t.resolve )
} ), t.promise()
},
iterate: e => {
const t = n();
return a.then( r => {
const i = ( Array.isArray( r ) ? r : [ r ] ).map( t => () => e( t ) );
n.onebyone( i, !0 ).done( e => {
t.resolve( e )
} ).fail( t.reject )
} ), t.promise()
}
};
return {
get: () => a,
try_resolve: n => ( void 0 === e && ( e = !0, t = n ), o(), a ),
try_reject: function ( n ) {
return void 0 === e && ( e = !1, t = n ), o(), a
},
do_notify: function ( e ) {
( e => {
r.forEach( t => t( e ) )
} )( e )
}
}
} )(),
r = {
promise: function () {
return t.get()
},
resolve: function ( e ) {
return t.try_resolve( e )
},
reject: function ( e ) {
return t.try_reject( e )
},
notify: function ( e ) {
return t.do_notify( e )
},
consume: function ( e ) {
return e.promise().done( r.resolve ).fail( r.reject ).progress( r.notify ), r.promise()
}
};
return e && e( r ), r
};
t.Deferred = n, n.Pledge = e => {
const t = n();
return t.resolve( e ), t.promise()
}, n.Breach = e => {
const t = n();
return t.reject( e ), t.promise()
}, n.onebyone = ( e, t = !0 ) => {
const r = [],
i = n();
let s = 0;
const o = () => {
if ( s < e.length ) {
const n = ( 0, e[ s++ ] )();
n && n.promise ? n.promise().done( e => {
r.push( e ), o()
} ).fail( () => {
if ( r.push( null ), t ) return i.reject();
o()
} ) : ( r.push( n ),
o() )
} else i.resolve( r )
};
return o(), i.promise()
}, n.or = e => {
let t;
const r = n(),
i = () => {
e.length ? ( t = e.shift(), t && n.Pledge().then( t ).done( r.resolve ).fail( i ) ) : r.reject()
};
return i(), r.promise()
}, n.sidebyside = e => {
e = Array.isArray( e ) ? e : [ e ];
const t = n();
let r = e.length;
return r ? e.forEach( e => {
e && e.promise && e.promise().always( () => {
0 == --r && t.resolve()
} )
} ) : t.resolve(), t.promise()
}, n.when = e => {
e = Array.isArray( e ) ? e : [ e ];
const t = n();
let r = e.length;
const i = [];
return r ? e.forEach( e => {
let n;
if ( e && e.promise ) n = e.promise();
else {
if ( !e.then ) return void console.warn( "promise: incompatible object given to when()", e );
n = e
}
n.fail( e => {
t.reject( e ), r = -1
} ).done( e => {
i.push( e ), 0 == --r && t.resolve( i )
} )
} ) : t.resolve( i ), t.promise()
}, n.sleep = e => {
const t = n();
return window.setTimeout( t.resolve, e ), t.promise()
}
}, function ( e, t ) {
"use strict";
Object.defineProperty( t, "__esModule", {
value: !0
} ), t.VERBOSE = t.DEBUG = t.WARN = t.ERROR = t.logger = void 0, t.ERROR = 0, t.WARN = 30, t.DEBUG = 60, t.VERBOSE = 80;
let n = 0;
const r = [],
i = () => {
const e = [ "debug" ],
t = [ "log" ],
r = [ "warn", "info" ],
i = [ "error" ],
o = [ ...e, ...t, ...r, ...i ],
a = i;
n >= 80 && a.push( ...e ), n >= 60 && a.push( ...t ), n >= 30 && a.push( ...r ), o.forEach( e => s[ e ] = a.includes( e ) ? console[ e ].bind( console ) : () => {} )
},
s = {
set: e => {
n = e, r.forEach( e => {
e( s, n )
} ), i()
},
get: () => n,
verbose: ( console.debug || ( () => {} ) ).bind( console ),
debug: () => {},
log: () => {},
warn: () => {},
info: () => {},
error: () => {},
addChangeListener: e => {
r.push( e )
}
};
t.logger = s, i()
}, function ( e, t, n ) {
"use strict";
var r = this && this.__importDefault || function ( e ) {
return e && e.__esModule ? e : {
default: e
}
};
Object.defineProperty( t, "__esModule", {
value: !0
} ), t.staticVars = t.safeFileName = t.encodeHtml = t.decodeHtml = t.createUUID = t.getDebouncer = t.adiff = t.copy = t.insert = t.each = t.splitSlice = t.toType = t.filterString = t.cPrompt = t.cConfirm = t.cAlert = t.getSource = t.getUrlArgs = t.isLocalImage = t.escapeForRegExp = t.escapeForRegExpURL = t.getStringBetweenTags = t.createUniqueId = void 0;
const i = r( n( 6 ) ),
s = window.rea;
t.createUniqueId = ( e, t ) => i.default.Base64.encode( e + "_" + t ).replace( /[^0-9a-zA-Z_\-]/g, "" ), t.getStringBetweenTags = ( e, t, n ) => {
const r = e.indexOf( t );
if ( -1 == r ) return "";
if ( !n ) return e.substr( r + t.length );
const i = e.substr( r + t.length ).indexOf( n );
return -1 == i ? "" : e.substr( r + t.length, i )
};
const o = ( e, t ) => {
null == t && ( t = [] );
const n = new RegExp( "(\\" + [ "/", ".", "+", "?", "|", "(", ")", "[", "]", "{", "}", "\\" ].concat( t ).join( "|\\" ) + ")", "g" );
return e.replace( n, "\\$1" )
};
t.escapeForRegExpURL = o, t.escapeForRegExp = e => o( e, [ "*" ] ),
t.isLocalImage = e => {
const t = "background.js";
let n = s.extension.getURL( t );
return n = n.replace( t, "" ) + "images/", e.length >= n.length && n == e.substr( 0, n.length )
}, t.getUrlArgs = e => {
const t = {};
let n = window.location.search.replace( /^\?/, "" );
const r = window.location.hash.replace( /^#/, "" );
n ? e && r && ( n = n + "&" + r ) : n = r;
const i = n.split( "&" );
let s;
for ( let e = 0; e < i.length; e++ ) {
if ( s = i[ e ].split( "=" ), 2 != s.length ) {
const e = s[ 0 ],
t = s.slice( 1 ).join( "=" );
s = [ e, t ]
}
t[ s[ 0 ] ] = decodeURIComponent( s[ 1 ] )
}
return t
}, t.cAlert = e => {
window.setTimeout( () => {
alert( e )
}, 1 )
}, t.cConfirm = ( e, t ) => {
window.setTimeout( () => {
const n = confirm( e );
t && t( n )
}, 1 )
}, t.cPrompt = ( e, t, n ) => {
window.setTimeout( () => {
const r = prompt( e, t );
n && n( r )
}, 1 )
};
const a = e => ( ( {}.toString.apply( e ).match( /\s([a-z|A-Z]+)/ ) || [] )[ 1 ] );
t.toType = a;
const l = ( e, t ) => {
const n = a( e );
if ( "Array" === n || "NodeList" === n ) {
for ( let n = 0; n < e.length; n++ )
if ( !1 === t( e[ n ], n ) ) return
} else if ( "XPathResult" === n ) {
let n = e.iterateNext(),
r = 0;
for ( ; n; ) {
if ( !1 === t( n, r++ ) ) return;
n = e.iterateNext()
}
} else
for ( const n in e )
if ( e.hasOwnProperty( n ) && !1 === t( e[ n ], n ) ) return
};
t.each = l, t.insert = ( e, t, n, r ) => e.slice( 0, t ) + r + e.slice( t + Math.abs( n ) );
const c = ( e, t, n, r ) => {
let i;
if ( Array.isArray( n ) ) {
const e = {};
n.forEach( t => {
e[ t ] = !0
} ), i = e
} else i = n;
return l( i || e, ( n, s ) => {
if ( !i || i.hasOwnProperty( s ) ) {
let n;
const o = e[ s ],
l = a( o );
if ( "Undefined" == l ) return;
if ( i && r && ( n = a( i[ s ] ) ) && n !== l && ( "Array" === n || "Object" === n ) ) return;
"Object" == l ? ( t[ s ] = {}, c( o, t[ s ], i ? i[ s ] : null ) ) : "Array" == l ? ( t[ s ] = [], c( o, t[ s ] ) ) : t[ s ] = o
}
} ), t
};
t.copy = c,
t.decodeHtml = e => e.replace( /(?:&#x([a-fA-F0-9]+);|&#([0-9]+);)/g, ( e, t, n ) => t ? String.fromCharCode( parseInt( t, 16 ) ) : String.fromCharCode( parseInt( n, 10 ) ) ), t.encodeHtml = e => e.replace( /[\u00A0-\u2666<>]/g, e => "&#" + e.charCodeAt( 0 ) + ";" );
const A = e => document.body ? document.body.innerText : e.childNodes.length > 0 ? A( e.childNodes[ e.childNodes.length - 1 ] ) : e.innerText;
t.getSource = A, t.getDebouncer = e => ( () => {
let t = {};
const n = e || 1e3,
r = {
clear: () => {
l( t, e => window.clearTimeout( e ) ), t = {}
},
is: ( e, n ) => {
const i = void 0 !== t[ e ];
return n && r.add( e ), i
},
add: ( e, i ) => {
r.is( e ) && window.clearTimeout( t[ e ] ), t[ e ] = window.setTimeout( () => {
delete t[ e ]
}, i || n )
}
};
return r
} )(), t.filterString = ( e, t ) => e && t ? ( e.match( t ) || [] ).join( "" ) : "", t.adiff = ( e, t, n ) => {
const r = [];
return "both" == ( n = n || "both" ) ? e.concat( t ).forEach( n => {
e.includes( n ) && t.includes( n ) || r.push( n )
} ) : "notinfirst" == n && t.forEach( t => {
e.includes( t ) || r.push( t )
} ), r
}, t.safeFileName = ( e, t, n ) => {
void 0 === n && ( n = "-" );
const r = t ? /[:<>|~?*\x00-\x1F\uFDD0-\uFDEF"]/g : /[:<>|~?*\x00-\x1F\uFDD0-\uFDEF"\/\\]|^[.]|[.]$/g;
return !t && /^((CON|PRN|AUX|NUL|CLOCK\$|COM[1-9]|LPT[1-9])(\..*)?|device(\..*)?|desktop.ini|thumbs.db)$/i.test( e ) ? ( n || "_" ) + e.replace( r, n ) : e.replace( r, n )
}, t.createUUID = () => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace( /[xy]/g, e => {
const t = 16 * Math.random() | 0;
return ( "x" == e ? t : 3 & t | 8 ).toString( 16 )
} ), t.splitSlice = ( e, t ) => {
const n = [];
for ( let r = 0, i = e.length; r < i; r += t ) n.push( e.slice( r, t + r ) );
return n
};
t.staticVars = {
visible: void 0,
invisible: "display: none;",
visible_move: void 0,
invisible_move: "position:absolute; left: -20000px; top: -200000px; width: 1px; height: 1px;"
}
}, function ( e, t, n ) {
"use strict";
n.r( t );
var r = n( 2 ),
i = n( 3 ),
s = n( 10 );
const o = "de.net|gb.net|uk.net|dk.org|eu.org|asn.au|conf.au|csiro.au|edu.au|gov.au|id.au|info.au|net.au|org.au|otc.au|oz.au|telememo.au|ac.cn|ah.cn|bj.cn|cq.cn|edu.cn|gd.cn|gov.cn|gs.cn|gx.cn|gz.cn|hb.cn|he.cn|hi.cn|hk.cn|hl.cn|hn.cn|jl.cn|js.cn|ln.cn|mo.cn|net.cn|nm.cn|nx.cn|org.cn|qh.cn|sc.cn|sh.cn|sn.cn|sx.cn|tj.cn|tw.cn|xj.cn|xz.cn|yn.cn|zj.cn|ac.jp|ad.jp|aichi.jp|akita.jp|aomori.jp|chiba.jp|co.jp|ed.jp|ehime.jp|fukui.jp|fukuoka.jp|fukushima.jp|gifu.jp|go.jp|gov.jp|gr.jp|gunma.jp|hiroshima.jp|hokkaido.jp|hyogo.jp|ibaraki.jp|ishikawa.jp|iwate.jp|kagawa.jp|kagoshima.jp|kanagawa.jp|kanazawa.jp|kawasaki.jp|kitakyushu.jp|kobe.jp|kochi.jp|kumamoto.jp|kyoto.jp|lg.jp|matsuyama.jp|mie.jp|miyagi.jp|miyazaki.jp|nagano.jp|nagasaki.jp|nagoya.jp|nara.jp|ne.jp|net.jp|niigata.jp|oita.jp|okayama.jp|okinawa.jp|or.jp|org.jp|osaka.jp|saga.jp|saitama.jp|sapporo.jp|sendai.jp|shiga.jp|shimane.jp|shizuoka.jp|takamatsu.jp|tochigi.jp|tokushima.jp|tokyo.jp|tottori.jp|toyama.jp|utsunomiya.jp|wakayama.jp|yamagata.jp|yamaguchi.jp|yamanashi.jp|yokohama.jp|ac.uk|co.uk|edu.uk|gov.uk|ltd.uk|me.uk|mod.uk|net.uk|nhs.uk|nic.uk|org.uk|plc.uk|police.uk|sch.uk|co.tv|co.th|co.nz|co.za|com.ac|com.af|com.ag|com.ai|com.al|com.ar|com.au|com.aw|com.az|com.ba|com.bb|com.bh|com.bi|com.bm|com.bo|com.br|com.bs|com.bt|com.by|com.bz|com.ci|com.cm|com.cn|com.co|com.cu|com.cw|com.cy|com.dm|com.do|com.dz|com.ec|com.ee|com.eg|com.es|com.et|com.fr|com.ge|com.gh|com.gi|com.gl|com.gn|com.gp|com.gr|com.gt|com.gu|com.gy|com.hk|com.hn|com.hr|com.ht|com.im|com.io|com.iq|com.is|com.jo|com.kg|com.ki|com.km|com.kp|com.ky|com.kz|com.la|com.lb|com.lc|com.lk|com.lr|com.lv|com.ly|com.mg|com.mk|com.ml|com.mo|com.ms|com.mt|com.mu|com.mv|com.mw|com.mx|com.my|com.na|com.nf|com.ng|com.ni|com.nr|com.om|com.pa|com.pe|com.pf|com.ph|com.pk|com.pl|com.pr|com.ps|com.pt|com.py|com.qa|com.re|com.ro|com.rw|com.sa|com.sb|com.sc|com.sd|com.sg|com.sh|com.sl|com.sn|com.so|com.st|com.sv|com.sy|com.tj|com.tm|com.tn|com.to|com.tr|com.tt|com.tw|com.ua|com.ug|com.uy|com.uz|com.vc|com.ve|com.vi|com.vn|com.vu|com.ws|com.zm|com.de|com.se|com.ru",
a = ( ".(" + [ "aaa|aarp|abb|abbott|abogado|ac|academy|accenture|accountant|accountants|aco|active|actor|ad|adac|ads|adult|ae|aeg|aero|af|afl|ag|agency|ai|aig|airforce|airtel|al|alibaba|alipay|allfinanz|alsace|am|amica|amsterdam|an|analytics|android|ao|apartments|app|apple|aq|aquarelle|ar|aramco|archi|army|arpa|arte|as|asia|associates|at|attorney|au|auction|audi|audio|author|auto|autos|aw|ax|axa|az|azure|ba|baidu|band|bank|bar|barcelona|barclaycard|barclays|bargains|bauhaus|bayern|bb|bbc|bbva|bcn|bd|be|beats|beer|bentley|berlin|best|bet|bf|bg|bh|bharti|bi|bible|bid|bike|bing|bingo|bio|biz|bj|bl|black|blackfriday|bloomberg|blue|bm|bms|bmw|bn|bnl|bnpparibas|bo|boats|boehringer|bom|bond|boo|book|boots|bosch|bostik|bot|boutique|bq|br|bradesco|bridgestone|broadway|broker|brother|brussels|bs|bt|budapest|bugatti|build|builders|business|buy|buzz|bv|bw|by|bz|bzh|ca|cab|cafe|cal|call|camera|camp|cancerresearch|canon|capetown|capital|car|caravan|cards|care|career|careers|cars|cartier|casa|cash|casino|cat|catering|cba|cbn|cc|cd|ceb|center|ceo|cern|cf|cfa|cfd|cg|ch|chanel|channel|chat|cheap|chloe|christmas|chrome|church|ci|cipriani|circle|cisco|citic|city|cityeats|ck|cl|claims|cleaning|click|clinic|clinique|clothing|cloud|club|clubmed|cm|cn|co|coach|codes|coffee|college|cologne|com|commbank|community|company|compare|computer|comsec|condos|construction|consulting|contact|contractors|cooking|cool|coop|corsica|country|coupons|courses|cr|credit|creditcard|creditunion|cricket|crown|crs|cruises|csc|cu|cuisinella|cv|cw|cx|cy|cymru|cyou|cz|dabur|dad|dance|date|dating|datsun|day|dclk|de|dealer|deals|degree|delivery|dell|deloitte|delta|democrat|dental|dentist|desi|design|dev|diamonds|diet|digital|direct|directory|discount|dj|dk|dm|dnp|do|docs|dog|doha|domains|doosan|download|drive|dubai|durban|dvag|dz|earth|eat|ec|edeka|edu|education|ee|eg|eh|email|emerck|energy|engineer|engineering|enterprises|epson|equipment|er|erni|es|esq|estate|et|eu|eurovision|eus|events|everbank|exchange|expert|exposed|express|fage|fail|fairwinds|faith|family|fan|fans|farm|fashion|fast|feedback|ferrero|fi|film|final|finance|financial|firestone|firmdale|fish|fishing|fit|fitness|fj|fk|flickr|flights|florist|flowers|flsmidth|fly|fm|fo|foo|football|ford|forex|forsale|forum|foundation|fox|fr|fresenius|frl|frogans|frontier|fund|furniture|futbol|fyi|ga|gal|gallery|gallup|game|garden|gb|gbiz|gd|gdn|ge|gea|gent|genting|gf|gg|ggee|gh|gi|gift|gifts|gives|giving|gl|glass|gle|global|globo|gm|gmail|gmo|gmx|gn|gold|goldpoint|golf|goo|goog|google|gop|got|gov|gp|gq|gr|grainger|graphics|gratis|green|gripe|group|gs|gt|gu|gucci|guge|guide|guitars|guru|gw|gy|hamburg|hangout|haus|hdfcbank|health|healthcare|help|helsinki|here|hermes|hiphop|hitachi|hiv|hk|hm|hn|hockey|holdings|holiday|homedepot|homes|honda|horse|host|hosting|hoteles|hotmail|house|how|hr|hsbc|ht|hu|hyundai|ibm|icbc|ice|icu|id|ie|ifm|iinet|il|im|immo|immobilien|in|industries|infiniti|info|ing|ink|institute|insurance|insure|int|international|investments|io|ipiranga|iq|ir|irish|is|iselect|ist|istanbul|it|itau|iwc|jaguar|java|jcb|je|jetzt|jewelry|jlc|jll|jm|jmp|jo|jobs|joburg|jot|joy|jp|jprs|juegos|kaufen|kddi|ke|kfh|kg|kh|ki|kia|kim|kinder|kitchen|kiwi|km|kn|koeln|komatsu|kp|kpn|kr|krd|kred|kw|ky|kyoto|kz|la|lacaixa|lamborghini|lamer|lancaster|land|landrover|lanxess|lasalle|lat|latrobe|law|lawyer|lb|lc|lds|lease|leclerc|legal|lexus|lgbt|li|liaison|lidl|life|lifeinsurance|lifestyle|lighting|like|limited|limo|lincoln|linde|link|live|living|lixil|lk|loan|loans|lol|london|lotte|lotto|love|lr|ls|lt|ltd|ltda|lu|lupin|luxe|luxury|lv|ly|ma|madrid|maif|maison|makeup|man|management|mango|market|marketing|markets|marriott|mba|mc|md|me|med|media|meet|melbourne|meme|memorial|men|menu|meo|mf|mg|mh|miami|microsoft|mil|mini|mk|ml|mm|mma|mn|mo|mobi|mobily|moda|moe|moi|mom|monash|money|montblanc|mormon|mortgage|moscow|motorcycles|mov|movie|movistar|mp|mq|mr|ms|mt|mtn|mtpc|mtr|mu|museum|mutuelle|mv|mw|mx|my|mz|na|nadex|nagoya|name|natura|navy|nc|ne|nec|net|netbank|network|neustar|new|news|nexus|nf|ng|ngo|nhk|ni|nico|nikon|ninja|nissan|nl|no|nokia|norton|nowruz|np|nr|nra|nrw|ntt|nu|nyc|nz|obi|office|okinawa|om|omega|one|ong|onl|online|ooo|oracle|orange|org|organic|origins|osaka|otsuka|ovh|pa|page|pamperedchef|panerai|paris|pars|partners|parts|party|pe|pet|pf|pg|ph|pharmacy|philips|photo|photography|photos|physio|piaget|pics|pictet|pictures|pid|pin|ping|pink|pizza|pk|pl|place|play|playstation|plumbing|plus|pm|pn|pohl|poker|porn|post|pr|praxi|press|pro|prod|productions|prof|promo|properties|property|protection|ps|pt|pub|pw|pwc|py|qa|qpon|quebec|quest|racing|re|read|realtor|realty|recipes|red|redstone|redumbrella|rehab|reise|reisen|reit|ren|rent|rentals|repair|report|republican|rest|restaurant|review|reviews|rexroth|rich|ricoh|rio|rip|ro|rocher|rocks|rodeo|room|rs|rsvp|ru|ruhr|run|rw|rwe|ryukyu|sa|saarland|safe|safety|sakura|sale|salon|samsung|sandvik|sandvikcoromant|sanofi|sap|sapo|sarl|sas|saxo|sb|sbs|sc|sca|scb|schaeffler|schmidt|scholarships|school|schule|schwarz|science|scor|scot|sd|se|seat|security|seek|select|sener|services|seven|sew|sex|sexy|sfr|sg|sh|sharp|shell|shia|shiksha|shoes|show|shriram|si|singles|site|sj|sk|ski|skin|sky|skype|sl|sm|smile|sn|sncf|so|soccer|social|softbank|software|sohu|solar|solutions|sony|soy|space|spiegel|spreadbetting|sr|srl|ss|st|stada|star|starhub|statefarm|statoil|stc|stcgroup|stockholm|storage|studio|study|style|su|sucks|supplies|supply|support|surf|surgery|suzuki|sv|swatch|swiss|sx|sy|sydney|symantec|systems|sz|tab|taipei|taobao|tatamotors|tatar|tattoo|tax|taxi|tc|tci|td|team|tech|technology|tel|telefonica|temasek|tennis|tf|tg|th|thd|theater|theatre|tickets|tienda|tiffany|tips|tires|tirol|tj|tk|tl|tm|tmall|tn|to|today|tokyo|tools|top|toray|toshiba|tours|town|toyota|toys|tp|tr|trade|trading|training|travel|travelers|travelersinsurance|trust|trv|tt|tube|tui|tushu|tv|tvs|tw|tz|ua|ubs|ug|uk|um|unicom|university|uno|uol|us|uy|uz|va|vacations|vana|vc|ve|vegas|ventures|verisign|versicherung|vet|vg|vi|viajes|video|villas|vin|vip|virgin|vision|vista|vistaprint|viva|vlaanderen|vn|vodka|volkswagen|vote|voting|voto|voyage|vu|wales|walter|wang|wanggou|watch|watches|weather|weatherchannel|webcam|weber|website|wed|wedding|weir|wf|whoswho|wien|wiki|williamhill|win|windows|wine|wme|wolterskluwer|work|works|world|ws|wtc|wtf|xbox|xerox|xin|测试|कॉम|परीक्षा|佛山|慈善|集团|在线|한국|点看|คอม|ভারত|八卦|‏موقع‎|বাংলা|公益|公司|移动|我爱你|москва|испытание|қаз|онлайн|сайт|联通|срб|бел|‏קום‎|时尚|테스트|淡马锡|орг|नेट|삼성|சிங்கப்பூர்|商标|商店|商城|дети|мкд|‏טעסט‎|ею|ポイント|新闻|工行|‏كوم‎|中文网|中信|中国|中國|娱乐|谷歌|భారత్|ලංකා|购物|測試|ભારત|भारत|‏آزمایشی‎|பரிட்சை|网店|संगठन|餐厅|网络|ком|укр|香港|诺基亚|δοκιμή|飞利浦|‏إختبار‎|台湾|台灣|手表|手机|мон|‏الجزائر‎|‏عمان‎|‏ارامكو‎|‏ایران‎|‏امارات‎|‏بازار‎|‏پاکستان‎|‏الاردن‎|‏موبايلي‎|‏بھارت‎|‏المغرب‎|‏السعودية‎|‏سودان‎|‏همراه‎|‏عراق‎|‏مليسيا‎|澳門|닷컴|政府|‏شبكة‎|‏بيتك‎|გე|机构|组织机构|健康|ไทย|‏سورية‎|рус|рф|珠宝|‏تونس‎|大拿|みんな|グーグル|ελ|世界|ਭਾਰਤ|网址|닷넷|コム|游戏|vermögensberater|vermögensberatung|企业|信息|‏مصر‎|‏قطر‎|广东|இலங்கை|இந்தியா|հայ|新加坡|‏فلسطين‎|テスト|政务|xperia|xxx|xyz|yachts|yahoo|yamaxun|yandex|ye|yodobashi|yoga|yokohama|youtube|yt|za|zara|zero|zip|zm|zone|zuerich|zw", o ].join( "|" ) + ")" ).replace( /\./gi, "\\." ),
l = Object( s.createCache )( {
timeout: 180,
check_interval: 120,
retimeout_on_get: !0
} ).init(),
c = ( () => {
const e = e => e.split( "" ).map( e => {
const t = e.toLowerCase(),
n = e.toUpperCase();
return t != n ? "[" + t + n + "]" : e
} ).join( "" ),
t = [ "protocol", "hostname", "port", "origin" ],
n = [ "pathname" ],
s = [ "search", "hash" ],
c = t.concat( n ).concat( s );
let A;
const d = ( e, r ) => {
const i = {};
if ( null == e ) c.forEach( e => {
i[ e ] = ""
} );
else if ( [ "data:", "view-source:" ].some( t => e.startsWith( t ) ) ) {
i.origin = "null";
const t = e.indexOf( ":" );
i.protocol = e.substr( 0, t + 1 ), i.pathname = e.substr( t + 1 )
} else {
const o = document.createElement( "a" );
o.href = e;
const a = document.body || document.documentElement || document;
if ( a.appendChild( o ), c.forEach( e => {
i[ e ] = o[ e ]
} ), a.removeChild( o ), !r && i.protocol ) {
if ( 0 !== e.toLowerCase().indexOf( i.protocol ) )
if ( e.startsWith( "//" ) ) i.origin = "", i.protocol = "";
else {
if ( ![ "/", "?", "#" ].includes( e[ 0 ] ) ) return d( "/" + e );
A || ( A = d( "", !0 ) ), s.concat( n ).forEach( e => {
A[ e ] === i[ e ] && ( i[ e ] = "" )
} ), t.forEach( e => {
i[ e ] = ""
} )
}
[ "tampermonkey:" ]. includes( i.protocol ) && ( i.pathname = ( ( i.hostname ? "/" + i.hostname : "" ) + ( i.pathname || "" ) ).replace( /^\/+/, "/" ), i.hostname = "" )
}
}
return "0" === i.port && ( i.port = "" ), Object.defineProperties( i, {
domain: {
get: function () {
const e = i.hostname.split( "." ),
t = e.pop();
let n = `${e.pop()}.${t}`;
return f.isSecondLevelDomain( n ) && ( n = `${e.pop()}.${n}` ), n
}
}
} ), i
},
u = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
p = /((^\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\s*$)|(^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$))/;
let h;
const f = {
isIp: function ( e ) {
return e.match( u ) || e.match( p )
},
isIpOrHostname: function ( e ) {
return f.isIp( e ) || !e.includes( "." )
},
isSecondLevelDomain: function ( e ) {
return h = h || new RegExp( "^(" + o.replace( /\./g, "\\." ) + ")$" ), e.match( h )
},
sanitize: function ( e, t, n ) {
let r = !1;
const i = f.parse( e );
if ( i ) return "tampermonkey:" == i.protocol ? i.pathname.includes( ".." ) ? r = !0 : e = rea.extension.getURL( e.replace( /^tampermonkey:\/\//, "" ) ) : i.protocol || t && ( e = f.rel2abs( e, t, n || [ "http:", "https:" ] ) ) || ( r = !0 ), r ? null : e
},
parse: function ( e ) {
if ( null == e ) return;
let t = l.get( e );
return t || ( t = d( e ), l.set( e, t ), t )
},
rel2abs: function ( e, t, n ) {
let r, i, s;
if ( e && t && ( r = f.parse( e ) ) && ( i = f.parse( t ) ) && r && i && i.protocol && ( !n || n.includes( i.protocol ) || !e.includes( ".." ) ) ) return e.startsWith( "//" ) ? i.protocol + "//" + r.hostname + ( r.port ? ":" + r.port : "" ) + r.pathname + r.search : ( "/" === e[ 0 ] ? s = r.pathname : ( t = f.woParams( i ), i = f.parse( t + ( "/" === t[ t.length - 1 ] ? "" : "/" ) + e ), s = i.pathname ), i.protocol + "//" + i.hostname + ( i.port ? ":" + i.port : "" ) + s + r.search )
},
toUrl: function ( e, t ) {
return t = t || {}, ( [ "about:" ].includes( e.protocol ) ? e.protocol : e.protocol + "//" ) + e.hostname + ( e.port && e.port > 0 ? ":" + e.port : "" ) + ( t.nopath ? "" : e.pathname + ( t.nosearch ? "" : e.search ) )
},
woPath: function ( e ) {
const t = "string" == typeof e ? f.parse( e ) : e;
return f.toUrl( t, {
nopath: !0
} )
},
woParams: function ( e ) {
const t = "string" == typeof e ? f.parse( e ) : e;
return f.toUrl( t, {
nosearch: !0
} )
},
woHash: function ( e ) {
const t = "string" == typeof e ? f.parse( e ) : e;
return f.toUrl( t )
},
hash2params: function ( e ) {
return Object.keys( e ).map( t => void 0 === e[ t ] ? null : encodeURIComponent( t ) + "=" + encodeURIComponent( e[ t ] ) ).filter( e => e ).join( "&" )
},
params2hash: function ( e ) {
return "string" != typeof e && ( e = e.search ? e.search.substring( 1 ) : e.hash ? e.hash.substring( 1 ) : "" ), e.split( "&" ).reduce( ( e, t ) => {
const n = t.split( "=" );
return e[ decodeURIComponent( n[ 0 ] ) ] = decodeURIComponent( n[ 1 ] ), e
}, {} )
},
getRegExpFromInclude: e => {
let t;
return "*" == e ? t = "^(https?|file)://.*" : ( t = e.includes( ".*/" ) ? e.replace( ".*/", ".tld/" ) : e,
t = "^" + Object( i.escapeForRegExpURL )( t ), t = t.replace( /\*/gi, ".*" ), t = t.replace( Object( i.escapeForRegExpURL )( ".tld/" ), a + "/" ), t = t.replace( /(\^|:\/\/)\.\*/, "$1([^\\?#])*" ), t = t.replace( /<1>/g, "([^\\/#\\?]*\\.)?" ), t = t.replace( /<2>/g, "[^#\\?]*" ), t = t.replace( /<3>/g, "([^\\?#]*\\.)*" ) ), "(" + t + ")"
},
getRegExpFromMatch: ( t, n ) => {
let s, o, l, c, A, d;
const u = "://",
p = "/";
if ( s = t.replace( /\$$/, "" ).split( u ), s.length < 2 ? ( o = "", l = t ) : ( o = s[ 0 ].replace( /^\^/, "" ), l = s.slice( 1 ).join( u ) ), c = l.split( p ),
d = c.length < 2 ? "/" : p + c.slice( 1 ).join( p ), A = c[ 0 ], "http*" === o ? o = "https<1>" : o.match( /\*|http|https|file|ftp/ ) || ( r.logger.warn( 'uri: override scheme "' + o + '" with "*"' ), o = "*" ), "file" === o ) A = "";
else {
const e = A,
t = A.match( /\*$|(\*\.)?[^\/\*]+/ );
A = ( t ? t[ 0 ] : "" ).replace( /:[0-9]*$/, "" ), A !== e && r.logger.warn( 'uri: override host "' + e + '" with "' + A + '"' )
}
return d && d.substr( 0, 1 ) === p || ( r.logger.warn( 'uri: prefix path "' + d + '" with "/"' ), d = p + d ), o = Object( i.escapeForRegExpURL )( o ).replace( /\*/gi, "[^:\\/#\\?]*" ),
A = Object( i.escapeForRegExpURL )( A ).replace( /\*\\\./gi, "(*\\.)?" ).replace( /\*/gi, "[^#\\?\\/]*" ), d = Object( i.escapeForRegExpURL )( d ).replace( /\*/gi, ".*" ), o = o.replace( /<1>/g, "?" ), A = A.replace( new RegExp( Object( i.escapeForRegExpURL )( ".tld" ) + "$" ), a ), n || ( o = e( o ), A = e( A ) ), A += "(:[0-9]{1,5})?", "(^" + o + Object( i.escapeForRegExpURL )( u ) + A + d + "$)"
}
};
return f
} )();
t.default = c
}, , function ( e, t ) {
"use strict";
Object.defineProperty( t, "__esModule", {
value: !0
} );
const n = {
encode: e => window.unescape( window.encodeURIComponent( e ) ),
decode: e => window.decodeURIComponent( window.escape( e ) )
},
r = ( e, t ) => {
try {
let r;
r = "object" == typeof t ? t.encoding : t, r && "utf-8" == r.toLowerCase() && ( e = n.encode( e ) );
const i = new window.Uint8Array( e.length );
for ( let t = 0; t < e.length; t++ ) i[ t ] = 255 & e.charCodeAt( t );
return i.buffer
} catch ( e ) {
window.console.warn( e )
}
return new window.Uint8Array( 0 ).buffer
},
i = {
UTF8: n,
Base64: {
encode: e => {
let t = "";
for ( let n = 0; n < e.length; n++ ) t += window.String.fromCharCode( 255 & e.charCodeAt( n ) );
return window.btoa( t )
},
decode: e => window.atob( e )
},
encode: e => window.escape( e ),
decode: e => window.unescape( e ),
encodeR: e => e,
decodeR: e => e,
encodeS: e => window.btoa( n.encode( e ) ),
decodeS: e => n.decode( window.atob( e ) ),
MD5: ( e, t ) => {
const r = ( e, t ) => e << t | e >>> 32 - t,
i = ( e, t ) => {
const n = 2147483648 & e,
r = 2147483648 & t,
i = 1073741824 & e,
s = 1073741824 & t,
o = ( 1073741823 & e ) + ( 1073741823 & t );
return i & s ? 2147483648 ^ o ^ n ^ r : i | s ? 1073741824 & o ? 3221225472 ^ o ^ n ^ r : 1073741824 ^ o ^ n ^ r : o ^ n ^ r
},
s = ( e, t, n, s, o, a, l ) => ( e = i( e, i( i( ( ( e, t, n ) => e & t | ~e & n )( t, n, s ), o ), l ) ),
i( r( e, a ), t ) ),
o = ( e, t, n, s, o, a, l ) => ( e = i( e, i( i( ( ( e, t, n ) => e & n | t & ~n )( t, n, s ), o ), l ) ), i( r( e, a ), t ) ),
a = ( e, t, n, s, o, a, l ) => ( e = i( e, i( i( ( ( e, t, n ) => e ^ t ^ n )( t, n, s ), o ), l ) ), i( r( e, a ), t ) ),
l = ( e, t, n, s, o, a, l ) => ( e = i( e, i( i( ( ( e, t, n ) => t ^ ( e | ~n ) )( t, n, s ), o ), l ) ), i( r( e, a ), t ) ),
c = e => {
let t, n, r = "",
i = "";
for ( n = 0; n <= 3; n++ ) t = e >>> 8 * n & 255, i = "0" + t.toString( 16 ), r += i.substr( i.length - 2, 2 );
return r
};
let A, d, u, p, h, f, g, m, _, b = [];
for ( t && "utf-8" == t.toLowerCase() && ( e = n.encode( e ) ), b = ( e => {
let t;
const n = e.length,
r = n + 8,
i = 16 * ( ( r - r % 64 ) / 64 + 1 ),
s = Array( i - 1 );
let o = 0,
a = 0;
for ( ; a < n; ) t = ( a - a % 4 ) / 4, o = a % 4 * 8, s[ t ] = s[ t ] | e.charCodeAt( a ) << o, a++;
return t = ( a - a % 4 ) / 4, o = a % 4 * 8, s[ t ] = s[ t ] | 128 << o, s[ i - 2 ] = n << 3, s[ i - 1 ] = n >>> 29, s
} )( e ), f = 1732584193, g = 4023233417, m = 2562383102, _ = 271733878, A = 0; A < b.length; A += 16 ) d = f, u = g, p = m, h = _, f = s( f, g, m, _, b[ A + 0 ], 7, 3614090360 ), _ = s( _, f, g, m, b[ A + 1 ], 12, 3905402710 ), m = s( m, _, f, g, b[ A + 2 ], 17, 606105819 ), g = s( g, m, _, f, b[ A + 3 ], 22, 3250441966 ), f = s( f, g, m, _, b[ A + 4 ], 7, 4118548399 ), _ = s( _, f, g, m, b[ A + 5 ], 12, 1200080426 ), m = s( m, _, f, g, b[ A + 6 ], 17, 2821735955 ),
g = s( g, m, _, f, b[ A + 7 ], 22, 4249261313 ), f = s( f, g, m, _, b[ A + 8 ], 7, 1770035416 ), _ = s( _, f, g, m, b[ A + 9 ], 12, 2336552879 ), m = s( m, _, f, g, b[ A + 10 ], 17, 4294925233 ), g = s( g, m, _, f, b[ A + 11 ], 22, 2304563134 ), f = s( f, g, m, _, b[ A + 12 ], 7, 1804603682 ), _ = s( _, f, g, m, b[ A + 13 ], 12, 4254626195 ), m = s( m, _, f, g, b[ A + 14 ], 17, 2792965006 ), g = s( g, m, _, f, b[ A + 15 ], 22, 1236535329 ), f = o( f, g, m, _, b[ A + 1 ], 5, 4129170786 ), _ = o( _, f, g, m, b[ A + 6 ], 9, 3225465664 ), m = o( m, _, f, g, b[ A + 11 ], 14, 643717713 ), g = o( g, m, _, f, b[ A + 0 ], 20, 3921069994 ), f = o( f, g, m, _, b[ A + 5 ], 5, 3593408605 ),
_ = o( _, f, g, m, b[ A + 10 ], 9, 38016083 ), m = o( m, _, f, g, b[ A + 15 ], 14, 3634488961 ), g = o( g, m, _, f, b[ A + 4 ], 20, 3889429448 ), f = o( f, g, m, _, b[ A + 9 ], 5, 568446438 ), _ = o( _, f, g, m, b[ A + 14 ], 9, 3275163606 ), m = o( m, _, f, g, b[ A + 3 ], 14, 4107603335 ), g = o( g, m, _, f, b[ A + 8 ], 20, 1163531501 ), f = o( f, g, m, _, b[ A + 13 ], 5, 2850285829 ), _ = o( _, f, g, m, b[ A + 2 ], 9, 4243563512 ), m = o( m, _, f, g, b[ A + 7 ], 14, 1735328473 ), g = o( g, m, _, f, b[ A + 12 ], 20, 2368359562 ), f = a( f, g, m, _, b[ A + 5 ], 4, 4294588738 ), _ = a( _, f, g, m, b[ A + 8 ], 11, 2272392833 ), m = a( m, _, f, g, b[ A + 11 ], 16, 1839030562 ),
g = a( g, m, _, f, b[ A + 14 ], 23, 4259657740 ), f = a( f, g, m, _, b[ A + 1 ], 4, 2763975236 ), _ = a( _, f, g, m, b[ A + 4 ], 11, 1272893353 ), m = a( m, _, f, g, b[ A + 7 ], 16, 4139469664 ), g = a( g, m, _, f, b[ A + 10 ], 23, 3200236656 ), f = a( f, g, m, _, b[ A + 13 ], 4, 681279174 ), _ = a( _, f, g, m, b[ A + 0 ], 11, 3936430074 ), m = a( m, _, f, g, b[ A + 3 ], 16, 3572445317 ), g = a( g, m, _, f, b[ A + 6 ], 23, 76029189 ), f = a( f, g, m, _, b[ A + 9 ], 4, 3654602809 ), _ = a( _, f, g, m, b[ A + 12 ], 11, 3873151461 ), m = a( m, _, f, g, b[ A + 15 ], 16, 530742520 ), g = a( g, m, _, f, b[ A + 2 ], 23, 3299628645 ), f = l( f, g, m, _, b[ A + 0 ], 6, 4096336452 ),
_ = l( _, f, g, m, b[ A + 7 ], 10, 1126891415 ), m = l( m, _, f, g, b[ A + 14 ], 15, 2878612391 ), g = l( g, m, _, f, b[ A + 5 ], 21, 4237533241 ), f = l( f, g, m, _, b[ A + 12 ], 6, 1700485571 ), _ = l( _, f, g, m, b[ A + 3 ], 10, 2399980690 ), m = l( m, _, f, g, b[ A + 10 ], 15, 4293915773 ), g = l( g, m, _, f, b[ A + 1 ], 21, 2240044497 ), f = l( f, g, m, _, b[ A + 8 ], 6, 1873313359 ), _ = l( _, f, g, m, b[ A + 15 ], 10, 4264355552 ), m = l( m, _, f, g, b[ A + 6 ], 15, 2734768916 ), g = l( g, m, _, f, b[ A + 13 ], 21, 1309151649 ), f = l( f, g, m, _, b[ A + 4 ], 6, 4149444226 ), _ = l( _, f, g, m, b[ A + 11 ], 10, 3174756917 ), m = l( m, _, f, g, b[ A + 2 ], 15, 718787259 ),
g = l( g, m, _, f, b[ A + 9 ], 21, 3951481745 ), f = i( f, d ), g = i( g, u ), m = i( m, p ), _ = i( _, h );
return ( c( f ) + c( g ) + c( m ) + c( _ ) ).toLowerCase()
},
ab2strSync: ( e, t ) => {
try {
let r, i;
if ( "object" == typeof t ? ( r = t.encoding, i = t.array ) : r = t, window.TextDecoder && !i && r ) return new window.TextDecoder( r ).decode( e ); {
let t = 0;
const i = [],
s = e.byteLength;
for ( ; t < s; t += 16384 ) i.push( window.String.fromCharCode.apply( null, new Uint8Array( e, t, Math.min( 16384, s - t ) ) ) );
let o = i.join( "" );
return r && "utf-8" == r.toLowerCase() && ( o = n.decode( o ) ), o
}
} catch ( e ) {
window.console.warn( e )
}
return null
},
str2abSync: r,
ab2str: ( e, t ) => new Promise( ( n, r ) => {
const i = t && t.encoding ? "text/plain" : "binary/octet-stream",
s = new Blob( [ e ], {
type: i
} ),
o = new FileReader;
o.onload = e => {
e.target ? n( e.target.result ) : r( new Error( "Could not convert array to string!" ) )
}, t && t.encoding ? o.readAsText( s, t.encoding ) : o.readAsBinaryString( s )
} ),
str2ab: ( e, t ) => new Promise( n => {
n( r( e, t ) )
} ),
dataUri2Blob: e => {
let t;
t = e.split( "," )[ 0 ].includes( "base64" ) ? window.atob( e.split( "," )[ 1 ] ) : window.unescape( e.split( "," )[ 1 ] );
const n = e.split( "," )[ 0 ].split( ":" )[ 1 ].split( ";" )[ 0 ],
r = new Uint8Array( t.length );
for ( let e = 0; e < t.length; e++ ) r[ e ] = t.charCodeAt( e );
return new window.Blob( [ r ], {
type: n
} )
},
blob2dataUri: ( e, t ) => {
const n = new window.FileReader;
n.onload = e => {
var n;
t( ( null === ( n = e.target ) || void 0 === n ? void 0 : n.result ) || null )
}, n.readAsDataURL( e )
},
blob2str: async ( e, t ) => new Promise( n => {
const r = new FileReader;
r.onload = () => {
n( r.result || "" )
}, r.onerror = e => {
console.warn( "unable to decode data " + e ), n( "" )
}, t ? r.readAsText( e, t ) : r.readAsBinaryString( e )
} )
};
t.default = i
}, function ( e, t, n ) {
"use strict";
Object.defineProperty( t, "__esModule", {
value: !0
} ), t.determineOriginOfUrl = t.HEADER_STOP = t.HEADER_START = t.versionCmp = t.createScriptFromSrc = t.processHeader = t.processMetaHeader = t.createScript = t.init = void 0;
const r = n( 3 ),
i = n( 10 ),
s = n( 0 ),
o = n( 2 );
let a;
const l = {},
c = e => {
const t = null == e ? void 0 : e.keys,
n = {
keys: t,
default: () => [],
set: ( e, t ) => ( e.push( t ), e )
};
return ( null == t ? void 0 : t.length ) && t.forEach( e => l[ e ] = n ), n
},
A = e => {
const t = null == e ? void 0 : e.keys,
n = {
keys: t,
default: () => null,
set: ( t, n ) => {
const r = ( null == e ? void 0 : e.convert ) ? e.convert( n ) : n;
return null === t ? r : t
}
};
return ( null == t ? void 0 : t.length ) && t.forEach( e => l[ e ] = n ), n
},
d = e => {
const t = null == e ? void 0 : e.keys,
n = {
keys: t,
default: () => ( {} ),
set: ( t, n, r ) => {
r = r ? s.normalizeLocale( r ) : "default";
const i = ( null == e ? void 0 : e.convert ) ? e.convert( n ) : n;
return t[ r ] = t[ r ] || i, t
}
};
return ( null == t ? void 0 : t.length ) && t.forEach( e => l[ e ] = n ), n
},
u = {
name: d( {
convert: e => null == e ? void 0 : e.replace( /\s\s+/g, " " )
} ),
version: A( {
convert: e => ( null == e ? void 0 : e.replace( /\s/g, "" ) ) || e
} ),
grants: c( {
keys: [ "grant" ]
} ),
icon: A( {
keys: [ "icon", "iconURL", "iconUrl", "defaulticon" ]
} ),
icon64: A( {
keys: [ "icon64", "iconURL64" ]
} ),
supportURL: A( {
keys: [ "supportURL", "supportUrl" ]
} ),
fileURL: A(),
downloadURL: A( {
keys: [ "downloadURL", "downloadUrl" ]
} ),
updateURL: A( {
keys: [ "updateURL", "updateUrl" ]
} ),
namespace: A( {
convert: e => "" === e ? null : e
} ),
author: A(),
copyright: A(),
homepage: A( {
keys: [ "homepage", "homepageURL", "homepageUrl", "website", "source" ]
} ),
description: d(),
includes: c( {
keys: [ "include" ]
} ),
excludes: c( {
keys: [ "exclude" ]
} ),
matches: c( {
keys: [ "match" ]
} ),
requires: c( {
keys: [ "require" ]
} ),
resources: ( e => {
const t = null == e ? void 0 : e.keys,
n = {
keys: t,
default: () => ( {} ),
set: ( t, n ) => {
const r = n.match( /^(\S*)\s+(.*)/ );
if ( r && void 0 === t[ r[ 1 ] ] ) {
const n = ( null == e ? void 0 : e.convert ) ? e.convert( r[ 2 ] ) : r[ 2 ];
t[ r[ 1 ] ] = n
}
return t
}
};
return ( null == t ? void 0 : t.length ) && t.forEach( e => l[ e ] = n ), n
} )( {
keys: [ "resource" ]
} ),
noframes: ( () => {
const e = void 0,
t = {
default: () => null,
set: () => !0
};
return ( null == e ? void 0 : e.length ) && e.forEach( e => l[ e ] = t ), t
} )(),
connects: c( {
keys: [ "connect", "connect-src", "domain" ]
} ),
webRequest: c(),
"run-at": A(),
antifeatures: ( e => {
const t = null == e ? void 0 : e.keys,
n = {
keys: t,
default: () => ( {} ),
set: ( t, n, r ) => {
var i;
r = r ? s.normalizeLocale( r ) : "default";
const o = n.match( /^(\S*)\s+(.*)/ );
if ( o ) {
const n = t[ i = o[ 1 ] ] || ( t[ i ] = {} ),
s = ( null == e ? void 0 : e.convert ) ? e.convert( o[ 2 ] ) : o[ 2 ];
n[ r ] = s
}
return t
}
};
return ( null == t ? void 0 : t.length ) && t.forEach( e => l[ e ] = n ), n
} )( {
keys: [ "antifeature" ]
} )
},
p = {};
Object.entries( u ).forEach( ( [ e, t ] ) => {
t.keys ? t.keys.forEach( t => {
p[ t ] = e
} ) : p[ e ] = e
} );
const h = "==UserScript==";
t.HEADER_START = h;
const f = "==/UserScript==";
t.HEADER_STOP = f;
const g = /(?:^|\n)\s*\/\/\x20*==UserScript==([\s\S]*?\n)\s*\/\/\x20*==\/UserScript==|$/,
m = () => ( {
...{
...Object.fromEntries( Object.keys( u ).map( e => [ e, u[ e ].default() ] ) )
}
} ),
_ = e => {
const t = e.match( g ),
n = ( t ? t[ 1 ] : "" ) || "",
r = {};
return n.replace( /(?:^|\n)\s*\/\/\s*(@\S+)(.*)/g, ( e, t, n ) => {
const [ i, s ] = t.slice( 1 ).split( ":" ), o = p[ i ], a = l[ o ] || u[ o ] || void 0;
if ( a ) {
const e = n.trim();
let t = r[ o ];
void 0 === t && ( t = a.default() ), r[ o ] = a.set( t, e, s )
} else( null == r ? void 0 : r.name ) && ( null == r ? void 0 : r.name ).default;
return ""
} ), {
...m(),
...r
}
},
b = e => {
const {
name: t,
description: n,
version: r,
grants: i,
fileURL: s,
requires: o,
resources: a,
webRequest: l,
namespace: c,
noframes: A,
author: d,
copyright: u,
antifeatures: p
} = e;
let {
icon: h,
icon64: f,
updateURL: g,
downloadURL: m,
supportURL: _,
homepage: b,
includes: v,
matches: w,
excludes: k,
connects: y
} = e;
const R = e[ "run-at" ] || null,
x = ( e, {
[ e ]: t,
...n
} ) => n,
C = i.filter( e => e );
h = h || null, f = f || null, g = g || null, m = m || null, _ = _ || null, b = b || null;
const E = t.default,
I = n.default,
M = x( "default", t ),
G = x( "default", n );
v = v.filter( e => e ), w = w.filter( e => e ),
k = k.filter( e => e ), y = y.filter( e => e );
const Z = Object.entries( a ).map( ( [ e, t ] ) => ( {
name: e,
url: t,
loaded: !1
} ) ).filter( e => e.url );
return {
name: E,
description: I,
version: r || "0.0",
grant: C,
icon: h,
icon64: f,
supportURL: _,
fileURL: s,
downloadURL: m,
updateURL: g,
namespace: c,
requires: o.filter( e => e ).map( e => ( {
url: e,
loaded: !1,
textContent: ""
} ) ),
includes: v,
matches: w,
excludes: k,
homepage: b,
resources: Z,
connects: y,
webRequest: l.map( e => {
const t = JSON.parse( e );
return Array.isArray( t ) ? t : [ t ]
} ).reduce( ( e, t ) => e.concat( t ), [] ),
author: d,
copyright: u,
antifeatures: p,
name_i18n: M,
description_i18n: G,
uuid: null,
system: !1,
enabled: !0,
position: 0,
blockers: [],
lastModified: 0,
sync: {
imported: !1
},
options: {
check_for_updates: !0,
comment: null,
compatopts_for_requires: !0,
compat_wrappedjsobject: !1,
compat_metadata: !1,
compat_foreach: !1,
compat_prototypes: !1,
noframes: A,
run_at: R,
override: {
use_includes: [],
orig_includes: [],
merge_includes: !0,
use_matches: [],
orig_matches: [],
merge_matches: !0,
use_excludes: [],
orig_excludes: [],
merge_excludes: !0,
use_connects: [],
merge_connects: !0,
use_blockers: [],
orig_run_at: null,
orig_noframes: null
}
},
textContent: null,
header: null
}
},
v = ( () => {
const e = e => {
const t = e.split( "." );
return t.slice( 0, 3 ).concat( [ t.slice( 3 ).join( "." ) ] ).concat( [ 0, 0, 0, 0 ] ).slice( 0, 4 ).map( e => {
const t = e.toString().match( /((?:\-?[0-9]+)?)([^0-9\-]*)((?:\-?[0-9]+)?)(.*)/ );
return t ? [ Number( t[ 1 ] ), t[ 2 ], Number( t[ 3 ] ), t[ 4 ] ] : []
} ).reduce( ( e, t ) => e.concat( t ) )
},
t = ( n, r ) => {
const i = Array.isArray( n ) ? n : e( n ),
s = Array.isArray( r ) ? r : e( r );
for ( let e = 0; e < 16; e++ ) {
const n = i[ e ],
r = s[ e ];
if ( e % 2 == 1 ) {
if ( !n && r ) return t.eNEWER;
if ( n && !r ) return t.eOLDER;
const e = n.match( /\w/g ) || [],
i = r.match( /\w/g ) || [];
for ( let n = 0; n < Math.min( e.length, i.length ); n++ ) {
if ( e[ n ].charCodeAt( 0 ) > i[ n ].charCodeAt( 0 ) ) return t.eNEWER;
if ( e[ n ].charCodeAt( 0 ) < i[ n ].charCodeAt( 0 ) ) return t.eOLDER
}
if ( e.length > i.length ) return t.eNEWER;
if ( e.length < i.length ) return t.eOLDER
} else {
if ( Number( n ) > Number( r ) ) return t.eNEWER;
if ( Number( n ) < Number( r ) ) return t.eOLDER
}
}
return t.eEQUAL
};
return t.eERROR = -2, t.eOLDER = -1, t.eEQUAL = 0, t.eNEWER = 1, t
} )();
t.versionCmp = v, t.createScriptFromSrc = e => {
const t = ( e => {
const t = r.getStringBetweenTags( e, h, f );
if ( !t ) return null;
const n = e.indexOf( h ),
i = e.indexOf( "<html>" ),
s = e.indexOf( "<body>" );
return i > 0 && i < n || s > 0 && s < n ? null : [ "// ", h, t, f ].join( "" )
} )( e );
if ( !t ) return null;
const n = w( t );
return n ? ( n.textContent = e, n.header = t, n.options.compat_wrappedjsobject = e != a.unWrappedJsObjectify( e ), n.options.compat_metadata = e != a.unMetaDataify( e ), n ) : null
};
const w = e => {
const t = ( e => _( e ) )( e = ( e = ( e = ( e = ( e || "" ).replace( /(\r\n|\n|\r)/gm, "\n" ) ).replace( /\t/g, " " ) ).replace( /\n\n+/g, "\n" ) ).replace( /[^|\n][ \t]+\/\//g, "//" ) );
if ( t ) return b( t )
};
t.processHeader = w, t.processMetaHeader = e => _( e ), t.createScript = () => b( m() ) || {}, t.init = e => {
a = e
};
const k = "try to take over the world!",
y = "This script was deleted from Greasy Fork, and due to its negative effects, it has been automatically removed from your browser.",
R = i.createCache( {
timeout: 600,
retimeout_on_get: !0
} );
t.determineOriginOfUrl = e => {
if ( e ) {
let t;
const n = e.match( new RegExp( "https?://userscripts\\.org/scripts/(source|version)/([0-9]{1,9})\\.user\\.js" ) ) || e.match( new RegExp( "https?://userscripts-mirror\\.org/scripts/(source|version)/([0-9]{1,9})\\.user\\.js" ) );
if ( n && 3 == n.length ) return {
id: n[ 2 ],
token: "uso",
updates: !1,
meta_url: !0,
url: "http://userscripts-mirror.org/scripts/show/" + n[ 2 ],
code_url: "http://userscripts-mirror.org/scripts/review/" + n[ 2 ],
issue_url: "http://contactbyweb.com/userscripts-mirror"
};
const r = e.match( new RegExp( "https?://greasyfork\\.org/(?:[^/]+/)?scripts/([^/-]+).*/code.*\\.user\\.js" ) );
if ( r && 2 == r.length ) return t = r[ 1 ], {
id: t,
token: "gf",
updates: !0,
meta_url: !0,
url: "https://greasyfork.org/scripts/" + t,
issue_url: "https://greasyfork.org/scripts/" + t + "/feedback",
code_url: "https://greasyfork.org/scripts/" + t + "/code",
updates_allowed: function ( e ) {
return !e.match( new RegExp( "https?://greasyfork\\.org/scripts/([^/]+)/code/.*\\.user\\.js.*version=[0-9]+.*" ) )
},
convert: async e => {
var t;
let n, r = e;
if ( r ) {
const i = null === ( t = e.description ) || void 0 === t ? void 0 : t.trim();
i === k ? r.description = "" : i === y && ( r = null, n = "deleted by hoster" )
}
return {
script: r,
warning: n
}
}
};
const i = e.match( new RegExp( "https?://sleazyfork\\.org/(?:[^/]+/)?scripts/([^/-]+).*/code.*\\.user\\.js" ) );
if ( i && 2 == i.length ) return t = i[ 1 ], {
id: t,
token: "sf",
updates: !0,
meta_url: !0,
url: "https://sleazyfork.org/scripts/" + t,
issue_url: "https://sleazyfork.org/scripts/" + t + "/feedback",
code_url: "https://sleazyfork.org/scripts/" + t + "/code",
updates_allowed: function ( e ) {
return !e.match( new RegExp( "https?://sleazyfork\\.org/scripts/([^/]+)/code/.*\\.user\\.js.*version=[0-9]+.*" ) )
},
convert: async e => {
var t;
let n, r = e;
if ( r ) {
const i = null === ( t = e.description ) || void 0 === t ? void 0 : t.trim();
i === k ? r.description = "" : i === y && ( r = null, n = "deleted by hoster" )
}
return {
script: r,
warning: n
}
}
};
const s = e.match( new RegExp( "https?://openuserjs\\.org/install/([^/]+)+/(.+?)(?:\\.min)?\\.user\\.js" ) );
if ( s && 3 == s.length ) return s.shift(), {
id: s.join( "/" ),
token: "ouj",
updates: !0,
meta_header: !0,
url: "https://openuserjs.org/scripts/" + s[ 0 ] + "/" + s[ 1 ],
issue_url: "https://openuserjs.org/scripts/" + s[ 0 ] + "/" + s[ 1 ] + "/issues",
code_url: "https://openuserjs.org/scripts/" + s[ 0 ] + "/" + s[ 1 ] + "/source",
convert: async e => {
var t;
const n = e;
return n && ( null === ( t = e.description ) || void 0 === t ? void 0 : t.trim() ) === k && ( n.description = "" ), {
script: n,
warning: void 0
}
}
};
const a = e.match( new RegExp( "https?://raw\\.githubusercontent\\.com/([^/]+)/([^/]+)/[^/]+/(.*)\\.user\\.js" ) ) || e.match( new RegExp( "https?://github\\.com/([^/]+)/([^/]+)/raw/[^/]+/(.*)\\.user\\.js" ) ) || e.match( new RegExp( "https?://raw.github\\.com/([^/]+)/([^/]+)/[^/]+/(.*)\\.user\\.js" ) ) || e.match( new RegExp( "https?://github\\.com/([^/]+)/([^/]+)/releases/download/[^/]+/(.*)\\.user\\.js" ) ),
l = e.match( new RegExp( "https?://(([^\\.]+).github\\.io)/(.*)\\.user\\.js" ) );
if ( a && 4 == a.length || l && 4 == l.length ) {
let e;
if ( a ) {
a.shift();
const [ n, r, i ] = a;
e = [ n, r ].join( "/" ), t = [ n, r ].concat( r == i ? [] : i ).join( "/" )
} else {
if ( !l ) throw new Error( "Should never happen!" ); {
l.shift();
const [ n, r, i ] = l;
e = [ r, n ].join( "/" ), t = [ r, n ].concat( n == i ? [] : i ).join( "/" )
}
}
return {
id: t,
token: "gh",
updates: !0,
url: "https://github.com/" + e,
issue_url: "https://github.com/" + e + "/issues"
}
}
const c = e.match( new RegExp( "https?://gist\\.github\\.com/([^/]+)/([^/]+)/raw/(.*/)?.*\\.user\\.js" ) ) || e.match( new RegExp( "https?://gist\\.githubusercontent\\.com/([^/]+)/([^/]+)/raw/(.*/)?.*\\.user\\.js" ) );
if ( c && ( 3 == c.length || 4 == c.length ) ) {
const e = c[ 1 ],
n = c[ 2 ];
return t = `${e}/${n}`, {
id: t,
token: "gst",
updates: 4 == c.length,
url: "https://gist.github.com/" + t,
issue_url: `https://gist.github.com/${t}#new_comment_field`,
code_url: "https://gist.github.com/" + t,
precheck: async () => {
const t = R.get( e );
let r;
if ( t ) {
if ( r = t.json, !r ) return "cache error"
} else {
const t = await fetch( `https://api.github.com/users/${e}/gists`, {
method: "GET",
mode: "cors",
cache: "no-cache",
credentials: "same-origin",
headers: {
Accept: "application/vnd.github.v3+json"
},
redirect: "follow",
referrerPolicy: "no-referrer"
} );
if ( 200 !== t.status ) {
o.logger.warn( `Unable to load gists of "${e}" -> SKIPPING` );
const t = "unable to load gists of user";
return R.set( e, {
error: t
} ), t
}
r = await t.json(), R.set( e, {
error: null,
json: r
} )
}
return r ? r.reduce( ( e, t ) => ( e[ t.id ] = t.public, e ), {} )[ n ] ? null : "secret gist" : "unable to decode gists of user"
}
}
}
const A = e.match( new RegExp( "https?://gitlab\\.com/([^/]+)/([^/]+)/(?:-/)?(?:raw|blob)/[^/]+/(.*)\\.user\\.js" ) );
if ( A && 4 == A.length ) {
A.shift();
const [ e, n, r ] = A;
t = [ e, n ].concat( n == r ? [] : r ).join( "/" );
const i = [ e, n ].join( "/" );
return {
id: t,
token: "gl",
updates: !0,
url: "https://gitlab.com/" + i,
issue_url: "https://gitlab.com/" + i + "/issues"
}
}
const d = e.match( new RegExp( "https?://bitbucket\\.org/([^/]+)/([^/]+)/raw/[^/]+/(.*)\\.user\\.js" ) ) || e.match( new RegExp( "https?://bitbucket\\.org/([^/]+)/([^/]+)/downloads/(.*)\\.user\\.js" ) );
if ( d && 4 == d.length ) {
d.shift();
const [ e, n, r ] = d;
t = [ e, n ].concat( n == r ? [] : r ).join( "/" );
const i = [ e, n ].join( "/" );
return {
id: t,
token: "bb",
updates: !0,
url: "https://bitbucket.org/" + i,
issue_url: "https://bitbucket.org/" + i + "/issues"
}
}
const u = e.match( new RegExp( "https?://userstyles\\.org/styles/userjs/([^/]+)/.*\\.user\\.js" ) );
if ( u && 2 == u.length ) return u.shift(), {
id: u[ 0 ],
token: "usty",
updates: !0,
url: "https://userstyles.org/styles/" + u[ 0 ],
issue_url: "https://forum.userstyles.org/post/discussion?Discussion/StyleID=" + u[ 0 ],
convert: async e => {
let t, n, r, i;
const s = [ {
tag: "includes",
re: /(?: \|\| \(new RegExp\("\^)([^$]+)(?:\$"\)\)\.test\(document\.location\.href\))/g,
idx: 1,
value: e => "/^" + e.replace( /\\\\(.)/g, "\\$1" ) + "$/"
}, {
tag: "includes",
re: /(?: \|\| \(document\.location\.href\.indexOf\(")([^\"]+)"(?:\) == 0\))/g,
idx: 1,
value: e => e + "*"
}, {
tag: "matches",
re: /(?: \|\| \(document\.domain == ")([^\"]+)"(?: \|\| document\.domain\.substring\(document\.domain\.indexOf\("[^\"]+"\) \+ 1\) == "[^\"]+"\))/g,
idx: 1,
value: e => "*." + e
} ],
o = new RegExp( "(?:if \\(false)(" + s.map( e => "(?:" + e.re.source + ")" ).join( "|" ) + ")+", "g" );
return e.textContent && 0 === e.includes.length && 0 === e.matches.length && 0 === e.excludes.length && e.options && e.options.override && e.options.override.orig_includes && 0 === e.options.override.orig_includes.length && e.options.override.orig_matches && 0 === e.options.override.orig_matches.length && ( n = e.textContent.match( o ) ) && ( n.forEach( t => {
s.forEach( n => {
for ( ; r = n.re.exec( t ); )
if ( r.length > n.idx ) {
const t = n.value( r[ n.idx ] );
e.options.override[ "orig_" + n.tag ].push( t ), e[ n.tag ].push( t ), i = !0
}
} )
} ), i && ( t = "includes added" ) ), {
script: e,
info: t
}
}
};
const p = e.match( new RegExp( "https://static\\.iitc\\.me/build/release/(plugins/)?(.*)\\.user\\.js" ) );
if ( p && 3 === p.length ) {
p.shift();
const [ e, n ] = p, r = "iitc-project/ingress-intel-total-conversion";
return t = [ r ].concat( e ? [ e, n ] : [] ).join( "/" ).replace( /\/\//g, "/" ), {
id: t,
token: "gh",
updates: !0,
url: "https://github.com/" + r,
issue_url: "https://github.com/" + r + "/issues"
}
}
const h = e.match( new RegExp( "https://iitc\\.app/build/release/(plugins/)?(.*)\\.user\\.js" ) );
if ( h && 3 === h.length ) {
h.shift();
const [ e, n ] = h, r = "IITC-CE/ingress-intel-total-conversion";
return t = [ r ].concat( e ? [ e, n ] : [] ).join( "/" ).replace( /\/\//g, "/" ), {
id: t,
token: "gh",
updates: !0,
url: "https://github.com/" + r,
issue_url: "https://github.com/" + r + "/issues"
}
}
if ( e.match( new RegExp( "https?://socialfixer\\.com/socialfixer\\.user\\.js" ) ) ) return {
id: "socialfixer",
token: "web",
updates: !0,
url: "http://socialfixer.com",
issue_url: "https://www.facebook.com/groups/SocialFixerUsersSupport/"
};
if ( e.match( new RegExp( "https?://www\\.fbpurity\\.com/.*\\.user\\.js" ) ) ) return {
id: "fbpurity",
token: "web",
updates: !0,
url: "https://www.fbpurity.com/",
issue_url: "https://www.facebook.com/fluffbustingpurity"
}
}
}
}, , function ( e, t, n ) {
"use strict";
const r = rea.FEATURES;
let i = null,
s = r.PINGPONG.RETRIES;
const o = ( e, t ) => {
const n = () => {
null != i && window.clearTimeout( i ), i = null
},
r = t => {
t ? ( n(), e && ( e( t ), e = null ) ) : console.log( "pp: Warn: got pseudo response!" )
};
i = window.setTimeout( () => {
if ( n(), s-- > 0 ) return o( e, t ),
void( e = t = null );
t && t()
}, 5e3 );
const a = {
method: "ping"
};
try {
rea.extension.sendMessage( a, r )
} catch ( e ) {}
};
var a = o,
l = n( 0 );
const c = rea.FEATURES;
var A = [];
let d = null;
const u = ( () => {
const e = c.HTML5.LOCALSTORAGE;
let t, n;
return {
cache: function () {
const t = document.documentElement,
n = location.pathname;
if ( e && t && n ) try {
const r = JSON.parse( e.getItem( "background" ) || "{}" );
r[ n ] = {
class: t.getAttribute( "class" )
}, e.setItem( "background", JSON.stringify( r ) )
} catch ( e ) {}
},
reset: function () {
n = !0;
const e = document.documentElement;
"string" == typeof t && e && e.setAttribute( "class", t )
},
restore: function () {
if ( n ) return;
const r = location.pathname;
if ( e && r ) try {
let n;
const i = e.getItem( "background" );
if ( i && ( n = JSON.parse( i ) ) && ( n = n[ r ] ) && n.class ) {
const e = document.documentElement;
if ( !e ) return;
t = e.getAttribute( "class" ) || "", e.setAttribute( "class", t + " " + n.class )
}
} catch ( e ) {}
}
}
} )(),
p = e => {
const t = () => {
e(), u.restore()
};
_ ? document.body ? t() : window.addEventListener( "DOMContentLoaded", t ) : ( m = m || [] ).push( () => {
p( e )
} ), d && ( window.clearTimeout( d ), d = null )
};
A = [ {
name: l.I18N.getMessage( "Default" ),
layout: "default"
}, {
name: l.I18N.getMessage( "Default_Light" ),
layout: "default",
theme: "light"
}, {
name: l.I18N.getMessage( "Default_Dark" ),
layout: "default",
theme: "dark"
}, {
name: l.I18N.getMessage( "Default_Darker" ),
layout: "default",
theme: "darker",
footer: 'Theme by <a href="https://github.com/narcolepticinsomniac" target="blank">narcolepticinsomniac</a> from the <a href="https://github.com/openstyles/stylus" target="blank">Stylus</a> project.'
} ];
let h = !1;
const f = {
default: l.I18N.getMessage( "Default" ),
monokai: "Monokai",
solarized: "Solarized",
"mdn-like": "MDN-like",
eclipse: "Eclipse",
railscasts: "RailsCasts",
zenburn: "ZenBurn"
},
g = () => ( h || ( A = A.map( e => ( e.value = e.theme ? [ e.layout, e.theme ].join( "#" ) : e.layout, e ) ), h = !0 ), A );
var m, _ = !1;
const b = {
init: e => {
_ = !0, m && ( m.forEach( e => {
e()
} ), m = null ), u.restore(), a( t => {
let n, r, i;
var s;
t && ( n = t.config ) && ( r = n.layout ) && ( n.dark && !r.includes( "#" ) && ( r += "#dark" ), ( s = ( e => {
let t;
return g().some( n => {
if ( n.value === e ) return t = n, !0
} ), t
} )( r ) ).theme && "light" !== s.theme ? ( s.footer && $( ".footer" ).html( s.footer ), i = s.theme ) : i = "default", u.reset(), $( document.documentElement ).addClass( [ rea.FEATURES.RUNTIME.MOBILE ? "mobile" : "desktop", i ].join( " " ) ), window.setTimeout( u.cache, 500 ) ), e.suc && e.suc()
}, e.fail )
},
images: {
origin: function ( e ) {
return "gst" == e && ( e = "gh" ), {
unknown: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wKDBcWHLi+jYAAACAASURBVHja7X13nBRV9v15r6p7egIgElUkioCCIqBgxEVEBRMyiJJBUbKAuKvwVUQJKoqooCAGoiKiElVkBRPq7sqKGUHSkNOQplOFd39/vNDVQxB/MiO49n5mB3uqq6vq3ffeveeeey7w1+uv11+vv15/vf5HX+x4nEQIwT3PywGQDSCbMWYTkQAgjtd3/GkHgDEIIcAYO9rfmHqOHoAYgKht2wWcc/F7v98+Hjfh+35OIpGoK4SoZ1lWXcZYaSKKA3D/MgD5IqLf83GLMZYhhMgXQvxkWdb3kUjkewAHTggDEEKEPc+rLIS4gHN+Kef8dAAFRPSHGMDhZtMfOHjHdE2/8h02gAwA2z3PixDRASJaczzuzT5Oz8gmolKc87LhcLhsKBQ6VQhRAoD/19z/fYZGRGCMWZxz2/M83/f9ckRUCoB1whgAEXHGWAZjLNOyrAjnHJzzEIDQX8P622Z84feVAYBzDiFENmMsE0AGEfETxgAYYyAiwRgTyvmDEOI3n+NoD+t4L+uFzxf8Dj0I6r6OeUCD5zza54518Au/T0Q+EQn1rHHCGEDgQkl5/r95NhztgR3vwdcGqs/LGDMeNwBwzg855ljP+WvXfbhz6vs/hu8SAOh4PgeOE+ClB6DwgByrgRSlo6i/+1i+n3P+qyuZNq7C5yu8+hTXy/4jHuqxnkcvwYdbio/0AI+2rB/p+vSsDM784EpwLMv64Yy38GwPHhO8pqNtRyeVARxPB6nwwyr8QBhnhyyGRzOCI50naGBF8dCPdN4jGeavvf8/YwBEAkTps04PZHBJPuzSyQAm/0/+1ueU/0j7rF62g6tM4ZUguMQfq28QXO6PhvQdbTUpfD3/EwagnTHP8+D7PnwhQEKAcQ6Lc1iWDH9d1wURYNsWwBh8z1ODTOCMy+MtDs4tcMZABAjhw3VdM7CWbSOSkQHbtv8wH+NIq0Rx+QTHOwo4TucREEL++J6n3wRTs4GI4PvSISbBASZXDPkeQIzA9QxnJLFIInk+IeD7PkAAY/yo93EkH0Bfw7Hu20d6X61Jh5zvSL7B/8wWwBhXD0XAsm1ACECCS+AWBwiwLGkA3NKeN5kBZQCYZcFSn2GMgXECJ4JtWWBgYCBYFj+sw3kss/pIM/ZwBnNEw1Db1OGNQ91HERvBCRkFBA2BwQc4B2PS8dN7uhxzHT6qY5lQM5sh9T+1AICBq1nFdXKNAOH7KQMAgfz0kE8bEAnllxzhnvUsFkKkrRTBiEBfODtCiGmMUd/nyb4C/F7POviA5EATwAO4gHESGUj5CqRmlkVqQANLLQEgQRAkzGcdB7BsAcu2QILguo70PwTB4hyRSAScMbiuC9/3IYQ8K5EcKItz2JYFy7YgBCERT0injzPYto2MjAwAQNJJQggBy7KkYYCn+STaIeU2h23ZsO2Q2rnoEJzkf8YAwAAOBsEC8TVLLZ/EAnul+mFm6ZRHkVkHKBUhpIWEBChjkjNVzmLhCzMApLYHoYwnZXwMHAzElRGSgCCCL3xwFNrXRWC2U8qI9KrBGZOXIDjAU8v/SeUEHk8j4HLNh2/JtBdjckmVD4qBWxwEgHNpAJZlpQZUzyautwe1p6YdlwoD9Q8RIRQKyX8LAuMctm1J3yIUArcsuZqQWgHSPi/PG4mEIYQtv4tbxpEMhUIQRLAtrrarFBFEpU8AHekEnM+idgaLxQD+v/wDlpqtZGau2fyR8p/0geoXMYDMOhDwBNIhZ6b2Wq58Au2QccYBThBchZNM+x88gJsrA4B6XxkbEQe3bID5YGDgAWPjnIERMyGqNHIOyyIIoXwDxgLfefjZf7xXhSLPBTDG4Ps+Pv30UwDABx98cIyGI5djnwSE78u9W0iDWvTuIrmcqmX1k08+gfCFOkaDSMohg1p61SogBCk/QB77wZIl+L8HH8TnX3wh/45UCKqXe30tQgj861//gu8LCCExCiHS/RHf8yH81DkM3KyuRwT8GkEyJJXXLq9feSrFMvuLxQCICO+88w5KliwJIsLcuXN/mwPoi4AzKP89b+48NdgCRALLli0zA64fsi/8AAKolm11vFADt2jRQhw4cADDhw/HSy9NVriCkEaXZgQAqf/WS7ceNJBvrmvixInmOnzfV9+n9vs0g1IGSGScUl8IEKShQ8/wIxBETjoc4OOPP0bbtm2xe/du1KxZ88hTPmjtlJYHlw8/YBhCOVNmRgnCmDFjsG3bNriui+taXodIRgSzZs1CLBbD7Ddmg0C4+OKLcdlll6Fhw4bYf+AAOnboACLCSy+9ZODie/rfA08hiy+//DLOr38e/tasGerVrYcd27fj/PPPx4Tx43FK6dL48ssv4Dgupk+fjsmTX8L333+Peuedh44d2qeMRw+4EBBMKGeVAGWsQhAYJwifg1kCjBgYkdkqTmonMBgHv/zyy+jVq1fa0vjuu+/inXfeSfvMtddeh5tuuhHdunZDJDNi4v5EIonp06ebnR863le+wZdffok5c+bIvdTi6N+vP6ZOnQrGGYY9NAzDHnoIGRkZeOyxx8y1DRo0COFwCKeffgb+8Y+/4+233kLfvn1Ro3oNBTIBGRkZGPPEGAjhY/z48WCMISMjA5decgm6dO2Cffv24cEHH0T37t1xR/fu8IQPxhi6dOmKEiVKAAB830cymcSUKVPw1X/+jZdeejktzG3UqBG639EdCPgrIIlqMpzETuCXX36JFi1agDGGjRs3Ijs7Ow0syc7OxplnnhnY6xhOLV0anHNUrV4NGeGwOZfrusar1jkBi1sgAiybY8SIEejVqxcikQhGjhiB9957Dz169AAR4cYbbwTjFqpXr24+yzjH+PHjwTnH7t27MGTIUJQvXx63tMkFCV85YxzVqlVTqKF05uyQDUGEmmefDW5xlC9XHr/88gsqVqwIy7bAhNy7q1WrhuzsbGMAjuPAsizk5JRAlSpV0lawcuXLwbZscCuVlmZcAlBFSastcgOYM2cOnnxyDIgIJUqUCOzVPoiAi5s0wSWXXJIKz5QnL4SPEY8+YvB9k7mD/L19xw5UrFABu3bvxvr168HAsHnLFkx+aTISsThGjhqFlte1xLhxTyMSycKK/34lvfwAOjdzxgzUrFkTl156KVavXoNy5cqhZcuW+Pt99+HxJ57Ad999h0aNGhWKINSqEInghYkT0bdPH0yaNAn9+/fHqlWrVNgpjx05YiTskEpeOZ4BpOrWrYt69eqBBMHzPelLmHWNIzjiRQ0HF7kBuK5khr/yykvo1KmTSsj4IF8hcgC4Jj4yLq0eymvXjh5S7gHnHJMmTsKYJ8fg22+/Rb169TBlyhT4no+c7Gzc1eMu1KlTByNGjoTFOYYOGYpYPIZRo0YBRPjb3/5mnLl27dph4sSJmPziZLS4pgUGDRoEz/PQ/Y47cFePHrjiiivQsGEjXHPNNcYJrFu3LoRPiMdi6NqtG7p3747bbrsNl156CRo0aIA+ffqiXr16uKtHDwgwEFkqChAmRazT0oKEOi+pEDQFFJkbLuIo4LicPZlMnl5QUHAL57xFdnb2xaFQqKwIeM3ynoTxjoO/ZYbPgh2ywS1L4fQqpPI9eJ70shmTqWDbtgEiJB0HRIRwOCzTwa4vVxVIY7JsCxa31NKtM4jp6WDOuQRrLI6QHYIgAdd14Xny2rjFEcmIgPMUFKzDwmeeGYd7BtwDm1vgto2QZUGQQCKRhO/54ExuFSENBSeTICFgK6CJMQbh+3AdF4KEmQDcSt0nLwQIua67u6Cg4Asi+iAnJ+ftjIyMrSdJNjCAxQfSsqQMAGAKDuWQZGfpGfu+MN44Y35qBhHB9zwIAJbvA4zBEx58zzdZQSJ9dwyc+xAEeMKHq3gGjFQCJ0SwmQ1fzUbPdeF5HjwhEBI2RMgHwOF5PjzPNU5br9694DgOyA7BJgJngPAFPNeD53lyJWOAHZLMeN/1lOFpNBLwfWlwvvClMVoWLFjFRgcrNgMwqVadNQPBAkCcA0QpyJQzs2Jo6NeyLGkcXHr22vvnlqVy/innDLYljcQwfbjJCXBG4NAOFgHE5Dl5ChlEANq1VSQRRPLktUi4iAjq8xrZYwFo2JLOnCXvCQT570CGkCvAUh/DC8HSxfUqsm8K5gDy8vLw7LPPwrIs9OrVC+FQGJmRCLIyM5GVlYX/fPUf9OrVC7e1a4du3bph5syZsG0b4XAYmeqYzMxMZIQzYIdCCNk2MjMzkZmZiXA4hFAohEiGPF+2OjYSyUAoZMO2bckMsuT55DHZyM7OQlZWFjIyIgb/tywLJUuVQqfOndG5c2fMnTsXLVq0gGVZyMjIQGZmJrKzM5GVlY3s7GxkZmUhEomgefPmsG0bn3z6KbKyslCiZA5eeuklZEYyYXMLE8aPl/eRnYXJk19EOByCHQohIyOC7Oxs5GRnp+5RMZSKIxF03A3gSBc8depU9OnTB4wx5OTkwLZt87N06VL8+OOPeOihh3Dttddi2LBhKCgowLhx42BZFr799lt88vEnmDZtOhKJhCKFWFi4cCGWLFkCW+2XK1euxKJFi/D+++8jFArh3XffxcKFC1MzkjG89tpr+OyzzxAOhxEOhxEKhZSBWGbm5ebmYv78+ViwYAE6d+6MsWPHgnOOjz76CKFQCKFQGF9++aU8R0ie47nnnkNeXh4GDx6MFya+gHA4jOzsbLOPZ2ZmwrZthEIhZGVlyaVepZBDoZC5nuC1FAW/4g+BggFgx44dCIVCWLp0KW6++ea0v82ePRtXX301xo8fj7vuugszZ87E9u3bsWnTJgDA9ddfj3Lly+GOO+5A586dAQCLFi3Ctddei6pVq+Kll182x11yySWwbRvt2rVD48aNkZGRgTfffBMA0KdPH7Ru3RobN27El19+ecSH+9NPP2Hy5Ml4/vnnwRjD6NGjAQDxWAzLly/H2rVr8dFHH6V95tFHH0XVqlVRs2ZN9O/f//+b0VuUef8/zAA8z0PZsmUlhj9vHpo2bSqdLM+D67oIh8N45ZVX8MQTT0AIgQcffBD5+fnIyAjD9300b94cderUgeu6OOeccyCEQF5eHtq0ycWgQYPwzTffwPM8NGvWDKeccgquuuoqAECZMmVw9dVX47333oMvfKxYsQKzZs0CAEyePBmO4yiP3zMRiRAC9evXR9euXXHnnT3gOI5BMa9r2RLz58/Ho48+ivvvvx+O45hz6KjGcRy4jgvHcREKhYyDFw6H0+7X9334vg/Pk1FJ8EdfT1Hg/n+IE/jqq6+iW7duin3jwHU9COHDU8mSeDyOG264Ea+++qrZdyORCPbt249kMgnbthGNRsE5Nw/x66+/xmuvv4Y9u3dj9OjREmGzbURjMelUWhZi8Tgsy4LjOBCeQL26ddG+fXs4rosbb7oJBwsKwBU/QG9HBEI0GkVBtAC+J2DbVmpwVRh4Vs2aOHjwoGIfM9iWbcirRISCggL4vo+bW7dGNBZDZmYEHTp0QDQWBQjIzc1FMpkAYxxCCDjKgLhyOi1uSUZQOATbsorcCIp8Bfjhhx9QuXJlrFmzBo0aNUrP2gmB88+vD4tzlD6lNK677jpY3MLBgwcxbtw4EAk5gOpYR8X+nudj5oyZmDRpkqKHE5xk0hynY24iQjKZBEC49LLLMHbsU3jl5Zfx2syZEGbWU1rSLZlMqhBV0r/k54EH7r8fQ4cORa+ePdG5c2cIX6aq9XcQgHAohNdffx2+7+PZZ54xTKOxY8cCJOHgZ599VjGVkGIZqUyhyT6CDpsJPOGBIMZYi5ycnItDoVBZvYzNmDEDHTp0wJw5c3B9q1awQyEzUNq6X3zxRWzYsAENGjTAgf0H8PEnH5sHqY/jOvTjHGAMrlqebVsuYr6QqVQSQjp9KtyybMskVnS9gUYgZdgmwSLLsgAiuJ4L3/MlJ9DiCIfD4JzJzwmCMIwgmaTRQJIOVx3Hge/5qiaBI5QRBkgaFkPqejjnkqLueQowkwQR7eQWZi4pVPW4A0FFbgCGECECuXBFfkjx4hU4wjmY4toRVKpUs3ZVDM1VIsfzPAAEy7IBJtm9Qs04nS+QMXp6rZ6e+QjG/YpCrtFCjfgxxhAOhw2pRSKNLDU7NXrHpSERCTiuBxK+2l44LDsEIsBzXYl/WCnjlGCXAog0xcziBhEMViyd1EhgsP4uSIpMpYW54e0TJPuXBEwxRzD9ywNoIoGgdZJEgO3LGZPsIQZYZEmiB1TxiPANImcesBAgxhVjKLU9BQs2RCG2kR4wWAQwCwyBnL8vIHTuwiLFQKe0c8otQCKiQhscGDhJHiInabxFHQ7y4jKAX375BQCwatUqxdgRadSob1Z+g4ULFuKLLz6HlhnQK4WEjsnkEygwSJLihdQeqpNN8AGRonQhQOvSULRQM94YpqaK+ZqGltqmNGvH9+UA++pHiADzR61YehXxNSVNwLCXfPXdHy1bBl9IeNnTqxxnatBZsSkrFYsBLFq0CHv27AERYcKECYbBowfj1ra3YsfOnWjVqhXKlZEp2Wg0Zma172sqF6Wza0Tq3yQEyE83DLklCDNrg3kIIXz4vmfeM8elnSNobHILMAMsfPgk6wf04MprlOfVvEBdUCIHW35eeD4sy8KjjzyKZCIJz3UN2hgOhY1fU1Q0sGI3gMWLF+Oiiy5CQUEBzqx0pslyMsYx6N57MXv2m3hrzhxcdNFFGD9hPOqddx569uwJxoDbbrsN3bt3w5VXXmnYPuvWrUP79u2Rm5uLgoICMMZw4403od1tt+G6667D7t170K7dbWjatCkcxwFjDCtXrsQVV1yBtm1vlaVnjOO1ma/hmmuuwTXXXIP/fv1fXNG0KXJzc3FV86uwYsV/wThDXl4ebr31Vtx80804cOAAOOfYtGkTcnPboPlVzbF06VIwxtC3T180btwYs2fPhqV8D854gLQst5tvv/0WjDFcfPHFWLlypUEFNQoYRCWDGdUT+pVMJk/fs2dP3/z8/PmO4+wiIvI8j1zXJc/zqGfPnuS6Lj311FO0adMmikZjFI1GqaCggO644w568sknKS8vj5JJh3bs2Em9e/eme+8dRIl4nOrVq0cFBQVUEI1Sv379yHUcSsTjtPiDD2jx4sU0YMAAcpJJatiwIcWiUTp48CA1bNiA4vE4RaNRGjRoIHmuS127diUn6dDBgwfp/4b+H0WjMWrVshUlEglyHIc8z6NatWpRIpGgaCxGPXr0oFg8RslkkpZ9tIyW/HMJde/enRLxBN18880Ui8UoFo9TIpmkufPm0c8//0ye69KokSMpGo1SLBqjRCJBnueR53kUi8UpFovR4MGDzXMZM2YMJRIJcxwRkRCC9Mv3ffJ93/y34zi78vPz5+/Zs6dvMpk8/YRfAYgIK1euRNOmTQEAP//8M8qVKycLNQL1c/v370eZMmUAEE45pZTKlUtH6cILL9QnQ1ZWFgDCTTffjMsuvRSXXXYZ8vPzQUQ455xzVKEIR+3adSRdzLaxffsOEIDp06ej/gX10bhxY5QqVRIgwsCBA9GkSRMMHDgQQgjUqVPHfFelSmeACLjhhhtwycWX4IrLr8CePXsgVDyvSR0gwq6dO5Gbm4vz69fHtOnTZbIRQXJvqv5v1KhRZoZnZGSo/EIoDf8vCkmcYokCDrdUvf766xg9ejSICBkZGQZZ8yXJH4lEAvfddx9uuukm9OnTBzNmzEAsFkPTpk0NDuC6rvHWPV+gVKlScF0XCxYsQGZmpontHcdVXAIB1/NgqRSsIIFOnTrhufHj4XseNm3Kg+MkUbJEDj795BNYto3Bgwdj+fLliMWiYAC+++57eI6javsYFixcgEgkE46TQMmSJbF/3z5kZmZi29ZtqFOnDvr27YvOnTtj/fp1SCikTyaDVAzvOWYSnHfeeSAi/Pe//z1k0IO5gJMuG3hkShjw5ptvon379qmcufr92GOPoX379nj99ddx3XXX4bXXZmL8+PG4Z8AAMMZQvXp1GRczhkpnSv+hd+/euPTSS3HmmWeiYsWK8rhq1WU8zjiqV68BriqCatSoAQCYOHEibm3bFq1atUJOTgkwxrD6l19w8SWXoHfv3njyySfRokUL9O7dGzfd3BqTJk0EYwz/N3QoGjVqhFIlS+GMM04HGMOECRMwYMAAXHVVMzDG0OCCC1CpUiU0bNgQ8+bNT5WlaY9eYxicY8qUKQCATZs2SXDoMLpBwdXxcFoEJwUlzFC+Annt4L8L39Sjjz6Kd955B2XLlsWDDz6Ipk2bHrIUFhZgMu8F2Eb6thg7jB6QWrYV2nDIeW+99VaVMCJdTJim6nWkgSh8XWkVvYr0khpUSSxt3bq1ocMf7rkcLit4wiOBhzOAI20NReHZskKFJb/nDs2A6gHB8ROzPOqMZodWARQlFFwshSGF5do0PYwK3fThlDZTKOKxEWTTBkJRzAuzazQSxwIP+9BjVKiqoewjzqDUQVSopIvY0Us6UvcYJAEzUyj6Ww3rhMUBdu3ahccffxxEhDvvvNMkZfTP+nXr0KlTJ9SpUwctW7bE8uXL01A1ycj10lA7/VmD7PmeyaXr37qu8OabbzaAj+d6cD1Xkj9d1yRj9Hn193meq5xLaSz6vMHc/bZtW3HxJRejQcMGWLdunXFYHfUz5oknjACV/myQe6CP198l708cVjXkpOUDAMCUKVPQu3dvCCEQiUTMwOkwcf78+ZgwfgJ+WfsLqlWvjrfmzMHPP/+M5s2bo2zZspI2DY4DB/ajdOnSyM/PR15eHurUqY3MzCzs3LUTOdnZ+OGHH1G//vlIJBJYv34DQraNOuecg8mTJ4OI4LouvvvuO/i+j9q1ayNk29i+YweEECgoKECtWrUU70AifTbnyMjMBFMG4BeChx988CEsXboUlmWhT+8+eOGFiTIbqJjK/fr1Q6mSJUFqoAUJWf3DU/oAMp0tTLYTCMGy2G/SLjrhV4C8vDxkZ2fj888/l0UWAUj2xRdfRM+770bPXj1x/vnn4/+GDEFeXh6+/vprrFu3zpR+CyEwcOBAAMDAgQNRt25d3HmnLPuaPm06Jkx4HuedVw++76NTp84499xzUb5CecydOxeDBg0CEaFvnz4oUaIEypQpg/bt28MXAk2aNMHq1Wtwbt26yM3NlRC178nVR6SkeYUgBSHL6/Z8H3v37jWGXOeccwBIKruvId9gLkFXFBeqdA6GxcGS9ODsP2m2gCPp3ZcqJcGdt956C9dee63ZOzmAzEgEk16chKlTpwIAnn1uPPLz85GVnYUmFzfBiy9OAmMMX3zxOZpe0RQTJjyP++67Dz/99CNOOeUUgMlc+8CBAxXcypFMJvHtt98CYGjTpk2Knub7OLNSJVSoUB4XXnQRGJeQ7NVXN4dlWRKw0nl5U4qmhSnUQHCVrmVccg/Ufq31Crny/JminCOwp6cGFKkyOFVupkvCGOFXZXFPqhVg5syZhsypcXkZI0s+vS8EGjW6EMsUpv6vf32JrKwsxKIxMMaQm9sWS5cuxYgRI9Cte3eACPXPr4+6556LZ54ZZx6QzutzzrFgwQKcW/dcTJw4CW/Mnp2mC6S5/J4qNM3OzjbKYVwNLrP0uVI1AzwgU8dtRSEvWdJgGtu3b0/VMnBZlWR0CBkz35uqV2CGBpaSswk6gPRbVMRPDAM43IV+9dVXqFWrFjZt2oR69eqZ2NiyJJumSpUqOO+887Bu/XpUqVIF3//wPT7//HOMfeopWIzjljZt0K1bN9x6662wOMc9A+7BjTfdiB9+/AkPDBmiqoMpUFJloWvXrvjxhx9RvXo1nFKqFEhIRlHVKlUwf8ECfPDBEmzfvh02t00JmN6TzQDaSpOQSQaSpRXBdAWPzdHy+uvx6pQpeEfxGBljeG7CeFmWZtv4+edV2LZtG3bu2I4dO3fKPL8hqnDFRtKcRCtNUgZgv4o/nBRA0JNPPon77rsPkyZNQseOHZERyQioe8gbe+ihYcjMjCA3Nxfbd+zA2KeewqKFi4yEilZN1A9MQqsSYbQsyzhpSqtLAUE8VbmjBBmEkN64r8JQpv4uZ6wsJ3M915BGJCVMQsG+75moAkz6BMFKHo3YOa4Dz/eV2JONUChd2tayLJUlJJlX8DxTAs4Zk6uPqoMsTC0/qShhnpZ4RXpCJEja0ECArsox9K2AfJrwpWMEzmApfJ0Ipk5P5s6ZooQJc1eWKgbRs8qEgYaDx9SSbSkNYhsAwVEEDVKrQUZGBjhj8FzPOIWpCclgWcwYpiCC4yQhfKkCYlsWwuGQ5AQqQmtIRQGkVhzfcyE0chg0SKVoqgUiTnpKWAqASYkqBZVCOOdS4QvpApG+0hFgAASndF6hYvkwRoYRZAAguWSACSUuqVA9zfgFmKlEZoyBgwIsXR/CE1KfThCIS/6eHFhFNBFKsl45b1JaThjsgjEOoXh/esUg0hIxBBA3ZBNf1z4SB6lBJ6KUJH4RQgFF7gPo9w8ckC3u9ubvTSsP1yHenj27kZeXh+3bt6evAJrI6fvYt2+fYfv4QZaOOp+nwSDPTzGKoWljKUaP5/nYtWsXXN9TtK4Uo0cXbHhqIHfu2g3hEzxfwPM9uKr61/Fds1qY8NAX8FwfruvD9zy5lShh6415G7Fr1y54wjff6Qsh/1v4ioksii0LWKw4wJIl/8TKlSsBAA8/PDxdYNHi6NKlC95/fzEqV66MTZs24bLLL0slRHRVMOd47tlnU0u30dRjRkfYCuzHzCiBMCUUKQNPTb1+/PHHjSCFtltSfkGH9h3MuR4eNkw+KMaMiLX22oNilHo/5UroUbN7GQPemDULp1WsiLJly6bCPiYLh9OO5+kVxCedARzJchcsmC/z+56P8hXKywpfVRQ5ZMgQvPbaa/j+++9Rrlw5zJ8/H5dddhm6dOkC27axN38vGjZsiOZXXQXP88AtC5s2bcI555yD29vfrgo8Q1j8/mKce25dXHjhINCHSQAAIABJREFUhVizZg2iBQVo1qwZqlSpgpVfr8SokSOxYsVXKFO2DDIzM7Fz505EIhG0u7Udmje/GjVrno0tm7fg9Zmv4Z9LlqBMmTLIyMjAlq1bwC2GjXkbcMEF9XHuuefihx9+QFZmFtrm5qJL5y6ofGZlLF68GJZtIZIZQVZ2FiIRWbnMuYxKypQpg0hGBJs3b8a5dc9FjRo1sOK//0VGRga2b9+BCy5ogFq1amHFihWHCEOc8K/DUcJc1zU/mhL2wgsv0Nq1a8lxHPPTo0cPev7552n16tXkuA5t2LCB+vXrZ6hTt99+uzlPgwYNyFX0Ltd1afv27TRmzBhyXZc6dOiQ9p233nqroV55nkePPfYYffXVV+a92267jTzPo2rVqsljXI+6d+9OnudRbm6u+VybNm3I8zxq166dea9v377k+z6dccYZ5r0hQ4YYCpf58XzyfI8mTJhAvu+T5/uUm5tr/j5w4EDyfPkdvu+T53k0aNAg8n2fhBBpPycVJSy4EqxatQqNGzcGAHzzzTeorBTBjBCDbWPbtm2G+FGpUiVTHMkYQ2ZmpkHRmjWTBIwpU6agRIkSqFq1Kg4cOADGGG5ufTNOO+00PPTQQ7IiJxRKawjhui4uuOCCtBYxjDE0bNjQbDXVq1c37weFGnRhiN4+qlWrBsYYGjVqZM5XoUKFtDy+PmdQppYzhlgsZv5+9tlngzOOaDRqvrN27drFpg1QLD6ALg3TiJau9tHZvHg8jn/8/R+45pprsGHDBtx2222Gfau19fSxixYtghACXbt2xb59+7B3714MHjwYvu+j2ZXNsHnzZgwbNgz9+99jMoREhHg8npbp0xW9ruvi888/Nw7j6tWrjSSN4zhwXMc4o6FQCI4nK4J//PFHU7PoeintIJMNdBy4jpNWhibvwUXJkiVNYunrr7+G68r3XHWPK1asMNEM4SStDg7uW5r2tHDhQrRt29bE4b4vAZAhQ4agS9cumDdvHizLwvQZ06XIEmdwHAdPPTUW5513HkqVKoUOHTrAdV08NXYsGjRogGg0iqVLl6J8+fKYPn06Hhr2EJo0aYI33ngDjAHNmjXDmjVrsGzZMoTDYVWd7MD3BcLhMKLRGK644gpcddVV2Lp1K/7z1X+QSCRw9tlnIxKJYE/+HmRlZUIIH6MfG406tesgmUzi3XffRUHBQUQiEcTjcdiWFH9wHQfxREKuFpwjFLKREYnADtnKCAWeHPMkateujXg8jiVLliAWi+Hxxx9HHfXeh//8p6wttBVgVNR8jeICglJ5e1VYoXLtGs279957MXv2bFSoUAEjR43CDa1awddpVCFjYsuSihrQFbkEhMIhMDB4Kt0K3cjBQMMhs6T6noek48DzPaURxHH33Xdh2tSpsEMhEBESiaQyEh92yEZOVjY450gkk3A9pTAmyEjVW6q0PBySdf+xWEw6q5wjHAohkiW3sEQ8DuFrlTAlEiUEXLWSaCn7kC2bRdghC5xbJycSaNv2IcWhwdSnUdLWaU/OA7JoLHC8zsFLMEUXTgAE13FBYBJqZUymYHWRJYepELa4pbQHFalD6RNI8IYZ1M2yZXGnjPMlZsA5R2YkAsYZHKXyFeQDaGk3y5Z4vhACiWQCQgFBWudIJsKSIEGwbC0Th8MgkywlHxOQiilKAyj2plHBmzqktw5L7+4hK3gIwlJdwHiq3w9XhiDLxQGyuKKASQvQ2cagIyYx9pRyGGOFY3muYOmUSpn8vDIkRfNKo4wxGcfrc9mWDT+YTmZcXaclu5kFM39QKmGByqE/nUQMAOzbt88INPfr10/XUxhMPR6Po2vXbihz6qm46qpm2JS3SRV06qJNYUq/TcEFUdp5DLysavFTbWC01q48cPToUaq1i59qBBWQ6Zc1ogGZd4KpLJadPdIJHQBBQGoUmRMFPPhHHhkOAIhGY+jbty8ISlZet5ARKRAKAFq0aPHnQwKnTp2KO++8M+Agpp74unXrcO/gwXj11VewefNmLFmyBEv+uQTz588DgZB0kognEmrPJyQTCSSSiTTZ+EQiiWQ8qbp6EXr16oVoNAoonyCRSMg9WPiwlKRLLBpD0kkosWZhmkuJwpXHZrUKFIoajR8Py5Ytw5eff4FwOIx7BgxQVcMpRdIff/wRggiLF7+Phx9+GN27dYNlWdi8eTOeffZZAwN/vnw5Pv30U4TDYdx7773FJRBSPAawdu1alClTBl9//TWuvPLKNJz/iSfGYPSo0bjppptgWRY6d+6MvLw8fPjhhyBBqFOnDn7++WdMnjwZQ4YMwQ8//oAXX3wRX/7rSwghMGnSJKxZvRpvz30H7777rgnZIpEMCCIMf/RRfLh0KRLJJCZOmoRwOIz7738Avu9jxIgR+P7770zvAWlUqQpg0g4fSd1i35dUMNfz4CqBqIsvvhgLFszHZ599hptuugnJZBK33HILHMfBqlWrcOWVV0IIH198+QVycnJw76B7MW7cOIwcNRI9e/aEp8LShg0bYskHH2DFihVo2bKlTBj9WQxAt06bNWuWkYnTzZwikQw888w4zJ07F6FQCNOmTUN+fj5ycnIABjS94grUq1cPvXv3xpYtW3DBBQ3Qt29fvDlbyr/Vq1sXLVu2RI8778Rnn30ms4ZCmH1/7S+/4Lprr0OpkiXR8+674bouRowYgaysLDz88DC88MILam8/uqdshsMoeShnjXMMf+QR2Yji8svBLY43Zr8By7KwdOlS9Ohxp5TK37ARlmWhVu1a6N+/P5599lkDNmmn76FhD6H+BfXxt7/9DcUlEFDkBjBnzhx06NABjDHE4/FCsuvy688++2x8//33YIzhl19+QWZmpsEPSpQsYRIzJUqUMJ+PJxLgjGPmzJnYtGkT9uzZg/37D6SkWC3dyIkUqYcZ0oYdCsk4m1uIRmNSohYKueOWGlweSMqo61WhZTgckoqj2dmIZGYiHA4bA87OykbJEiWRk5OD77//HpZlY/ny5Rg0aKBRAu15d08jDpmVlYXsgFLoB4s/gB2yi0sfougN4LPPPkP9+vWxc+dO1KxZ0xSA6AdbqlQptGrVCgsWLEB2djbefvttvPnmmxg+fLgRktYDmBoMZrzmrVu3IhaNYtiwYYqWJaFVXZhf99xzMfedt7Fz5048//zzMoJA6vNpHlhK+idtBqZ6/DETHeiEVlDd01IQdOvWrRGNRlUlNMfHH32MK6/8W+p4O6UIPmXKFFMhbNvq79wqNji4yHGAoUOHYuTIkRgzZgzuvPNO5OTkGPqz3HcZ+vXrizp16uDuu+/Gpk2bMGjQICxctFBJtYiUnDqXnD8iwHWVSljIBgMz+AKC/fysVIhGmrKtu3RBiVcH4m6t8uX6PuDLLp+RzAjAGJykA9/3wCA7loczIoaedriqpTfeeAPNmzdHmTJlkJubizlz5qSFvyxlaUfNpwTzESctEJTGjQ+QJ/QgSFq1AoKYVPJOAUcehFBxuWXB1nJuruzAoYWV5XGpDqDc1s2jJTVMQBqT53nGADjjsEOpGayLRzRhQ8vEqYevfAsCtyyEQ2GDRaSMgKV0Aw6byj1Weo/uRJreNvakBoLSOoBpPZ1CLeGJCEz3/FUhnq+0/4yiF0/V/KdzDSmFLjIGCF1vyKFbPmuSqWkfb0skUPIK5WoUDocPW6GbkRFW9LMglz81h4KkEKTVOOr3Au4kyZoAQ/nWFDZzP4evbtbXdDy3hj+ofXywA3hh2yczk0znbxbsEh6YbZR6KHpPTyv61O3ZmCzRZkidw/DveYqGzRgZHyPwxOWipLB/k9tQoWPh4lLdGiOYBtZNqwOnTIFapvqIFSqOZUZJ5aQvDl2+fDmWLFkCABg0aJCBTG1uw1Y9BF544QUkEgl8+OGHuOyyy1JCi5aNkHG0LNOq1bJSCp9cYfmWZQek6OV2odvQ6LyAbYcQUlLxGv9P+SOyiZPrOEgmk0aGVvoPStLNVQWiCgdo06aNkZwTRPBcF4lEEo7r4IYbblBbk49p06aiZ8+eZgVyXAelTzlFns/xcO2115rUshCE313f/kcZwOHKmubMmYMWLVoAAEqWLJlaDRkw7OGH8dTYp7B//36UK1cOK1euxOWXX4Zu3boBYBgw4B4zk0aMGAGA4ZNPPkHlypVRr149bNiwAfn5+ahWrRo6d+5klt8+ffqiRYsWGDBgQKrMW7FzW1zdQoEtMALPtWrXRqNGjTBh/Hi4vofdu3ejWrVqyG3TxghIdunSBR07dkC5cuXwxRdfYMqrr2L+/PmIZGQoWFcCRUJlO3WuAAyIxWK4/PLLDAl2+rTpeO655ySRVfEWfE8bo0hfLU7WMFBnuTTJYsaMGejUqZN5WEII7N27F4sWLkLLli1RUFCAG264Aa7roWLFiorEofX2UhKur732GjZs2IBvv/0GVSpXxv3/+AfWrl2HRx99FJMmToIvBD799FMsfv99jBv7tGEZa+x+8fuLsWjhIvzj7/eDfEKf3n3w008/4d///g9mzXoD5As8cP8D+PnnnzH26acx7umnIYjw0Ucf45VXX8XWrVsxb95cdOzYHtdf3wqxaMwkJSjo5Jrvlanf1rfcgrvuvgsg4L333kM8HjdOsWVZCm5Oqan+KRpGrF+/HvXr1wcA/Oc//0GNGjWMg0ckbzwonHT22bWkDrDm1Af4+joBc+GFF+LMM8/EU0+NldXB06ejZMkSqFevHn75ZQ2IBBo0aCCXZRBC4TDCapbefvvt2Ji3Eb4Q2LFjBwQpdXHFv2nZsiWEILw+63WULl0aNc86C6tWrQIR4aKLLoJQqp+nn36Gafuq5SOMArgyhDSnXhlD2bJl8elnn2L0qNGmOkoIgfLlyqWMVDkqfwqRqGnTpqFr165mRUjz3BVda8CAAbjlljZwPQ/du3eD5/uIx2IqP++aIpBFi94FQOjWrRs2btyIAQMG4oEhQ9CpU0fs27cP+fn5GD1qlMy7K619AiGZSCKRSIAEIScnB2eccQa+/fYbZGSEQYIkyUReIRYv/gAEqReUv2cPEokEJk6cBNPDXvcDVuCQZVkmRRwc8GA4GHy/R48euPvuu1G1alUTJRADxisF1V/bUk8KSljwtXPnTnDOsWzZMrRu3fqQaODewYPxwAMP4K233kLSSZomzowzCF/grrvuQtWqVdGgQQO0atUKgNTfHzlyJBo3box58+bhwP79aNCgAeLxOBYtWoSqVavCMJKIgbgq52JAq1atUKlSJbzwwgsSMWTA00+PRe1atZGdnY22bdsCTOr5XdS4MQoKCrB06VKcWelM+L5nIjnd0bRGjRrIzso2fQWCe7cbYEVpXKRKlSr44Ycf1HtChoACuP6G6/Hee+8dMvhFLRBx3IGgwsWhnufBtm24Sg83Ld2qrNvzXPTr2w/z5s1DuXLlMHTo0FSXUbXvy3o/VRsoUsWhtmUBYKagk9SyxkykYCtcQNYjup5XqHEkxweLF6PRhRfBcRx0794N8+bPB6nUcWYkA4xzuE5K1Nl0PAXALAs2DzKCHNkHkAG2HVKMICZrBlU3E10wovUMKUAJ00zpwsWhnHO4rrs7Go1+IYQ4cZHAo8nEUUCd2+jyAKZ1ixZk0PtfmpS6DuUU+qYdS8uyTRNGUgaghRp06Mg1G1n4RvdHRxaWChOTSRnyhUI2fOGpbUQWh2pHVsLSFGDrSlqZzW0ZUgqBpJKIYaY4NAPEYLqd2CqU1VuijgDM/QWyg/rZ6aRUURhA8QJBh1nSgsmhwskZrilYhSBRuZxzMNUl1IA7Rps50BCSyRbsXB0gi1CpEIBkISc7BALg+S6Yb0MwYTT9TPaSA5ZhCalSMBagnRVq+sg4N8rvnHEQROpaQZKTSCkhyKJuFP2HAUGxWEz2AFLJobQVQP307dsX5cuXR6tWrXCw4KCid5HZKtJYOoRA2xlhZOVTpFM/VY2rqWQiBRfr3j2pljQi1d/Yl5L2RreHhNT79zUTSMHJng9Ph6i+dGg7duwIIQRKliyJMmXKoEKFCrjrrrsMwTUoQR/sp2yk5QNVz4cT1zxpDWDGjBlo27YtiAgHDhwwPYFd18XWrVvRtWtXPPPMOGzbtg0LFy7AjBkzsHTZUvmQXc+wZuQyLEEWV7Vo0716XcdBUrVySzoOkk5SdijTvojq05tMJhGPJ9C1axckkwk4ThKe50IIeazjJBGLRRGLx5BIJGWlsPDw/PMTkEjKaEL+xOEk4kg6STi+zBQWFBQgmUzi6hZXY/OWzcjLy8OTTz6Jzp07SxaR6xrgx7SNcxw4jkQdXb3NCP/PtQL88MMPOP3007Fq1SpcfPElaXo5I0aMwKRJk3D99ddj06ZNuP329ti5cwfefvttMM7w7LPPYs5bb2HtunWYOnUqYvEYrr/+emzevBkdO3VELB7D00+PxfDhw7Fl82bcfvvt4Jxj8ODBZgv47LPP8OknH6NmzbPwySefIplMYMKE543P0bx5c2zYuBEPD38Yffv2QSQSwaiRo7Bx40bcN3gw1q9fj/y9e0GCEI3FUl3HOT+kkpdz2YlcV/xOmzYNTZo0CaiVKCIM42l+jWYXBXsc/WkMQKd6X3/9dXTq1BHhcBiRSMT0BX7mmXH44IMPUK1aNbzxxhvIz9+L0qVPQTgcxrr169ClSxecV68eevbsiWnTpmHBwgWoVasWZs+ejaeffhpCCAx/5BHUrl0bc+bMwYgRI9C5c2e8//77sC0bs2fPRrOrmqF+/fpo2fI6VKhQAZFIBNnZOZj52mtYvHgxqlevjoceGgbPk5z+4cOHo17dunjmmWcw5oknULp0aZQoWQIVK1RATk4OckrkIDunRKqnsbrH7OxsxONxxGJx7M3fi9WrV+Occ85BZiQTmVmSESTbztqyH3FWFrKys1W/44hpIVtcRlDkTuDChQtx6623AoCp+Suc3jzjjErYtGkzqlSpgm3btiE7OxvJpJPWTUPvhZ7nmYJR3Z0zEomgRE4OAMgaPsfB5Zdfjm7duuGqq65C+fLlwRhDmTJlVNFoqsrI932UKFFCpXwzzDWVLl3aRC76unWRx5FyIPqasrOzccYZZwAAJkyYgFtuuQXNmzc/7OcsO53+ZSImnMSk0KDT8uGHH6JJkybYv38/KleufMix4XAY3bt3x3PPPYvSpUvjueeew7Rp0zB48GAAQOnSpfHJJ58gkUhg6tSp6NixI2655RYAQLdu3TBgwABEIhE88MADAIB27drhkUceAdTSfscdd+Dhhx8+4rV269YNzZs3BxEZsujhXqeeeiq2bdt2TPefQhaB0aNHo3v37keOwwN6wWnK6DgJdAGCOIDWB0gmk7t83yfXdSmZTFLfvn0pmUzSiBEjaMuWLZRMJimeiFM8nvrJzc2liRMnUjKZpLy8PGrTpg0lE0lKJBIUj8dp48aNtHbtWopGo5RMJmn37t20Zs0a2r59OyUSCRo6dCjF43Fas2YN7d69m+LxuGnF0rJlS6NFsH37dvOdu3btMsfF43Fav349bdu2jfr372/+Fo/HyUkmaceOHZRIJGjtunW0devWtGtPJhKUTCbJcRy6/bbbKZFM0OrVq2nNmjW0du1a2rlzJzmOfBb6x0mm9BESyaS5Vv03rWEQ1BrQ+gB79+49rvoARQIE2bZdtnDDo/SCC43wwcij7d+/H4l4HHYohNKnlEZGJCwpXAFAiVuSRwDANHa2bRsPPzwMDz74UEqrnzO8+uqrmPjCRHz11VfIUIkgI9hskEDJCBo6dChmzZqFZs2a4aXJk6U3TgIWt5CZmSmBIiX0TCJV1CIJojYsy0b58uWwZvUaZOdkp4Ag20Y4nAHGgKSqDbQt2/QD1NcktZC1Qyg5EnbITtsuTyok8GgG4Af66mkkUEO8upBTt33xvXTkzrJ1dTBMv96QIoWm1LZ1JbF6kMo5E0TwXRcJR4Zssr6QI6SOCYUkFSwRj8tG0UIgZNvIzsoC41J+1vU8RRwRygA4uGUjZIcQsm34wkcikYDre+CMIWxLZxcMJhmV4j7C6AvoOgZDlAnZqmUtD2gk8pMLCTxcAoMZoSUytCqmELPCbV4Z5+CWRN64Wip0+EVEsrM2Uv12oSBT/b3B9muMMViMgWwbIaX/pyVrNevIsjhISJaxJo7I9+WMDTqiWiuQB9Q+dZGnbdumZZxWBtcrlSBhxKP07CPLUjxHZla5dEranyAMXLFiBebOnQsAGDhwgBlsXfBh8cJiyixQLWuliycqnP++v/8dz4wblxpoFTH06tVLFn1YWqmLGUFnznUpt6SLaU1fi3P06dMX//7PvzFu3DMY8sAQQzljSgvYxOoB6pksZ+MB2FlVDHEbAwak7jMlAMkLqYtagR9uilH4nw0HmDVrFlq3bg3GmPGyWVp71PRiD1CwVFpepikOCfCkko4jt4yA8WiFzZ5398RZNc7CmCefBDHg5Zdfwtk1z0LehjxwMLzyyivYuHEjTjvtdJAKUZs0boJ7Bw/GsIcfNoPatm0uatepgw0bN2DmzJnYunkLzlTNq2rVqgUAGDx4MNq1a4fGjRtD+D7mzn0Hs2bNQrny5QKGrUCgADE1TU9Iat0VDw+suA0gkUgAkJ3DOnRonwoVCXj++edRvXp1VK1aFZWrVEblypXx2BOPgYhw6qmnokaNGjjrrBqoXr0GypQpAwIwf/4CdO7c2eDmCOQUiAjPPPMMJk58AWt++QVdu3XDF59/gVKlSmHNmjUYP2E8BBFisRhWr16DLVu2ggRQtWpV3HX3Xfj2m2+QlZUFX0guwqw33sBPP/2EEjklEI1G8d0P32NTXh6ICFu2bAGRwKxZszBr1hv417/+jV69eqF165vRrFkz7Nq1y3Aiq1evimrVqsn7rFwF/fr1hxDC3GONGjVQo3p1VKhQoVikYYoNCNq2bRtq164NIsJnn32G1q1bp1Xx9OzZE7169UpzjrSM7K5du9JauXMu+QSffvoJRowYgQULFig1jkBlEIDbbr8NDRo0xLnnnouxY8fi66+/xmOPPYZBg+7Fjh07MGLkCCQSSVx55ZXGYx8+/BEcOLAf27dvR7t27TBt+nQUFBRI8ocQKHVKKSSTSTRvJvUKde2C7/to1KiRcQ7PO6+eUhgR8DwfFrfQ+ubWaNWqpVIjt1KFHp6LLVu2GB9Bl4gh1W2uyGnhRW4AU6ZMwT333KOIH17aCkcg7NyxE7t27TLhEWNA2bLlULFCRXz99deHNJJq1KgR9u3bBxDh7Jpn48cff8Q555wDQPIPzz//fJQufSr+/e9/w/M8DB8+HFdffTU+/uhjVDqzElzXgef5ypNPnXfJkg/QvHlzhMNhnH/++bINvQ7DUqoUKd2JAM1r1apVxiDWrl2neAqW+ejevXuxbt1a8z7nHKVKlUKlSmfgu+++k2inJSXmOedo2LCh4Ree9AawZ88eZGVlYfny5WjVqpUqyuBgTN5YxYoVcdpppynvWXnAimzZsGED0zlcKnNbWLFihTwP52jbti0mv/wSOnfuDBICHTp2wj39+2Pt+nXo26cP8vPz0b9/f7Ro0QLDhw/HjBkzcO211+KJJ56QDCWbG+dr2bJl6NevH3JycvDA/Q/Asi08/sQTuPrq5ti5cyfGTxgPx5HwtKaExGIxMMvCWWedheuuuw7bt2/HSy+9DMuyUKlSJVSrVhXbtm5HmVNPVXCz5B9qUgsRcOmllwYiJGbqGBkVjy9QZDiA5sBt27YNp512GrZt24Zyivlq8uLqRjV9K7gFpI7zU7WBnGNvfj7KlC0rdfbV0gmGtJy6aUrBg8WhULl8pfQV0AiSM9AGgeAp6pcgGS5GIhEwAI5KRae1hlOfv/222zHnrTkQJOA6EkPggXyDBK5k+9uMjLBZHX4NRtf/raOGk5IRdNppp4GIULFixbQmEfohCgBc0Wi1xA5TcumpBsyyjJSIUKZsWQkUgQxphCldH03H5pyBCckmIiLJKhIEaPKIIAPk6O8SSiZGUIpcwhiM4leKjCLS2U0MGP34aLkmKJIHhABxrlaK9NrzI3VOPRp+clI7gYGtMi30kaBNoCtWIDSSIIskckL3zg00ZCIiCQiBTMwsqVlS299QtYzymKrHNCphqXrAVEcRJilbnIGTZa5RO2SccRUzsTQDYJyhRvUa5jukmhhLgVtBXl+hNjDF1VH1jzcAxox8m2XhkJRw4ZsP/g4ul2kOYaBu3swvKlSAiUKNmTmBE0/bAbmuG2OARRZ4iENqUabX54dCh3Y1LXy9HNIAglXgsgAVJrTjha77j34ViwEEwRs9G4629AVZsscJlzbfX1inUPPzCg9McPZK753/PpfJOjEzucVeHq693MJ8h8INko5GhDzS7Dni/lmoC6c+ViqHqvoCRRTRiRmdEziW6znku5TBscM4diea/n+RGsAR97k0GPi3D3Lhwfht1TOpnny+ysYBMM2lfM83W0/6eY+xM7jOgBonlopE/VOnw09KA/i9K8jRvuPXmi4zpvQjA9qA8nM6HklRsoIiFL/1+gpvdcerGbQQArFYDPF4/OTYAoorrNHL9zE95IA2r2Xb6jM8LZ0cTP3+nr3/N13Xr7w830NBQRTRaMFxSxP/QRIxxRB2/sqM4xZHiIdkz19lAACMs1dURZm/dSXQ1xGPx1FQUIBo9CAKDhYYVtNJsQIUpfMTdNB4oObu6NsACyzR/Ai4Bf0uYuavXdevGZf+u+d5SCaTcBwH0WgUBw8W4OCBgxDknxwGUDi0K85o46iOaODv6XgCmfrCotoCj/VZJB1HViAlpWZRQbQABQUFOFhwEH6hhhwnlAEcTeigKI3gcDO/cAhW+OEfQlsDK5IV6hBDO8rzEMJHIp5EIinL0MwKUBCVBnDwIFwVvp5IBkCHG/zgfwch0N9jCL8Wkx/pGo4EQh3P7z5WozjcqgDANNJKJhPGCJKJJBwniYICtQIcPECOc+IYyGBNAAABlUlEQVStABwAZ4zZ7DCo2/F8HS68Ki6QpajuCZBM51TxqeyLkIgnZLFrIoFYLGYXFER5QUGUa5bVCWEAJLM6FmMsxBgL63BKKAZuUe/1RTHwxemveJ6HeCIBJ5GQzTESScSTcaNtpH9isVg4Gi0IHTx40IrH4+yEMQDOucs53wtgs+/7vwA4jYgcIYQvjlO4Upyv4hz8wrM+Hk8gkYwjIQefJRMJlkjEWTLphA4cOLB93/59mw8ePLg3Go26J4wBAIhblrXa8zwWj8e3ATiFiBxo/bS/XkdG9BJxJOJy4OPxmPx3Io54PIZ4PMHU31k8Ebdi0di+gwcOriuIFqxOJBLxE2kFSIZCoTwAMc/zNgshMhhjfsAAimxKFWeDpeM562PxGOKxOOKxOGLxmIF39e/09xMsHouyWCIeT8QTe+PxxO5EMp48obaAUCi007btvUKIDURkARAnRefrYnwRCLGCmCx1U9IwKbUQpSDiydazOgTUDa9i8TiLx2J+LB7zYrG4d7y2gL9ef73+ev31+uv1P/v6f+Xwu/VNHO2qAAAAAElFTkSuQmCC",
uso: "data:image/png;base64,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",
gf: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3ggEBCQHM3fXsAAAAVdJREFUOMudkz2qwkAUhc/goBaGJBgUtBCZyj0ILkpwAW7Bws4yO3AHLiCtEFD8KVREkoiFxZzX5A2KGfN4F04zMN+ce+5c4LMUgDmANYBnrnV+plBSi+FwyHq9TgA2LQpvCiEiABwMBtzv95RSfoNEHy8DYBzHrNVqVEr9BWKcqNFoxF6vx3a7zc1mYyC73a4MogBg7vs+z+czO50OW60Wt9stK5UKp9Mpj8cjq9WqDTBHnjAdxzGQZrPJw+HA31oulzbAWgLoA0CWZVBKIY5jzGYzdLtdE9DlcrFNrY98zobqOA6TJKHW2jg4nU5sNBpFDp6mhVe5rsvVasUwDHm9Xqm15u12o+/7Hy0gD8KatOd5vN/v1FozTVN6nkchxFuI6hsAAIMg4OPxMJCXdtTbR7JJCMEgCJhlGUlyPB4XfumozInrupxMJpRSRtZlKoNYl+m/6/wDuWAjtPfsQuwAAAAASUVORK5CYII=",
gh: "data:image/png;base64,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F/8VFRf/FRUX/xMTFKsAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRMTFKsVFRf/FRUX/xUVF/8VFRf/FRUX/xUVF/8TExT1AAAADQ4OFFkVFRf/FRUX/xUVF/8VFRf/FRUX/xUVF/8TExOPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMTE48VFRf/FRUX/xUVF/8VFRf/FRUX/xUVF/8ODhRZExMTnRUVF/8VFRf/FRUX/xUVF/8VFRf/EREU0QAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERFNEVFRf/FRUX/xUVF/8VFRf/FRUX/xMTE50RERTQFRUX/xUVF/8VFRf/FRUX/xUVF/8SEhJeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEhISXhUVF/8VFRf/FRUX/xUVF/8VFRf/EREU0BISFPIVFRf/FRUX/xUVF/8VFRf/FRUX/wAAABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFRUX/xUVF/8VFRf/FRUX/xUVF/8SEhTyFRUX/xUVF/8VFRf/FRUX/xUVF/8SEhTyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhTyFRUX/xUVF/8VFRf/FRUX/xUVF/8VFRf/FRUX/xUVF/8VFRf/FRUX/xMTFNsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMTFNwVFRf/FRUX/xUVF/8VFRf/FRUX/xMTFPYVFRf/FRUX/xUVF/8VFRf/FBQU4QAA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AAAAAAAADAwMFA8PD2MRERSkFBQU0hMTFPMVFRf/FRUX/xMTFPMUFBTSEREUpA8PD2MMDAwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
gl: "data:image/png;base64,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",
bb: "data:image/png;base64,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",
ouj: "data:image/x-icon;base64,AAABAAEAQEAAAAEACAAoFgAAFgAAACgAAABAAAAAgAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwTwoAclEOAHVWAABzUhAAdlcAAHdYAAB0UxIAdVQTAHhZAgB2VRUAe1sJAH1dDgB3XB0AeF0eAHpfIQB7YCIAfGEjAH1iJAB+YyYAf2QnAIFmKQCEah8AgmcrAIVpLgCHbSQAhmovAIhuJQCJbyYAh3EzAIhyNACJczYAi3U4AIx2OQCNdzoAjng7AI95PACQej0Aknw/AJN9QQCXgUUAlYROAJaFTwCXhlAAnItWAKCPWgChkFsAo5FcAJ2RYQCekmIAn5NjAKKWZgCkmGgAp5pyAKqdbQCrnXUArJ52AK+hegCpoX4AraWCALOqhwC0q4gAtayJALatigC3r4sAuLCMALmxjQC3tJQAuLWVALm2lgC7uJgAvbqaAL67mwC/vJwAwb6eAMbBqQDHwqoAwsOuAMXGsgDHyLQAyMm1AM7PugDP0LsA0NG8ANLTvwDT1MAAztXEANDWxQDR18YA0tnHANTbyQDV3MoA19zTANfezQDZ4M8A2t/VANvg1gDc4dcA3eLYAN7j2QDf5NoA4OXbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjYl9dXFlZWVlcXV9iY2RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY2FcVU9JQDo2NDQ2OkBJTlVcYWNkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiXVZMPTIpIRoUDg0NDhQaISgyPUxWXWJkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGNfVEk0JxgLCAIDAQAAAAABAwIFCxgnNElTX2NkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGJZSzQkEQUDAQAAAAAAAAAAAAAAAAEDBREjNEpZYmRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY2BSPykUBQEAAAAAAAAAAAAAAAAAAAAAAAABBBMoP1JfY2RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY11NNB0MAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDB00TV1jZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY11MMBYEAQAAAAAAAAEDBwIJBAQJAgcDAQAAAAAAAAEEFC5MW2NkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY11MLBMHAAAAAAABAwcIERccHyIiHxwXEQgHAwEAAAAAAAcTLExdY2RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGBNMBMHAAAAAAABCQ4YJi84PURGRkQ+OC8mGA4JAQAAAAAABxMuTV9kZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGJSNBYHAAAAAAEDChgqOEVNUlhcW1tcWFJNRTkqGAoGAQAAAAAHFjRRYmRkZGRkZGRkZGRkZGRkZGRkZGRkZGNZPx0EAAAAAAECDyM0SFBcYGJiY2RkY2JiYFxRSTQjDwIBAAAAAAQdP1ljZGRkZGRkZGRkZGRkZGRkZGRkZGRfSykMAQAAAAEEFCk7TlphY2RkZGRkZGRkZGRjYVpPPCkUBAEAAAABDChKX2RkZGRkZGRkZGRkZGRkZGRkZGRiVDQUAwAAAAECFCtDUl5iZGRkZGRkZGRkZGRkZGRiXlNDKxQCAQAAAAMTNFNiZGRkZGRkZGRkZGRkZGRkZGRkXUkkBQAAAAADDypDVGBjZGRkZGRkZGRkZGRkZGRkZGNgVUMqEAYAAAAABSRJXWRkZGRkZGRkZGRkZGRkZGRkY1Y1EgMAAAABCiM8UmBjZGRkZGRkZGRkZGRkZGRkZGRkY2BTPCMKAQAAAAERNFZjZGRkZGRkZGRkZGRkZGRkZGFMJwgAAAABCRg0Tl5jZGRkZGRkZGRkZGRkZGRkZGRkZGRjXk80GAkBAAAABSdMYWRkZGRkZGRkZGRkZGRkZGRcPRgHAAAAAw4qSFpiZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGJaSCoOAwAAAAMYPVxkZGRkZGRkZGRkZGRkZGRjVTMOAQAAAAcYOFBhZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYVE5GAcAAAABCzJVY2RkZGRkZGRkZGRkZGRkYk8pCAAAAAEIJkVaYmRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGNcRSYIAQAAAAgpTmJkZGRkZGRkZGRkZGRkZGBJIgQAAAADES1NX2RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYE0vEQMAAAACIUlfZGRkZGRkZGRkZGRkZGRdQRsHAAAABhc4UmJkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGJSOBcHAAAABxpAXWRkZGRkZGRkZGRkZGRkXDoUAwAAAAccPVdiZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiWD4cAgAAAAEUOlxkZGRkZGRkZGRkZGRkZFo2DwEAAAACH0RcY2RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY1xEIAkAAAABDjZZZGRkZGRkZGRkZGRkZGRZNA0BAAAACSJGW2NkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRbRiIJAAAAAA00WWRkZGRkZGRkZGRkZGRkWTQNAQAAAAkiRltjZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkW0YiCQAAAAANNFlkZGRkZGRkZGRkZGRkZFo3DwEAAAACH0RcY2RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY1xEIAkAAAABDzZZZGRkZGRkZGRkZGRkZGRcOhQDAAAABxw9V2JkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGJYPRwCAAAAARQ6XGRkZGRkZGRkZGRkZGRkXUEbBwAAAAYXOFJiZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiUjgXBwAAAAcaQF1kZGRkZGRkZGRkZGRkZGBJIgQAAAADES1NX2RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYE0vEQMAAAACIklfZGRkZGRkZGRkZGRkZGRiTykIAAAAAQgmRVpiZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY1xFJggBAAAACClOYmRkZGRkZGRkZGRkZGRkY1UzDgEAAAAHGDhQYGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGFQORgHAAAAAQsyVWNkZGRkZGRkZGRkZGRkZGRcPhoHAAAAAQ4qSFpiZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGJaSCoOAwAAAAMYPVxkZGRkZGRkZGRkZGRkZGRkYUwnCAAAAAEJGTROXmNkZGRkZGRkZGRkZGRkZGRkZGRkZGNeTjQYCQEAAAAFJ0xhZGRkZGRkZGRkZGRkZGRkZGNWNRIDAAAAAQgjO1JgY2RkZGRkZGRkZGRkZGRkZGRkZGNgUzwjCgEAAAABETRWY2RkZGRkZGRkZGRkZGRkZGRkXUkkBQAAAAADDylCVGBjZGRkZGRkZGRkZGRkZGRkZGNgVEMpDwMAAAAABSRJXWRkZGRkZGRkZGRkZGRkZGRkZGJUNRQDAAAAAQIUK0NSXmJkZGRkZGRkZGRkZGRkZGJeUkMrFAIBAAAAAxM0VGJkZGRkZGRkZGRkZGRkZGRkZGRkX0spDAEAAAABBBQpO05aYWJkZGRkZGRkZGRkYmFaTjspFAQBAAAAAQwoS19kZGRkZGRkZGRkZGRkZGRkZGRkZGNZQB4EAAAAAAECDyI0R1BaYGJiY2NjY2JiYFxQSDQjDwIBAAAAAAQdP1ljZGRkZGRkZGRkZGRkZGRkZGRkZGRkYlI0FQIAAAAAAQMIGCo4RU1SV1xbW1xXUk1FOSoYCAMBAAAAAAcWNFJiZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgTTEUBwAAAAAAAQkOGSUtOD1ERkZEPTgvJhgOCQEAAAAAAAcTME1gZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY15MLxQHAAAAAAABAwcIERccHyIiHxwXEQgHAwEAAAAAAAcTLExeY2RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjXUwxFQUBAAAAAAAAAQMGBwIJCQIHBgMBAAAAAAAAAQQWMExdY2RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGNeTTQeDAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwwdNE1dY2RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY2BSQCkUBQMAAAAAAAAAAAAAAAAAAAAAAAADBRMpP1JgY2RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYllLNSQSCAcBAAAAAAAAAAAAAAAAAQcIEiQ0SlliZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjX1RJNScaDggCBwMBAQEBAwcCCA4aJzVJVF9jZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiXVZMPjMqIhsUDwsLDxQbIikzPkxWXWJkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjYVxVT0lBOjc0NDc6QElPVVxhY2RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY2JgXVxaWVlaXF1gYmNkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
usty: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PHRpdGxlPjlDMzAwNDI3LTg4Q0QtNDI2RC05QkZELUFEMUU2RUI2RjRDNjwvdGl0bGU+PGRlZnM+PHBhdGggZD0iTTAgNS42MjNBNS42MjMgNS42MjMgMCAwIDEgNS42MjMgMGgxMi43NTRBNS42MjMgNS42MjMgMCAwIDEgMjQgNS42MjN2MTIuNzU0QTUuNjIzIDUuNjIzIDAgMCAxIDE4LjM3NyAyNEg1LjYyM0E1LjYyMyA1LjYyMyAwIDAgMSAwIDE4LjM3N1Y1LjYyM3oiIGlkPSJhIi8+PC9kZWZzPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PG1hc2sgaWQ9ImIiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI2EiLz48L21hc2s+PHVzZSBmaWxsLW9wYWNpdHk9IjAiIGZpbGw9IiNGRkYiIHhsaW5rOmhyZWY9IiNhIi8+PHBhdGggZmlsbD0iIzJFQ0M3MSIgbWFzaz0idXJsKCNiKSIgZD0iTTExLjI1IDB2MTQuNjI1SDBWMHoiLz48cGF0aCBmaWxsPSIjRTc0QzNDIiBtYXNrPSJ1cmwoI2IpIiBkPSJNMjQgMHY3Ljg3NUgxMi43NVYweiIvPjxwYXRoIGZpbGw9IiNGMzlDMTIiIG1hc2s9InVybCgjYikiIGQ9Ik0xMS4yNSAxNi4xMjVWMjRIMHYtNy44NzV6Ii8+PHBhdGggZmlsbD0iIzM0OThEQiIgbWFzaz0idXJsKCNiKSIgZD0iTTI0IDkuNTYzdjE0LjYyNEgxMi43NVY5LjU2M3oiLz48L2c+PC9zdmc+"
} [ e ]
},
brand: function ( e ) {
return "data:image/svg+xml," + encodeURI( {
tampermonkey: "<?xml version='1.0' encoding='utf-8'?><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400'><g id='XMLID_273_'><g id='XMLID_78_'><path id='XMLID_83_' class='st0' d='M304.8,0H95.2C42.6,0,0,42.6,0,95.2v209.6C0,357.4,42.6,400,95.2,400h209.6 c52.6,0,95.2-42.6,95.2-95.2V95.2C400,42.6,357.4,0,304.8,0z M106.3,375C61.4,375,25,338.6,25,293.8c0-44.9,36.4-81.3,81.3-81.3 c44.9,0,81.3,36.4,81.3,81.3C187.5,338.6,151.1,375,106.3,375z M293.8,375c-44.9,0-81.3-36.4-81.3-81.3 c0-44.9,36.4-81.3,81.3-81.3c44.9,0,81.3,36.4,81.3,81.3C375,338.6,338.6,375,293.8,375z'/></g><g id='XMLID_67_' class='st2'><path id='XMLID_74_' class='st3' d='M304.8,0H95.2C42.6,0,0,42.6,0,95.2v209.6C0,357.4,42.6,400,95.2,400h209.6 c52.6,0,95.2-42.6,95.2-95.2V95.2C400,42.6,357.4,0,304.8,0z M106.3,375C61.4,375,25,338.6,25,293.8c0-44.9,36.4-81.3,81.3-81.3 c44.9,0,81.3,36.4,81.3,81.3C187.5,338.6,151.1,375,106.3,375z M293.8,375c-44.9,0-81.3-36.4-81.3-81.3 c0-44.9,36.4-81.3,81.3-81.3c44.9,0,81.3,36.4,81.3,81.3C375,338.6,338.6,375,293.8,375z'/></g></g></svg>",
webdav: "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'><path d='M537.585 226.56C541.725 215.836 544 204.184 544 192c0-53.019-42.981-96-96-96-19.729 0-38.065 5.954-53.316 16.159C367.042 64.248 315.288 32 256 32c-88.366 0-160 71.634-160 160 0 2.728.07 5.439.204 8.133C40.171 219.845 0 273.227 0 336c0 79.529 64.471 144 144 144h368c70.692 0 128-57.308 128-128 0-61.93-43.983-113.586-102.415-125.44z'/></svg>",
yandex: "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 512'><path d='M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z'/></svg>",
firefox: "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 496 512'><path d='M496 262.5C497.6 380.8 388.9 504 248 504c-106.7 0-190.9-62.5-229.8-151.7-43-97.7-5.7-251.6 70.3-320.3l-2.7 69.7c3.9-5 32.5-6.4 37.1 0C139 71 190.7 48 232.1 47.2c-15.8 13.3-52.2 61.6-49.2 86.2 20.2 6.4 51.1 6.6 67.4 7.7 5 2.8 4.1 19.6-5.8 33.4 0 0-13 18-48.1 24.3l2.7 41.1-37-7.4c-12.4 31.5 17.4 59.4 48.4 54.2 34.3-5.8 45.9-32 70-30.6 23.8 1.4 33.2 14.6 30.1 27.1 0 0-3.9 14.9-29.6 12.4-21.8 34.5-50.4 53.5-97.3 49.4 71.3 59.1 168.3 5.5 192.6-42.8 24.3-48.1 8-122.1-16.3-142.3 28.7 12.4 43.7 27.6 54.2 55.5 5.5-61.9-22.9-132.1-73.8-173.3C436 70.1 494.3 144.2 496 262.5z'/></svg>",
chrome: "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 496 512'><path d='M131.5 217.5L55.1 100.1c47.6-59.2 119-91.8 192-92.1 42.3-.3 85.5 10.5 124.8 33.2 43.4 25.2 76.4 61.4 97.4 103L264 133.4c-58.1-3.4-113.4 29.3-132.5 84.1zm32.9 38.5c0 46.2 37.4 83.6 83.6 83.6s83.6-37.4 83.6-83.6-37.4-83.6-83.6-83.6-83.6 37.3-83.6 83.6zm314.9-89.2L339.6 174c37.9 44.3 38.5 108.2 6.6 157.2L234.1 503.6c46.5 2.5 94.4-7.7 137.8-32.9 107.4-62 150.9-192 107.4-303.9zM133.7 303.6L40.4 120.1C14.9 159.1 0 205.9 0 256c0 124 90.8 226.7 209.5 244.9l63.7-124.8c-57.6 10.8-113.2-20.8-139.5-72.5z'/></svg>",
onedrive: "<svg xmlns='http://www.w3.org/2000/svg' id='Layer_1' data-name='Layer 1' viewBox='0 0 24 24'><title>Artboard 1</title><g id='Templates'><path d='M17,10.57a3,3,0,0,1,1.18.23,3.11,3.11,0,0,1,1,.64,2.82,2.82,0,0,1,.65,1,3,3,0,0,1-1.6,3.95,3.08,3.08,0,0,1-1.16.23H8a4,4,0,0,1-1.56-.31,4,4,0,0,1,0-7.38A4,4,0,0,1,8,8.57a3.54,3.54,0,0,1,.73.07,4.63,4.63,0,0,1,.72-.87,4.72,4.72,0,0,1,.89-.65,4.58,4.58,0,0,1,1-.41,4.79,4.79,0,0,1,1.13-.14,4.37,4.37,0,0,1,1.64.3,4.55,4.55,0,0,1,1.36.84,4.39,4.39,0,0,1,1,1.27A4.66,4.66,0,0,1,17,10.57Z'/></g></svg>",
gdrive: "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z'/></svg>",
dropbox: "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M256 87.2l-151.9 93.9L0 97.5 150.6 0 256 87.2zM0 265.3l150.6 98.3 105.4-88L104.1 181 0 265.3zm256 10.3l105.4 88L512 265.3l-104.1-84.2L256 275.6zM512 97.5L361.4 0 256 87.2l151.9 93.9L512 97.5zM256.3 294.6l-105.7 87.7-45.2-29.5V385l150.9 90.5L407.2 385v-32.2L362 382.3l-105.7-87.7z'/></svg>",
instagram: "<svg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='5 4 44 44' style='enable-background:new 5 4 44 44;' xml:space='preserve'><style type='text/css'>.st0{fill:none;}</style><g><rect x='-0.2' y='0.1' class='st0' width='53.8' height='53.4'/><path d='M48.1,26.3c0,4.3,0,7.2-0.1,8.8c-0.2,3.9-1.3,6.9-3.5,9s-5.1,3.3-9,3.5c-1.6,0.1-4.6,0.1-8.8,0.1c-4.3,0-7.2,0-8.8-0.1 c-3.9-0.2-6.9-1.3-9-3.5c-2.1-2.1-3.3-5.1-3.5-9c-0.1-1.6-0.1-4.6-0.1-8.8s0-7.2,0.1-8.8c0.2-3.9,1.3-6.9,3.5-9 c2.1-2.1,5.1-3.3,9-3.5c1.6-0.1,4.6-0.1,8.8-0.1c4.3,0,7.2,0,8.8,0.1c3.9,0.2,6.9,1.3,9,3.5s3.3,5.1,3.5,9 C48,19.1,48.1,22,48.1,26.3z M28.8,8.7c-1.3,0-2,0-2.1,0c-0.1,0-0.8,0-2.1,0c-1.3,0-2.3,0-2.9,0c-0.7,0-1.6,0-2.7,0.1 c-1.1,0-2.1,0.1-2.9,0.3c-0.8,0.1-1.5,0.3-2,0.5c-0.9,0.4-1.7,0.9-2.5,1.6c-0.7,0.7-1.2,1.5-1.6,2.5c-0.2,0.5-0.4,1.2-0.5,2 s-0.2,1.7-0.3,2.9c0,1.1-0.1,2-0.1,2.7c0,0.7,0,1.7,0,2.9c0,1.3,0,2,0,2.1s0,0.8,0,2.1c0,1.3,0,2.3,0,2.9c0,0.7,0,1.6,0.1,2.7 c0,1.1,0.1,2.1,0.3,2.9s0.3,1.5,0.5,2c0.4,0.9,0.9,1.7,1.6,2.5c0.7,0.7,1.5,1.2,2.5,1.6c0.5,0.2,1.2,0.4,2,0.5 c0.8,0.1,1.7,0.2,2.9,0.3s2,0.1,2.7,0.1c0.7,0,1.7,0,2.9,0c1.3,0,2,0,2.1,0c0.1,0,0.8,0,2.1,0c1.3,0,2.3,0,2.9,0 c0.7,0,1.6,0,2.7-0.1c1.1,0,2.1-0.1,2.9-0.3c0.8-0.1,1.5-0.3,2-0.5c0.9-0.4,1.7-0.9,2.5-1.6c0.7-0.7,1.2-1.5,1.6-2.5 c0.2-0.5,0.4-1.2,0.5-2c0.1-0.8,0.2-1.7,0.3-2.9c0-1.1,0.1-2,0.1-2.7c0-0.7,0-1.7,0-2.9c0-1.3,0-2,0-2.1s0-0.8,0-2.1 c0-1.3,0-2.3,0-2.9c0-0.7,0-1.6-0.1-2.7c0-1.1-0.1-2.1-0.3-2.9c-0.1-0.8-0.3-1.5-0.5-2c-0.4-0.9-0.9-1.7-1.6-2.5 c-0.7-0.7-1.5-1.2-2.5-1.6c-0.5-0.2-1.2-0.4-2-0.5c-0.8-0.1-1.7-0.2-2.9-0.3c-1.1,0-2-0.1-2.7-0.1C31.1,8.7,30.1,8.7,28.8,8.7z M34.4,18.5c2.1,2.1,3.2,4.7,3.2,7.8s-1.1,5.6-3.2,7.8c-2.1,2.1-4.7,3.2-7.8,3.2c-3.1,0-5.6-1.1-7.8-3.2c-2.1-2.1-3.2-4.7-3.2-7.8 s1.1-5.6,3.2-7.8c2.1-2.1,4.7-3.2,7.8-3.2C29.7,15.3,32.3,16.3,34.4,18.5z M31.7,31.3c1.4-1.4,2.1-3.1,2.1-5s-0.7-3.7-2.1-5.1 c-1.4-1.4-3.1-2.1-5.1-2.1c-2,0-3.7,0.7-5.1,2.1s-2.1,3.1-2.1,5.1s0.7,3.7,2.1,5c1.4,1.4,3.1,2.1,5.1,2.1 C28.6,33.4,30.3,32.7,31.7,31.3z M39.9,13c0.5,0.5,0.8,1.1,0.8,1.8c0,0.7-0.3,1.3-0.8,1.8c-0.5,0.5-1.1,0.8-1.8,0.8 s-1.3-0.3-1.8-0.8c-0.5-0.5-0.8-1.1-0.8-1.8c0-0.7,0.3-1.3,0.8-1.8c0.5-0.5,1.1-0.8,1.8-0.8S39.4,12.5,39.9,13z'/></g></svg>",
facebook: "<svg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 30 30' style='enable-background:new 0 0 30 30;' xml:space='preserve'><style type='text/css'>.f{}.c{fill:none;}</style><g><circle class='c' cx='15' cy='15' r='13' stroke='black' stroke-width='3'/><path class='f' d='M16.4,23.9v-8.1h2.7l0.4-3.2h-3.1v-2c0-0.9,0.3-1.5,1.6-1.5l1.7,0V6.2c-0.3,0-1.3-0.1-2.4-0.1c-2.4,0-4.1,1.5-4.1,4.2v2.3h-2.7v3.2h2.7v8.1H16.4z'/></g></svg>"
} [ e ] ).replace( /%20/g, " " )
},
empty: "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
},
render: p,
getLayouts: g,
getEditorThemes: () => Object.keys( f ).map( e => ( {
name: f[ e ] || e,
value: e
} ) )
};
t.a = b
}, function ( e, t, n ) {
"use strict";
var r = this && this.__importDefault || function ( e ) {
return e && e.__esModule ? e : {
default: e
}
};
Object.defineProperty( t, "__esModule", {
value: !0
} ), t.createQueue = t.createCache = t.sleepEvery = t.sleep = void 0;
const i = n( 1 ),
s = r( n( 18 ) );
t.sleep = e => new s.default( t => setTimeout( t, e ) );
let o = 0;
t.sleepEvery = ( e, t ) => {
const n = Date.now();
if ( o + e < n ) return new s.default( e => window.setTimeout( () => {
o = Date.now(), e()
}, t || 0 ) )
}, t.createQueue = e => {
const t = [],
n = [],
r = () => {
let s;
if ( n.length < e.threads && t.length && ( s = t.shift() ) ) {
const e = s.fn();
let t;
if ( void 0 !== e.catch ) {
const n = i.Deferred();
e.then( n.resolve ).catch( n.reject ), t = n.promise()
} else t = e;
n.push( t ), t.always( () => {
let e;
( e = n.indexOf( t ) ) > -1 && n.splice( e, 1 ), r()
} ), s.p.consume( t )
}
};
return {
add: function ( e ) {
const n = i.Deferred();
return t.push( {
fn: e,
p: n
} ), r(), n.promise()
}
}
}, t.createCache = e => {
let t = {};
const n = ( null == e ? void 0 : e.retimeout_on_get ) || !1,
r = ( null == e ? void 0 : e.timeout ) || 300,
i = ( null == e ? void 0 : e.check_interval ) || 120;
let s;
const o = () => {
s && clearInterval( s ), s = null
},
a = e => {
delete t[ e ]
},
l = () => {
const e = Date.now() - 1e3 * r;
Object.entries( t ).forEach( ( [ t, n ] ) => {
n.ts < e && setTimeout( () => a( t ), 1 )
} )
},
c = {
init: () => ( s || ( o(), s = setInterval( l, 1e3 * i ) ), c ),
set: ( e, n ) => {
t[ e ] = {
value: n,
ts: Date.now()
}
},
get: ( e, r ) => {
let i = r;
return t[ e ] && ( n && ( t[ e ].ts = Date.now() ),
i = t[ e ].value ), i
},
remove: a,
removeAll: () => {
t = {}
}
};
return c
}
}, function ( e, t, n ) {
"use strict";
n.r( t );
var r = n( 3 ),
i = n( 10 ),
s = n( 2 ),
o = n( 6 ),
a = n.n( o );
let l;
const c = e => [ "https:", "http:", "data:", "blob" ].some( t => e.startsWith( t ) ),
A = [ "internal", "user-agent", "accept-charset", "accept-encoding", "access-control-request-headers", "access-control-request-method", "connection", "content-length", "cookie", "cookie2", "date", "dnt", "expect", "host", "keep-alive", "origin", "referer", "te", "trailer", "transfer-encoding", "upgrade", "via" ],
d = {
"cache-control": "no-cache",
pragma: "no-cache"
},
u = {
"cache-control": "max-age=0, must-revalidate"
},
p = e => {
if ( e ) {
const t = {};
return Object.keys( e ).forEach( n => {
let r = n,
i = e[ n ];
if ( l.prefix ) s = n.toLowerCase(), ( A.includes( s ) || 0 === s.indexOf( "proxy-" ) || 0 === s.indexOf( "sec-" ) ) && ( r = l.prefix + n, i = null === i ? "" : a.a.encodeS( i ) );
else if ( null === i ) return;
var s;
t[ r ] = i
} ), t
}
},
h = e => ( {
responseXML: "",
responseText: "",
response: null,
readyState: 4,
responseHeaders: "",
status: 0,
statusText: "",
error: e = e || "Forbidden"
} ),
f = e => {
if ( "Blob" === e.type ) return new Blob( [ a.a.str2abSync( e.value ) ] );
if ( "File" === e.type ) return new File( [ a.a.str2abSync( e.value ) ], e.name, {
type: e.meta,
lastModified: e.lastModified || Date.now()
} );
if ( "FormData" == e.type ) {
const t = new FormData;
return Object.keys( e.value ).forEach( n => {
const r = "Array" === e.value[ n ].type,
i = f( e.value[ n ] ),
s = r ? i : [ i ];
s.forEach( ( e, r ) => {
t.append( n, s[ r ] )
} )
} ), t
}
if ( "Array" === e.type || "Object" === e.type ) {
let t, n, r;
"Object" === e ? ( r = Object.keys( e.value ), n = e => e < r.length ? r[ e ] : null, t = {} ) : ( n = t => t < e.value.length ? t : null, t = [] );
for ( let r, i = 0; null !== ( r = n( i ) ); i++ ) t[ r ] = f( e.value[ r ] );
return t
}
return e.value
},
g = e => {
const t = {};
return e && e.split( "\n" ).forEach( e => {
const n = e.match( /^([^:]+): ?(.*)/ );
if ( n ) {
const e = n[ 1 ].toLowerCase();
t[ e ] = ( void 0 !== t[ e ] ? ", " : "" ) + ( n[ 2 ] || "" ).replace( /,/g, "%2C" )
}
} ), t
},
m = "tm-finalurl" + rea.runtime.short_id.toLowerCase(),
_ = "tm-setcookie" + rea.runtime.short_id.toLowerCase();
var b = ( e, t, n, i, o ) => {
const l = e.responseType ? e.responseType.toLowerCase() : "",
c = e => {
const t = [];
let n, r;
return e.headers && ( n = e.headers.get( m ) || e.url, e.headers.forEach( ( e, n ) => {
const r = n.toLowerCase();
[ m, _ ].includes( r ) || t.push( r + ":" + e )
} ), ( r = e.headers.get( _ ) ) && t.push( "set-cookie:" + r ) ), {
readyState: 4,
responseHeaders: t.join( "\n" ),
finalUrl: n,
status: e.status,
statusText: e.statusText
}
};
let A = !1;
let d, v, w;
const k = e => {
e && ( w = !0 ), R ? R.abort() : w ? y() : y( {
name: "AbortError",
message: "Aborted by user"
} )
},
y = e => {
let t;
v || ( w ? ( t = c( {
status: 408,
statusText: "Request Timeout"
} ),
i( "ontimeout" ) ) : "AbortError" == e.name ? ( t = h( "aborted" ), i( "onabort" ) ) : ( t = c( {
status: 408,
statusText: e.message || "Request Timeout"
} ), i( "onerror", t ) ), v = !0, i( "ondone", t ) )
};
try {
const h = {};
let m;
h.method = e.method || "GET", h.redirect = "follow", e.headers && ( m = p( e.headers ) ), e.nocache ? h.cache = "reload" : e.revalidate && ( h.cache = "default", m = m || {}, m = {
...m,
...u
} ), e.anonymous ? h.credentials = "omit" : h.credentials = "include", e.user && e.password && ( m = m || {}, m.Authorization = "Basic " + btoa( e.user + ":" + e.password ) ),
m && ( h.headers = new window.Headers( m ) ), void 0 !== e.data && ( "typified" === e.data_type ? h.body = f( e.data ) : "string" == typeof e.data ? h.body = e.data : h.body = JSON.stringify( e.data ) );
var R = window.AbortController ? new window.AbortController : null;
R && ( h.signal = R.signal ), window.fetch( e.url, h ).then( u => {
if ( d && ( window.clearTimeout( d ), d = null ), v ) return;
let p = c( u );
if ( ( 0 !== p.status || p.status < 200 || p.status >= 300 ) && e.retries > 0 ) return e.retries--, void b( e, t, n, i, o );
( async () => {
if ( u.ok )
if ( e.partialSize ) {
let t;
[ "arraybuffer", "blob" ].includes( l ) || void 0 !== e.overrideMimeType ? ( p.response = await u.blob(), t = !1 ) : ( p.response = await u.text(), t = !0 ), p = await ( async ( t, i ) => {
if ( e.partialSize ) {
const s = t.response;
[ "response", "responseText", "responseXML" ].forEach( e => {
delete t[ e ]
} ), !A && s && ( A = !0, await ( async ( t, i ) => {
if ( !i ) {
if ( rea.FEATURES.RUNTIME.SHARED_OBJECT_URLS && !n.foreign_context ) {
const e = {
url: URL.createObjectURL( t ),
type: t.type
};
return o( "onpartial", {
objurl: e
} ), void window.setTimeout( () => URL.revokeObjectURL( e.url ), 3e5 )
}
t = await a.a.blob2str( t )
}
const s = Object( r.splitSlice )( t, parseInt( e.partialSize ) );
s.forEach( ( e, t ) => {
o( "onpartial", {
partial: e,
index: t,
length: s.length
} )
} )
} )( s, i ) )
}
return t
} )( p, t )
} else if ( void 0 !== e.responseType ) {
let e;
if ( "arraybuffer" == l ) p.response = await u.arrayBuffer();
else if ( "blob" == l ) p.response = await u.blob();
else if ( "document" == l ) {
e = ( g( p.responseHeaders )[ "content-type" ] || "text/xml" ).split( ";" )[ 0 ];
const t = new window.DOMParser;
p.response = t.parseFromString( await u.text(), e )
} else if ( "json" == l ) {
const e = await u.text();
p.response = JSON.parse( e )
} else s.logger.warn( "xhr: responseType", l, " is not implemented!" ), p.response = await u.text()
} else if ( void 0 !== e.overrideMimeType && window.TextDecoder ) {
const t = await u.arrayBuffer(),
n = e.overrideMimeType.toLowerCase().match( /charset=([^;]+)/ )[ 1 ];
p.response = new window.TextDecoder( n ).decode( t )
} else {
const e = await u.text();
p.response = e
} else p.responseXML = null, p.responseText = "", p.response = null
} )().then( () => {
i( "onload", p ), i( "ondone", p )
} )
} ).catch( y ),
void 0 !== e.timeout && ( d = setTimeout( () => {
d = null, k( !0 )
}, e.timeout ) )
} catch ( e ) {
s.logger.error( e.stack );
const t = h( e.message );
i( "onerror", t ), i( "ondone", t )
}
return {
abort: () => k()
}
},
v = ( e, t, n, o, A ) => {
const _ = e.responseType ? e.responseType.toLowerCase() : "";
let b, w, k;
e.anonymous && ( b = l.mozAnon ? {
mozAnon: !0
} : {
anonymous: !0
} );
const y = new XMLHttpRequest( b ),
R = t => {
let n = "",
r = e.url;
if ( y.readyState >= 2 ) {
let e;
n = y.getAllResponseHeaders(), n && ( n = n.replace( /tm-finalurl[0-9a-zA-Z]*\: .*[\r\n]{1,2}/i, "" ),
n = n.replace( /tm-setcookie[0-9a-zA-Z]*\:/i, "set-cookie:" ) ), ( e = y.getResponseHeader( m ) || y.responseURL ) && ( r = e )
}
const i = {
readyState: y.readyState,
responseHeaders: n,
finalUrl: r,
status: y.readyState >= 2 ? y.status : 0,
statusText: y.readyState >= 2 ? y.statusText : ""
};
return t && 4 == y.readyState ? y.responseType ? ( i.responseXML = null, i.responseText = null, i.responseType = y.responseType, i.response = y.response ) : ( i.responseXML = y.responseXML, i.responseText = y.responseText, i.response = y.response ) : ( i.responseXML = null,
i.responseText = "", i.response = null ), i
};
let x = !1;
const C = async t => {
if ( e.partialSize ) {
const i = t.response,
s = ![ "arraybuffer", "blob" ].includes( _ );
[ "response", "responseText", "responseXML" ].forEach( e => {
delete t[ e ]
} ), !x && i && ( x = !0, await ( async ( t, i ) => {
if ( !i ) {
if ( rea.FEATURES.RUNTIME.SHARED_OBJECT_URLS && !n.foreign_context ) {
const e = {
url: URL.createObjectURL( t ),
type: t.type
};
return A( "onpartial", {
objurl: e
} ), void window.setTimeout( () => URL.revokeObjectURL( e.url ), 3e5 )
}
t = await a.a.blob2str( t )
}
const s = Object( r.splitSlice )( t, parseInt( e.partialSize ) );
s.forEach( ( e, t ) => {
A( "onpartial", {
partial: e,
index: t,
length: s.length
} )
} )
} )( i, s ) )
}
return t
}, E = Object( i.createQueue )( {
threads: 1
} ), I = e => ( ...t ) => E.add( async () => e( ...t ) ), M = {
onload: I( async () => {
let r = R( !0 );
if ( ( 0 !== r.status || r.status < 200 || r.status >= 300 ) && e.retries > 0 ) return e.retries--, void v( e, t, n, o, A );
e.partialSize && ( r = await C( r ) ), await o( "onload", r ), 4 == r.readyState && await o( "ondone", r )
} ),
onerror: I( async () => {
const r = R();
if ( 4 == r.readyState && 200 != r.status && 0 != r.status && e.retries > 0 ) return e.retries--, void v( e, t, n, o, A );
await o( "onerror", r ), await o( "ondone", r )
} ),
onloadstart: I( async () => {
await A( "onloadstart", () => R() )
} ),
onreadystatechange: I( async () => {
await A( "onreadystatechange", async () => {
let e = R();
return e = await C( e ), e
} )
} ),
onprogress: I( async e => {
await A( "onprogress", async () => {
let t = R();
return t = await C( t ), Z( e, t, t )
} )
} ),
ontimeout: I( async () => {
const e = R();
await o( "ontimeout" ), await o( "ondone", e )
} ),
onabort: I( async () => {
const e = h( "aborted" );
await o( "onabort" ), await o( "ondone", e )
} )
}, G = 0 == Object.keys( M ).concat( [ "ondone" ] ).filter( e => !!t[ e ] ).length;
if ( G ) throw new Error( "Synchronous XHR is not supported anymore" );
var Z = ( e, t, n ) => {
void 0 === n && ( n = {} );
try {
let r = null,
i = null;
if ( e.lengthComputable || e.total > 0 ) r = e.loaded, i = e.total;
else {
const n = !y.responseType || [ "", "text" ].includes( y.responseType ) ? y.responseText : null;
let s = Number( g( t.responseHeaders )[ "content-length" ] || "" );
const o = t.readyState > 2 && n ? n.length : 0;
0 == s && ( s = -1 ),
r = e.loaded || o, i = e.total || s
}
n.lengthComputable = e.lengthComputable, n.loaded = r, n.done = r, n.position = r, n.total = i, n.totalSize = i
} catch ( e ) {}
return n
};
Object.keys( M ).forEach( e => {
( t[ e ] || [ "ontimeout", "onload", "onerror", "onabort" ].includes( e ) ) && ( y[ e ] = M[ e ] )
} );
try {
if ( !n.internal && !c( e.url ) ) throw new Error( "Invalid scheme of url: " + e.url );
y.open( e.method || "GET", e.url, !G, e.user, e.password );
let r = p( e.headers );
( e.nocache || e.revalidate ) && ( r = r || {}, e.nocache ? r = {
...r,
...d
} : e.revalidate && ( r = {
...r,
...u
} ) ),
r && Object.keys( r ).forEach( e => {
try {
y.setRequestHeader( e, r[ e ] )
} catch ( t ) {
s.logger.warn( "xhr: rejected header", e, r[ e ] )
}
} ), void 0 !== e.overrideMimeType && y.overrideMimeType( e.overrideMimeType ), e.partialSize ? [ "arraybuffer", "blob" ].includes( _ ) ? y.responseType = e.responseType = "blob" : delete e.responseType : void 0 !== e.responseType && ( w = e.responseType.toLowerCase(), [ "document", "json" ].includes( w ) || ( y.responseType = w ) ), void 0 !== e.timeout && ( y.timeout = e.timeout ),
void 0 !== e.data ? ( "typified" === e.data_type ? y.send( f( e.data ) ) : "string" == typeof e.data ? y.send( e.data ) : y.send( JSON.stringify( e.data ) ), t.onprogress && y.upload && ( y.upload.onprogress = M.onprogress ) ) : y.send()
} catch ( e ) {
s.logger.error( e.stack );
const t = h( e.message );
o( "onerror", t ), o( "ondone", t )
}
return k = k || {}, Object( r.copy )( {
abort: function () {
y.abort()
}
}, k )
};
const w = {
run: ( e, t, n ) => {
const r = {
...t || {}
},
i = async ( e, t ) => {
r[ e ] && await r[ e ]( "function" == typeof t ? await t() : t )
}, o = async ( e, t ) => {
r[ e ] && ( await i( e, t ), r[ e ] = null )
};
if ( !( n = n || {} ).internal && !c( e.url ) ) {
s.logger.warn( "xhr: invalid scheme of url:", e.url );
const t = h( "Invalid scheme" );
return o( "onerror", t ), void o( "ondone", t )
}
const a = window.fetch && e.url && "http" == e.url.substr( 0, 4 ),
A = !l.mozAnon && e.anonymous,
d = e.fetch;
return a && ( A || d ) ? b( e, r, n, o, i ) : v( e, r, n, o, i )
},
setConfig: function ( e ) {
l = e
},
getConfig: function () {
return l
},
makeErrorResponse: h,
parseCookie: e => {
const t = e.split( ";" ).filter( e => "string" == typeof e && !!e.trim() ),
n = t.shift().split( "=" ),
r = n.shift(),
i = n.join( "=" ),
s = {
name: r,
value: decodeURIComponent( i )
};
return t.forEach( ( function ( e ) {
var t = e.split( "=" ),
n = t.shift().trimLeft().toLowerCase(),
r = t.join( "=" );
if ( "expires" === n ) {
const e = new Date( decodeURIComponent( r ) );
isNaN( e.getTime() ) || ( s.expires = e )
} else "max-age" === n ? s.maxAge = parseInt( r, 10 ) : "secure" === n ? s.secure = !0 : "httponly" === n ? s.httpOnly = !0 : "samesite" === n ? s.sameSite = r : s[ n ] = r
} ) ), s
},
parseHeaders: g
};
t.default = w
}, function ( e, t, n ) {
"use strict";
var r = this && this.__importDefault || function ( e ) {
return e && e.__esModule ? e : {
default: e
}
};
Object.defineProperty( t, "__esModule", {
value: !0
} );
const i = r( n( 4 ) ),
s = ( n( 2 ), "mtm_visitor" ),
o = "default",
a = "pageview",
l = "script_update",
c = "script",
A = "cloud",
d = "event",
u = "pageview",
p = "ping",
h = "https://a.tampermonkey.net/matomo.php",
f = window.rea,
g = f.FEATURES.HTML5.LOCALSTORAGE;
let m, _, b, v = !1,
w = !1;
const k = () => ( {
url: h,
siteId: 5,
tracker: {
[ o ]: {
enabled: T( 5, 10 )
},
[ c ]: {
enabled: !0
},
[ l ]: {
enabled: T( 5, 10 )
},
[ A ]: {
enabled: T( 5, .001 )
}
}
} ),
y = () => ( {
url: h,
siteId: 6,
tracker: {
[ o ]: {
enabled: T( 6, 50 )
},
[ c ]: {
enabled: !0
},
[ l ]: {
enabled: T( 6, 10 )
},
[ A ]: {
enabled: T( 6, .01 )
}
}
} ),
R = {
default: k,
gcal: k,
iikm: () => ( {
url: h,
siteId: 4,
tracker: {
[ o ]: {
enabled: T( 4, 1 )
},
[ c ]: {
enabled: !0
},
[ l ]: {
enabled: T( 4, 10 )
},
[ A ]: {
enabled: T( 4, 5e-4 )
}
}
} ),
saap: () => ( {
url: h,
siteId: 7,
tracker: {
[ o ]: {
enabled: !0
},
[ c ]: {
enabled: !0
},
[ l ]: {
enabled: T( 7, 10 )
},
[ A ]: {
enabled: T( 7, .01 )
}
}
} ),
fire: y,
firb: y,
dhdg: () => ( {
url: h,
siteId: 3,
tracker: {
[ o ]: {
enabled: T( 3, 1 )
},
[ c ]: {
enabled: !0
},
[ l ]: {
enabled: T( 3, 10 )
},
[ A ]: {
enabled: T( 3, 5e-4 )
}
}
} ),
mfdh: k,
heif: () => ( {
url: "http://a.userscript.grobilan:8081/matomo.php",
siteId: 2,
tracker: {
[ o ]: {
enabled: !0
}
}
} )
};
let x;
const C = [ {
msg: "a disconnected port"
}, {
msg: "Function.prototype.apply: Arguments list has wrong type",
url: "event_bindings"
}, {
msg: "Script error."
} ],
E = e => [ ...Array( e ) ].map( () => Math.floor( 16 * Math.random() ).toString( 16 ) ).join( "" ),
I = e => {
if ( !g ) return;
const t = [ e.uuid, e.createTs, e.visitCount, e.currentVisitTs, e.lastVisitTs ].join( "." );
g.setItem( s, t )
},
M = e => {
const t = e || o,
n = x.tracker[ t ] || x.tracker.default;
return n.enabled ? {
url: x.url,
siteId: x.siteId,
options: n
} : null
},
G = E( 6 ),
Z = async ( e, t, n ) => {
if ( !e ) return;
const r = ( () => {
if ( !g ) return;
const e = g.getItem( s );
if ( !e ) return;
const t = e.split( "." );
if ( t.length >= 5 ) {
t.unshift( "0" );
const [ e, n, r, i, s, o ] = t;
return {
createdNow: !1,
newVisitor: e,
uuid: n,
createTs: r,
visitCount: i,
currentVisitTs: s,
lastVisitTs: o
}
}
} )() || ( () => {
const e = Math.floor( Date.now() / 1e3 ).toString(),
t = {
createdNow: !0,
newVisitor: "1",
uuid: E( 16 ),
createTs: e,
visitCount: "0",
currentVisitTs: e,
lastVisitTs: ""
};
return I( t ), t
} )();
let o;
const a = new Date,
l = {
idsite: e.siteId,
rec: 1,
action_name: document.title || f.runtime.short_id,
url: location.href,
_id: r.uuid,
rand: E( 4 ),
apiv: 1,
h: a.getHours(),
m: a.getMinutes(),
s: a.getSeconds(),
cookie: 1,
pv_id: G
},
c = {
...l,
_idts: Number( r.createTs ),
_idvc: Number( r.visitCount ),
_viewts: Number( r.lastVisitTs ),
res: `${screen.width}x${screen.height}`
};
if ( t == u ) {
const e = _ ? {
gt_ms: _
} : {},
t = {
...l,
...c,
...e,
new_visit: 1
};
I( ( e => {
const t = Math.floor( Date.now() / 1e3 ).toString();
return e.newVisitor = "0", e.visitCount = ( Number( e.visitCount ) + 1 ).toString(), e.lastVisitTs = e.currentVisitTs, e.currentVisitTs = t, e
} )( r ) ), o = t
} else if ( t == d ) {
if ( !n ) return;
o = {
...l,
ca: 1,
e_c: n.category,
e_a: n.action,
e_n: n.name,
e_v: n.value
}
} else {
if ( t != p ) return;
o = {
...l,
...c,
ping: 1
}
}
o = Object.assign( l, o );
const A = `${e.url}?${i.default.hash2params(o)}`,
h = document.createElement( "img" );
h.src = A, h.onload = () => {
var e;
null === ( e = h.parentNode ) || void 0 === e || e.removeChild( h )
},
h.onerror = () => {
var e;
null === ( e = h.parentNode ) || void 0 === e || e.removeChild( h )
}, ( document.body || document.head || document.documentElement ).appendChild( h )
}, T = ( e, t ) => {
let n = 100 * Math.random() < t;
if ( g ) try {
let r, i;
const s = [ "wsr", e, t ].join( "_" ),
o = Date.now(),
a = 864e7;
if ( r = g.getItem( s ) ) {
try {
i = JSON.parse( r )
} catch ( e ) {}( !i || i.ts + a < o ) && ( i = {
ts: o,
w: n
} )
} else i = {
ts: o,
w: n
};
n = i.w, g.setItem( s, JSON.stringify( i ) )
} catch ( e ) {}
return n
}, N = e => {
v && ( w = e, w ? m && S && ( S(), S = void 0 ) : b && ( clearInterval( b ), b = void 0 ) )
};
let S = () => {
Z( M( a ), u ),
b = window.setInterval( () => Z( M( a ), p ), 864e5 )
};
const U = ( e, t, n ) => {
if ( !w || !e.search ) return;
void 0 === t && ( t = "" ), void 0 === n && ( t += " " + window.location.href, n = "" );
let r = !1;
C.forEach( n => {
( n.msg || n.url ) && ( n.msg && -1 == e.indexOf( n.msg ) || n.url && -1 == t.indexOf( n.url ) || ( r = !0 ) )
} ), r || Z( M( "error" ), d, {
category: "Error",
action: e,
name: t + ":" + n
} )
},
B = {
init: ( e, t, n ) => {
const r = ( ( null == n ? void 0 : n.version ) || "" ) + " ",
i = f.runtime.short_id;
x = ( R[ i ] || R.default )(), window.onerror = ( t, n, i, s, o ) => {
let a = "";
if ( o ) try {
a = o.stack || ""
} catch ( e ) {}
U( t.toString(), r + e + "@" + f.extension.urls.prepareForReport( n || "" ), [ i + ":" + s, a ].join( ";" ) )
}, document.onsecuritypolicyviolation = t => {
let n = "";
if ( t ) try {
n = t.stack
} catch ( e ) {}
U( "CSP violation of " + t.effectiveDirective, r + e + "@" + f.extension.urls.prepareForReport( t.documentURI ), [ t.sourceFile, " -> ", t.lineNumber + ":" + t.columnNumber, n ].join( ";" ) )
}, ( null == n ? void 0 : n.started ) && ( _ = Date.now() - n.started.getTime() ), v = !0, m = !!( null == n ? void 0 : n.trackView ), N( t )
},
setEnabled: N,
isActive: function ( e ) {
return w && !!M( e )
},
tC: ( e, t, n ) => {
if ( !w ) return;
let r = "",
i = "";
"init" === t ? ( i = "Initialized", r = e ) : "error" === t && ( i = "Error", r = e + " -> " + n ), Z( M( A ), d, {
category: "Cloud",
action: i,
name: r
} )
},
tS: ( e, t, n ) => {
if ( !w ) return;
const r = `${e}${n?` <${n}> `:""}`;
let i = "",
s = null;
if ( "i" === t ) i = "Installed";
else if ( "u" === t ) i = "Updated", s = M( l );
else if ( "m" === t ) i = "Revealed";
else {
if ( "r" !== t ) return;
i = "Removed"
}
Z( s || M( c ), d, {
category: "Script",
action: i,
name: r
} )
},
tE: U,
tG: ( e, t, n ) => {
if ( !w ) return;
let r = "",
i = "";
"clicked" === e ? ( i = "Click",
r = t + ":" + n ) : "button" === e ? ( i = "Button", r = t ) : "dialog" === e && ( i = "Dialog" ), Z( M( "begging" ), d, {
category: "Begging",
action: i,
name: r
} )
}
};
t.default = B
}, function ( e, t, n ) {
"use strict";
n.d( t, "a", ( function () {
return f
} ) ), n.d( t, "b", ( function () {
return g
} ) );
var r = n( 1 ),
i = n( 2 ),
s = n( 15 ),
o = n.n( s );
let a = 0;
const l = {
ePASTEBIN: 1,
eCHROMESYNC: 2,
eSYNCFS: 3,
eGDRIVE: 4,
eDROPBOX: 5,
eWEBDAV: 6,
eYANDEX: 7,
eONEDRIVE: 8
};
let c = [],
A = !1;
const d = e => {
const t = Object( r.Deferred )(),
n = new FileReader;
return n.onloadend = function () {
t.resolve( this.result )
}, n.onerror = t.reject, n.onabort = t.reject, n.readAsText( e ), t.promise()
},
u = ( () => {
const e = e => {
const t = e.type,
n = e.id,
s = ".meta.json",
l = ".user.js";
let A, u = null;
const p = e => {
let t;
return r.Deferred.Pledge().then( () => {
if ( !u ) return t = !0, h()
} ).then( () => {
if ( u && void 0 === u[ e ] && !t ) return h()
} ).then( () => u ? ( u[ e ] = u[ e ] || null, u[ e ] ) : ( i.logger.warn( "si: unable to list remote list!" ), r.Deferred.Breach() ) )
},
h = e => A.list( e ).then( e => {
u = {};
const t = {},
n = {};
let r, s;
const o = Date.now();
return e.forEach( e => {
u[ e.name ] = e;
const a = new RegExp( ".meta.json$" ),
l = new RegExp( ".user.js$" );
var c;
e.modified > o ? i.logger.log( "si: ignore future list item", o, e ) : ( ( r = e.name.match( a ) ) || ( s = e.name.match( l ) ) ) && ( r ? ( e.uuid = c = e.name.replace( a, "" ), e.lastModified = e.modified, t[ c ] = e ) : s && ( c = e.name.replace( l, "" ), n[ c ] = e ) )
} ), Object.keys( t ).map( e => {
let r;
if ( r = t[ e ] ) return r.source = n[ e ], r.options = r.options || {}, r
} ).filter( e => e )
} );
let f;
return {
init: function ( e ) {
return A = o.a[ t ]( {
...e,
path: "sync"
} ), r.Deferred.Pledge().then( () => {
if ( !A.credentials && !e.basic_auth ) return A.list()
} ).then( () => ( f || ( f = A.changes.listen(), f.progress( e => {
( ( e, t ) => {
if ( t != a ) return;
const n = e.name,
r = new RegExp( ".meta.json$" ),
s = new RegExp( ".user.js$" );
i.logger.log( "si: cloud file changed", n, e ), ( n.match( r ) || n.match( s ) ) && c.forEach( e => {
e( n )
} )
} )( e, n )
} ) ), !0 ) )
},
list: h,
setSource: ( e, t ) => {
const n = e + l;
return p( n ).then( e => {
let s;
return r.Deferred.Pledge( !1 ).then( () => {
if ( e && A.compare ) return A.compare( e, t )
} ).then( o => o ? ( i.logger.log( "si: remote source data matches, skip upload of", n ), r.Deferred.Pledge() ) : ( s = new Blob( [ t ], {
type: "text/plain"
} ), delete u[ n ], A.put( e || n, s ) ) )
} )
},
getSource: ( e, t ) => {
const n = e + l;
return p( n ).then( s => s ? r.Deferred.Pledge( !1 ).then( () => {
if ( t && A.compare ) return A.compare( s, t )
} ).then( e => e ? ( i.logger.log( "si: remote source data matches, skip download of", n ), r.Deferred.Pledge( t ) ) : A.get( s ).then( d ) ) : ( i.logger.warn( "si: list cache does not contain this UUID", e ), r.Deferred.Breach() ) )
},
getMeta: e => p( e + s ).then( t => t ? A.get( t ).then( d ).then( n => {
let r;
if ( ( r = ( e => {
let t = null;
try {
t = JSON.parse( e )
} catch ( e ) {}
return t && t.uuid ? t : ( i.logger.log( "si: unable to parse extended info of " + void 0 ), null )
} )( n ) ) && ( r.uuid = e ) ) return r.lastModified = t.modified || r.lastModified, r.precision = t.precision, r.options = r.options || {}, r
} ) : r.Deferred.Breach() ),
setMeta: ( e, t ) => {
const n = new Blob( [ JSON.stringify( e ) ], {
type: "text/plain"
} ),
r = e.uuid + s;
return p( r ).then( e => A.put( e || r, n, t ) )
},
remove: e => {
const t = e.uuid + s;
e.options.removed = !0;
const n = new Blob( [ JSON.stringify( e ) ], {
type: "text/plain"
} );
return A.put( t, n ).then( () => {
const t = e.uuid + l;
return p( t ).then( e => {
if ( e ) return delete u[ t ], A.delete( e )
} )
} )
},
reset: () => A.list( !0 ).then( e => e.filter( e => {
const t = new RegExp( ".meta.json$" ),
n = new RegExp( ".user.js$" );
return e.name.match( t ) || e.name.match( n )
} ) ).then( e => {
const t = [];
return e.forEach( e => {
t.push( ( () => {
const t = Object( r.Deferred )();
return A.delete( e ).always( () => {
t.resolve()
} ), t.promise()
} )() )
} ),
r.Deferred.when( t ).always( () => {
u = null
} )
} ),
getRemoteUrl: function ( e ) {
if ( A.getRemoteUrl ) return A.getRemoteUrl( e.uuid + l )
},
getRemoteDomains: function () {
if ( A.getRemoteDomains ) return A.getRemoteDomains()
}
}
},
t = e( {
type: "drive",
id: l.eGDRIVE
} ),
n = e( {
type: "dropbox",
id: l.eDROPBOX
} ),
s = e( {
type: "onedrive",
id: l.eONEDRIVE
} ),
A = e( {
type: "webdav",
id: l.eWEBDAV
} ),
u = e( {
type: "yandex",
id: l.eYANDEX
} ),
h = ( () => {
let e, t = !1;
const n = ( t, n ) => {
a == l.eCHROMESYNC && "sync" == n && r.Deferred.Pledge().then( () => {
const r = new RegExp( e + "$" );
t && Object.keys( t ).forEach( e => {
const s = t[ e ];
if ( i.logger.log( 'si: storage key "%s" in namespace "%s" changed. Old value was "%s", new value is "%s".', e, n, s.oldValue, s.newValue ), -1 != e.search( r ) )
for ( let t = 0; t < c.length; t++ )
if ( h[ e ] );
else {
const n = A( s.newValue, e );
n && c[ t ]( e, n )
}
} )
} )
},
s = e => {
const t = Object( r.Deferred )();
let n = [];
return e ? o().done( r => {
n = r.filter( t => t.item && t.item.uuis == e ), t.resolve( n )
} ).fail( e => {
t.reject( e )
} ) : t.resolve( n ), t.promise()
};
var o = () => p( () => {
const t = Object( r.Deferred )(),
n = new RegExp( e + "$" );
return rea.storage.sync.get( null, e => {
const r = [];
e && Object.keys( e ).forEach( t => {
-1 != t.search( n ) && r.push( {
key: t,
item: A( e[ t ], t )
} )
} ), t.resolve( r )
} ), t.promise()
} ),
A = ( e, t ) => {
let n = null;
try {
n = JSON.parse( e )
} catch ( e ) {}
return n && ( n.url || n.options ) ? n : ( i.logger.log( "si: unable to parse extended info of " + t ), null )
};
const d = e => e.then( e => {
const t = {};
if ( ( e = e.filter( e => {
if ( !t[ e.key ] ) return t[ e.key ] = !0, !0
} ) ).length > 1 ) {
const t = Object( r.Deferred )(),
n = [],
i = e.pop();
return e.forEach( e => {
n.push( f( e.key ) )
} ), r.Deferred.when( n ).done( () => {
t.resolve( i )
} ), t.promise()
}
return r.Deferred.Pledge( e[ 0 ] )
} );
let u = null;
var h = {},
f = e => {
const t = Object( r.Deferred )();
return rea.storage.sync.remove( e, () => {
const e = rea.runtime.lastError;
e ? t.reject( e ) : t.resolve()
} ), t.promise()
},
g = () => {
const e = Object( r.Deferred )();
return rea.storage.sync.set( h, () => {
const t = rea.runtime.lastError;
t ? e.reject( t ) : ( h = {}, e.resolve() )
} ), e.promise()
};
return {
init: function () {
let s = !0;
if ( !t ) try {
rea.storage.onChanged.addListener( n ), t = !0
} catch ( e ) {
i.logger.warn( "si: error registering sync callback: " + e.message ), s = !1
}
return e = "@v2", r.Deferred.Pledge( s )
},
list: () => r.Deferred.Pledge().then( () => o() ).then( t => {
const n = new RegExp( e + "$" ),
i = [];
return t.forEach( e => {
const t = e.key,
r = e.item,
s = t.replace( n, "" );
let o = null;
if ( o = h[ t ] ? A( h[ t ], t ) : r, !o ) return;
const a = o.options || {},
l = !!a.removed;
i.push( {
id: s,
uuid: l ? s : o.uuid,
lastModified: l ? a.removed : o.lastModified,
url: o.url,
options: a
} )
} ), r.Deferred.Pledge( i )
} ),
setMeta: ( t, n ) => {
const i = Object( r.Deferred )();
return d( s( t.uuid ) ).done( r => {
let s, o;
r ? ( s = r.key, o = r.item ) : ( s = t.uuid + e, o = {} ), o.url = t.url, o.options = t.options || {}, o.uuid = t.uuid, n.lastModified && ( o.lastModified = n.lastModified ), h[ s ] = JSON.stringify( o ), u && window.clearTimeout( u ), u = window.setTimeout( g, 3e3 ), i.resolve()
} ), i.promise()
},
remove: t => {
const n = Object( r.Deferred )();
return d( s( t.uuid ) ).done( r => {
let i, s;
r ? ( i = r.key, s = r.item ) : ( i = t.uuid + e, s = {} ), s.options = s.options || {}, s.options.removed = !0,
h[ i ] = JSON.stringify( s ), u && window.clearTimeout( u ), u = window.setTimeout( g, 3e3 ), n.resolve()
} ), n.promise()
},
reset: () => p( () => {
const e = Object( r.Deferred )();
return rea.storage.sync.clear( () => {
h = {}, e.resolve()
} ), e.promise()
} )
}
} )(),
f = {};
return rea.storage.sync.supported && ( f[ l.eCHROMESYNC ] = h ), f[ l.eGDRIVE ] = t, f[ l.eDROPBOX ] = n, f[ l.eONEDRIVE ] = s, f[ l.eWEBDAV ] = A, f[ l.eYANDEX ] = u, f
} )();
var p = ( e, t ) => {
const n = Object( r.Deferred )();
void 0 === t && ( t = 3 );
const s = () => {
if ( A ) window.setTimeout( s, 500 );
else {
A = !0;
try {
e().always( () => {
A = !1
} ).done( ( function () {
n.resolve.apply( this, arguments )
} ) ).fail( () => {
--t > 0 ? ( i.logger.log( "si: some retries left, wait for", 6e4, "ms" ), window.setTimeout( s, 6e4 ) ) : ( i.logger.warn( "si: no retries left, skipping this sync request!" ), n.reject( "no retries left" ) )
} )
} catch ( e ) {
i.logger.warn( e ), A = !1, n.reject( e )
}
}
};
return s(), n.promise()
};
const h = {
init: ( e, t ) => ( c = [], a = e, u[ a ] ? u[ a ].init( t ) : r.Deferred.Breach() ),
debug: function () {},
addChangeListener: function ( e ) {
c.push( e )
},
getRemoteUrl: function ( e ) {
if ( u[ a ] && u[ a ].getRemoteUrl ) return u[ a ].getRemoteUrl( e )
},
getRemoteDomains: function () {
if ( u[ a ] && u[ a ].getRemoteDomains ) return u[ a ].getRemoteDomains()
},
caps: ( () => {
const e = {};
return Object.defineProperties( e, {
specialMeta: {
get: function () {
return u[ a ] && !!u[ a ].getMeta
},
enumerable: !0
},
syncsSource: {
get: function () {
return u[ a ] && !!u[ a ].getSource
},
enumerable: !0
}
} ), e
} )(),
types: l
};
[ "list", "setMeta", "getMeta", "setSource", "getSource", "reset", "remove" ].forEach( e => {
h[ e ] = function () {
return u[ a ] && u[ a ][ e ] ? u[ a ][ e ].apply( this, arguments ) : r.Deferred.Pledge()
}
} );
const f = e => ( o.a.init( t => {
let n = Object( r.Deferred )();
const i = e.openAndWatch( {
url: t.url
}, e => {
e ? n && n.notify( e ) : n && ( n.resolve( "tab closed" ), n = null )
} );
return {
promise: n.promise(),
close: function () {
i.cancel()
}
}
} ), h ),
g = l
}, function ( e, t, n ) {
"use strict";
n.r( t ), n.d( t, "vendor", ( function () {
return u
} ) ), n.d( t, "getRaw", ( function () {
return h
} ) ), n.d( t, "require", ( function () {
return p
} ) ), n.d( t, "get", ( function () {
return g
} ) );
let r = [];
const i = {},
s = {},
o = ( e, t, n ) => {
var o = () => {
e.every( e => !!a[ e ] ) ? n() : r.push( o )
};
( e = "string" == typeof e ? [ e ] : e ).forEach( e => {
if ( void 0 === a[ e ] && void 0 === i[ e ] ) {
const n = window.setTimeout( () => {
s[ e ] || ( delete i[ e ], A( e ), f( rea.extension.getURL( e + ".js" ), () => {
t ? d( e, null, {} ) : console.log( "registry: finished loading " + e + ".js " )
} ) )
}, 0 );
i[ e ] = () => {
window.clearTimeout( n ), delete i[ e ]
}
}
} ), o()
};
var a = {};
const l = {},
c = {},
A = e => {
s[ e ] = !0
},
d = ( e, t, n, o ) => {
if ( !a[ e ] || o ) {
let o;
l[ e ] = t, a[ e ] = n, delete s[ e ], ( o = i[ e ] ) && o(), ( () => {
const e = r;
for ( r = []; e.length; ) e.pop()()
} )()
}
},
u = ( e, t ) => o( e, !0, t ),
p = ( e, t ) => o( e, !1, t ),
h = ( e, t ) => {
let n;
if ( void 0 !== ( n = c[ e ] ) ) t && t( n );
else {
const r = rea.extension.getURL( e );
try {
const i = new XMLHttpRequest;
if ( XMLHttpRequest.onlyasync ) {
if ( !t ) return void console.warn( "registry: async xhr without a callback!" );
i.open( "GET", r ), i.onload = () => {
t( i.responseText )
}, i.onerror = () => {
t()
}, i.send( null )
} else i.open( "GET", r, !1 ), i.send( null ), n = i.responseText, n || console.warn( "registry: content of " + e + " is null!" ), t && t( n )
} catch ( e ) {
console.log( "getRawContent " + e )
}
}
return n
},
f = ( e, t ) => {
let n = 1;
const r = () => {
0 == --n && t && t()
};
( e = "string" == typeof e ? [ e ] : e ).forEach( e => {
n++;
try {
rea.page.addScript( e, t => {
t || console.warn( "registry: self.load " + e + " failed! " ), r()
} )
} catch ( t ) {
console.warn( "registry: self.load " + e + " failed! ", t ), r()
}
} ), r()
},
g = ( e, ...t ) => {
let n;
const r = a[ e ];
return "function" == typeof r ? n = r.apply( void 0, t ) : r && ( n = r ), n
}
}, function ( e, t, n ) {
"use strict";
var r = this && this.__importDefault || function ( e ) {
return e && e.__esModule ? e : {
default: e
}
};
Object.defineProperty( t, "__esModule", {
value: !0
} );
const i = n( 1 ),
s = r( n( 4 ) ),
o = n( 3 ),
a = n( 2 ),
l = r( n( 6 ) ),
c = r( n( 12 ) ),
A = r( n( 11 ) ),
d = n( 10 ),
u = window.rea,
p = window.forge_sha256,
h = u.FEATURES,
f = A.default;
let g, m;
const _ = d.createQueue( {
threads: 1
} ),
b = ( e, t ) => {
const n = ( e ? e.split( "/" ) : [] ).concat( t ? [ t ] : [] ).join( "/" );
return n ? ( "/" == n.substr( 0, 1 ) ? "" : "/" ) + n : ""
},
v = e => {
const t = {
type: e,
request: e => {
const t = () => {
const t = i.Deferred(),
n = e => {
a.logger.log( "rest service: request failed", e ), t.reject( e )
},
r = "xml" === e.responseType,
s = "headers" === e.responseType;
return ( r || s ) && delete e.responseType, g( e, {
onload: i => {
if ( [ 200, 201, 204, 207 ].includes( i.status ) ) {
let n;
n = r ? e.anonymous || e.fetch ? ( new window.DOMParser ).parseFromString( i.responseText || "", "text/xml" ) : i.responseXML : s ? f.parseHeaders( i.responseHeaders ) : i.response, t.resolve( {
result: n
} )
} else n( i )
},
onerror: n,
ontimeout: n,
onprogress: e => t.notify( e )
}, {
internal: !0
} ), t.promise()
};
return e.no_queue ? t() : _.add( t )
},
error: t => {
const n = t;
let r;
if ( void 0 !== n.status ) {
r = n.status.toString();
try {
r = r + " | " + n.responseText
} catch ( e ) {}
} else r = t;
c.default.tC( e, "error", "request: " + r )
},
wait: e => ( ...t ) => e( ...t ).then( e => e, e => ( e => i.Deferred.Breach( e ? e.responseText || e.statusText : void 0 ) )( e ) ),
changes: ( () => {
let e;
return {
listen: () => ( e || ( e = i.Deferred(), t.watch && t.watch.start() ), e.promise() ),
notify: t => {
e.notify( t )
}
}
} )()
};
return t
},
w = e => {
const t = Object.assign( {}, e ),
n = t.type;
if ( void 0 === n ) throw new Error( "Internal error" );
let r, a = [];
const l = Object.assign( e, {
...t,
config: {
...t.config,
auth_prefix: "Bearer",
storage_key: ""
},
credentials: {},
request: e => ( e.no_auth || ( e.headers = e.headers || {}, e.headers.Authorization = l.config.auth_prefix + " " + l.credentials.access_token ), t.request( e ) ),
oauth: ( () => {
let e;
const t = {
run: () => {
if ( r ) return r;
let s = i.Deferred();
const a = r = s.promise();
e = "!!" + n + "-" + o.createUUID();
let A = l.credentials ? l.credentials.refresh_token : null;
const d = ( e, t ) => {
l.credentials = t, null == s || s.resolve(), s = void 0, e && e.close()
};
return ( () => {
if ( !l.config.refresh_supported || !A ) return i.Deferred.Pledge();
const e = i.Deferred(),
r = () => {
A = null, delete l.credentials.refresh_token
};
return g( {
url: t.getRefreshUrl( A ),
fetch: !h.RUNTIME.SAFARI
}, {
onload: e => {
if ( !e.finalUrl ) return c.default.tC( n, "error", "auth refresh token: !finalUrl" ), void r();
const i = t.onUrl( e.finalUrl );
i && ( i.error || !i.access_token ? ( c.default.tC( n, "error", "auth refresh token: " + ( i.error || "!access_token" ) ), r() ) : d( null, i ) )
},
onerror: r,
ondone: () => e.resolve()
} ), e.promise()
} )().then( () => {
if ( !s ) return;
if ( !l.config.refresh_supported ) return i.Deferred.Pledge();
const e = i.Deferred(),
r = m( {
url: t.getRefreshUrl()
} );
return r.promise.progress( e => {
let i;
s && ( i = t.onUrl( e.url ) ) && ( i.error || !i.access_token ? ( c.default.tC( n, "error", "auth refresh: " + ( i.error || "!access_token" ) ), l.config.refresh_supported = !1 ) : d( r, i ) )
} ).always( e.resolve ), e.promise()
} ).then( () => {
if ( !s ) return;
const e = i.Deferred(),
r = m( {
url: t.getAuthUrl()
} );
return r.promise.progress( e => {
let i;
s && ( i = t.onUrl( e.url ) ) && ( i.error || !i.access_token ? c.default.tC( n, "error", "auth: " + ( i.error || "!access_token" ) ) : d( r, i ) )
} ).always( e.resolve ), e.promise()
} ).done( () => {
r = void 0, s && s.reject( "auth_failed" )
} ), a
},
getAuthUrl: () => l.config.request_uri + "?" + s.default.hash2params( {
response_type: l.config.response_type,
client_id: l.config.client_id,
redirect_uri: l.config.redirect_uri,
state: e,
scope: l.config.scope
} ),
getRefreshUrl: t => {
const n = {
client_id: l.config.client_id,
redirect_uri: l.config.redirect_uri,
state: e,
scope: l.config.scope,
refresh_token: t
};
return l.config.redirect_uri + "?" + s.default.hash2params( n )
},
onUrl: t => {
let n, r;
if ( t && 0 === t.indexOf( l.config.redirect_uri ) && ( r = s.default.parse( t ) ) && ( n = s.default.params2hash( r ) ) && ( n.access_token || n.error ) && n.state === e ) return {
uid: n.uid,
access_token: n.access_token,
refresh_token: n.refresh_token,
error: n.error
}
}
};
return t
} )(),
wait: e => t.wait( ( ...t ) => {
if ( l.credentials.access_token ) return e( ...t ); {
const n = i.Deferred();
return a.push( () => n.consume( e( ...t ) ) ),
l.oauth.run().done( () => {
a.forEach( e => e() ), a = []
} ).fail( e => {
n.reject( e )
} ), n.promise()
}
} )
} ),
A = h.HTML5.LOCALSTORAGE;
let d;
return Object.defineProperty( l, "credentials", {
get: () => {
if ( void 0 === d ) {
if ( c.default.tC( n, "init" ), A ) try {
const e = JSON.parse( A.getItem( l.config.storage_key ) || "" );
d = {
uid: e.uid,
access_token: e.access_token,
refresh_token: e.refresh_token
}
} catch ( e ) {}
d = d || {}
}
return d
},
set: e => {
if ( A ) try {
A.setItem( l.config.storage_key, JSON.stringify( {
uid: e.uid,
access_token: e.access_token,
refresh_token: e.refresh_token
} ) )
} catch ( e ) {}
d = e
},
enumerable: !1
} ), l
},
k = e => {
let t, n, r, l, c, A, u, p, h, f = null,
g = null;
const m = Object.assign( {}, e ),
_ = e => {
var t;
let n;
return e && ( n = ( null === ( t = e.firstChild ) || void 0 === t ? void 0 : t.nextSibling ) ? e.firstChild.nextSibling : e.firstChild ), n
},
v = e => m.wait( ( ...t ) => x.init().then( () => e( ...t ) ) ),
w = ( e, t ) => {
let n, r;
if ( ( n = e.getElementsByTagNameNS( "*", t )[ 0 ] ) && ( r = n.firstChild ) ) return r.nodeValue || void 0
},
k = e => {
const i = [],
s = e.getElementsByTagNameNS( "*", "response" );
for ( let e = 0; e < s.length; e++ ) {
const a = s[ e ];
let l = w( a, "href" );
if ( null == l ) continue;
l = l.replace( /\/$/, "" );
const c = a.getElementsByTagNameNS( "*", "propstat" )[ 0 ].getElementsByTagNameNS( "*", "prop" )[ 0 ],
A = w( c, "getlastmodified" ),
d = w( c, "getetag" ),
u = parseInt( w( c, "getcontentlength" ) || "" ),
p = c.getElementsByTagNameNS( "*", "resourcetype" )[ 0 ].getElementsByTagNameNS( "*", "collection" )[ 0 ],
h = l.replace( new RegExp( "^(" + [ o.escapeForRegExpURL( n + t ) + "/?", o.escapeForRegExpURL( r + t ) + "/?" ].join( "|" ) + ")" ), "" );
if ( p );
else {
const e = {
etag: d,
name: h,
modifiedTime: new Date( A || 0 ).getTime(),
size: u >= 0 ? u : void 0,
removed: -1 == u
};
i.push( e )
}
}
return i
},
y = e => w( e, "td:cursor" ),
R = ( e, t ) => {
const n = t || {};
return n.set_current_list && ( c = {} ), x.request( {
method: "PROPFIND",
url: e,
headers: {
"Content-Type": "text/xml; charset=UTF-8",
Depth: void 0 !== n.depth ? n.depth : 1
},
responseType: "xml"
} ).then( e => {
const t = e.result;
let r;
if ( null === t || !( r = _( t ) ) || !r.childNodes ) return i.Deferred.Breach();
const s = k( r );
if ( n.set_current_list ) {
const e = y( r );
e && ( A = e ), s.forEach( e => {
c[ e.name ] = e
} )
}
return s
} )
},
x = Object.assign( e, {
...e,
config: {
...e.config,
watch_interval: 36e5,
root: void 0,
path: void 0
},
request: e => ( e.headers = e.headers || {}, e.headers[ "User-Agent" ] = "Tampermonkey", e.headers.Cookie = "", m.request( e ).then( e => e, t => {
const n = t;
return !n || [ 403, 500 ].includes( n.status ) ? ( e.backoff = 2 * ( e.backoff || 1e3 ), d.sleep( e.backoff ).then( () => x.request( e ) ) ) : 404 == n.status ? i.Deferred.Pledge( n ) : ( x.error( n ), i.Deferred.Breach( n ) )
} ) ),
init: () => {
if ( l ) return l;
t = b( x.config.root, x.config.path ),
n = x.config.url || "", "/" == n.slice( -1 ) && ( n = n.slice( 0, -1 ) ), r = s.default.parse( n ).pathname, "/" == r.slice( -1 ) && ( r = r.slice( 0, -1 ) );
const e = i.Deferred();
l = e.promise();
const o = n + t;
return x.request( {
method: "OPTIONS",
url: n,
responseType: "headers"
} ).done( e => {
const t = e.result;
let n;
t && ( n = t[ "access-control-allow-methods" ] ) && n.includes( "EDITOR" ) && ( h = !0 )
} ).always( () => {
R( o, {
depth: 0
} ).done( () => e.resolve() ).fail( () => {
const r = [];
i.Deferred.onebyone( t.split( "/" ).filter( e => e ).map( e => {
r.push( e );
const t = r.join( "/" );
return () => x.request( {
method: "MKCOL",
url: n + "/" + t,
headers: {
"Content-Type": "text/xml; charset=UTF-8"
},
responseType: "xml"
} )
} ) ).done( () => e.resolve() ).fail( e.reject )
} )
} ), l
},
list: v( e => R( n + t, {
set_current_list: !0
} ).then( t => {
const n = {};
return t.map( t => {
if ( !e ) {
if ( n[ t.name ] ) return;
n[ t.name ] = !0
}
return {
name: t.name,
size: t.size || 0,
etag: t.etag,
modified: t.modifiedTime,
precision: 1e3,
removed: t.removed
}
} ).filter( e => e )
} ) ),
get: v( e => {
const r = e.name || e;
return x.request( {
method: "GET",
url: n + b( t, r ),
headers: {
"Content-Type": "text/xml; charset=UTF-8"
},
responseType: "arraybuffer"
} ).then( e => {
const t = e.result;
return new Blob( [ t ] )
} )
} ),
put: v( ( e, r, i ) => {
const s = e.name || e;
let o, l, c;
const A = {
"Content-Type": "application/octet-stream"
},
d = null === g;
return i && i.lastModified && ( o = i.lastModified, c = new Date( i.lastModified ).toISOString(), l = i.lastModified / 1e3, ( g || d ) && ( A[ "X-OC-Mtime" ] = l ) ), x.request( {
method: "PUT",
url: n + b( t, s ),
headers: A,
data_type: "typified",
data: {
type: "raw",
value: r
},
responseType: "headers"
} ).then( e => {
const r = e.result;
if ( r && d ) {
let e;
g = !( "accepted" != r[ "x-oc-mtime" ] && ( !r.date || !( e = new Date( r.date ).getTime() ) || e != o && e != Math.floor( l ) ) )
}
if ( !g && !f && c ) return x.request( {
method: "PROPPATCH",
url: n + b( t, s ),
headers: {
"Content-Type": "text/xml; charset=UTF-8"
},
responseType: "xml",
data: [ `<?xml version="1.0"?>\n <d:propertyupdate xmlns:d="DAV:">\n <d:set>\n <d:prop>\n <d:getlastmodified>${c}</d:getlastmodified>\n </d:prop>\n </d:set>\n </d:propertyupdate>` ].join( "" )
} ).then( e => {
var t;
const n = e.result;
let r, i, s;
n && ( r = n.childNodes[ 0 ] ) && ( i = r.getElementsByTagNameNS( "*", "status" )[ 0 ] ) && ( s = null === ( t = i.firstChild ) || void 0 === t ? void 0 : t.nodeValue ) && -1 != s.search( /HTTP\/[0-9\.]+ 403/ ) && ( a.logger.warn( "WebDAV: no way to set file modification date! This might cause redundant up and downloads." ), f = !0 )
}, () => {
a.logger.warn( "WebDAV: no way to set file modification date! This might cause redundant up and downloads." ), f = !0
} )
} )
} ),
delete: v( e => {
const r = e.name || e;
return x.request( {
method: "DELETE",
url: n + b( t, r ),
headers: {
"Content-Type": "text/xml; charset=UTF-8"
}
} )
} ),
watch: {
start: () => {
if ( u ) return;
u = !0;
let e = null;
const r = () => {
if ( p = void 0, u )
if ( !1 === e ) {
const e = c;
R( n + t, {
set_current_list: !0
} ).then( () => {
e && ( Object.keys( e ).forEach( t => {
const n = c[ t ],
r = e[ t ];
n ? r.modifiedTime != n.modifiedTime && m.changes.notify( {
time: n.modifiedTime,
name: n.name
} ) : m.changes.notify( {
time: Date.now(),
name: r.name,
removed: !0
} )
} ), Object.keys( c ).forEach( t => {
if ( !e[ t ] ) {
const e = c[ t ];
m.changes.notify( {
time: e.modifiedTime,
name: e.name
} )
}
} ) )
} ).fail( e => {
a.logger.warn( "WebDAV: file changes check failed", e )
} ).always( () => {
p = window.setTimeout( r, x.config.watch_interval )
} )
} else {
let s = 100;
( ( e, t ) => {
const n = {
"Content-Type": "text/xml; charset=UTF-8",
Depth: 1,
Timeout: 90
};
return t && ( n.Cursor = t ), x.request( {
method: "SUBSCRIBE",
url: e,
headers: n,
responseType: "xml",
no_queue: !0
} ).then( e => {
const t = e.result;
let n;
return null === t ? i.Deferred.Pledge( {
changes: [],
cursor: A
} ) : ( n = _( t ) ) && n.childNodes ? {
changes: k( n ),
cursor: y( n )
} : i.Deferred.Breach()
} )
} )( n + t, A ).then( e => {
const t = e.changes;
A = e.cursor, s = 1, t.forEach( e => {
m.changes.notify( {
time: e.modifiedTime,
name: e.name,
removed: e.removed
} )
} )
}, () => {
if ( null !== e ) return s *= 2, d.sleep( s );
e = !1
} ).always( r )
}
};
v( () => u ? ( r(), i.Deferred.Pledge() ) : i.Deferred.Breach() )()
},
stop: () => {
u = !1, p && ( window.clearTimeout( p ), p = void 0 )
}
},
getRemoteUrl: e => {
if ( h ) return n + b( t, e ) + "?method=editor#bypass=true"
},
getRemoteDomains: () => [ s.default.parse( n ).origin.replace( /^.*:\/\//, "" ) ]
} );
return x
},
y = {
init: e => {
m = e, g = f.run
},
drive: () => {
let e, t;
( e = h.HTML5.LOCALSTORAGE ) && ( t = parseInt( e.getItem( "dropbox_poll_interval" ) || "" ) ) || ( t = 18e5 );
const n = w( v( "drive" ) ),
r = Object.assign( {}, n ),
c = "appDataFolder";
let A, u;
const p = Object.assign( n, {
...n,
config: {
...n.config,
redirect_uri: "https://auth.tampermonkey.net/oauth.php",
refresh_supported: !0,
request_uri: "https://accounts.google.com/o/oauth2/v2/auth",
client_id: "408438522028-3cgn3t3jas3fak7isbnfod1q4h15g2fv.apps.googleusercontent.com",
storage_key: "gd_config",
scope: "https://www.googleapis.com/auth/drive.appdata",
response_type: "token",
watch_interval: t
},
request: e => r.request( e ).then( e => e, t => {
if ( !t || [ 403, 500 ].includes( t.status ) ) return e.backoff = 2 * ( e.backoff || 1e3 ), d.sleep( e.backoff ).then( () => p.request( e ) );
if ( [ 400, 401 ].includes( t.status ) ) {
if ( a.logger.warn( "Google Drive: authentication error", t ), delete p.credentials.access_token, !e.retry_auth ) return e.retry_auth = !0, p.oauth.run().then( () => p.request( e ) )
} else if ( 404 == t.status ) return i.Deferred.Pledge( t );
return p.error( t ), i.Deferred.Breach( t )
} ),
list: r.wait( e => {
let t = [];
const n = i.Deferred(),
r = e => "https://www.googleapis.com/drive/v3/files?" + s.default.hash2params( {
spaces: c,
pageToken: e,
orderBy: "modifiedTime desc",
fields: "nextPageToken, files(id, size, name, modifiedTime, md5Checksum)",
pageSize: 500
} ),
o = e => {
p.request( {
method: "GET",
url: e,
headers: {
"Content-Type": "application/json"
}
} ).then( e => {
const i = e.result,
s = i ? JSON.parse( i ) : {
files: []
};
if ( t = t.concat( s.files ),
s.nextPageToken ) return o( r( s.nextPageToken ) );
n.resolve( t )
} )
};
return o( r() ), n.promise().then( t => {
const n = {};
return t.map( t => {
if ( !e ) {
if ( n[ t.name ] ) return;
n[ t.name ] = !0
}
return {
name: t.name,
size: t.size || 0,
id: t.id,
md5: t.md5Checksum,
modified: new Date( t.modifiedTime ).getTime()
}
} ).filter( e => e )
} )
} ),
get: r.wait( e => {
const t = e.id || e;
return p.request( {
method: "GET",
url: "https://www.googleapis.com/drive/v3/files/" + t + "?" + s.default.hash2params( {
spaces: c,
alt: "media"
} ),
responseType: "arraybuffer"
} ).then( e => {
const t = e.result;
return new Blob( [ t ] )
} )
} ),
put: r.wait( ( e, t, n ) => {
const r = e,
a = r.name || e,
A = r.id,
d = o.createUUID();
return i.Deferred.Pledge().then( () => {
if ( t ) return l.default.blob2str( t )
} ).then( e => {
const t = n && n.lastModified ? new Date( n.lastModified ).toISOString() : void 0,
r = [];
return r.push( "--" + d ), r.push( "Content-Type: application/json" ), r.push( "" ), r.push( JSON.stringify( {
name: a,
parents: A ? void 0 : [ c ],
modifiedTime: t
} ) ), r.push( "--" + d ), e && ( r.push( "Content-Type: application/octet-stream" ),
r.push( "Content-Transfer-Encoding: base64" ), r.push( "" ), r.push( l.default.Base64.encode( e ) ), r.push( "--" + d + "--" ) ), r.push( "" ), p.request( {
method: A || !e ? "PATCH" : "POST",
url: "https://www.googleapis.com/" + ( e ? "upload/" : "" ) + "drive/v3/files" + ( A ? "/" + A : "" ) + "?" + s.default.hash2params( {
uploadType: "multipart"
} ),
headers: {
"Content-Type": "multipart/related; boundary=" + d
},
data: r.join( "\r\n" )
} )
} )
} ),
delete: r.wait( e => {
const t = e.id || e;
return p.request( {
method: "DELETE",
url: "https://www.googleapis.com/drive/v3/files/" + t + "?" + s.default.hash2params( {
spaces: c
} ),
headers: {
"Content-Type": " application/json"
}
} )
} ),
revoke: r.wait( () => {
const e = p.credentials.access_token;
return e ? r.request( {
method: "GET",
url: "https://accounts.google.com/o/oauth2/revoke?" + s.default.hash2params( {
token: e
} )
} ) : i.Deferred.Breach()
} ),
compare: ( e, t ) => {
const n = i.Deferred();
let r;
return ( r = e.md5 ) && r == l.default.MD5( t, "utf-8" ) ? n.resolve( !0 ) : n.resolve( !1 ), n.promise()
},
watch: {
start: () => {
if ( A ) return;
let e;
A = !0;
const t = () => {
u = null, A && p.request( {
method: "GET",
url: "https://www.googleapis.com/drive/v3/changes/?" + s.default.hash2params( {
pageToken: e,
spaces: "appDataFolder",
pageSize: 1e3,
includeRemoved: !0
} ),
headers: {
"Content-Type": " application/json"
}
} ).then( t => {
const n = t.result;
if ( !A ) return i.Deferred.Breach();
const r = n ? JSON.parse( n ) : {};
if ( !( e = r.newStartPageToken ) ) return a.logger.warn( "Google Drive: watch token error", n ), p.watch.stop();
r.nextPageToken && a.logger.warn( "Google Drive: too much changes", n ),
( r.changes || [] ).forEach( e => {
let t;
const n = e.file;
"file" === e.type && n && ( t = Date.parse( e.time ), isNaN( t ) && ( t = Date.now() ), p.changes.notify( {
id: n.id,
time: t,
name: n.name,
removed: e.removed
} ) )
} )
} ).fail( e => {
a.logger.warn( "Google Drive: file changes check failed", e )
} ).always( () => {
u = window.setTimeout( t, p.config.watch_interval )
} )
};
r.wait( () => A ? p.request( {
method: "GET",
url: "https://www.googleapis.com/drive/v3/changes/startPageToken",
headers: {
"Content-Type": " application/json"
}
} ).then( n => {
const r = n.result,
i = r ? JSON.parse( r ) : {};
if ( !( e = i.startPageToken ) ) return a.logger.warn( "Google Drive: watch token error", r ), p.watch.stop();
t()
} ) : i.Deferred.Breach() )()
},
stop: () => {
A = !1, u && ( window.clearTimeout( u ), u = null )
}
}
} );
return p
},
dropbox: e => {
const t = e.path || "",
n = h.HTML5.LOCALSTORAGE;
let r;
n && ( r = parseInt( n.getItem( "dropbox_poll_interval" ) || "" ) ) || ( r = 18e5 );
const s = w( v( "dropbox" ) ),
o = Object.assign( {}, s );
let c, A, p, f, g = !0;
const m = e => {
let n = [];
const r = i.Deferred(),
s = e => {
_.request( {
method: "POST",
url: "https://api.dropboxapi.com/2/files/list_folder" + ( e ? "/continue" : "" ),
headers: {
"Content-Type": " application/json"
},
data: {
path: e ? void 0 : b( t ),
cursor: e
}
} ).then( e => {
const t = e.result,
i = t ? JSON.parse( t ) : {
entries: []
};
if ( n = n.concat( i.entries ), i.has_more && i.cursor ) return s( i.cursor );
r.resolve( {
list: n,
cursor: i.cursor
} )
} ).fail( r.reject )
};
return g ? ( g = !1, _.put( ".version", new Blob( [ u.extension.manifest.version ] ) ).then( () => {
s( e )
} ).fail( r.reject ) ) : s( e ), r.promise()
},
_ = Object.assign( s, {
...s,
config: {
...s.config,
redirect_uri: "https://auth.tampermonkey.net/oauth.php",
request_uri: "https://www.dropbox.com/oauth2/authorize",
client_id: "gq3auc9yym0e21y",
storage_key: "db_config",
response_type: "token",
watch_interval: r ? Number( r ) : 0
},
request: e => o.request( e ).then( e => e, t => !t || [ 500, 429 ].includes( t.status ) ? ( e.backoff = 2 * ( e.backoff || 1e3 ), d.sleep( e.backoff ).then( () => _.request( e ) ) ) : [ 401 ].includes( t.status ) && ( a.logger.warn( "Dropbox: authentication error", t ), delete _.credentials.access_token, !e.retry_auth ) ? ( e.retry_auth = !0,
_.oauth.run().then( () => _.request( e ) ) ) : ( _.error( t ), i.Deferred.Breach( t ) ) ),
list: o.wait( e => m().then( t => {
const n = {};
return A = t.cursor, t.list.map( t => {
if ( !e ) {
if ( n[ t.name ] ) return;
n[ t.name ] = !0
}
return {
name: t.name,
size: t.size,
dropbox_hash: t.content_hash,
modified: new Date( t.client_modified ).getTime(),
precision: 1e3
}
} ).filter( e => e )
} ).always( () => {
c && A && ( c(), c = null )
} ) ),
get: o.wait( e => {
const n = e.name || e;
return _.request( {
method: "POST",
url: "https://content.dropboxapi.com/2/files/download",
headers: {
"Dropbox-API-Arg": JSON.stringify( {
path: b( t, n )
} )
},
responseType: "arraybuffer"
} ).then( e => {
const t = e.result;
return new Blob( [ t ] )
} )
} ),
put: o.wait( ( e, n, r ) => {
const i = e.name || e,
s = r && r.lastModified ? ( new Date( r.lastModified ).toISOString().match( /[^:]*:[^:]*:[^:.a-zA_Z]*/ ) || "" )[ 0 ] + "Z" : void 0;
return _.request( {
method: "POST",
url: "https://content.dropboxapi.com/2/files/upload",
headers: {
"Dropbox-API-Arg": JSON.stringify( {
path: b( t, i ),
client_modified: s,
mode: "overwrite"
} ),
"Content-Type": "application/octet-stream"
},
data_type: "typified",
data: {
type: "raw",
value: n
}
} )
} ),
delete: o.wait( e => {
const n = e.name || e;
return _.request( {
method: "POST",
url: "https://api.dropboxapi.com/2/files/delete",
headers: {
"Content-Type": " application/json"
},
data: {
path: b( t, n )
}
} )
} ),
compare: ( e, t ) => {
const n = i.Deferred();
if ( window.crypto && window.ArrayBuffer ) {
const r = 4194304,
i = l.default.str2abSync( t, {
encoding: "utf-8"
} ),
s = [],
o = i.byteLength;
let c = 1;
const A = ( e, t ) => {
const n = new Uint8Array( e.byteLength + t.byteLength );
return n.set( new Uint8Array( e ), 0 ),
n.set( new Uint8Array( t ), e.byteLength ), n.buffer
},
d = () => {
if ( 0 == --c ) {
let t = new window.ArrayBuffer( s.map( e => ( null == e ? void 0 : e.byteLength ) || 0 ).reduce( ( e, t ) => e + t, 0 ) );
s.forEach( e => {
e && ( t = A( t, e ) )
} ), window.crypto.subtle.digest( "SHA-256", t ).then( t => {
const r = Array.from( new Uint8Array( t ) ).map( e => ( "00" + e.toString( 16 ) ).slice( -2 ) ).join( "" );
n.resolve( r == e.dropbox_hash )
} )
}
};
for ( let e = 0, t = 0; t < o; t += r, e++ )( e => {
s.push( null ), c++, window.crypto.subtle.digest( "SHA-256", i.slice( t, t + Math.min( r, o - t ) ) ).then( t => {
s[ e ] = t, d()
}, () => {
a.logger.warn( "Dropbox: unable to calculate SHA-256 hashes" ), n.reject()
} )
} )( e );
d()
} else a.logger.warn( "Dropbox: unable to calculate SHA-256 hashes" ), n.reject();
return n.promise()
},
watch: {
start: () => {
if ( p ) return;
p = !0;
let e = 0;
const t = () => {
if ( f = null, e = 0, p ) return A ? void _.request( {
method: "POST",
url: "https://notify.dropboxapi.com/2/files/list_folder/longpoll",
headers: {
"Content-Type": " application/json"
},
no_auth: !0,
no_queue: !0,
data: {
cursor: A,
timeout: 180
}
} ).then( t => {
const n = t.result;
if ( !p ) return i.Deferred.Breach();
const r = n ? JSON.parse( n ) : {};
return r.backoff && ( e = 1e3 * r.backoff ), r.changes ? d.sleep( 6e4 ).then( () => m( A ) ).then( e => ( A = e.cursor ) ? e.list : ( a.logger.warn( "Dropbox: watch token error", n ), _.watch.stop() ) ) : null
} ).then( e => {
e && e.forEach( e => {
let t;
const n = e[ ".tag" ];
[ "file", "deleted" ].includes( n ) && ( t = Date.parse( e.server_modified ), _.changes.notify( {
id: e.id,
time: t,
name: e.name,
removed: "deleted" == n
} ) )
} )
} ).fail( e => {
a.logger.warn( "Dropbox: file changes check failed", e )
} ).always( () => {
f = window.setTimeout( t, e + _.config.watch_interval )
} ) : ( a.logger.warn( "Dropbox: watch token error", A ), _.watch.stop() )
};
o.wait( () => p ? ( A ? t() : c = t, i.Deferred.Pledge() ) : i.Deferred.Breach() )()
},
stop: () => {
p = !1, f && ( window.clearTimeout( f ), f = null )
}
},
getRemoteDomains: () => [ "dropbox.com", "dropboxapi.com" ]
} );
return _
},
onedrive: e => {
const t = e.path || "";
let n, r, s;
( n = h.HTML5.LOCALSTORAGE ) && ( r = parseInt( n.getItem( "onedrive_poll_interval" ) || "" ) ) || ( r = 18e5 );
const o = w( v( "onedrive" ) ),
l = Object.assign( {}, o );
let c, A;
const u = e => {
const n = i.Deferred();
let r = [];
const o = i => {
p.request( {
method: "GET",
url: i || "https://api.onedrive.com/v1.0/drive/special/approot:" + b( t ) + ":/children",
headers: {
"Content-Type": " application/json"
}
} ).then( t => {
const i = t.result,
a = i ? JSON.parse( i ) : {
value: []
};
if ( r = r.concat( a.value.map( e => {
var t, n, r;
const i = ( null === ( t = null == e ? void 0 : e.fileSystemInfo ) || void 0 === t ? void 0 : t.lastModifiedDateTime ) || 0,
s = ( null === ( r = null === ( n = null == e ? void 0 : e.file ) || void 0 === n ? void 0 : n.hashes ) || void 0 === r ? void 0 : r.sha1Hash ) || void 0;
return {
id: e.id,
name: e.name,
size: e.size,
sha1: s,
modified: new Date( i ).getTime()
}
} ) ), a[ "@odata.nextLink" ] ) return o( a[ "@odata.nextLink" ] );
e.set_current_list && ( s = r ), n.resolve( r )
} )
};
return o(), n.promise()
},
p = Object.assign( o, {
...o,
config: {
...o.config,
redirect_uri: "https://auth.tampermonkey.net/oauth.php",
request_uri: "https://login.live.com/oauth20_authorize.srf",
client_id: "000000004C1A3122",
storage_key: "od_config",
response_type: "token",
scope: "onedrive.appfolder",
watch_interval: r
},
getRemoteDomains: () => [ "onedrive.live.com" ],
request: e => l.request( e ).then( e => e, t => {
if ( !t || [ 403, 500 ].includes( t.status ) ) return e.backoff = 2 * ( e.backoff || 1e3 ), d.sleep( e.backoff ).then( () => p.request( e ) );
if ( [ 401 ].includes( t.status ) ) {
if ( a.logger.warn( "OneDrive: authentication error", t ), delete p.credentials.access_token, !e.retry_auth ) return e.retry_auth = !0, p.oauth.run().then( () => p.request( e ) )
} else if ( 404 == t.status ) return i.Deferred.Pledge( t );
return p.error( t ), i.Deferred.Breach( t )
} ),
list: l.wait( () => u( {
set_current_list: !0
} ) ),
get: l.wait( e => {
const n = e.name || e;
return p.request( {
method: "GET",
url: "https://api.onedrive.com/v1.0/drive/special/approot:" + b( t, encodeURIComponent( n ) ) + ":/content",
responseType: "arraybuffer"
} ).then( e => {
const t = e.result;
return new Blob( [ t ] )
} )
} ),
put: l.wait( ( e, n, r ) => {
const i = e.name || e,
s = encodeURIComponent( i.replace( /[#%<>:"|\?\*\/\\]/g, "-" ) );
return p.request( {
method: "PUT",
url: "https://api.onedrive.com/v1.0/drive/special/approot:" + b( t, s ) + ":/content",
headers: {
"Content-Type": "application/octet-stream"
},
data_type: "typified",
data: {
type: "raw",
value: n
}
} ).then( e => {
const t = r && r.lastModified ? new Date( r.lastModified ).toISOString() : void 0;
if ( !t ) return e;
const n = e.result,
i = JSON.parse( n );
return p.request( {
method: "PATCH",
url: "https://api.onedrive.com/v1.0/drive/items/" + i.id,
headers: {
"Content-Type": "application/json"
},
data: JSON.stringify( {
fileSystemInfo: {
lastModifiedDateTime: t
}
} )
} )
} )
} ),
delete: l.wait( e => {
const n = e.name || e;
return p.request( {
method: "DELETE",
url: "https://api.onedrive.com/v1.0/drive/special/approot:" + b( t, encodeURIComponent( n ) )
} )
} ),
watch: {
start: () => {
if ( c ) return;
c = !0;
const e = () => {
if ( A = null, !c ) return;
const t = s;
u( {
set_current_list: !0
} ).then( () => {
if ( !t ) return;
const e = {},
n = {};
s.forEach( t => {
e[ t.id ] = t
} ), t.forEach( e => {
n[ e.id ] = e
} ), Object.keys( n ).forEach( t => {
const r = e[ t ],
i = n[ t ];
r ? i.modified != r.modified && p.changes.notify( {
time: r.modified,
name: r.name
} ) : p.changes.notify( {
time: Date.now(),
name: i.name,
removed: !0
} )
} ), Object.keys( e ).forEach( t => {
if ( !n[ t ] ) {
const n = e[ t ];
p.changes.notify( {
time: n.modified,
name: n.name
} )
}
} )
} ).fail( e => {
a.logger.warn( "OneDrive: file changes check failed", e )
} ).always( () => {
A = window.setTimeout( e, p.config.watch_interval )
} )
};
l.wait( () => c ? ( e(),
i.Deferred.Pledge() ) : i.Deferred.Breach() )()
},
stop: () => {
c = !1, A && ( window.clearTimeout( A ), A = null )
}
}
} );
return p
},
yandex: () => {
let e, t;
( e = h.HTML5.LOCALSTORAGE ) && ( t = parseInt( e.getItem( "yandex_poll_interval" ) || "" ) ) || ( t = 18e5 );
const n = w( v( "yandex" ) ),
r = k( n ),
s = Object.assign( {}, r );
let o;
const c = Object.assign( r, {
...n,
...r,
config: {
...r.config,
root: "/Programs/Tampermonkey",
url: "https://webdav.yandex.ru",
redirect_uri: "https://auth.tampermonkey.net/oauth.php",
refresh_supported: !0,
request_uri: "https://oauth.yandex.com/authorize",
client_id: "a591fcd2ccd248f0baa84222898065f4",
storage_key: "ya_config",
response_type: "token",
auth_prefix: "OAuth",
watch_interval: t
},
init: () => {
if ( o ) return o;
const e = i.Deferred();
return o = e.promise(), c.request( {
method: "GET",
url: "https://cloud-api.yandex.net/v1/disk/"
} ).done( e => {
const t = e.result,
n = t ? JSON.parse( t ) : {};
n.total_space && n.used_space && ( n.used_space + 5e7 > n.total_space ? a.logger.warn( "Yandex: low disk space warning, only " + ( n.total_space - n.used_space ) + " bytes available" ) : a.logger.log( "Yandex: " + ( n.total_space - n.used_space ) + " bytes on disk available!" ) )
} ).always( () => {
e.consume( s.init() )
} ), o
},
getRemoteDomains: () => [ "disk.yandex.com" ],
list: e => s.list( e ).then( e => e.map( e => ( e.md5 = e.etag, e ) ) ),
request: e => ( () => {
const t = e.headers = e.headers || {};
if ( t[ "X-Requested-With" ] = "XMLHttpRequest",
p && "PUT" == e.method && e.data && "raw" == e.data.type && e.data.value ) {
const n = i.Deferred();
return l.default.blob2str( e.data.value ).then( e => {
t.Etag = l.default.MD5( e ), t.Sha256 = p( e, "ASCII" )
} ).always( n.resolve ), n.promise()
}
return i.Deferred.Pledge()
} )().then( () => s.request( e ).then( e => e, t => t && [ 401 ].includes( t.status ) && ( a.logger.warn( "Yandex: authentication error", t ), delete c.credentials.access_token, !e.retry_auth ) ? ( e.retry_auth = !0, c.oauth.run().then( () => s.request( e ) ) ) : t ) ),
compare: ( e, t ) => {
const n = i.Deferred();
let r;
return ( r = e.md5 ) && r == l.default.MD5( t, "utf-8" ) ? n.resolve( !0 ) : n.resolve( !1 ), n.promise()
}
} );
return c
},
webdav: e => {
let t, n;
( t = h.HTML5.LOCALSTORAGE ) && ( n = parseInt( t.getItem( "webdav_poll_interval" ) || "" ) ) || ( n = 18e5 );
const r = e.url;
if ( r ) {
const t = r.toLowerCase();
t.startsWith( "webdav" ) ? e.url = r.replace( /^webdav/i, "http" ) : t.startsWith( "http" ) || ( e.url = "http://" + r )
}
const s = k( ( e => {
const t = Object.assign( {}, e ),
n = t.type;
if ( void 0 === n ) throw new Error( "Internal error" );
const r = Object.assign( e, {
...t,
config: {
...t.config
},
credentials: {},
request: e => r.credentials.basic_auth ? ( e.no_auth || ( e.headers = e.headers || {}, e.headers.Authorization = "Basic " + r.credentials.basic_auth ), t.request( e ) ) : i.Deferred.Breach( "Authentication failed" ),
wait: e => t.wait( ( ...t ) => e( ...t ) )
} );
let s;
return Object.defineProperty( r, "credentials", {
get: () => ( void 0 === s && ( c.default.tC( n, "init" ), s = {
basic_auth: r.config.basic_auth
} ), s ),
set: e => {
s = e
},
enumerable: !1
} ), r
} )( v( "webdav" ) ) );
return Object.assign( s, {
...s,
config: {
...s.config,
root: "Tampermonkey",
watch_interval: n,
...e
}
} )
}
};
t.default = y
}, , function ( e, t, n ) {
"use strict";
var r = this && this.__importDefault || function ( e ) {
return e && e.__esModule ? e : {
default: e
}
};
Object.defineProperty( t, "__esModule", {
value: !0
} );
const i = n( 1 ),
s = n( 3 ),
o = r( n( 6 ) ),
a = r( n( 33 ) ),
l = n( 10 ),
c = n( 2 ),
A = ( () => {
let e, t, n = !1;
const r = () => {
const e = i.Deferred();
return t = e, e
};
return {
write: () => {
const t = i.Deferred();
return n = !1, e = new a.default, t.resolve( e ), t.promise()
},
open: i => {
const s = r();
return n = !0,
a.default.loadAsync( i ).then( t => {
e = t, s.resolve( e )
}, e => {
t && t.reject( e ), s.reject( e )
} ), s.promise()
},
entries: () => {
const t = r(),
n = e.files,
i = Object.keys( n ).map( e => {
const t = n[ e ];
if ( t && !t.dir ) return {
filename: t.name
}
} ).filter( e => e );
return t.resolve( i ), t.promise()
},
get: t => {
const n = r(),
i = e.file( t.filename );
return i ? i.async( "arraybuffer" ).then( e => {
n.resolve( e )
} ) : n.resolve(), n.promise()
},
put: ( t, n, i ) => {
const s = r();
try {
e.file( t, n, {
date: i ? new Date( i ) : void 0
} ), s.resolve()
} catch ( e ) {
s.reject( e )
}
return s.promise()
},
end: () => {
const t = r();
return n ? t.resolve() : e.generateAsync( {
type: "blob",
compression: "DEFLATE",
comment: "Created by Tampermonkey"
} ).then( e => {
t.resolve( e )
}, e => {
t.reject( e )
} ), t.promise()
}
}
} )(),
d = {
zip: {
create: function ( e, t ) {
const n = i.Deferred();
let r = 0;
return i.Deferred.Pledge().then( () => A.write() ).then( () => {
const t = i.Deferred(),
s = {},
a = ( e, t ) => {
let n = [ e, t ].join( "." );
if ( s[ n ] ) {
let r;
do {
r = e + " (" + s[ n ] + ")", n = [ r, t ].join( "." ), s[ n ]++
} while ( s[ n ] );
return a( r, t )
}
return s[ n ] = 1, n
},
d = e.length,
u = () => {
if ( !e.length ) return t.resolve();
const s = e.shift();
if ( !s ) return t.resolve();
const p = s.meta.name.replace( /[\\\/$*?|]/g, "-" ),
h = a( p, "user.js" ),
f = a( p, "options.json" ),
g = a( p, "storage.json" ),
m = JSON.stringify( {
options: s.options,
settings: s.settings,
meta: s.meta
} ),
_ = s.storage ? JSON.stringify( s.storage ) : null;
r += s.source.length, c.logger.log( "porter: add to zip", h, r ), n.notify( "Zip: " + Math.floor( ( d - e.length ) / d * 100 ) + "%" ), A.put( h, s.source, s.meta.modified ).then( () => ( r += m.length,
c.logger.log( "porter: add to zip", f, r ), A.put( f, m ) ) ).then( () => _ ? ( r += _.length, c.logger.log( "porter: add to zip", g, r ), A.put( g, _ ) ) : i.Deferred.Pledge() ).then( () => {
if ( !s.resources.length && !s.requires.length ) return i.Deferred.Pledge();
const e = [];
return [ "resources", "requires" ].forEach( t => {
s[ t ].forEach( n => {
if ( void 0 === n.source ) return;
const r = n.meta.name.replace( /[\\\/$*?|]/g, "-" ),
i = o.default.MD5( t + n.meta.url ),
s = [ h, i, r ].join( "-" ),
a = JSON.stringify( n.meta ),
l = o.default.str2abSync( n.source, {
encoding: "resources" == t ? void 0 : "UTF-8"
} ),
c = A.put( s, l ).then( () => A.put( s + "." + t + ".json", a ) );
e.push( c )
} )
} ), i.Deferred.when( e )
} ).fail( e => {
c.logger.log( "porter: add to zip failed", e )
} ).always( async () => {
c.logger.log( "porter: add to zip -> next round" ), await l.sleepEvery( 1e3 ), u()
} )
};
return u(), t.promise()
} ).then( () => ( c.logger.log( "porter: add global props" ), t ? A.put( "Tampermonkey.global.json", JSON.stringify( t ) ) : i.Deferred.Pledge() ) ).then( () => A.end() ).done( e => {
n.resolve( e )
} ).fail( () => {
n.reject()
} ),
n.promise()
},
read: function ( e ) {
const t = i.Deferred();
let n;
return i.Deferred.Pledge().then( () => A.open( e ) ).then( () => A.entries() ).then( e => {
const r = i.Deferred(),
a = {},
d = {},
u = e.length,
p = () => {
let i;
if ( e.length && ( i = e.shift() ) ) c.logger.log( "porter: read from zip", i.filename ), A.get( i ).done( e => {
let t = i.filename.match( /((.*)\.(storage\.json)|(.*)\.(options\.json)|(.*)\.(global\.json)|(.*)\.(user\.js)|(.*)\.user\.js-[0-9a-f]+-.*\.(resources\.json)|(.*)\.user\.js-[0-9a-f]+-.*\.(requires\.json))$/ );
if ( t && ( t = t.slice( 1 ).filter( e => e ) ), !e || !t || t.length < 3 ) d[ i.filename ] = e;
else try {
const r = t[ 1 ],
s = t[ 2 ],
l = o.default.ab2strSync( e, "UTF-8" );
"global.json" == s ? n = JSON.parse( l ) : ( a[ r ] = a[ r ] || {
resources: {},
requires: {}
}, "user.js" == s ? a[ r ].source = l : "options.json" == s ? a[ r ].options = JSON.parse( l ) : "resources.json" == s ? a[ r ].resources[ i.filename ] = {
name: i.filename,
data: JSON.parse( l )
} : "requires.json" == s ? a[ r ].requires[ i.filename ] = {
name: i.filename,
data: JSON.parse( l )
} : "storage.json" == s && ( a[ r ].storage = JSON.parse( l ) ) )
} catch ( e ) {
c.logger.warn( "porter: read from zip failed", e )
}
} ).always( async () => {
t.notify( "Zip: " + Math.floor( ( u - e.length ) / u * 100 ) + "%" ), await l.sleepEvery( 1e3 ), p()
} );
else {
const e = [];
s.each( a, t => {
const n = t.options || {};
n.source = t.source, n.storage = t.storage, [ "resources", "requires" ].forEach( e => {
const r = t[ e ];
r && s.each( r, t => {
let r, i;
const s = t.name.replace( "." + e + ".json", "" );
( i = d[ s ] ) && ( n[ e ] = r = n[ e ] || [], r.push( {
meta: t.data,
source: o.default.ab2strSync( i, {
encoding: "resources" == e ? void 0 : "UTF-8"
} )
} ) )
} )
} ), e.push( n )
} ), r.resolve( {
scripts: e,
global_settings: n
} )
}
};
return p(), r.promise()
} ).done( e => {
t.resolve( e )
} ).fail( () => {
t.reject()
} ), t.promise()
}
},
json: {
create: function ( e, t ) {
const n = i.Deferred(),
r = {
created_by: "Tampermonkey",
version: "1",
scripts: [],
settings: t
};
return e.forEach( e => {
const t = {
name: e.meta.name,
options: e.options,
storage: e.storage,
enabled: e.settings.enabled,
position: e.settings.position,
file_url: e.meta.file_url,
uuid: e.meta.uuid,
source: o.default.Base64.encode( o.default.UTF8.encode( e.source ) )
};
[ "resources", "requires" ].forEach( n => {
const r = e[ n ];
if ( !r || !r.length ) return;
const i = t[ n ] = [];
r.forEach( e => {
if ( void 0 === e.source ) return;
const t = e.meta,
n = o.default.Base64.encode( o.default.UTF8.encode( e.source ) );
i.push( {
meta: t,
source: n
} )
} )
} ), r.scripts.push( t )
} ), n.resolve( JSON.stringify( r ) ), n.promise()
},
read: function ( e ) {
const t = i.Deferred(),
n = e => {
if ( e.trim() ) {
let r = null;
try {
r = JSON.parse( e );
const n = e => {
if ( e && e.length ) return e.map( e => ( {
meta: e.meta,
source: o.default.UTF8.decode( o.default.Base64.decode( e.source ) )
} ) )
},
i = r.scripts.map( e => ( {
meta: {
uuid: e.uuid,
name: e.name,
file_url: e.file_url
},
settings: {
enabled: e.enabled,
position: e.position
},
options: e.options,
storage: e.storage,
source: o.default.UTF8.decode( o.default.Base64.decode( e.source ) ),
resources: n( e.resources ) || [],
requires: n( e.requires ) || []
} ) );
return t.resolve( {
scripts: i,
global_settings: r.settings
} )
} catch ( t ) {
const r = "<body>",
i = "</body>";
if ( -1 != e.indexOf( r ) ) {
const t = e.indexOf( r ),
s = e.lastIndexOf( i );
if ( -1 != t && -1 != s ) return e = e.substr( t + r.length, s - ( t + r.length ) ), n( e )
}
}
}
t.reject()
};
return n( e ), t.promise()
}
}
};
t.default = d
}, function ( e, t ) {
"use strict";
Object.defineProperty( t, "__esModule", {
value: !0
} ), Object.defineProperties( Promise.prototype, {
done: {
value: function ( e ) {
return this.then( ( ...t ) => e.apply( this, t ) )
}
},
fail: {
value: function ( e ) {
return this.then( () => {}, ( ...t ) => e.apply( this, t ) )
}
},
always: {
value: function ( e ) {
return this.then( ( ...t ) => e.apply( this, t ), ( ...t ) => e.apply( this, t ) )
}
}
} ), t.default = Promise
}, function ( e, t, n ) {
"use strict";
var r = n( 1 ),
i = n( 3 ),
s = n( 14 );
const o = rea.FEATURES;
let a;
const l = o.RUNTIME.BROWSER_VERSION;
let c = !0;
a = o.RUNTIME.CHROME ? l >= 83 ? 2020 : l >= 64 ? 2018 : l >= 59 ? 2017 : l >= 47 ? 2015 : 5 : o.RUNTIME.SAFARI ? l >= 14 ? 2020 : l >= 11 ? 2018 : l >= 10 ? 2017 : l >= 6 ? 2015 : 3 : o.RUNTIME.EDGE ? l >= 83 ? 2020 : l >= 16 ? 2017 : 2016 : o.RUNTIME.FIREFOX ? l >= 77 ? 2020 : l >= 58 ? 2018 : l >= 52 ? 2017 : 2016 : 5;
const A = {};
o.RUNTIME.CHROME && l < 77 ? ( c = !1,
console.warn( "hint: disable inline ESLint config due to web worker CSP issues", "https://bugs.chromium.org/p/chromium/issues/detail?id=777076", "https://bugs.chromium.org/p/chromium/issues/detail?id=159303" ) ) : o.RUNTIME.EDGE ? ( c = !1, console.warn( "hint: disable inline ESLint config due to web worker CSP issues" ) ) : window.Worker || ( c = !1,
console.warn( "hint: disable inline ESLint config because web workers are unavailable and this extension's CSP doesn't allow unsafe eval, which is required for ESLint's dynamic reconfigration" ) );
const d = {
env: {
es6: a >= 2015,
browser: !0
},
parserOptions: {
ecmaVersion: a,
sourceType: "script",
ecmaFeatures: {
globalReturn: !0
}
},
rules: {
curly: [ 1, "multi-line" ],
"dot-location": 0,
"dot-notation": [ 1, {
allowKeywords: !0
} ],
"no-caller": 1,
"no-case-declarations": 2,
"no-div-regex": 0,
"no-empty-pattern": 2,
"no-eq-null": 0,
"no-eval": 1,
"no-extra-bind": 1,
"no-fallthrough": 1,
"no-implicit-globals": 2,
"no-implied-eval": 1,
"no-lone-blocks": 1,
"no-loop-func": 1,
"no-multi-spaces": 1,
"no-multi-str": 1,
"no-native-reassign": 1,
"no-octal-escape": 2,
"no-octal": 2,
"no-proto": 1,
"no-redeclare": 2,
"no-return-assign": 1,
"no-sequences": 1,
"no-undef": 1,
"no-useless-call": 1,
"no-useless-concat": 1,
"no-with": 1
}
},
u = {};
let p;
Object( i.each )( [ "uneval", "unsafeWindow", "TM_info", "GM_info", "GM", "GM_addStyle", "GM_deleteValue", "GM_listValues", "GM_getValue", "GM_download", "GM_log", "GM_registerMenuCommand", "GM_unregisterMenuCommand", "GM_openInTab", "GM_setValue", "GM_addValueChangeListener", "GM_removeValueChangeListener", "GM_xmlhttpRequest", "GM_getTab", "GM_setTab", "GM_saveTab", "GM_getTabs", "GM_setClipboard", "GM_notification", "GM_getResourceText", "GM_getResourceURL", "GM_screenShot" ], e => {
u[ e ] = "writeable"
} ), d.globals = u;
const h = {};
let f;
const g = {
hint: function ( e, t, n ) {
const a = Object( r.Deferred )(),
l = a.promise(),
g = n || A;
let m;
if ( t ? ( m = t, m.globals = {
...m.globals || {},
...u
} ) : m = d, window.Worker && !o.RUNTIME.SAFARI ) {
const t = () => {
p = new Worker( "worker/lint.js" ), p.onmessage = e => {
const t = e.data,
n = t.id;
let r, i, s;
n && ( r = h[ n ] ) && ( i = r.d ) && ( delete h[ n ], ( s = t.results ) ? ( c || ( s = s.map( e => {
let t;
return e.message && ( t = e.message.match( /Configuration for rule "([^"]+)"[\s\S]*evaluate a string as JavaScript[\s\S]*/ ) ) && ( e.message = 'Rule "' + t[ 1 ] + '": ESLint inline configuration is not supported by this browser.', e.severity = 1 ), e
} ) ), i.resolve( s ) ) : i.reject( t.error || "Unknown error" ) ), _( n )
}, p.postMessage( {
method: "base_uri",
value: rea.extension.getURL( "/" )
} ), f = null
};
var _ = e => {
if ( p || t(), e ) f = null;
else if ( f ) return;
let n, r = Date.now();
Object.keys( h ).forEach( e => {
h[ e ].ts <= r && ( n = h[ e ], r = n.ts )
} ), n && ( f = n.id,
p.postMessage( {
method: n.method,
id: n.id,
config: n.c,
options: n.o,
text: n.t
} ) )
};
l.abort = () => {
p && ( p.terminate(), p = null, _() )
}, p || t();
const n = Object( i.createUUID )();
h[ n ] = {
method: "lint",
id: n,
d: a,
t: e,
c: m,
o: g,
ts: Date.now()
}, _()
} else Object( s.vendor )( "vendor/eslint/eslint", () => {
try {
const t = {
problem: "error",
layout: 1,
suggestion: 1
},
n = new window.eslint.Linter;
m.extends && m.extends.includes( "eslint:recommended" ) && ( m.rules = m.rules || [], n.getRules().forEach( ( function ( e, n ) {
let r, i, s, o, a;
if ( !( e && ( i = e.meta ) && void 0 === m.rules[ n ] && ( r = i.docs ) && r.recommended ) ) return;
const l = [ ( i.type ? t[ i.type ] : null ) || 1 ];
( s = i.schema ) && ( o = {}, s.forEach( e => {
"object" == e.type && Object.keys( e.properties ).forEach( t => {
const n = e.properties[ t ].default;
void 0 !== n && !1 !== n && ( o[ t ] = e.properties[ t ].default, a = !0 )
} )
} ), a && l.push( o ) ), m.rules[ n ] = l
} ) ) );
const r = n.verify( e, m, g );
a.resolve( r || [] )
} catch ( e ) {
a.reject( e )
}
} );
return l
},
globals: u,
config: d,
options: A,
autoHintMaxLength: 5e4
};
t.a = g
}, function ( e ) {
var t;
t = function () {
return this
}();
try {
t = t || new Function( "return this" )()
} catch ( e ) {
"object" == typeof window && ( t = window )
}
e.exports = t
}, , function ( e, t, n ) {
"use strict";
var r = this && this.__importDefault || function ( e ) {
return e && e.__esModule ? e : {
default: e
}
};
Object.defineProperty( t, "__esModule", {
value: !0
} ), t.Promise = t.fromEntries = void 0;
const i = n( 23 );
Object.defineProperty( t, "fromEntries", {
enumerable: !0,
get: function () {
return i.fromEntries
}
} );
const s = r( n( 18 ) );
t.Promise = s.default
}, function ( e, t ) {
"use strict";
let n;
Object.defineProperty( t, "__esModule", {
value: !0
} ), t.fromEntries = void 0, t.fromEntries = n, Object.fromEntries ? t.fromEntries = n = Object.fromEntries : ( t.fromEntries = n = e => [ ...e ].reduce( ( e, [ t, n ] ) => ( e[ t ] = n, e ), {} ), Object.fromEntries = n )
}, , , , , , , , , , function ( e, t, n ) {
( function ( t, n, r ) {
e.exports = function e( t, n, r ) {
function i( o ) {
if ( !n[ o ] ) {
if ( !t[ o ] ) {
if ( s ) return s( o, !0 );
var a = new Error( "Cannot find module '" + o + "'" );
throw a.code = "MODULE_NOT_FOUND", a
}
var l = n[ o ] = {
exports: {}
};
t[ o ][ 0 ].call( l.exports, ( function ( e ) {
return i( t[ o ][ 1 ][ e ] || e )
} ), l, l.exports, e, t, n, r )
}
return n[ o ].exports
}
for ( var s = !1, o = 0; o < r.length; o++ ) i( r[ o ] );
return i
}( {
1: [ function ( e, t, n ) {
"use strict";
var r = e( "./utils" ),
i = e( "./support" ),
s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
n.encode = function ( e ) {
for ( var t, n, i, o, a, l, c, A = [], d = 0, u = e.length, p = u, h = "string" !== r.getTypeOf( e ); d < e.length; ) p = u - d, h ? ( t = e[ d++ ], n = d < u ? e[ d++ ] : 0, i = d < u ? e[ d++ ] : 0 ) : ( t = e.charCodeAt( d++ ), n = d < u ? e.charCodeAt( d++ ) : 0, i = d < u ? e.charCodeAt( d++ ) : 0 ), o = t >> 2,
a = ( 3 & t ) << 4 | n >> 4, l = p > 1 ? ( 15 & n ) << 2 | i >> 6 : 64, c = p > 2 ? 63 & i : 64, A.push( s.charAt( o ) + s.charAt( a ) + s.charAt( l ) + s.charAt( c ) );
return A.join( "" )
}, n.decode = function ( e ) {
var t, n, r, o, a, l, c = 0,
A = 0,
d = "data:";
if ( e.substr( 0, d.length ) === d ) throw new Error( "Invalid base64 input, it looks like a data url." );
var u, p = 3 * ( e = e.replace( /[^A-Za-z0-9\+\/\=]/g, "" ) ).length / 4;
if ( e.charAt( e.length - 1 ) === s.charAt( 64 ) && p--, e.charAt( e.length - 2 ) === s.charAt( 64 ) && p--, p % 1 != 0 ) throw new Error( "Invalid base64 input, bad content length." );
for ( u = i.uint8array ? new Uint8Array( 0 | p ) : new Array( 0 | p ); c < e.length; ) t = s.indexOf( e.charAt( c++ ) ) << 2 | ( o = s.indexOf( e.charAt( c++ ) ) ) >> 4, n = ( 15 & o ) << 4 | ( a = s.indexOf( e.charAt( c++ ) ) ) >> 2, r = ( 3 & a ) << 6 | ( l = s.indexOf( e.charAt( c++ ) ) ), u[ A++ ] = t, 64 !== a && ( u[ A++ ] = n ), 64 !== l && ( u[ A++ ] = r );
return u
}
}, {
"./support": 30,
"./utils": 32
} ],
2: [ function ( e, t ) {
"use strict";
function n( e, t, n, r, i ) {
this.compressedSize = e, this.uncompressedSize = t, this.crc32 = n, this.compression = r, this.compressedContent = i
}
var r = e( "./external" ),
i = e( "./stream/DataWorker" ),
s = e( "./stream/DataLengthProbe" ),
o = e( "./stream/Crc32Probe" );
s = e( "./stream/DataLengthProbe" ), n.prototype = {
getContentWorker: function () {
var e = new i( r.Promise.resolve( this.compressedContent ) ).pipe( this.compression.uncompressWorker() ).pipe( new s( "data_length" ) ),
t = this;
return e.on( "end", ( function () {
if ( this.streamInfo.data_length !== t.uncompressedSize ) throw new Error( "Bug : uncompressed data size mismatch" )
} ) ), e
},
getCompressedWorker: function () {
return new i( r.Promise.resolve( this.compressedContent ) ).withStreamInfo( "compressedSize", this.compressedSize ).withStreamInfo( "uncompressedSize", this.uncompressedSize ).withStreamInfo( "crc32", this.crc32 ).withStreamInfo( "compression", this.compression )
}
}, n.createWorkerFrom = function ( e, t, n ) {
return e.pipe( new o ).pipe( new s( "uncompressedSize" ) ).pipe( t.compressWorker( n ) ).pipe( new s( "compressedSize" ) ).withStreamInfo( "compression", t )
}, t.exports = n
}, {
"./external": 6,
"./stream/Crc32Probe": 25,
"./stream/DataLengthProbe": 26,
"./stream/DataWorker": 27
} ],
3: [ function ( e, t, n ) {
"use strict";
var r = e( "./stream/GenericWorker" );
n.STORE = {
magic: "\0\0",
compressWorker: function () {
return new r( "STORE compression" )
},
uncompressWorker: function () {
return new r( "STORE decompression" )
}
}, n.DEFLATE = e( "./flate" )
}, {
"./flate": 7,
"./stream/GenericWorker": 28
} ],
4: [ function ( e, t ) {
"use strict";
var n = e( "./utils" ),
r = function () {
for ( var e, t = [], n = 0; n < 256; n++ ) {
e = n;
for ( var r = 0; r < 8; r++ ) e = 1 & e ? 3988292384 ^ e >>> 1 : e >>> 1;
t[ n ] = e
}
return t
}();
t.exports = function ( e, t ) {
return void 0 !== e && e.length ? "string" !== n.getTypeOf( e ) ? function ( e, t, n, i ) {
var s = r,
o = i + n;
e ^= -1;
for ( var a = i; a < o; a++ ) e = e >>> 8 ^ s[ 255 & ( e ^ t[ a ] ) ];
return -1 ^ e
}( 0 | t, e, e.length, 0 ) : function ( e, t, n, i ) {
var s = r,
o = i + n;
e ^= -1;
for ( var a = i; a < o; a++ ) e = e >>> 8 ^ s[ 255 & ( e ^ t.charCodeAt( a ) ) ];
return -1 ^ e
}( 0 | t, e, e.length, 0 ) : 0
}
}, {
"./utils": 32
} ],
5: [ function ( e, t, n ) {
"use strict";
n.base64 = !1, n.binary = !1, n.dir = !1, n.createFolders = !0, n.date = null, n.compression = null, n.compressionOptions = null, n.comment = null,
n.unixPermissions = null, n.dosPermissions = null
}, {} ],
6: [ function ( e, t ) {
"use strict";
var n;
n = "undefined" != typeof Promise ? Promise : e( "lie" ), t.exports = {
Promise: n
}
}, {
lie: 37
} ],
7: [ function ( e, t, n ) {
"use strict";
function r( e, t ) {
a.call( this, "FlateWorker/" + e ), this._pako = null, this._pakoAction = e, this._pakoOptions = t, this.meta = {}
}
var i = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array,
s = e( "pako" ),
o = e( "./utils" ),
a = e( "./stream/GenericWorker" ),
l = i ? "uint8array" : "array";
n.magic = "\b\0", o.inherits( r, a ), r.prototype.processChunk = function ( e ) {
this.meta = e.meta, null === this._pako && this._createPako(), this._pako.push( o.transformTo( l, e.data ), !1 )
}, r.prototype.flush = function () {
a.prototype.flush.call( this ), null === this._pako && this._createPako(), this._pako.push( [], !0 )
}, r.prototype.cleanUp = function () {
a.prototype.cleanUp.call( this ), this._pako = null
}, r.prototype._createPako = function () {
this._pako = new s[ this._pakoAction ]( {
raw: !0,
level: this._pakoOptions.level || -1
} );
var e = this;
this._pako.onData = function ( t ) {
e.push( {
data: t,
meta: e.meta
} )
}
}, n.compressWorker = function ( e ) {
return new r( "Deflate", e )
}, n.uncompressWorker = function () {
return new r( "Inflate", {} )
}
}, {
"./stream/GenericWorker": 28,
"./utils": 32,
pako: 38
} ],
8: [ function ( e, t ) {
"use strict";
function n( e, t, n, r ) {
i.call( this, "ZipFileWorker" ), this.bytesWritten = 0, this.zipComment = t, this.zipPlatform = n, this.encodeFileName = r, this.streamFiles = e, this.accumulate = !1, this.contentBuffer = [], this.dirRecords = [], this.currentSourceOffset = 0,
this.entriesCount = 0, this.currentFile = null, this._sources = []
}
var r = e( "../utils" ),
i = e( "../stream/GenericWorker" ),
s = e( "../utf8" ),
o = e( "../crc32" ),
a = e( "../signature" ),
l = function ( e, t ) {
var n, r = "";
for ( n = 0; n < t; n++ ) r += String.fromCharCode( 255 & e ), e >>>= 8;
return r
},
c = function ( e, t, n, i, c, A ) {
var d, u, p = e.file,
h = e.compression,
f = A !== s.utf8encode,
g = r.transformTo( "string", A( p.name ) ),
m = r.transformTo( "string", s.utf8encode( p.name ) ),
_ = p.comment,
b = r.transformTo( "string", A( _ ) ),
v = r.transformTo( "string", s.utf8encode( _ ) ),
w = m.length !== p.name.length,
k = v.length !== _.length,
y = "",
R = "",
x = "",
C = p.dir,
E = p.date,
I = {
crc32: 0,
compressedSize: 0,
uncompressedSize: 0
};
t && !n || ( I.crc32 = e.crc32, I.compressedSize = e.compressedSize, I.uncompressedSize = e.uncompressedSize );
var M = 0;
t && ( M |= 8 ), f || !w && !k || ( M |= 2048 );
var G, Z, T, N = 0,
S = 0;
C && ( N |= 16 ), "UNIX" === c ? ( S = 798, N |= ( G = p.unixPermissions, Z = C, T = G, G || ( T = Z ? 16893 : 33204 ), ( 65535 & T ) << 16 ) ) : ( S = 20, N |= 63 & ( p.dosPermissions || 0 ) ), d = E.getUTCHours(), d <<= 6, d |= E.getUTCMinutes(), d <<= 5, d |= E.getUTCSeconds() / 2, u = E.getUTCFullYear() - 1980, u <<= 4, u |= E.getUTCMonth() + 1, u <<= 5, u |= E.getUTCDate(), w && ( R = l( 1, 1 ) + l( o( g ), 4 ) + m, y += "up" + l( R.length, 2 ) + R ), k && ( x = l( 1, 1 ) + l( o( b ), 4 ) + v, y += "uc" + l( x.length, 2 ) + x );
var U = "";
return U += "\n\0", U += l( M, 2 ), U += h.magic, U += l( d, 2 ), U += l( u, 2 ), U += l( I.crc32, 4 ),
U += l( I.compressedSize, 4 ), U += l( I.uncompressedSize, 4 ), U += l( g.length, 2 ), U += l( y.length, 2 ), {
fileRecord: a.LOCAL_FILE_HEADER + U + g + y,
dirRecord: a.CENTRAL_FILE_HEADER + l( S, 2 ) + U + l( b.length, 2 ) + "\0\0\0\0" + l( N, 4 ) + l( i, 4 ) + g + y + b
}
},
A = function ( e ) {
return a.DATA_DESCRIPTOR + l( e.crc32, 4 ) + l( e.compressedSize, 4 ) + l( e.uncompressedSize, 4 )
};
r.inherits( n, i ), n.prototype.push = function ( e ) {
var t = e.meta.percent || 0,
n = this.entriesCount,
r = this._sources.length;
this.accumulate ? this.contentBuffer.push( e ) : ( this.bytesWritten += e.data.length,
i.prototype.push.call( this, {
data: e.data,
meta: {
currentFile: this.currentFile,
percent: n ? ( t + 100 * ( n - r - 1 ) ) / n : 100
}
} ) )
}, n.prototype.openedSource = function ( e ) {
this.currentSourceOffset = this.bytesWritten, this.currentFile = e.file.name;
var t = this.streamFiles && !e.file.dir;
if ( t ) {
var n = c( e, t, !1, this.currentSourceOffset, this.zipPlatform, this.encodeFileName );
this.push( {
data: n.fileRecord,
meta: {
percent: 0
}
} )
} else this.accumulate = !0
}, n.prototype.closedSource = function ( e ) {
this.accumulate = !1;
var t = this.streamFiles && !e.file.dir,
n = c( e, t, !0, this.currentSourceOffset, this.zipPlatform, this.encodeFileName );
if ( this.dirRecords.push( n.dirRecord ), t ) this.push( {
data: A( e ),
meta: {
percent: 100
}
} );
else
for ( this.push( {
data: n.fileRecord,
meta: {
percent: 0
}
} ); this.contentBuffer.length; ) this.push( this.contentBuffer.shift() );
this.currentFile = null
}, n.prototype.flush = function () {
for ( var e = this.bytesWritten, t = 0; t < this.dirRecords.length; t++ ) this.push( {
data: this.dirRecords[ t ],
meta: {
percent: 100
}
} );
var n = this.bytesWritten - e,
i = function ( e, t, n, i, s ) {
var o = r.transformTo( "string", s( i ) );
return a.CENTRAL_DIRECTORY_END + "\0\0\0\0" + l( e, 2 ) + l( e, 2 ) + l( t, 4 ) + l( n, 4 ) + l( o.length, 2 ) + o
}( this.dirRecords.length, n, e, this.zipComment, this.encodeFileName );
this.push( {
data: i,
meta: {
percent: 100
}
} )
}, n.prototype.prepareNextSource = function () {
this.previous = this._sources.shift(), this.openedSource( this.previous.streamInfo ), this.isPaused ? this.previous.pause() : this.previous.resume()
}, n.prototype.registerPrevious = function ( e ) {
this._sources.push( e );
var t = this;
return e.on( "data", ( function ( e ) {
t.processChunk( e )
} ) ), e.on( "end", ( function () {
t.closedSource( t.previous.streamInfo ), t._sources.length ? t.prepareNextSource() : t.end()
} ) ), e.on( "error", ( function ( e ) {
t.error( e )
} ) ), this
}, n.prototype.resume = function () {
return !!i.prototype.resume.call( this ) && ( !this.previous && this._sources.length ? ( this.prepareNextSource(), !0 ) : this.previous || this._sources.length || this.generatedError ? void 0 : ( this.end(), !0 ) )
}, n.prototype.error = function ( e ) {
var t = this._sources;
if ( !i.prototype.error.call( this, e ) ) return !1;
for ( var n = 0; n < t.length; n++ ) try {
t[ n ].error( e )
} catch ( e ) {}
return !0
}, n.prototype.lock = function () {
i.prototype.lock.call( this );
for ( var e = this._sources, t = 0; t < e.length; t++ ) e[ t ].lock()
}, t.exports = n
}, {
"../crc32": 4,
"../signature": 23,
"../stream/GenericWorker": 28,
"../utf8": 31,
"../utils": 32
} ],
9: [ function ( e, t, n ) {
"use strict";
var r = e( "../compressions" ),
i = e( "./ZipFileWorker" );
n.generateWorker = function ( e, t, n ) {
var s = new i( t.streamFiles, n, t.platform, t.encodeFileName ),
o = 0;
try {
e.forEach( ( function ( e, n ) {
o++;
var i = function ( e, t ) {
var n = e || t,
i = r[ n ];
if ( !i ) throw new Error( n + " is not a valid compression method !" );
return i
}( n.options.compression, t.compression ),
a = n.options.compressionOptions || t.compressionOptions || {},
l = n.dir,
c = n.date;
n._compressWorker( i, a ).withStreamInfo( "file", {
name: e,
dir: l,
date: c,
comment: n.comment || "",
unixPermissions: n.unixPermissions,
dosPermissions: n.dosPermissions
} ).pipe( s )
} ) ), s.entriesCount = o
} catch ( e ) {
s.error( e )
}
return s
}
}, {
"../compressions": 3,
"./ZipFileWorker": 8
} ],
10: [ function ( e, t ) {
"use strict";
function n() {
if ( !( this instanceof n ) ) return new n;
if ( arguments.length ) throw new Error( "The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide." );
this.files = {}, this.comment = null, this.root = "", this.clone = function () {
var e = new n;
for ( var t in this ) "function" != typeof this[ t ] && ( e[ t ] = this[ t ] );
return e
}
}
n.prototype = e( "./object" ), n.prototype.loadAsync = e( "./load" ),
n.support = e( "./support" ), n.defaults = e( "./defaults" ), n.version = "3.5.0", n.loadAsync = function ( e, t ) {
return ( new n ).loadAsync( e, t )
}, n.external = e( "./external" ), t.exports = n
}, {
"./defaults": 5,
"./external": 6,
"./load": 11,
"./object": 15,
"./support": 30
} ],
11: [ function ( e, t ) {
"use strict";
function n( e ) {
return new i.Promise( ( function ( t, n ) {
var r = e.decompressed.getContentWorker().pipe( new a );
r.on( "error", ( function ( e ) {
n( e )
} ) ).on( "end", ( function () {
r.streamInfo.crc32 !== e.decompressed.crc32 ? n( new Error( "Corrupted zip : CRC32 mismatch" ) ) : t()
} ) ).resume()
} ) )
}
var r = e( "./utils" ),
i = e( "./external" ),
s = e( "./utf8" ),
o = ( r = e( "./utils" ), e( "./zipEntries" ) ),
a = e( "./stream/Crc32Probe" ),
l = e( "./nodejsUtils" );
t.exports = function ( e, t ) {
var a = this;
return t = r.extend( t || {}, {
base64: !1,
checkCRC32: !1,
optimizedBinaryString: !1,
createFolders: !1,
decodeFileName: s.utf8decode
} ),
l.isNode && l.isStream( e ) ? i.Promise.reject( new Error( "JSZip can't accept a stream when loading a zip file." ) ) : r.prepareContent( "the loaded zip file", e, !0, t.optimizedBinaryString, t.base64 ).then( ( function ( e ) {
var n = new o( t );
return n.load( e ), n
} ) ).then( ( function ( e ) {
var r = [ i.Promise.resolve( e ) ],
s = e.files;
if ( t.checkCRC32 )
for ( var o = 0; o < s.length; o++ ) r.push( n( s[ o ] ) );
return i.Promise.all( r )
} ) ).then( ( function ( e ) {
for ( var n = e.shift(), r = n.files, i = 0; i < r.length; i++ ) {
var s = r[ i ];
a.file( s.fileNameStr, s.decompressed, {
binary: !0,
optimizedBinaryString: !0,
date: s.date,
dir: s.dir,
comment: s.fileCommentStr.length ? s.fileCommentStr : null,
unixPermissions: s.unixPermissions,
dosPermissions: s.dosPermissions,
createFolders: t.createFolders
} )
}
return n.zipComment.length && ( a.comment = n.zipComment ), a
} ) )
}
}, {
"./external": 6,
"./nodejsUtils": 14,
"./stream/Crc32Probe": 25,
"./utf8": 31,
"./utils": 32,
"./zipEntries": 33
} ],
12: [ function ( e, t ) {
"use strict";
function n( e, t ) {
i.call( this, "Nodejs stream input adapter for " + e ), this._upstreamEnded = !1,
this._bindStream( t )
}
var r = e( "../utils" ),
i = e( "../stream/GenericWorker" );
r.inherits( n, i ), n.prototype._bindStream = function ( e ) {
var t = this;
this._stream = e, e.pause(), e.on( "data", ( function ( e ) {
t.push( {
data: e,
meta: {
percent: 0
}
} )
} ) ).on( "error", ( function ( e ) {
t.isPaused ? this.generatedError = e : t.error( e )
} ) ).on( "end", ( function () {
t.isPaused ? t._upstreamEnded = !0 : t.end()
} ) )
}, n.prototype.pause = function () {
return !!i.prototype.pause.call( this ) && ( this._stream.pause(), !0 )
}, n.prototype.resume = function () {
return !!i.prototype.resume.call( this ) && ( this._upstreamEnded ? this.end() : this._stream.resume(), !0 )
}, t.exports = n
}, {
"../stream/GenericWorker": 28,
"../utils": 32
} ],
13: [ function ( e, t ) {
"use strict";
function n( e, t, n ) {
r.call( this, t ), this._helper = e;
var i = this;
e.on( "data", ( function ( e, t ) {
i.push( e ) || i._helper.pause(), n && n( t )
} ) ).on( "error", ( function ( e ) {
i.emit( "error", e )
} ) ).on( "end", ( function () {
i.push( null )
} ) )
}
var r = e( "readable-stream" ).Readable;
e( "../utils" ).inherits( n, r ), n.prototype._read = function () {
this._helper.resume()
}, t.exports = n
}, {
"../utils": 32,
"readable-stream": 16
} ],
14: [ function ( e, n ) {
"use strict";
n.exports = {
isNode: void 0 !== t,
newBufferFrom: function ( e, n ) {
if ( t.from && t.from !== Uint8Array.from ) return t.from( e, n );
if ( "number" == typeof e ) throw new Error( 'The "data" argument must not be a number' );
return new t( e, n )
},
allocBuffer: function ( e ) {
if ( t.alloc ) return t.alloc( e );
var n = new t( e );
return n.fill( 0 ), n
},
isBuffer: function ( e ) {
return t.isBuffer( e )
},
isStream: function ( e ) {
return e && "function" == typeof e.on && "function" == typeof e.pause && "function" == typeof e.resume
}
}
}, {} ],
15: [ function ( e, t ) {
"use strict";
function n( e ) {
return "[object RegExp]" === {}.toString.call( e )
}
var r = e( "./utf8" ),
i = e( "./utils" ),
s = e( "./stream/GenericWorker" ),
o = e( "./stream/StreamHelper" ),
a = e( "./defaults" ),
l = e( "./compressedObject" ),
c = e( "./zipObject" ),
A = e( "./generate" ),
d = e( "./nodejsUtils" ),
u = e( "./nodejs/NodejsStreamInputAdapter" ),
p = function ( e, t, n ) {
var r, o = i.getTypeOf( t ),
A = i.extend( n || {}, a );
A.date = A.date || new Date, null !== A.compression && ( A.compression = A.compression.toUpperCase() ), "string" == typeof A.unixPermissions && ( A.unixPermissions = parseInt( A.unixPermissions, 8 ) ), A.unixPermissions && 16384 & A.unixPermissions && ( A.dir = !0 ), A.dosPermissions && 16 & A.dosPermissions && ( A.dir = !0 ), A.dir && ( e = f( e ) ), A.createFolders && ( r = h( e ) ) && g.call( this, r, !0 );
var p = "string" === o && !1 === A.binary && !1 === A.base64;
n && void 0 !== n.binary || ( A.binary = !p ),
( t instanceof l && 0 === t.uncompressedSize || A.dir || !t || 0 === t.length ) && ( A.base64 = !1, A.binary = !0, t = "", A.compression = "STORE", o = "string" );
var m;
m = t instanceof l || t instanceof s ? t : d.isNode && d.isStream( t ) ? new u( e, t ) : i.prepareContent( e, t, A.binary, A.optimizedBinaryString, A.base64 );
var _ = new c( e, m, A );
this.files[ e ] = _
},
h = function ( e ) {
"/" === e.slice( -1 ) && ( e = e.substring( 0, e.length - 1 ) );
var t = e.lastIndexOf( "/" );
return t > 0 ? e.substring( 0, t ) : ""
},
f = function ( e ) {
return "/" !== e.slice( -1 ) && ( e += "/" ), e
},
g = function ( e, t ) {
return t = void 0 !== t ? t : a.createFolders, e = f( e ), this.files[ e ] || p.call( this, e, null, {
dir: !0,
createFolders: t
} ), this.files[ e ]
},
m = {
load: function () {
throw new Error( "This method has been removed in JSZip 3.0, please check the upgrade guide." )
},
forEach: function ( e ) {
var t, n, r;
for ( t in this.files ) this.files.hasOwnProperty( t ) && ( r = this.files[ t ], ( n = t.slice( this.root.length, t.length ) ) && t.slice( 0, this.root.length ) === this.root && e( n, r ) )
},
filter: function ( e ) {
var t = [];
return this.forEach( ( function ( n, r ) {
e( n, r ) && t.push( r )
} ) ), t
},
file: function ( e, t, r ) {
if ( 1 === arguments.length ) {
if ( n( e ) ) {
var i = e;
return this.filter( ( function ( e, t ) {
return !t.dir && i.test( e )
} ) )
}
var s = this.files[ this.root + e ];
return s && !s.dir ? s : null
}
return e = this.root + e, p.call( this, e, t, r ), this
},
folder: function ( e ) {
if ( !e ) return this;
if ( n( e ) ) return this.filter( ( function ( t, n ) {
return n.dir && e.test( t )
} ) );
var t = this.root + e,
r = g.call( this, t ),
i = this.clone();
return i.root = r.name, i
},
remove: function ( e ) {
e = this.root + e;
var t = this.files[ e ];
if ( t || ( "/" !== e.slice( -1 ) && ( e += "/" ), t = this.files[ e ] ), t && !t.dir ) delete this.files[ e ];
else
for ( var n = this.filter( ( function ( t, n ) {
return n.name.slice( 0, e.length ) === e
} ) ), r = 0; r < n.length; r++ ) delete this.files[ n[ r ].name ];
return this
},
generate: function () {
throw new Error( "This method has been removed in JSZip 3.0, please check the upgrade guide." )
},
generateInternalStream: function ( e ) {
var t, n = {};
try {
if ( ( n = i.extend( e || {}, {
streamFiles: !1,
compression: "STORE",
compressionOptions: null,
type: "",
platform: "DOS",
comment: null,
mimeType: "application/zip",
encodeFileName: r.utf8encode
} ) ).type = n.type.toLowerCase(), n.compression = n.compression.toUpperCase(), "binarystring" === n.type && ( n.type = "string" ), !n.type ) throw new Error( "No output type specified." );
i.checkSupport( n.type ), "darwin" !== n.platform && "freebsd" !== n.platform && "linux" !== n.platform && "sunos" !== n.platform || ( n.platform = "UNIX" ), "win32" === n.platform && ( n.platform = "DOS" );
var a = n.comment || this.comment || "";
t = A.generateWorker( this, n, a )
} catch ( e ) {
( t = new s( "error" ) ).error( e )
}
return new o( t, n.type || "string", n.mimeType )
},
generateAsync: function ( e, t ) {
return this.generateInternalStream( e ).accumulate( t )
},
generateNodeStream: function ( e, t ) {
return ( e = e || {} ).type || ( e.type = "nodebuffer" ), this.generateInternalStream( e ).toNodejsStream( t )
}
};
t.exports = m
}, {
"./compressedObject": 2,
"./defaults": 5,
"./generate": 9,
"./nodejs/NodejsStreamInputAdapter": 12,
"./nodejsUtils": 14,
"./stream/GenericWorker": 28,
"./stream/StreamHelper": 29,
"./utf8": 31,
"./utils": 32,
"./zipObject": 35
} ],
16: [ function ( e, t ) {
t.exports = e( "stream" )
}, {
stream: void 0
} ],
17: [ function ( e, t ) {
"use strict";
function n( e ) {
r.call( this, e );
for ( var t = 0; t < this.data.length; t++ ) e[ t ] = 255 & e[ t ]
}
var r = e( "./DataReader" );
e( "../utils" ).inherits( n, r ), n.prototype.byteAt = function ( e ) {
return this.data[ this.zero + e ]
}, n.prototype.lastIndexOfSignature = function ( e ) {
for ( var t = e.charCodeAt( 0 ), n = e.charCodeAt( 1 ), r = e.charCodeAt( 2 ), i = e.charCodeAt( 3 ), s = this.length - 4; s >= 0; --s )
if ( this.data[ s ] === t && this.data[ s + 1 ] === n && this.data[ s + 2 ] === r && this.data[ s + 3 ] === i ) return s - this.zero;
return -1
}, n.prototype.readAndCheckSignature = function ( e ) {
var t = e.charCodeAt( 0 ),
n = e.charCodeAt( 1 ),
r = e.charCodeAt( 2 ),
i = e.charCodeAt( 3 ),
s = this.readData( 4 );
return t === s[ 0 ] && n === s[ 1 ] && r === s[ 2 ] && i === s[ 3 ]
}, n.prototype.readData = function ( e ) {
if ( this.checkOffset( e ), 0 === e ) return [];
var t = this.data.slice( this.zero + this.index, this.zero + this.index + e );
return this.index += e, t
}, t.exports = n
}, {
"../utils": 32,
"./DataReader": 18
} ],
18: [ function ( e, t ) {
"use strict";
function n( e ) {
this.data = e, this.length = e.length, this.index = 0, this.zero = 0
}
var r = e( "../utils" );
n.prototype = {
checkOffset: function ( e ) {
this.checkIndex( this.index + e )
},
checkIndex: function ( e ) {
if ( this.length < this.zero + e || e < 0 ) throw new Error( "End of data reached (data length = " + this.length + ", asked index = " + e + "). Corrupted zip ?" )
},
setIndex: function ( e ) {
this.checkIndex( e ), this.index = e
},
skip: function ( e ) {
this.setIndex( this.index + e )
},
byteAt: function () {},
readInt: function ( e ) {
var t, n = 0;
for ( this.checkOffset( e ), t = this.index + e - 1; t >= this.index; t-- ) n = ( n << 8 ) + this.byteAt( t );
return this.index += e, n
},
readString: function ( e ) {
return r.transformTo( "string", this.readData( e ) )
},
readData: function () {},
lastIndexOfSignature: function () {},
readAndCheckSignature: function () {},
readDate: function () {
var e = this.readInt( 4 );
return new Date( Date.UTC( 1980 + ( e >> 25 & 127 ), ( e >> 21 & 15 ) - 1, e >> 16 & 31, e >> 11 & 31, e >> 5 & 63, ( 31 & e ) << 1 ) )
}
}, t.exports = n
}, {
"../utils": 32
} ],
19: [ function ( e, t ) {
"use strict";
function n( e ) {
r.call( this, e )
}
var r = e( "./Uint8ArrayReader" );
e( "../utils" ).inherits( n, r ), n.prototype.readData = function ( e ) {
this.checkOffset( e );
var t = this.data.slice( this.zero + this.index, this.zero + this.index + e );
return this.index += e, t
}, t.exports = n
}, {
"../utils": 32,
"./Uint8ArrayReader": 21
} ],
20: [ function ( e, t ) {
"use strict";
function n( e ) {
r.call( this, e )
}
var r = e( "./DataReader" );
e( "../utils" ).inherits( n, r ), n.prototype.byteAt = function ( e ) {
return this.data.charCodeAt( this.zero + e )
}, n.prototype.lastIndexOfSignature = function ( e ) {
return this.data.lastIndexOf( e ) - this.zero
}, n.prototype.readAndCheckSignature = function ( e ) {
return e === this.readData( 4 )
}, n.prototype.readData = function ( e ) {
this.checkOffset( e );
var t = this.data.slice( this.zero + this.index, this.zero + this.index + e );
return this.index += e, t
}, t.exports = n
}, {
"../utils": 32,
"./DataReader": 18
} ],
21: [ function ( e, t ) {
"use strict";
function n( e ) {
r.call( this, e )
}
var r = e( "./ArrayReader" );
e( "../utils" ).inherits( n, r ), n.prototype.readData = function ( e ) {
if ( this.checkOffset( e ), 0 === e ) return new Uint8Array( 0 );
var t = this.data.subarray( this.zero + this.index, this.zero + this.index + e );
return this.index += e, t
}, t.exports = n
}, {
"../utils": 32,
"./ArrayReader": 17
} ],
22: [ function ( e, t ) {
"use strict";
var n = e( "../utils" ),
r = e( "../support" ),
i = e( "./ArrayReader" ),
s = e( "./StringReader" ),
o = e( "./NodeBufferReader" ),
a = e( "./Uint8ArrayReader" );
t.exports = function ( e ) {
var t = n.getTypeOf( e );
return n.checkSupport( t ), "string" !== t || r.uint8array ? "nodebuffer" === t ? new o( e ) : r.uint8array ? new a( n.transformTo( "uint8array", e ) ) : new i( n.transformTo( "array", e ) ) : new s( e )
}
}, {
"../support": 30,
"../utils": 32,
"./ArrayReader": 17,
"./NodeBufferReader": 19,
"./StringReader": 20,
"./Uint8ArrayReader": 21
} ],
23: [ function ( e, t, n ) {
"use strict";
n.LOCAL_FILE_HEADER = "PK", n.CENTRAL_FILE_HEADER = "PK", n.CENTRAL_DIRECTORY_END = "PK", n.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK", n.ZIP64_CENTRAL_DIRECTORY_END = "PK", n.DATA_DESCRIPTOR = "PK\b"
}, {} ],
24: [ function ( e, t ) {
"use strict";
function n( e ) {
r.call( this, "ConvertWorker to " + e ), this.destType = e
}
var r = e( "./GenericWorker" ),
i = e( "../utils" );
i.inherits( n, r ), n.prototype.processChunk = function ( e ) {
this.push( {
data: i.transformTo( this.destType, e.data ),
meta: e.meta
} )
}, t.exports = n
}, {
"../utils": 32,
"./GenericWorker": 28
} ],
25: [ function ( e, t ) {
"use strict";
function n() {
r.call( this, "Crc32Probe" ), this.withStreamInfo( "crc32", 0 )
}
var r = e( "./GenericWorker" ),
i = e( "../crc32" );
e( "../utils" ).inherits( n, r ), n.prototype.processChunk = function ( e ) {
this.streamInfo.crc32 = i( e.data, this.streamInfo.crc32 || 0 ), this.push( e )
}, t.exports = n
}, {
"../crc32": 4,
"../utils": 32,
"./GenericWorker": 28
} ],
26: [ function ( e, t ) {
"use strict";
function n( e ) {
i.call( this, "DataLengthProbe for " + e ), this.propName = e, this.withStreamInfo( e, 0 )
}
var r = e( "../utils" ),
i = e( "./GenericWorker" );
r.inherits( n, i ), n.prototype.processChunk = function ( e ) {
if ( e ) {
var t = this.streamInfo[ this.propName ] || 0;
this.streamInfo[ this.propName ] = t + e.data.length
}
i.prototype.processChunk.call( this, e )
}, t.exports = n
}, {
"../utils": 32,
"./GenericWorker": 28
} ],
27: [ function ( e, t ) {
"use strict";
function n( e ) {
i.call( this, "DataWorker" );
var t = this;
this.dataIsReady = !1, this.index = 0, this.max = 0, this.data = null, this.type = "", this._tickScheduled = !1, e.then( ( function ( e ) {
t.dataIsReady = !0,
t.data = e, t.max = e && e.length || 0, t.type = r.getTypeOf( e ), t.isPaused || t._tickAndRepeat()
} ), ( function ( e ) {
t.error( e )
} ) )
}
var r = e( "../utils" ),
i = e( "./GenericWorker" );
r.inherits( n, i ), n.prototype.cleanUp = function () {
i.prototype.cleanUp.call( this ), this.data = null
}, n.prototype.resume = function () {
return !!i.prototype.resume.call( this ) && ( !this._tickScheduled && this.dataIsReady && ( this._tickScheduled = !0, r.delay( this._tickAndRepeat, [], this ) ), !0 )
}, n.prototype._tickAndRepeat = function () {
this._tickScheduled = !1,
this.isPaused || this.isFinished || ( this._tick(), this.isFinished || ( r.delay( this._tickAndRepeat, [], this ), this._tickScheduled = !0 ) )
}, n.prototype._tick = function () {
if ( this.isPaused || this.isFinished ) return !1;
var e = null,
t = Math.min( this.max, this.index + 16384 );
if ( this.index >= this.max ) return this.end();
switch ( this.type ) {
case "string":
e = this.data.substring( this.index, t );
break;
case "uint8array":
e = this.data.subarray( this.index, t );
break;
case "array":
case "nodebuffer":
e = this.data.slice( this.index, t )
}
return this.index = t, this.push( {
data: e,
meta: {
percent: this.max ? this.index / this.max * 100 : 0
}
} )
}, t.exports = n
}, {
"../utils": 32,
"./GenericWorker": 28
} ],
28: [ function ( e, t ) {
"use strict";
function n( e ) {
this.name = e || "default", this.streamInfo = {}, this.generatedError = null, this.extraStreamInfo = {}, this.isPaused = !0, this.isFinished = !1, this.isLocked = !1, this._listeners = {
data: [],
end: [],
error: []
}, this.previous = null
}
n.prototype = {
push: function ( e ) {
this.emit( "data", e )
},
end: function () {
if ( this.isFinished ) return !1;
this.flush();
try {
this.emit( "end" ), this.cleanUp(), this.isFinished = !0
} catch ( e ) {
this.emit( "error", e )
}
return !0
},
error: function ( e ) {
return !this.isFinished && ( this.isPaused ? this.generatedError = e : ( this.isFinished = !0, this.emit( "error", e ), this.previous && this.previous.error( e ), this.cleanUp() ), !0 )
},
on: function ( e, t ) {
return this._listeners[ e ].push( t ), this
},
cleanUp: function () {
this.streamInfo = this.generatedError = this.extraStreamInfo = null, this._listeners = []
},
emit: function ( e, t ) {
if ( this._listeners[ e ] )
for ( var n = 0; n < this._listeners[ e ].length; n++ ) this._listeners[ e ][ n ].call( this, t )
},
pipe: function ( e ) {
return e.registerPrevious( this )
},
registerPrevious: function ( e ) {
if ( this.isLocked ) throw new Error( "The stream '" + this + "' has already been used." );
this.streamInfo = e.streamInfo, this.mergeStreamInfo(), this.previous = e;
var t = this;
return e.on( "data", ( function ( e ) {
t.processChunk( e )
} ) ), e.on( "end", ( function () {
t.end()
} ) ), e.on( "error", ( function ( e ) {
t.error( e )
} ) ), this
},
pause: function () {
return !this.isPaused && !this.isFinished && ( this.isPaused = !0, this.previous && this.previous.pause(), !0 )
},
resume: function () {
if ( !this.isPaused || this.isFinished ) return !1;
this.isPaused = !1;
var e = !1;
return this.generatedError && ( this.error( this.generatedError ), e = !0 ), this.previous && this.previous.resume(), !e
},
flush: function () {},
processChunk: function ( e ) {
this.push( e )
},
withStreamInfo: function ( e, t ) {
return this.extraStreamInfo[ e ] = t, this.mergeStreamInfo(), this
},
mergeStreamInfo: function () {
for ( var e in this.extraStreamInfo ) this.extraStreamInfo.hasOwnProperty( e ) && ( this.streamInfo[ e ] = this.extraStreamInfo[ e ] )
},
lock: function () {
if ( this.isLocked ) throw new Error( "The stream '" + this + "' has already been used." );
this.isLocked = !0, this.previous && this.previous.lock()
},
toString: function () {
var e = "Worker " + this.name;
return this.previous ? this.previous + " -> " + e : e
}
}, t.exports = n
}, {} ],
29: [ function ( e, n ) {
"use strict";
function r( e, n ) {
return new A.Promise( ( function ( r, i ) {
var o = [],
a = e._internalType,
c = e._outputType,
A = e._mimeType;
e.on( "data", ( function ( e, t ) {
o.push( e ), n && n( t )
} ) ).on( "error", ( function ( e ) {
o = [], i( e )
} ) ).on( "end", ( function () {
try {
var e = function ( e, t, n ) {
switch ( e ) {
case "blob":
return s.newBlob( s.transformTo( "arraybuffer", t ), n );
case "base64":
return l.encode( t );
default:
return s.transformTo( e, t )
}
}( c, function ( e, n ) {
var r, i = 0,
s = null,
o = 0;
for ( r = 0; r < n.length; r++ ) o += n[ r ].length;
switch ( e ) {
case "string":
return n.join( "" );
case "array":
return [].concat.apply( [], n );
case "uint8array":
for ( s = new Uint8Array( o ), r = 0; r < n.length; r++ ) s.set( n[ r ], i ), i += n[ r ].length;
return s;
case "nodebuffer":
return t.concat( n );
default:
throw new Error( "concat : unsupported type '" + e + "'" )
}
}( a, o ), A );
r( e )
} catch ( e ) {
i( e )
}
o = []
} ) ).resume()
} ) )
}
function i( e, t, n ) {
var r = t;
switch ( t ) {
case "blob":
case "arraybuffer":
r = "uint8array";
break;
case "base64":
r = "string"
}
try {
this._internalType = r, this._outputType = t, this._mimeType = n, s.checkSupport( r ), this._worker = e.pipe( new o( r ) ), e.lock()
} catch ( e ) {
this._worker = new a( "error" ), this._worker.error( e )
}
}
var s = e( "../utils" ),
o = e( "./ConvertWorker" ),
a = e( "./GenericWorker" ),
l = e( "../base64" ),
c = e( "../support" ),
A = e( "../external" ),
d = null;
if ( c.nodestream ) try {
d = e( "../nodejs/NodejsStreamOutputAdapter" )
} catch ( e ) {}
i.prototype = {
accumulate: function ( e ) {
return r( this, e )
},
on: function ( e, t ) {
var n = this;
return "data" === e ? this._worker.on( e, ( function ( e ) {
t.call( n, e.data, e.meta )
} ) ) : this._worker.on( e, ( function () {
s.delay( t, arguments, n )
} ) ), this
},
resume: function () {
return s.delay( this._worker.resume, [], this._worker ), this
},
pause: function () {
return this._worker.pause(), this
},
toNodejsStream: function ( e ) {
if ( s.checkSupport( "nodestream" ), "nodebuffer" !== this._outputType ) throw new Error( this._outputType + " is not supported by this method" );
return new d( this, {
objectMode: "nodebuffer" !== this._outputType
}, e )
}
}, n.exports = i
}, {
"../base64": 1,
"../external": 6,
"../nodejs/NodejsStreamOutputAdapter": 13,
"../support": 30,
"../utils": 32,
"./ConvertWorker": 24,
"./GenericWorker": 28
} ],
30: [ function ( e, n, r ) {
"use strict";
if ( r.base64 = !0, r.array = !0, r.string = !0, r.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array, r.nodebuffer = void 0 !== t, r.uint8array = "undefined" != typeof Uint8Array, "undefined" == typeof ArrayBuffer ) r.blob = !1;
else {
var i = new ArrayBuffer( 0 );
try {
r.blob = 0 === new Blob( [ i ], {
type: "application/zip"
} ).size
} catch ( e ) {
try {
var s = new( self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder );
s.append( i ),
r.blob = 0 === s.getBlob( "application/zip" ).size
} catch ( e ) {
r.blob = !1
}
}
}
try {
r.nodestream = !!e( "readable-stream" ).Readable
} catch ( e ) {
r.nodestream = !1
}
}, {
"readable-stream": 16
} ],
31: [ function ( e, t, n ) {
"use strict";
function r() {
l.call( this, "utf-8 decode" ), this.leftOver = null
}
function i() {
l.call( this, "utf-8 encode" )
}
for ( var s = e( "./utils" ), o = e( "./support" ), a = e( "./nodejsUtils" ), l = e( "./stream/GenericWorker" ), c = new Array( 256 ), A = 0; A < 256; A++ ) c[ A ] = A >= 252 ? 6 : A >= 248 ? 5 : A >= 240 ? 4 : A >= 224 ? 3 : A >= 192 ? 2 : 1;
c[ 254 ] = c[ 254 ] = 1;
n.utf8encode = function ( e ) {
return o.nodebuffer ? a.newBufferFrom( e, "utf-8" ) : function ( e ) {
var t, n, r, i, s, a = e.length,
l = 0;
for ( i = 0; i < a; i++ ) 55296 == ( 64512 & ( n = e.charCodeAt( i ) ) ) && i + 1 < a && 56320 == ( 64512 & ( r = e.charCodeAt( i + 1 ) ) ) && ( n = 65536 + ( n - 55296 << 10 ) + ( r - 56320 ), i++ ), l += n < 128 ? 1 : n < 2048 ? 2 : n < 65536 ? 3 : 4;
for ( t = o.uint8array ? new Uint8Array( l ) : new Array( l ), s = 0, i = 0; s < l; i++ ) 55296 == ( 64512 & ( n = e.charCodeAt( i ) ) ) && i + 1 < a && 56320 == ( 64512 & ( r = e.charCodeAt( i + 1 ) ) ) && ( n = 65536 + ( n - 55296 << 10 ) + ( r - 56320 ), i++ ),
n < 128 ? t[ s++ ] = n : n < 2048 ? ( t[ s++ ] = 192 | n >>> 6, t[ s++ ] = 128 | 63 & n ) : n < 65536 ? ( t[ s++ ] = 224 | n >>> 12, t[ s++ ] = 128 | n >>> 6 & 63, t[ s++ ] = 128 | 63 & n ) : ( t[ s++ ] = 240 | n >>> 18, t[ s++ ] = 128 | n >>> 12 & 63, t[ s++ ] = 128 | n >>> 6 & 63, t[ s++ ] = 128 | 63 & n );
return t
}( e )
}, n.utf8decode = function ( e ) {
return o.nodebuffer ? s.transformTo( "nodebuffer", e ).toString( "utf-8" ) : function ( e ) {
var t, n, r, i, o = e.length,
a = new Array( 2 * o );
for ( n = 0, t = 0; t < o; )
if ( ( r = e[ t++ ] ) < 128 ) a[ n++ ] = r;
else if ( ( i = c[ r ] ) > 4 ) a[ n++ ] = 65533, t += i - 1;
else {
for ( r &= 2 === i ? 31 : 3 === i ? 15 : 7; i > 1 && t < o; ) r = r << 6 | 63 & e[ t++ ],
i--;
i > 1 ? a[ n++ ] = 65533 : r < 65536 ? a[ n++ ] = r : ( r -= 65536, a[ n++ ] = 55296 | r >> 10 & 1023, a[ n++ ] = 56320 | 1023 & r )
}
return a.length !== n && ( a.subarray ? a = a.subarray( 0, n ) : a.length = n ), s.applyFromCharCode( a )
}( e = s.transformTo( o.uint8array ? "uint8array" : "array", e ) )
}, s.inherits( r, l ), r.prototype.processChunk = function ( e ) {
var t = s.transformTo( o.uint8array ? "uint8array" : "array", e.data );
if ( this.leftOver && this.leftOver.length ) {
if ( o.uint8array ) {
var r = t;
( t = new Uint8Array( r.length + this.leftOver.length ) ).set( this.leftOver, 0 ),
t.set( r, this.leftOver.length )
} else t = this.leftOver.concat( t );
this.leftOver = null
}
var i = function ( e, t ) {
var n;
for ( ( t = t || e.length ) > e.length && ( t = e.length ), n = t - 1; n >= 0 && 128 == ( 192 & e[ n ] ); ) n--;
return n < 0 || 0 === n ? t : n + c[ e[ n ] ] > t ? n : t
}( t ),
a = t;
i !== t.length && ( o.uint8array ? ( a = t.subarray( 0, i ), this.leftOver = t.subarray( i, t.length ) ) : ( a = t.slice( 0, i ), this.leftOver = t.slice( i, t.length ) ) ), this.push( {
data: n.utf8decode( a ),
meta: e.meta
} )
}, r.prototype.flush = function () {
this.leftOver && this.leftOver.length && ( this.push( {
data: n.utf8decode( this.leftOver ),
meta: {}
} ), this.leftOver = null )
}, n.Utf8DecodeWorker = r, s.inherits( i, l ), i.prototype.processChunk = function ( e ) {
this.push( {
data: n.utf8encode( e.data ),
meta: e.meta
} )
}, n.Utf8EncodeWorker = i
}, {
"./nodejsUtils": 14,
"./stream/GenericWorker": 28,
"./support": 30,
"./utils": 32
} ],
32: [ function ( e, t, n ) {
"use strict";
function r( e ) {
return e
}
function i( e, t ) {
for ( var n = 0; n < e.length; ++n ) t[ n ] = 255 & e.charCodeAt( n );
return t
}
function s( e ) {
var t = 65536,
r = n.getTypeOf( e ),
i = !0;
if ( "uint8array" === r ? i = u.applyCanBeUsed.uint8array : "nodebuffer" === r && ( i = u.applyCanBeUsed.nodebuffer ), i )
for ( ; t > 1; ) try {
return u.stringifyByChunk( e, r, t )
} catch ( e ) {
t = Math.floor( t / 2 )
}
return u.stringifyByChar( e )
}
function o( e, t ) {
for ( var n = 0; n < e.length; n++ ) t[ n ] = e[ n ];
return t
}
var a = e( "./support" ),
l = e( "./base64" ),
c = e( "./nodejsUtils" ),
A = e( "set-immediate-shim" ),
d = e( "./external" );
n.newBlob = function ( e, t ) {
n.checkSupport( "blob" );
try {
return new Blob( [ e ], {
type: t
} )
} catch ( n ) {
try {
var r = new( self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder );
return r.append( e ), r.getBlob( t )
} catch ( e ) {
throw new Error( "Bug : can't construct the Blob." )
}
}
};
var u = {
stringifyByChunk: function ( e, t, n ) {
var r = [],
i = 0,
s = e.length;
if ( s <= n ) return String.fromCharCode.apply( null, e );
for ( ; i < s; ) "array" === t || "nodebuffer" === t ? r.push( String.fromCharCode.apply( null, e.slice( i, Math.min( i + n, s ) ) ) ) : r.push( String.fromCharCode.apply( null, e.subarray( i, Math.min( i + n, s ) ) ) ), i += n;
return r.join( "" )
},
stringifyByChar: function ( e ) {
for ( var t = "", n = 0; n < e.length; n++ ) t += String.fromCharCode( e[ n ] );
return t
},
applyCanBeUsed: {
uint8array: function () {
try {
return a.uint8array && 1 === String.fromCharCode.apply( null, new Uint8Array( 1 ) ).length
} catch ( e ) {
return !1
}
}(),
nodebuffer: function () {
try {
return a.nodebuffer && 1 === String.fromCharCode.apply( null, c.allocBuffer( 1 ) ).length
} catch ( e ) {
return !1
}
}()
}
};
n.applyFromCharCode = s;
var p = {};
p.string = {
string: r,
array: function ( e ) {
return i( e, new Array( e.length ) )
},
arraybuffer: function ( e ) {
return p.string.uint8array( e ).buffer
},
uint8array: function ( e ) {
return i( e, new Uint8Array( e.length ) )
},
nodebuffer: function ( e ) {
return i( e, c.allocBuffer( e.length ) )
}
}, p.array = {
string: s,
array: r,
arraybuffer: function ( e ) {
return new Uint8Array( e ).buffer
},
uint8array: function ( e ) {
return new Uint8Array( e )
},
nodebuffer: function ( e ) {
return c.newBufferFrom( e )
}
}, p.arraybuffer = {
string: function ( e ) {
return s( new Uint8Array( e ) )
},
array: function ( e ) {
return o( new Uint8Array( e ), new Array( e.byteLength ) )
},
arraybuffer: r,
uint8array: function ( e ) {
return new Uint8Array( e )
},
nodebuffer: function ( e ) {
return c.newBufferFrom( new Uint8Array( e ) )
}
}, p.uint8array = {
string: s,
array: function ( e ) {
return o( e, new Array( e.length ) )
},
arraybuffer: function ( e ) {
return e.buffer
},
uint8array: r,
nodebuffer: function ( e ) {
return c.newBufferFrom( e )
}
}, p.nodebuffer = {
string: s,
array: function ( e ) {
return o( e, new Array( e.length ) )
},
arraybuffer: function ( e ) {
return p.nodebuffer.uint8array( e ).buffer
},
uint8array: function ( e ) {
return o( e, new Uint8Array( e.length ) )
},
nodebuffer: r
}, n.transformTo = function ( e, t ) {
if ( t || ( t = "" ), !e ) return t;
n.checkSupport( e );
var r = n.getTypeOf( t );
return p[ r ][ e ]( t )
}, n.getTypeOf = function ( e ) {
return "string" == typeof e ? "string" : "[object Array]" === {}.toString.call( e ) ? "array" : a.nodebuffer && c.isBuffer( e ) ? "nodebuffer" : a.uint8array && e instanceof Uint8Array ? "uint8array" : a.arraybuffer && e instanceof ArrayBuffer ? "arraybuffer" : void 0
}, n.checkSupport = function ( e ) {
if ( !a[ e.toLowerCase() ] ) throw new Error( e + " is not supported by this platform" )
}, n.MAX_VALUE_16BITS = 65535, n.MAX_VALUE_32BITS = -1, n.pretty = function ( e ) {
var t, n, r = "";
for ( n = 0; n < ( e || "" ).length; n++ ) r += "\\x" + ( ( t = e.charCodeAt( n ) ) < 16 ? "0" : "" ) + t.toString( 16 ).toUpperCase();
return r
}, n.delay = function ( e, t, n ) {
A( ( function () {
e.apply( n || null, t || [] )
} ) )
}, n.inherits = function ( e, t ) {
var n = function () {};
n.prototype = t.prototype, e.prototype = new n
}, n.extend = function () {
var e, t, n = {};
for ( e = 0; e < arguments.length; e++ )
for ( t in arguments[ e ] ) arguments[ e ].hasOwnProperty( t ) && void 0 === n[ t ] && ( n[ t ] = arguments[ e ][ t ] );
return n
}, n.prepareContent = function ( e, t, r, s, o ) {
return d.Promise.resolve( t ).then( ( function ( e ) {
return a.blob && ( e instanceof Blob || -1 !== [ "[object File]", "[object Blob]" ].indexOf( {}.toString.call( e ) ) ) && "undefined" != typeof FileReader ? new d.Promise( ( function ( t, n ) {
var r = new FileReader;
r.onload = function ( e ) {
t( e.target.result )
}, r.onerror = function ( e ) {
n( e.target.error )
},
r.readAsArrayBuffer( e )
} ) ) : e
} ) ).then( ( function ( t ) {
var c, A = n.getTypeOf( t );
return A ? ( "arraybuffer" === A ? t = n.transformTo( "uint8array", t ) : "string" === A && ( o ? t = l.decode( t ) : r && !0 !== s && ( t = i( c = t, a.uint8array ? new Uint8Array( c.length ) : new Array( c.length ) ) ) ), t ) : d.Promise.reject( new Error( "Can't read the data of '" + e + "'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?" ) )
} ) )
}
}, {
"./base64": 1,
"./external": 6,
"./nodejsUtils": 14,
"./support": 30,
"set-immediate-shim": 54
} ],
33: [ function ( e, t ) {
"use strict";
function n( e ) {
this.files = [], this.loadOptions = e
}
var r = e( "./reader/readerFor" ),
i = e( "./utils" ),
s = e( "./signature" ),
o = e( "./zipEntry" ),
a = ( e( "./utf8" ), e( "./support" ) );
n.prototype = {
checkSignature: function ( e ) {
if ( !this.reader.readAndCheckSignature( e ) ) {
this.reader.index -= 4;
var t = this.reader.readString( 4 );
throw new Error( "Corrupted zip or bug: unexpected signature (" + i.pretty( t ) + ", expected " + i.pretty( e ) + ")" )
}
},
isSignature: function ( e, t ) {
var n = this.reader.index;
this.reader.setIndex( e );
var r = this.reader.readString( 4 ) === t;
return this.reader.setIndex( n ), r
},
readBlockEndOfCentral: function () {
this.diskNumber = this.reader.readInt( 2 ), this.diskWithCentralDirStart = this.reader.readInt( 2 ), this.centralDirRecordsOnThisDisk = this.reader.readInt( 2 ), this.centralDirRecords = this.reader.readInt( 2 ), this.centralDirSize = this.reader.readInt( 4 ), this.centralDirOffset = this.reader.readInt( 4 ), this.zipCommentLength = this.reader.readInt( 2 );
var e = this.reader.readData( this.zipCommentLength ),
t = a.uint8array ? "uint8array" : "array",
n = i.transformTo( t, e );
this.zipComment = this.loadOptions.decodeFileName( n )
},
readBlockZip64EndOfCentral: function () {
this.zip64EndOfCentralSize = this.reader.readInt( 8 ), this.reader.skip( 4 ), this.diskNumber = this.reader.readInt( 4 ), this.diskWithCentralDirStart = this.reader.readInt( 4 ), this.centralDirRecordsOnThisDisk = this.reader.readInt( 8 ), this.centralDirRecords = this.reader.readInt( 8 ),
this.centralDirSize = this.reader.readInt( 8 ), this.centralDirOffset = this.reader.readInt( 8 ), this.zip64ExtensibleData = {};
for ( var e, t, n, r = this.zip64EndOfCentralSize - 44; 0 < r; ) e = this.reader.readInt( 2 ), t = this.reader.readInt( 4 ), n = this.reader.readData( t ), this.zip64ExtensibleData[ e ] = {
id: e,
length: t,
value: n
}
},
readBlockZip64EndOfCentralLocator: function () {
if ( this.diskWithZip64CentralDirStart = this.reader.readInt( 4 ), this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt( 8 ),
this.disksCount = this.reader.readInt( 4 ), this.disksCount > 1 ) throw new Error( "Multi-volumes zip are not supported" )
},
readLocalFiles: function () {
var e, t;
for ( e = 0; e < this.files.length; e++ ) t = this.files[ e ], this.reader.setIndex( t.localHeaderOffset ), this.checkSignature( s.LOCAL_FILE_HEADER ), t.readLocalPart( this.reader ), t.handleUTF8(), t.processAttributes()
},
readCentralDir: function () {
var e;
for ( this.reader.setIndex( this.centralDirOffset ); this.reader.readAndCheckSignature( s.CENTRAL_FILE_HEADER ); )( e = new o( {
zip64: this.zip64
}, this.loadOptions ) ).readCentralPart( this.reader ), this.files.push( e );
if ( this.centralDirRecords !== this.files.length && 0 !== this.centralDirRecords && 0 === this.files.length ) throw new Error( "Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length )
},
readEndOfCentral: function () {
var e = this.reader.lastIndexOfSignature( s.CENTRAL_DIRECTORY_END );
if ( e < 0 ) throw this.isSignature( 0, s.LOCAL_FILE_HEADER ) ? new Error( "Corrupted zip: can't find end of central directory" ) : new Error( "Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html" );
this.reader.setIndex( e );
var t = e;
if ( this.checkSignature( s.CENTRAL_DIRECTORY_END ), this.readBlockEndOfCentral(),
this.diskNumber === i.MAX_VALUE_16BITS || this.diskWithCentralDirStart === i.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === i.MAX_VALUE_16BITS || this.centralDirRecords === i.MAX_VALUE_16BITS || this.centralDirSize === i.MAX_VALUE_32BITS || this.centralDirOffset === i.MAX_VALUE_32BITS ) {
if ( this.zip64 = !0, ( e = this.reader.lastIndexOfSignature( s.ZIP64_CENTRAL_DIRECTORY_LOCATOR ) ) < 0 ) throw new Error( "Corrupted zip: can't find the ZIP64 end of central directory locator" );
if ( this.reader.setIndex( e ),
this.checkSignature( s.ZIP64_CENTRAL_DIRECTORY_LOCATOR ), this.readBlockZip64EndOfCentralLocator(), !this.isSignature( this.relativeOffsetEndOfZip64CentralDir, s.ZIP64_CENTRAL_DIRECTORY_END ) && ( this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature( s.ZIP64_CENTRAL_DIRECTORY_END ), this.relativeOffsetEndOfZip64CentralDir < 0 ) ) throw new Error( "Corrupted zip: can't find the ZIP64 end of central directory" );
this.reader.setIndex( this.relativeOffsetEndOfZip64CentralDir ),
this.checkSignature( s.ZIP64_CENTRAL_DIRECTORY_END ), this.readBlockZip64EndOfCentral()
}
var n = this.centralDirOffset + this.centralDirSize;
this.zip64 && ( n += 20, n += 12 + this.zip64EndOfCentralSize );
var r = t - n;
if ( r > 0 ) this.isSignature( t, s.CENTRAL_FILE_HEADER ) || ( this.reader.zero = r );
else if ( r < 0 ) throw new Error( "Corrupted zip: missing " + Math.abs( r ) + " bytes." )
},
prepareReader: function ( e ) {
this.reader = r( e )
},
load: function ( e ) {
this.prepareReader( e ), this.readEndOfCentral(), this.readCentralDir(), this.readLocalFiles()
}
},
t.exports = n
}, {
"./reader/readerFor": 22,
"./signature": 23,
"./support": 30,
"./utf8": 31,
"./utils": 32,
"./zipEntry": 34
} ],
34: [ function ( e, t ) {
"use strict";
function n( e, t ) {
this.options = e, this.loadOptions = t
}
var r = e( "./reader/readerFor" ),
i = e( "./utils" ),
s = e( "./compressedObject" ),
o = e( "./crc32" ),
a = e( "./utf8" ),
l = e( "./compressions" ),
c = e( "./support" );
n.prototype = {
isEncrypted: function () {
return 1 == ( 1 & this.bitFlag )
},
useUTF8: function () {
return 2048 == ( 2048 & this.bitFlag )
},
readLocalPart: function ( e ) {
var t, n;
if ( e.skip( 22 ),
this.fileNameLength = e.readInt( 2 ), n = e.readInt( 2 ), this.fileName = e.readData( this.fileNameLength ), e.skip( n ), -1 === this.compressedSize || -1 === this.uncompressedSize ) throw new Error( "Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)" );
if ( null === ( t = function ( e ) {
for ( var t in l )
if ( l.hasOwnProperty( t ) && l[ t ].magic === e ) return l[ t ];
return null
}( this.compressionMethod ) ) ) throw new Error( "Corrupted zip : compression " + i.pretty( this.compressionMethod ) + " unknown (inner file : " + i.transformTo( "string", this.fileName ) + ")" );
this.decompressed = new s( this.compressedSize, this.uncompressedSize, this.crc32, t, e.readData( this.compressedSize ) )
},
readCentralPart: function ( e ) {
this.versionMadeBy = e.readInt( 2 ), e.skip( 2 ), this.bitFlag = e.readInt( 2 ), this.compressionMethod = e.readString( 2 ), this.date = e.readDate(), this.crc32 = e.readInt( 4 ),
this.compressedSize = e.readInt( 4 ), this.uncompressedSize = e.readInt( 4 );
var t = e.readInt( 2 );
if ( this.extraFieldsLength = e.readInt( 2 ), this.fileCommentLength = e.readInt( 2 ), this.diskNumberStart = e.readInt( 2 ), this.internalFileAttributes = e.readInt( 2 ), this.externalFileAttributes = e.readInt( 4 ), this.localHeaderOffset = e.readInt( 4 ), this.isEncrypted() ) throw new Error( "Encrypted zip are not supported" );
e.skip( t ), this.readExtraFields( e ), this.parseZIP64ExtraField( e ), this.fileComment = e.readData( this.fileCommentLength )
},
processAttributes: function () {
this.unixPermissions = null, this.dosPermissions = null;
var e = this.versionMadeBy >> 8;
this.dir = !!( 16 & this.externalFileAttributes ), 0 === e && ( this.dosPermissions = 63 & this.externalFileAttributes ), 3 === e && ( this.unixPermissions = this.externalFileAttributes >> 16 & 65535 ), this.dir || "/" !== this.fileNameStr.slice( -1 ) || ( this.dir = !0 )
},
parseZIP64ExtraField: function () {
if ( this.extraFields[ 1 ] ) {
var e = r( this.extraFields[ 1 ].value );
this.uncompressedSize === i.MAX_VALUE_32BITS && ( this.uncompressedSize = e.readInt( 8 ) ), this.compressedSize === i.MAX_VALUE_32BITS && ( this.compressedSize = e.readInt( 8 ) ), this.localHeaderOffset === i.MAX_VALUE_32BITS && ( this.localHeaderOffset = e.readInt( 8 ) ), this.diskNumberStart === i.MAX_VALUE_32BITS && ( this.diskNumberStart = e.readInt( 4 ) )
}
},
readExtraFields: function ( e ) {
var t, n, r, i = e.index + this.extraFieldsLength;
for ( this.extraFields || ( this.extraFields = {} ); e.index + 4 < i; ) t = e.readInt( 2 ), n = e.readInt( 2 ), r = e.readData( n ),
this.extraFields[ t ] = {
id: t,
length: n,
value: r
};
e.setIndex( i )
},
handleUTF8: function () {
var e = c.uint8array ? "uint8array" : "array";
if ( this.useUTF8() ) this.fileNameStr = a.utf8decode( this.fileName ), this.fileCommentStr = a.utf8decode( this.fileComment );
else {
var t = this.findExtraFieldUnicodePath();
if ( null !== t ) this.fileNameStr = t;
else {
var n = i.transformTo( e, this.fileName );
this.fileNameStr = this.loadOptions.decodeFileName( n )
}
var r = this.findExtraFieldUnicodeComment();
if ( null !== r ) this.fileCommentStr = r;
else {
var s = i.transformTo( e, this.fileComment );
this.fileCommentStr = this.loadOptions.decodeFileName( s )
}
}
},
findExtraFieldUnicodePath: function () {
var e = this.extraFields[ 28789 ];
if ( e ) {
var t = r( e.value );
return 1 !== t.readInt( 1 ) || o( this.fileName ) !== t.readInt( 4 ) ? null : a.utf8decode( t.readData( e.length - 5 ) )
}
return null
},
findExtraFieldUnicodeComment: function () {
var e = this.extraFields[ 25461 ];
if ( e ) {
var t = r( e.value );
return 1 !== t.readInt( 1 ) || o( this.fileComment ) !== t.readInt( 4 ) ? null : a.utf8decode( t.readData( e.length - 5 ) )
}
return null
}
}, t.exports = n
}, {
"./compressedObject": 2,
"./compressions": 3,
"./crc32": 4,
"./reader/readerFor": 22,
"./support": 30,
"./utf8": 31,
"./utils": 32
} ],
35: [ function ( e, t ) {
"use strict";
var n = e( "./stream/StreamHelper" ),
r = e( "./stream/DataWorker" ),
i = e( "./utf8" ),
s = e( "./compressedObject" ),
o = e( "./stream/GenericWorker" ),
a = function ( e, t, n ) {
this.name = e, this.dir = n.dir, this.date = n.date, this.comment = n.comment, this.unixPermissions = n.unixPermissions, this.dosPermissions = n.dosPermissions, this._data = t,
this._dataBinary = n.binary, this.options = {
compression: n.compression,
compressionOptions: n.compressionOptions
}
};
a.prototype = {
internalStream: function ( e ) {
var t = null,
r = "string";
try {
if ( !e ) throw new Error( "No output type specified." );
var s = "string" === ( r = e.toLowerCase() ) || "text" === r;
"binarystring" !== r && "text" !== r || ( r = "string" ), t = this._decompressWorker();
var a = !this._dataBinary;
a && !s && ( t = t.pipe( new i.Utf8EncodeWorker ) ), !a && s && ( t = t.pipe( new i.Utf8DecodeWorker ) )
} catch ( e ) {
( t = new o( "error" ) ).error( e )
}
return new n( t, r, "" )
},
async: function ( e, t ) {
return this.internalStream( e ).accumulate( t )
},
nodeStream: function ( e, t ) {
return this.internalStream( e || "nodebuffer" ).toNodejsStream( t )
},
_compressWorker: function ( e, t ) {
if ( this._data instanceof s && this._data.compression.magic === e.magic ) return this._data.getCompressedWorker();
var n = this._decompressWorker();
return this._dataBinary || ( n = n.pipe( new i.Utf8EncodeWorker ) ), s.createWorkerFrom( n, e, t )
},
_decompressWorker: function () {
return this._data instanceof s ? this._data.getContentWorker() : this._data instanceof o ? this._data : new r( this._data )
}
};
for ( var l = [ "asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer" ], c = function () {
throw new Error( "This method has been removed in JSZip 3.0, please check the upgrade guide." )
}, A = 0; A < l.length; A++ ) a.prototype[ l[ A ] ] = c;
t.exports = a
}, {
"./compressedObject": 2,
"./stream/DataWorker": 27,
"./stream/GenericWorker": 28,
"./stream/StreamHelper": 29,
"./utf8": 31
} ],
36: [ function ( e, t ) {
( function ( e ) {
"use strict";
function n() {
var e, t;
i = !0;
for ( var n = A.length; n; ) {
for ( t = A, A = [], e = -1; ++e < n; ) t[ e ]();
n = A.length
}
i = !1
}
var r, i, s = e.MutationObserver || e.WebKitMutationObserver;
if ( s ) {
var o = 0,
a = new s( n ),
l = e.document.createTextNode( "" );
a.observe( l, {
characterData: !0
} ), r = function () {
l.data = o = ++o % 2
}
} else if ( e.setImmediate || void 0 === e.MessageChannel ) r = "document" in e && "onreadystatechange" in e.document.createElement( "script" ) ? function () {
var t = e.document.createElement( "script" );
t.onreadystatechange = function () {
n(), t.onreadystatechange = null, t.parentNode.removeChild( t ), t = null
}, e.document.documentElement.appendChild( t )
} : function () {
setTimeout( n, 0 )
};
else {
var c = new e.MessageChannel;
c.port1.onmessage = n, r = function () {
c.port2.postMessage( 0 )
}
}
var A = [];
t.exports = function ( e ) {
1 !== A.push( e ) || i || r()
}
} ).call( this, void 0 !== n ? n : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {} )
}, {} ],
37: [ function ( e, t ) {
"use strict";
function n() {}
function r( e ) {
if ( "function" != typeof e ) throw new TypeError( "resolver must be a function" );
this.state = p, this.queue = [], this.outcome = void 0, e !== n && a( this, e )
}
function i( e, t, n ) {
this.promise = e, "function" == typeof t && ( this.onFulfilled = t, this.callFulfilled = this.otherCallFulfilled ), "function" == typeof n && ( this.onRejected = n, this.callRejected = this.otherCallRejected )
}
function s( e, t, n ) {
c( ( function () {
var r;
try {
r = t( n )
} catch ( t ) {
return A.reject( e, t )
}
r === e ? A.reject( e, new TypeError( "Cannot resolve promise with itself" ) ) : A.resolve( e, r )
} ) )
}
function o( e ) {
var t = e && e.then;
if ( e && ( "object" == typeof e || "function" == typeof e ) && "function" == typeof t ) return function () {
t.apply( e, arguments )
}
}
function a( e, t ) {
function n( t ) {
i || ( i = !0, A.reject( e, t ) )
}
function r( t ) {
i || ( i = !0, A.resolve( e, t ) )
}
var i = !1,
s = l( ( function () {
t( r, n )
} ) );
"error" === s.status && n( s.value )
}
function l( e, t ) {
var n = {};
try {
n.value = e( t ), n.status = "success"
} catch ( e ) {
n.status = "error", n.value = e
}
return n
}
var c = e( "immediate" ),
A = {},
d = [ "REJECTED" ],
u = [ "FULFILLED" ],
p = [ "PENDING" ];
t.exports = r, r.prototype.finally = function ( e ) {
if ( "function" != typeof e ) return this;
var t = this.constructor;
return this.then( ( function ( n ) {
return t.resolve( e() ).then( ( function () {
return n
} ) )
} ), ( function ( n ) {
return t.resolve( e() ).then( ( function () {
throw n
} ) )
} ) )
}, r.prototype.catch = function ( e ) {
return this.then( null, e )
}, r.prototype.then = function ( e, t ) {
if ( "function" != typeof e && this.state === u || "function" != typeof t && this.state === d ) return this;
var r = new this.constructor( n );
return this.state !== p ? s( r, this.state === u ? e : t, this.outcome ) : this.queue.push( new i( r, e, t ) ), r
}, i.prototype.callFulfilled = function ( e ) {
A.resolve( this.promise, e )
}, i.prototype.otherCallFulfilled = function ( e ) {
s( this.promise, this.onFulfilled, e )
}, i.prototype.callRejected = function ( e ) {
A.reject( this.promise, e )
}, i.prototype.otherCallRejected = function ( e ) {
s( this.promise, this.onRejected, e )
}, A.resolve = function ( e, t ) {
var n = l( o, t );
if ( "error" === n.status ) return A.reject( e, n.value );
var r = n.value;
if ( r ) a( e, r );
else {
e.state = u, e.outcome = t;
for ( var i = -1, s = e.queue.length; ++i < s; ) e.queue[ i ].callFulfilled( t )
}
return e
}, A.reject = function ( e, t ) {
e.state = d, e.outcome = t;
for ( var n = -1, r = e.queue.length; ++n < r; ) e.queue[ n ].callRejected( t );
return e
}, r.resolve = function ( e ) {
return e instanceof this ? e : A.resolve( new this( n ), e )
}, r.reject = function ( e ) {
var t = new this( n );
return A.reject( t, e )
}, r.all = function ( e ) {
function t( e, t ) {
r.resolve( e ).then( ( function ( e ) {
o[ t ] = e, ++a !== i || s || ( s = !0, A.resolve( c, o ) )
} ), ( function ( e ) {
s || ( s = !0, A.reject( c, e ) )
} ) )
}
var r = this;
if ( "[object Array]" !== {}.toString.call( e ) ) return this.reject( new TypeError( "must be an array" ) );
var i = e.length,
s = !1;
if ( !i ) return this.resolve( [] );
for ( var o = new Array( i ), a = 0, l = -1, c = new this( n ); ++l < i; ) t( e[ l ], l );
return c
}, r.race = function ( e ) {
var t = this;
if ( "[object Array]" !== {}.toString.call( e ) ) return this.reject( new TypeError( "must be an array" ) );
var r, i = e.length,
s = !1;
if ( !i ) return this.resolve( [] );
for ( var o = -1, a = new this( n ); ++o < i; ) r = e[ o ],
t.resolve( r ).then( ( function ( e ) {
s || ( s = !0, A.resolve( a, e ) )
} ), ( function ( e ) {
s || ( s = !0, A.reject( a, e ) )
} ) );
return a
}
}, {
immediate: 36
} ],
38: [ function ( e, t ) {
"use strict";
var n = {};
( 0, e( "./lib/utils/common" ).assign )( n, e( "./lib/deflate" ), e( "./lib/inflate" ), e( "./lib/zlib/constants" ) ), t.exports = n
}, {
"./lib/deflate": 39,
"./lib/inflate": 40,
"./lib/utils/common": 41,
"./lib/zlib/constants": 44
} ],
39: [ function ( e, t, n ) {
"use strict";
function r( e ) {
if ( !( this instanceof r ) ) return new r( e );
this.options = o.assign( {
level: u,
method: h,
chunkSize: 16384,
windowBits: 15,
memLevel: 8,
strategy: p,
to: ""
}, e || {} );
var t = this.options;
t.raw && t.windowBits > 0 ? t.windowBits = -t.windowBits : t.gzip && t.windowBits > 0 && t.windowBits < 16 && ( t.windowBits += 16 ), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new c, this.strm.avail_out = 0;
var n = s.deflateInit2( this.strm, t.level, t.method, t.windowBits, t.memLevel, t.strategy );
if ( n !== d ) throw new Error( l[ n ] );
if ( t.header && s.deflateSetHeader( this.strm, t.header ), t.dictionary ) {
var i;
if ( i = "string" == typeof t.dictionary ? a.string2buf( t.dictionary ) : "[object ArrayBuffer]" === A.call( t.dictionary ) ? new Uint8Array( t.dictionary ) : t.dictionary, ( n = s.deflateSetDictionary( this.strm, i ) ) !== d ) throw new Error( l[ n ] );
this._dict_set = !0
}
}
function i( e, t ) {
var n = new r( t );
if ( n.push( e, !0 ), n.err ) throw n.msg || l[ n.err ];
return n.result
}
var s = e( "./zlib/deflate" ),
o = e( "./utils/common" ),
a = e( "./utils/strings" ),
l = e( "./zlib/messages" ),
c = e( "./zlib/zstream" ),
A = {}.toString,
d = 0,
u = -1,
p = 0,
h = 8;
r.prototype.push = function ( e, t ) {
var n, r, i = this.strm,
l = this.options.chunkSize;
if ( this.ended ) return !1;
r = t === ~~t ? t : !0 === t ? 4 : 0, "string" == typeof e ? i.input = a.string2buf( e ) : "[object ArrayBuffer]" === A.call( e ) ? i.input = new Uint8Array( e ) : i.input = e, i.next_in = 0, i.avail_in = i.input.length;
do {
if ( 0 === i.avail_out && ( i.output = new o.Buf8( l ), i.next_out = 0, i.avail_out = l ), 1 !== ( n = s.deflate( i, r ) ) && n !== d ) return this.onEnd( n ), this.ended = !0, !1;
0 !== i.avail_out && ( 0 !== i.avail_in || 4 !== r && 2 !== r ) || ( "string" === this.options.to ? this.onData( a.buf2binstring( o.shrinkBuf( i.output, i.next_out ) ) ) : this.onData( o.shrinkBuf( i.output, i.next_out ) ) )
} while ( ( i.avail_in > 0 || 0 === i.avail_out ) && 1 !== n );
return 4 === r ? ( n = s.deflateEnd( this.strm ), this.onEnd( n ), this.ended = !0, n === d ) : 2 !== r || ( this.onEnd( d ), i.avail_out = 0, !0 )
}, r.prototype.onData = function ( e ) {
this.chunks.push( e )
}, r.prototype.onEnd = function ( e ) {
e === d && ( "string" === this.options.to ? this.result = this.chunks.join( "" ) : this.result = o.flattenChunks( this.chunks ) ), this.chunks = [], this.err = e, this.msg = this.strm.msg
}, n.Deflate = r, n.deflate = i, n.deflateRaw = function ( e, t ) {
return ( t = t || {} ).raw = !0, i( e, t )
}, n.gzip = function ( e, t ) {
return ( t = t || {} ).gzip = !0, i( e, t )
}
}, {
"./utils/common": 41,
"./utils/strings": 42,
"./zlib/deflate": 46,
"./zlib/messages": 51,
"./zlib/zstream": 53
} ],
40: [ function ( e, t, n ) {
"use strict";
function r( e ) {
if ( !( this instanceof r ) ) return new r( e );
this.options = o.assign( {
chunkSize: 16384,
windowBits: 0,
to: ""
}, e || {} );
var t = this.options;
t.raw && t.windowBits >= 0 && t.windowBits < 16 && ( t.windowBits = -t.windowBits, 0 === t.windowBits && ( t.windowBits = -15 ) ), !( t.windowBits >= 0 && t.windowBits < 16 ) || e && e.windowBits || ( t.windowBits += 32 ), t.windowBits > 15 && t.windowBits < 48 && 0 == ( 15 & t.windowBits ) && ( t.windowBits |= 15 ), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new A, this.strm.avail_out = 0;
var n = s.inflateInit2( this.strm, t.windowBits );
if ( n !== l.Z_OK ) throw new Error( c[ n ] );
this.header = new d, s.inflateGetHeader( this.strm, this.header )
}
function i( e, t ) {
var n = new r( t );
if ( n.push( e, !0 ), n.err ) throw n.msg || c[ n.err ];
return n.result
}
var s = e( "./zlib/inflate" ),
o = e( "./utils/common" ),
a = e( "./utils/strings" ),
l = e( "./zlib/constants" ),
c = e( "./zlib/messages" ),
A = e( "./zlib/zstream" ),
d = e( "./zlib/gzheader" ),
u = {}.toString;
r.prototype.push = function ( e, t ) {
var n, r, i, c, A, d, p = this.strm,
h = this.options.chunkSize,
f = this.options.dictionary,
g = !1;
if ( this.ended ) return !1;
r = t === ~~t ? t : !0 === t ? l.Z_FINISH : l.Z_NO_FLUSH, "string" == typeof e ? p.input = a.binstring2buf( e ) : "[object ArrayBuffer]" === u.call( e ) ? p.input = new Uint8Array( e ) : p.input = e, p.next_in = 0, p.avail_in = p.input.length;
do {
if ( 0 === p.avail_out && ( p.output = new o.Buf8( h ), p.next_out = 0, p.avail_out = h ), ( n = s.inflate( p, l.Z_NO_FLUSH ) ) === l.Z_NEED_DICT && f && ( d = "string" == typeof f ? a.string2buf( f ) : "[object ArrayBuffer]" === u.call( f ) ? new Uint8Array( f ) : f, n = s.inflateSetDictionary( this.strm, d ) ),
n === l.Z_BUF_ERROR && !0 === g && ( n = l.Z_OK, g = !1 ), n !== l.Z_STREAM_END && n !== l.Z_OK ) return this.onEnd( n ), this.ended = !0, !1;
p.next_out && ( 0 !== p.avail_out && n !== l.Z_STREAM_END && ( 0 !== p.avail_in || r !== l.Z_FINISH && r !== l.Z_SYNC_FLUSH ) || ( "string" === this.options.to ? ( i = a.utf8border( p.output, p.next_out ), c = p.next_out - i, A = a.buf2string( p.output, i ), p.next_out = c, p.avail_out = h - c, c && o.arraySet( p.output, p.output, i, c, 0 ), this.onData( A ) ) : this.onData( o.shrinkBuf( p.output, p.next_out ) ) ) ), 0 === p.avail_in && 0 === p.avail_out && ( g = !0 )
} while ( ( p.avail_in > 0 || 0 === p.avail_out ) && n !== l.Z_STREAM_END );
return n === l.Z_STREAM_END && ( r = l.Z_FINISH ), r === l.Z_FINISH ? ( n = s.inflateEnd( this.strm ), this.onEnd( n ), this.ended = !0, n === l.Z_OK ) : r !== l.Z_SYNC_FLUSH || ( this.onEnd( l.Z_OK ), p.avail_out = 0, !0 )
}, r.prototype.onData = function ( e ) {
this.chunks.push( e )
}, r.prototype.onEnd = function ( e ) {
e === l.Z_OK && ( "string" === this.options.to ? this.result = this.chunks.join( "" ) : this.result = o.flattenChunks( this.chunks ) ), this.chunks = [], this.err = e, this.msg = this.strm.msg
},
n.Inflate = r, n.inflate = i, n.inflateRaw = function ( e, t ) {
return ( t = t || {} ).raw = !0, i( e, t )
}, n.ungzip = i
}, {
"./utils/common": 41,
"./utils/strings": 42,
"./zlib/constants": 44,
"./zlib/gzheader": 47,
"./zlib/inflate": 49,
"./zlib/messages": 51,
"./zlib/zstream": 53
} ],
41: [ function ( e, t, n ) {
"use strict";
var r = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array;
n.assign = function ( e ) {
for ( var t = [].slice.call( arguments, 1 ); t.length; ) {
var n = t.shift();
if ( n ) {
if ( "object" != typeof n ) throw new TypeError( n + "must be non-object" );
for ( var r in n ) n.hasOwnProperty( r ) && ( e[ r ] = n[ r ] )
}
}
return e
}, n.shrinkBuf = function ( e, t ) {
return e.length === t ? e : e.subarray ? e.subarray( 0, t ) : ( e.length = t, e )
};
var i = {
arraySet: function ( e, t, n, r, i ) {
if ( t.subarray && e.subarray ) e.set( t.subarray( n, n + r ), i );
else
for ( var s = 0; s < r; s++ ) e[ i + s ] = t[ n + s ]
},
flattenChunks: function ( e ) {
var t, n, r, i, s, o;
for ( r = 0, t = 0, n = e.length; t < n; t++ ) r += e[ t ].length;
for ( o = new Uint8Array( r ), i = 0, t = 0, n = e.length; t < n; t++ ) s = e[ t ],
o.set( s, i ), i += s.length;
return o
}
},
s = {
arraySet: function ( e, t, n, r, i ) {
for ( var s = 0; s < r; s++ ) e[ i + s ] = t[ n + s ]
},
flattenChunks: function ( e ) {
return [].concat.apply( [], e )
}
};
n.setTyped = function ( e ) {
e ? ( n.Buf8 = Uint8Array, n.Buf16 = Uint16Array, n.Buf32 = Int32Array, n.assign( n, i ) ) : ( n.Buf8 = Array, n.Buf16 = Array, n.Buf32 = Array, n.assign( n, s ) )
}, n.setTyped( r )
}, {} ],
42: [ function ( e, t, n ) {
"use strict";
function r( e, t ) {
if ( t < 65537 && ( e.subarray && o || !e.subarray && s ) ) return String.fromCharCode.apply( null, i.shrinkBuf( e, t ) );
for ( var n = "", r = 0; r < t; r++ ) n += String.fromCharCode( e[ r ] );
return n
}
var i = e( "./common" ),
s = !0,
o = !0;
try {
String.fromCharCode.apply( null, [ 0 ] )
} catch ( e ) {
s = !1
}
try {
String.fromCharCode.apply( null, new Uint8Array( 1 ) )
} catch ( e ) {
o = !1
}
for ( var a = new i.Buf8( 256 ), l = 0; l < 256; l++ ) a[ l ] = l >= 252 ? 6 : l >= 248 ? 5 : l >= 240 ? 4 : l >= 224 ? 3 : l >= 192 ? 2 : 1;
a[ 254 ] = a[ 254 ] = 1, n.string2buf = function ( e ) {
var t, n, r, s, o, a = e.length,
l = 0;
for ( s = 0; s < a; s++ ) 55296 == ( 64512 & ( n = e.charCodeAt( s ) ) ) && s + 1 < a && 56320 == ( 64512 & ( r = e.charCodeAt( s + 1 ) ) ) && ( n = 65536 + ( n - 55296 << 10 ) + ( r - 56320 ), s++ ), l += n < 128 ? 1 : n < 2048 ? 2 : n < 65536 ? 3 : 4;
for ( t = new i.Buf8( l ), o = 0, s = 0; o < l; s++ ) 55296 == ( 64512 & ( n = e.charCodeAt( s ) ) ) && s + 1 < a && 56320 == ( 64512 & ( r = e.charCodeAt( s + 1 ) ) ) && ( n = 65536 + ( n - 55296 << 10 ) + ( r - 56320 ), s++ ), n < 128 ? t[ o++ ] = n : n < 2048 ? ( t[ o++ ] = 192 | n >>> 6, t[ o++ ] = 128 | 63 & n ) : n < 65536 ? ( t[ o++ ] = 224 | n >>> 12, t[ o++ ] = 128 | n >>> 6 & 63, t[ o++ ] = 128 | 63 & n ) : ( t[ o++ ] = 240 | n >>> 18, t[ o++ ] = 128 | n >>> 12 & 63,
t[ o++ ] = 128 | n >>> 6 & 63, t[ o++ ] = 128 | 63 & n );
return t
}, n.buf2binstring = function ( e ) {
return r( e, e.length )
}, n.binstring2buf = function ( e ) {
for ( var t = new i.Buf8( e.length ), n = 0, r = t.length; n < r; n++ ) t[ n ] = e.charCodeAt( n );
return t
}, n.buf2string = function ( e, t ) {
var n, i, s, o, l = t || e.length,
c = new Array( 2 * l );
for ( i = 0, n = 0; n < l; )
if ( ( s = e[ n++ ] ) < 128 ) c[ i++ ] = s;
else if ( ( o = a[ s ] ) > 4 ) c[ i++ ] = 65533, n += o - 1;
else {
for ( s &= 2 === o ? 31 : 3 === o ? 15 : 7; o > 1 && n < l; ) s = s << 6 | 63 & e[ n++ ], o--;
o > 1 ? c[ i++ ] = 65533 : s < 65536 ? c[ i++ ] = s : ( s -= 65536, c[ i++ ] = 55296 | s >> 10 & 1023,
c[ i++ ] = 56320 | 1023 & s )
}
return r( c, i )
}, n.utf8border = function ( e, t ) {
var n;
for ( ( t = t || e.length ) > e.length && ( t = e.length ), n = t - 1; n >= 0 && 128 == ( 192 & e[ n ] ); ) n--;
return n < 0 || 0 === n ? t : n + a[ e[ n ] ] > t ? n : t
}
}, {
"./common": 41
} ],
43: [ function ( e, t ) {
"use strict";
t.exports = function ( e, t, n, r ) {
for ( var i = 65535 & e | 0, s = e >>> 16 & 65535 | 0, o = 0; 0 !== n; ) {
n -= o = n > 2e3 ? 2e3 : n;
do {
s = s + ( i = i + t[ r++ ] | 0 ) | 0
} while ( --o );
i %= 65521, s %= 65521
}
return i | s << 16 | 0
}
}, {} ],
44: [ function ( e, t ) {
"use strict";
t.exports = {
Z_NO_FLUSH: 0,
Z_PARTIAL_FLUSH: 1,
Z_SYNC_FLUSH: 2,
Z_FULL_FLUSH: 3,
Z_FINISH: 4,
Z_BLOCK: 5,
Z_TREES: 6,
Z_OK: 0,
Z_STREAM_END: 1,
Z_NEED_DICT: 2,
Z_ERRNO: -1,
Z_STREAM_ERROR: -2,
Z_DATA_ERROR: -3,
Z_BUF_ERROR: -5,
Z_NO_COMPRESSION: 0,
Z_BEST_SPEED: 1,
Z_BEST_COMPRESSION: 9,
Z_DEFAULT_COMPRESSION: -1,
Z_FILTERED: 1,
Z_HUFFMAN_ONLY: 2,
Z_RLE: 3,
Z_FIXED: 4,
Z_DEFAULT_STRATEGY: 0,
Z_BINARY: 0,
Z_TEXT: 1,
Z_UNKNOWN: 2,
Z_DEFLATED: 8
}
}, {} ],
45: [ function ( e, t ) {
"use strict";
var n = function () {
for ( var e, t = [], n = 0; n < 256; n++ ) {
e = n;
for ( var r = 0; r < 8; r++ ) e = 1 & e ? 3988292384 ^ e >>> 1 : e >>> 1;
t[ n ] = e
}
return t
}();
t.exports = function ( e, t, r, i ) {
var s = n,
o = i + r;
e ^= -1;
for ( var a = i; a < o; a++ ) e = e >>> 8 ^ s[ 255 & ( e ^ t[ a ] ) ];
return -1 ^ e
}
}, {} ],
46: [ function ( e, t, n ) {
"use strict";
function r( e, t ) {
return e.msg = R[ t ], t
}
function i( e ) {
return ( e << 1 ) - ( e > 4 ? 9 : 0 )
}
function s( e ) {
for ( var t = e.length; --t >= 0; ) e[ t ] = 0
}
function o( e ) {
var t = e.state,
n = t.pending;
n > e.avail_out && ( n = e.avail_out ), 0 !== n && ( v.arraySet( e.output, t.pending_buf, t.pending_out, n, e.next_out ), e.next_out += n, t.pending_out += n, e.total_out += n, e.avail_out -= n, t.pending -= n,
0 === t.pending && ( t.pending_out = 0 ) )
}
function a( e, t ) {
w._tr_flush_block( e, e.block_start >= 0 ? e.block_start : -1, e.strstart - e.block_start, t ), e.block_start = e.strstart, o( e.strm )
}
function l( e, t ) {
e.pending_buf[ e.pending++ ] = t
}
function c( e, t ) {
e.pending_buf[ e.pending++ ] = t >>> 8 & 255, e.pending_buf[ e.pending++ ] = 255 & t
}
function A( e, t ) {
var n, r, i = e.max_chain_length,
s = e.strstart,
o = e.prev_length,
a = e.nice_match,
l = e.strstart > e.w_size - $ ? e.strstart - ( e.w_size - $ ) : 0,
c = e.window,
A = e.w_mask,
d = e.prev,
u = e.strstart + K,
p = c[ s + o - 1 ],
h = c[ s + o ];
e.prev_length >= e.good_match && ( i >>= 2 ), a > e.lookahead && ( a = e.lookahead );
do {
if ( c[ ( n = t ) + o ] === h && c[ n + o - 1 ] === p && c[ n ] === c[ s ] && c[ ++n ] === c[ s + 1 ] ) {
s += 2, n++;
do {} while ( c[ ++s ] === c[ ++n ] && c[ ++s ] === c[ ++n ] && c[ ++s ] === c[ ++n ] && c[ ++s ] === c[ ++n ] && c[ ++s ] === c[ ++n ] && c[ ++s ] === c[ ++n ] && c[ ++s ] === c[ ++n ] && c[ ++s ] === c[ ++n ] && s < u );
if ( r = K - ( u - s ),
s = u - K, r > o ) {
if ( e.match_start = t, o = r, r >= a ) break;
p = c[ s + o - 1 ], h = c[ s + o ]
}
}
} while ( ( t = d[ t & A ] ) > l && 0 != --i );
return o <= e.lookahead ? o : e.lookahead
}
function d( e ) {
var t, n, r, i, s, o, a, l, c, A, d = e.w_size;
do {
if ( i = e.window_size - e.lookahead - e.strstart, e.strstart >= d + ( d - $ ) ) {
v.arraySet( e.window, e.window, d, d, 0 ), e.match_start -= d, e.strstart -= d, e.block_start -= d, t = n = e.hash_size;
do {
r = e.head[ --t ], e.head[ t ] = r >= d ? r - d : 0
} while ( --n );
t = n = d;
do {
r = e.prev[ --t ], e.prev[ t ] = r >= d ? r - d : 0
} while ( --n );
i += d
}
if ( 0 === e.strm.avail_in ) break;
if ( o = e.strm,
a = e.window, l = e.strstart + e.lookahead, c = i, A = void 0, ( A = o.avail_in ) > c && ( A = c ), n = 0 === A ? 0 : ( o.avail_in -= A, v.arraySet( a, o.input, o.next_in, A, l ), 1 === o.state.wrap ? o.adler = k( o.adler, a, A, l ) : 2 === o.state.wrap && ( o.adler = y( o.adler, a, A, l ) ), o.next_in += A, o.total_in += A, A ), e.lookahead += n, e.lookahead + e.insert >= q )
for ( s = e.strstart - e.insert, e.ins_h = e.window[ s ], e.ins_h = ( e.ins_h << e.hash_shift ^ e.window[ s + 1 ] ) & e.hash_mask; e.insert && ( e.ins_h = ( e.ins_h << e.hash_shift ^ e.window[ s + q - 1 ] ) & e.hash_mask, e.prev[ s & e.w_mask ] = e.head[ e.ins_h ],
e.head[ e.ins_h ] = s, s++, e.insert--, !( e.lookahead + e.insert < q ) ); );
} while ( e.lookahead < $ && 0 !== e.strm.avail_in )
}
function u( e, t ) {
for ( var n, r;; ) {
if ( e.lookahead < $ ) {
if ( d( e ), e.lookahead < $ && t === x ) return le;
if ( 0 === e.lookahead ) break
}
if ( n = 0, e.lookahead >= q && ( e.ins_h = ( e.ins_h << e.hash_shift ^ e.window[ e.strstart + q - 1 ] ) & e.hash_mask, n = e.prev[ e.strstart & e.w_mask ] = e.head[ e.ins_h ], e.head[ e.ins_h ] = e.strstart ), 0 !== n && e.strstart - n <= e.w_size - $ && ( e.match_length = A( e, n ) ),
e.match_length >= q )
if ( r = w._tr_tally( e, e.strstart - e.match_start, e.match_length - q ), e.lookahead -= e.match_length, e.match_length <= e.max_lazy_match && e.lookahead >= q ) {
e.match_length--;
do {
e.strstart++, e.ins_h = ( e.ins_h << e.hash_shift ^ e.window[ e.strstart + q - 1 ] ) & e.hash_mask, n = e.prev[ e.strstart & e.w_mask ] = e.head[ e.ins_h ], e.head[ e.ins_h ] = e.strstart
} while ( 0 != --e.match_length );
e.strstart++
} else e.strstart += e.match_length, e.match_length = 0, e.ins_h = e.window[ e.strstart ],
e.ins_h = ( e.ins_h << e.hash_shift ^ e.window[ e.strstart + 1 ] ) & e.hash_mask;
else r = w._tr_tally( e, 0, e.window[ e.strstart ] ), e.lookahead--, e.strstart++;
if ( r && ( a( e, !1 ), 0 === e.strm.avail_out ) ) return le
}
return e.insert = e.strstart < q - 1 ? e.strstart : q - 1, t === I ? ( a( e, !0 ), 0 === e.strm.avail_out ? Ae : de ) : e.last_lit && ( a( e, !1 ), 0 === e.strm.avail_out ) ? le : ce
}
function p( e, t ) {
for ( var n, r, i;; ) {
if ( e.lookahead < $ ) {
if ( d( e ), e.lookahead < $ && t === x ) return le;
if ( 0 === e.lookahead ) break
}
if ( n = 0,
e.lookahead >= q && ( e.ins_h = ( e.ins_h << e.hash_shift ^ e.window[ e.strstart + q - 1 ] ) & e.hash_mask, n = e.prev[ e.strstart & e.w_mask ] = e.head[ e.ins_h ], e.head[ e.ins_h ] = e.strstart ), e.prev_length = e.match_length, e.prev_match = e.match_start, e.match_length = q - 1, 0 !== n && e.prev_length < e.max_lazy_match && e.strstart - n <= e.w_size - $ && ( e.match_length = A( e, n ), e.match_length <= 5 && ( e.strategy === B || e.match_length === q && e.strstart - e.match_start > 4096 ) && ( e.match_length = q - 1 ) ), e.prev_length >= q && e.match_length <= e.prev_length ) {
i = e.strstart + e.lookahead - q, r = w._tr_tally( e, e.strstart - 1 - e.prev_match, e.prev_length - q ), e.lookahead -= e.prev_length - 1, e.prev_length -= 2;
do {
++e.strstart <= i && ( e.ins_h = ( e.ins_h << e.hash_shift ^ e.window[ e.strstart + q - 1 ] ) & e.hash_mask, n = e.prev[ e.strstart & e.w_mask ] = e.head[ e.ins_h ], e.head[ e.ins_h ] = e.strstart )
} while ( 0 != --e.prev_length );
if ( e.match_available = 0, e.match_length = q - 1, e.strstart++, r && ( a( e, !1 ), 0 === e.strm.avail_out ) ) return le
} else if ( e.match_available ) {
if ( ( r = w._tr_tally( e, 0, e.window[ e.strstart - 1 ] ) ) && a( e, !1 ), e.strstart++, e.lookahead--, 0 === e.strm.avail_out ) return le
} else e.match_available = 1, e.strstart++, e.lookahead--
}
return e.match_available && ( r = w._tr_tally( e, 0, e.window[ e.strstart - 1 ] ), e.match_available = 0 ), e.insert = e.strstart < q - 1 ? e.strstart : q - 1, t === I ? ( a( e, !0 ), 0 === e.strm.avail_out ? Ae : de ) : e.last_lit && ( a( e, !1 ), 0 === e.strm.avail_out ) ? le : ce
}
function h( e, t, n, r, i ) {
this.good_length = e, this.max_lazy = t, this.nice_length = n, this.max_chain = r, this.func = i
}
function f() {
this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = P, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0,
this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new v.Buf16( 2 * W ), this.dyn_dtree = new v.Buf16( 2 * ( 2 * Y + 1 ) ), this.bl_tree = new v.Buf16( 2 * ( 2 * X + 1 ) ), s( this.dyn_ltree ), s( this.dyn_dtree ), s( this.bl_tree ), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new v.Buf16( J + 1 ), this.heap = new v.Buf16( 2 * H + 1 ), s( this.heap ), this.heap_len = 0, this.heap_max = 0,
this.depth = new v.Buf16( 2 * H + 1 ), s( this.depth ), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0
}
function g( e ) {
var t;
return e && e.state ? ( e.total_in = e.total_out = 0, e.data_type = L, ( t = e.state ).pending = 0, t.pending_out = 0, t.wrap < 0 && ( t.wrap = -t.wrap ), t.status = t.wrap ? te : oe, e.adler = 2 === t.wrap ? 0 : 1, t.last_flush = x, w._tr_init( t ), G ) : r( e, T )
}
function m( e ) {
var t, n = g( e );
return n === G && ( ( t = e.state ).window_size = 2 * t.w_size, s( t.head ), t.max_lazy_match = b[ t.level ].max_lazy, t.good_match = b[ t.level ].good_length, t.nice_match = b[ t.level ].nice_length, t.max_chain_length = b[ t.level ].max_chain, t.strstart = 0, t.block_start = 0, t.lookahead = 0, t.insert = 0, t.match_length = t.prev_length = q - 1, t.match_available = 0, t.ins_h = 0 ), n
}
function _( e, t, n, i, s, o ) {
if ( !e ) return T;
var a = 1;
if ( t === U && ( t = 6 ), i < 0 ? ( a = 0, i = -i ) : i > 15 && ( a = 2, i -= 16 ), s < 1 || s > z || n !== P || i < 8 || i > 15 || t < 0 || t > 9 || o < 0 || o > j ) return r( e, T );
8 === i && ( i = 9 );
var l = new f;
return e.state = l, l.strm = e, l.wrap = a, l.gzhead = null, l.w_bits = i, l.w_size = 1 << l.w_bits, l.w_mask = l.w_size - 1, l.hash_bits = s + 7, l.hash_size = 1 << l.hash_bits, l.hash_mask = l.hash_size - 1, l.hash_shift = ~~( ( l.hash_bits + q - 1 ) / q ), l.window = new v.Buf8( 2 * l.w_size ), l.head = new v.Buf16( l.hash_size ), l.prev = new v.Buf16( l.w_size ), l.lit_bufsize = 1 << s + 6, l.pending_buf_size = 4 * l.lit_bufsize, l.pending_buf = new v.Buf8( l.pending_buf_size ), l.d_buf = 1 * l.lit_bufsize, l.l_buf = 3 * l.lit_bufsize, l.level = t, l.strategy = o, l.method = n, m( e )
}
var b, v = e( "../utils/common" ),
w = e( "./trees" ),
k = e( "./adler32" ),
y = e( "./crc32" ),
R = e( "./messages" ),
x = 0,
C = 1,
E = 3,
I = 4,
M = 5,
G = 0,
Z = 1,
T = -2,
N = -3,
S = -5,
U = -1,
B = 1,
O = 2,
F = 3,
j = 4,
D = 0,
L = 2,
P = 8,
z = 9,
V = 15,
Q = 8,
H = 286,
Y = 30,
X = 19,
W = 2 * H + 1,
J = 15,
q = 3,
K = 258,
$ = K + q + 1,
ee = 32,
te = 42,
ne = 69,
re = 73,
ie = 91,
se = 103,
oe = 113,
ae = 666,
le = 1,
ce = 2,
Ae = 3,
de = 4,
ue = 3;
b = [ new h( 0, 0, 0, 0, ( function ( e, t ) {
var n = 65535;
for ( n > e.pending_buf_size - 5 && ( n = e.pending_buf_size - 5 );; ) {
if ( e.lookahead <= 1 ) {
if ( d( e ), 0 === e.lookahead && t === x ) return le;
if ( 0 === e.lookahead ) break
}
e.strstart += e.lookahead, e.lookahead = 0;
var r = e.block_start + n;
if ( ( 0 === e.strstart || e.strstart >= r ) && ( e.lookahead = e.strstart - r, e.strstart = r, a( e, !1 ), 0 === e.strm.avail_out ) ) return le;
if ( e.strstart - e.block_start >= e.w_size - $ && ( a( e, !1 ), 0 === e.strm.avail_out ) ) return le
}
return e.insert = 0, t === I ? ( a( e, !0 ), 0 === e.strm.avail_out ? Ae : de ) : ( e.strstart > e.block_start && ( a( e, !1 ), e.strm.avail_out ), le )
} ) ), new h( 4, 4, 8, 4, u ), new h( 4, 5, 16, 8, u ), new h( 4, 6, 32, 32, u ), new h( 4, 4, 16, 16, p ), new h( 8, 16, 32, 32, p ), new h( 8, 16, 128, 128, p ), new h( 8, 32, 128, 256, p ), new h( 32, 128, 258, 1024, p ), new h( 32, 258, 258, 4096, p ) ], n.deflateInit = function ( e, t ) {
return _( e, t, P, V, Q, D )
}, n.deflateInit2 = _, n.deflateReset = m, n.deflateResetKeep = g, n.deflateSetHeader = function ( e, t ) {
return e && e.state ? 2 !== e.state.wrap ? T : ( e.state.gzhead = t, G ) : T
}, n.deflate = function ( e, t ) {
var n, A, u, p;
if ( !e || !e.state || t > M || t < 0 ) return e ? r( e, T ) : T;
if ( A = e.state,
!e.output || !e.input && 0 !== e.avail_in || A.status === ae && t !== I ) return r( e, 0 === e.avail_out ? S : T );
if ( A.strm = e, n = A.last_flush, A.last_flush = t, A.status === te )
if ( 2 === A.wrap ) e.adler = 0, l( A, 31 ), l( A, 139 ), l( A, 8 ), A.gzhead ? ( l( A, ( A.gzhead.text ? 1 : 0 ) + ( A.gzhead.hcrc ? 2 : 0 ) + ( A.gzhead.extra ? 4 : 0 ) + ( A.gzhead.name ? 8 : 0 ) + ( A.gzhead.comment ? 16 : 0 ) ), l( A, 255 & A.gzhead.time ), l( A, A.gzhead.time >> 8 & 255 ), l( A, A.gzhead.time >> 16 & 255 ), l( A, A.gzhead.time >> 24 & 255 ), l( A, 9 === A.level ? 2 : A.strategy >= O || A.level < 2 ? 4 : 0 ), l( A, 255 & A.gzhead.os ),
A.gzhead.extra && A.gzhead.extra.length && ( l( A, 255 & A.gzhead.extra.length ), l( A, A.gzhead.extra.length >> 8 & 255 ) ), A.gzhead.hcrc && ( e.adler = y( e.adler, A.pending_buf, A.pending, 0 ) ), A.gzindex = 0, A.status = ne ) : ( l( A, 0 ), l( A, 0 ), l( A, 0 ), l( A, 0 ), l( A, 0 ), l( A, 9 === A.level ? 2 : A.strategy >= O || A.level < 2 ? 4 : 0 ), l( A, ue ), A.status = oe );
else {
var h = P + ( A.w_bits - 8 << 4 ) << 8;
h |= ( A.strategy >= O || A.level < 2 ? 0 : A.level < 6 ? 1 : 6 === A.level ? 2 : 3 ) << 6, 0 !== A.strstart && ( h |= ee ), h += 31 - h % 31, A.status = oe, c( A, h ), 0 !== A.strstart && ( c( A, e.adler >>> 16 ),
c( A, 65535 & e.adler ) ), e.adler = 1
} if ( A.status === ne )
if ( A.gzhead.extra ) {
for ( u = A.pending; A.gzindex < ( 65535 & A.gzhead.extra.length ) && ( A.pending !== A.pending_buf_size || ( A.gzhead.hcrc && A.pending > u && ( e.adler = y( e.adler, A.pending_buf, A.pending - u, u ) ), o( e ), u = A.pending, A.pending !== A.pending_buf_size ) ); ) l( A, 255 & A.gzhead.extra[ A.gzindex ] ), A.gzindex++;
A.gzhead.hcrc && A.pending > u && ( e.adler = y( e.adler, A.pending_buf, A.pending - u, u ) ), A.gzindex === A.gzhead.extra.length && ( A.gzindex = 0, A.status = re )
} else A.status = re;
if ( A.status === re )
if ( A.gzhead.name ) {
u = A.pending;
do {
if ( A.pending === A.pending_buf_size && ( A.gzhead.hcrc && A.pending > u && ( e.adler = y( e.adler, A.pending_buf, A.pending - u, u ) ), o( e ), u = A.pending, A.pending === A.pending_buf_size ) ) {
p = 1;
break
}
p = A.gzindex < A.gzhead.name.length ? 255 & A.gzhead.name.charCodeAt( A.gzindex++ ) : 0, l( A, p )
} while ( 0 !== p );
A.gzhead.hcrc && A.pending > u && ( e.adler = y( e.adler, A.pending_buf, A.pending - u, u ) ), 0 === p && ( A.gzindex = 0, A.status = ie )
} else A.status = ie;
if ( A.status === ie )
if ( A.gzhead.comment ) {
u = A.pending;
do {
if ( A.pending === A.pending_buf_size && ( A.gzhead.hcrc && A.pending > u && ( e.adler = y( e.adler, A.pending_buf, A.pending - u, u ) ), o( e ), u = A.pending, A.pending === A.pending_buf_size ) ) {
p = 1;
break
}
p = A.gzindex < A.gzhead.comment.length ? 255 & A.gzhead.comment.charCodeAt( A.gzindex++ ) : 0, l( A, p )
} while ( 0 !== p );
A.gzhead.hcrc && A.pending > u && ( e.adler = y( e.adler, A.pending_buf, A.pending - u, u ) ), 0 === p && ( A.status = se )
} else A.status = se;
if ( A.status === se && ( A.gzhead.hcrc ? ( A.pending + 2 > A.pending_buf_size && o( e ),
A.pending + 2 <= A.pending_buf_size && ( l( A, 255 & e.adler ), l( A, e.adler >> 8 & 255 ), e.adler = 0, A.status = oe ) ) : A.status = oe ), 0 !== A.pending ) {
if ( o( e ), 0 === e.avail_out ) return A.last_flush = -1, G
} else if ( 0 === e.avail_in && i( t ) <= i( n ) && t !== I ) return r( e, S );
if ( A.status === ae && 0 !== e.avail_in ) return r( e, S );
if ( 0 !== e.avail_in || 0 !== A.lookahead || t !== x && A.status !== ae ) {
var f = A.strategy === O ? function ( e, t ) {
for ( var n;; ) {
if ( 0 === e.lookahead && ( d( e ), 0 === e.lookahead ) ) {
if ( t === x ) return le;
break
}
if ( e.match_length = 0,
n = w._tr_tally( e, 0, e.window[ e.strstart ] ), e.lookahead--, e.strstart++, n && ( a( e, !1 ), 0 === e.strm.avail_out ) ) return le
}
return e.insert = 0, t === I ? ( a( e, !0 ), 0 === e.strm.avail_out ? Ae : de ) : e.last_lit && ( a( e, !1 ), 0 === e.strm.avail_out ) ? le : ce
}( A, t ) : A.strategy === F ? function ( e, t ) {
for ( var n, r, i, s, o = e.window;; ) {
if ( e.lookahead <= K ) {
if ( d( e ), e.lookahead <= K && t === x ) return le;
if ( 0 === e.lookahead ) break
}
if ( e.match_length = 0, e.lookahead >= q && e.strstart > 0 && ( r = o[ i = e.strstart - 1 ] ) === o[ ++i ] && r === o[ ++i ] && r === o[ ++i ] ) {
s = e.strstart + K;
do {} while ( r === o[ ++i ] && r === o[ ++i ] && r === o[ ++i ] && r === o[ ++i ] && r === o[ ++i ] && r === o[ ++i ] && r === o[ ++i ] && r === o[ ++i ] && i < s );
e.match_length = K - ( s - i ), e.match_length > e.lookahead && ( e.match_length = e.lookahead )
}
if ( e.match_length >= q ? ( n = w._tr_tally( e, 1, e.match_length - q ), e.lookahead -= e.match_length, e.strstart += e.match_length, e.match_length = 0 ) : ( n = w._tr_tally( e, 0, e.window[ e.strstart ] ), e.lookahead--, e.strstart++ ), n && ( a( e, !1 ), 0 === e.strm.avail_out ) ) return le
}
return e.insert = 0, t === I ? ( a( e, !0 ),
0 === e.strm.avail_out ? Ae : de ) : e.last_lit && ( a( e, !1 ), 0 === e.strm.avail_out ) ? le : ce
}( A, t ) : b[ A.level ].func( A, t );
if ( f !== Ae && f !== de || ( A.status = ae ), f === le || f === Ae ) return 0 === e.avail_out && ( A.last_flush = -1 ), G;
if ( f === ce && ( t === C ? w._tr_align( A ) : t !== M && ( w._tr_stored_block( A, 0, 0, !1 ), t === E && ( s( A.head ), 0 === A.lookahead && ( A.strstart = 0, A.block_start = 0, A.insert = 0 ) ) ), o( e ), 0 === e.avail_out ) ) return A.last_flush = -1, G
}
return t !== I ? G : A.wrap <= 0 ? Z : ( 2 === A.wrap ? ( l( A, 255 & e.adler ), l( A, e.adler >> 8 & 255 ), l( A, e.adler >> 16 & 255 ),
l( A, e.adler >> 24 & 255 ), l( A, 255 & e.total_in ), l( A, e.total_in >> 8 & 255 ), l( A, e.total_in >> 16 & 255 ), l( A, e.total_in >> 24 & 255 ) ) : ( c( A, e.adler >>> 16 ), c( A, 65535 & e.adler ) ), o( e ), A.wrap > 0 && ( A.wrap = -A.wrap ), 0 !== A.pending ? G : Z )
}, n.deflateEnd = function ( e ) {
var t;
return e && e.state ? ( t = e.state.status ) !== te && t !== ne && t !== re && t !== ie && t !== se && t !== oe && t !== ae ? r( e, T ) : ( e.state = null, t === oe ? r( e, N ) : G ) : T
}, n.deflateSetDictionary = function ( e, t ) {
var n, r, i, o, a, l, c, A, u = t.length;
if ( !e || !e.state ) return T;
if ( 2 === ( o = ( n = e.state ).wrap ) || 1 === o && n.status !== te || n.lookahead ) return T;
for ( 1 === o && ( e.adler = k( e.adler, t, u, 0 ) ), n.wrap = 0, u >= n.w_size && ( 0 === o && ( s( n.head ), n.strstart = 0, n.block_start = 0, n.insert = 0 ), A = new v.Buf8( n.w_size ), v.arraySet( A, t, u - n.w_size, n.w_size, 0 ), t = A, u = n.w_size ), a = e.avail_in, l = e.next_in, c = e.input, e.avail_in = u, e.next_in = 0, e.input = t, d( n ); n.lookahead >= q; ) {
r = n.strstart, i = n.lookahead - ( q - 1 );
do {
n.ins_h = ( n.ins_h << n.hash_shift ^ n.window[ r + q - 1 ] ) & n.hash_mask, n.prev[ r & n.w_mask ] = n.head[ n.ins_h ],
n.head[ n.ins_h ] = r, r++
} while ( --i );
n.strstart = r, n.lookahead = q - 1, d( n )
}
return n.strstart += n.lookahead, n.block_start = n.strstart, n.insert = n.lookahead, n.lookahead = 0, n.match_length = n.prev_length = q - 1, n.match_available = 0, e.next_in = l, e.input = c, e.avail_in = a, n.wrap = o, G
}, n.deflateInfo = "pako deflate (from Nodeca project)"
}, {
"../utils/common": 41,
"./adler32": 43,
"./crc32": 45,
"./messages": 51,
"./trees": 52
} ],
47: [ function ( e, t ) {
"use strict";
t.exports = function () {
this.text = 0, this.time = 0, this.xflags = 0, this.os = 0,
this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = !1
}
}, {} ],
48: [ function ( e, t ) {
"use strict";
t.exports = function ( e, t ) {
var n, r, i, s, o, a, l, c, A, d, u, p, h, f, g, m, _, b, v, w, k, y, R, x, C;
n = e.state, r = e.next_in, x = e.input, i = r + ( e.avail_in - 5 ), s = e.next_out, C = e.output, o = s - ( t - e.avail_out ), a = s + ( e.avail_out - 257 ), l = n.dmax, c = n.wsize, A = n.whave, d = n.wnext, u = n.window, p = n.hold, h = n.bits, f = n.lencode, g = n.distcode, m = ( 1 << n.lenbits ) - 1, _ = ( 1 << n.distbits ) - 1;
e: do {
h < 15 && ( p += x[ r++ ] << h, h += 8, p += x[ r++ ] << h, h += 8 ),
b = f[ p & m ];
t: for ( ;; ) {
if ( p >>>= v = b >>> 24, h -= v, 0 == ( v = b >>> 16 & 255 ) ) C[ s++ ] = 65535 & b;
else {
if ( !( 16 & v ) ) {
if ( 0 == ( 64 & v ) ) {
b = f[ ( 65535 & b ) + ( p & ( 1 << v ) - 1 ) ];
continue t
}
if ( 32 & v ) {
n.mode = 12;
break e
}
e.msg = "invalid literal/length code", n.mode = 30;
break e
}
w = 65535 & b, ( v &= 15 ) && ( h < v && ( p += x[ r++ ] << h, h += 8 ), w += p & ( 1 << v ) - 1, p >>>= v, h -= v ), h < 15 && ( p += x[ r++ ] << h, h += 8, p += x[ r++ ] << h, h += 8 ), b = g[ p & _ ];
n: for ( ;; ) {
if ( p >>>= v = b >>> 24, h -= v, !( 16 & ( v = b >>> 16 & 255 ) ) ) {
if ( 0 == ( 64 & v ) ) {
b = g[ ( 65535 & b ) + ( p & ( 1 << v ) - 1 ) ];
continue n
}
e.msg = "invalid distance code", n.mode = 30;
break e
}
if ( k = 65535 & b, h < ( v &= 15 ) && ( p += x[ r++ ] << h, ( h += 8 ) < v && ( p += x[ r++ ] << h, h += 8 ) ), ( k += p & ( 1 << v ) - 1 ) > l ) {
e.msg = "invalid distance too far back", n.mode = 30;
break e
}
if ( p >>>= v, h -= v, k > ( v = s - o ) ) {
if ( ( v = k - v ) > A && n.sane ) {
e.msg = "invalid distance too far back", n.mode = 30;
break e
}
if ( y = 0, R = u, 0 === d ) {
if ( y += c - v, v < w ) {
w -= v;
do {
C[ s++ ] = u[ y++ ]
} while ( --v );
y = s - k, R = C
}
} else if ( d < v ) {
if ( y += c + d - v, ( v -= d ) < w ) {
w -= v;
do {
C[ s++ ] = u[ y++ ]
} while ( --v );
if ( y = 0, d < w ) {
w -= v = d;
do {
C[ s++ ] = u[ y++ ]
} while ( --v );
y = s - k, R = C
}
}
} else if ( y += d - v, v < w ) {
w -= v;
do {
C[ s++ ] = u[ y++ ]
} while ( --v );
y = s - k, R = C
}
for ( ; w > 2; ) C[ s++ ] = R[ y++ ], C[ s++ ] = R[ y++ ], C[ s++ ] = R[ y++ ], w -= 3;
w && ( C[ s++ ] = R[ y++ ], w > 1 && ( C[ s++ ] = R[ y++ ] ) )
} else {
y = s - k;
do {
C[ s++ ] = C[ y++ ], C[ s++ ] = C[ y++ ], C[ s++ ] = C[ y++ ], w -= 3
} while ( w > 2 );
w && ( C[ s++ ] = C[ y++ ], w > 1 && ( C[ s++ ] = C[ y++ ] ) )
}
break
}
}
break
}
} while ( r < i && s < a );
r -= w = h >> 3, p &= ( 1 << ( h -= w << 3 ) ) - 1, e.next_in = r, e.next_out = s, e.avail_in = r < i ? i - r + 5 : 5 - ( r - i ), e.avail_out = s < a ? a - s + 257 : 257 - ( s - a ), n.hold = p, n.bits = h
}
}, {} ],
49: [ function ( e, t, n ) {
"use strict";
function r( e ) {
return ( e >>> 24 & 255 ) + ( e >>> 8 & 65280 ) + ( ( 65280 & e ) << 8 ) + ( ( 255 & e ) << 24 )
}
function i() {
this.mode = 0, this.last = !1, this.wrap = 0, this.havedict = !1, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new p.Buf16( 320 ),
this.work = new p.Buf16( 288 ), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0
}
function s( e ) {
var t;
return e && e.state ? ( t = e.state, e.total_in = e.total_out = t.total = 0, e.msg = "", t.wrap && ( e.adler = 1 & t.wrap ), t.mode = T, t.last = 0, t.havedict = 0, t.dmax = 32768, t.head = null, t.hold = 0, t.bits = 0, t.lencode = t.lendyn = new p.Buf32( Ae ), t.distcode = t.distdyn = new p.Buf32( de ), t.sane = 1, t.back = -1, R ) : E
}
function o( e ) {
var t;
return e && e.state ? ( ( t = e.state ).wsize = 0, t.whave = 0, t.wnext = 0, s( e ) ) : E
}
function a( e, t ) {
var n, r;
return e && e.state ? ( r = e.state, t < 0 ? ( n = 0, t = -t ) : ( n = 1 + ( t >> 4 ), t < 48 && ( t &= 15 ) ), t && ( t < 8 || t > 15 ) ? E : ( null !== r.window && r.wbits !== t && ( r.window = null ), r.wrap = n, r.wbits = t, o( e ) ) ) : E
}
function l( e, t ) {
var n, r;
return e ? ( r = new i, e.state = r, r.window = null, ( n = a( e, t ) ) !== R && ( e.state = null ), n ) : E
}
function c( e ) {
if ( pe ) {
var t;
for ( d = new p.Buf32( 512 ), u = new p.Buf32( 32 ), t = 0; t < 144; ) e.lens[ t++ ] = 8;
for ( ; t < 256; ) e.lens[ t++ ] = 9;
for ( ; t < 280; ) e.lens[ t++ ] = 7;
for ( ; t < 288; ) e.lens[ t++ ] = 8;
for ( m( b, e.lens, 0, 288, d, 0, e.work, {
bits: 9
} ),
t = 0; t < 32; ) e.lens[ t++ ] = 5;
m( v, e.lens, 0, 32, u, 0, e.work, {
bits: 5
} ), pe = !1
}
e.lencode = d, e.lenbits = 9, e.distcode = u, e.distbits = 5
}
function A( e, t, n, r ) {
var i, s = e.state;
return null === s.window && ( s.wsize = 1 << s.wbits, s.wnext = 0, s.whave = 0, s.window = new p.Buf8( s.wsize ) ), r >= s.wsize ? ( p.arraySet( s.window, t, n - s.wsize, s.wsize, 0 ), s.wnext = 0, s.whave = s.wsize ) : ( ( i = s.wsize - s.wnext ) > r && ( i = r ), p.arraySet( s.window, t, n - r, i, s.wnext ), ( r -= i ) ? ( p.arraySet( s.window, t, n - r, r, 0 ), s.wnext = r, s.whave = s.wsize ) : ( s.wnext += i,
s.wnext === s.wsize && ( s.wnext = 0 ), s.whave < s.wsize && ( s.whave += i ) ) ), 0
}
var d, u, p = e( "../utils/common" ),
h = e( "./adler32" ),
f = e( "./crc32" ),
g = e( "./inffast" ),
m = e( "./inftrees" ),
_ = 0,
b = 1,
v = 2,
w = 4,
k = 5,
y = 6,
R = 0,
x = 1,
C = 2,
E = -2,
I = -3,
M = -4,
G = -5,
Z = 8,
T = 1,
N = 2,
S = 3,
U = 4,
B = 5,
O = 6,
F = 7,
j = 8,
D = 9,
L = 10,
P = 11,
z = 12,
V = 13,
Q = 14,
H = 15,
Y = 16,
X = 17,
W = 18,
J = 19,
q = 20,
K = 21,
$ = 22,
ee = 23,
te = 24,
ne = 25,
re = 26,
ie = 27,
se = 28,
oe = 29,
ae = 30,
le = 31,
ce = 32,
Ae = 852,
de = 592,
ue = 15,
pe = !0;
n.inflateReset = o, n.inflateReset2 = a, n.inflateResetKeep = s, n.inflateInit = function ( e ) {
return l( e, ue )
}, n.inflateInit2 = l, n.inflate = function ( e, t ) {
var n, i, s, o, a, l, d, u, Ae, de, ue, pe, he, fe, ge, me, _e, be, ve, we, ke, ye, Re, xe, Ce = 0,
Ee = new p.Buf8( 4 ),
Ie = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];
if ( !e || !e.state || !e.output || !e.input && 0 !== e.avail_in ) return E;
( n = e.state ).mode === z && ( n.mode = V ), a = e.next_out, s = e.output, d = e.avail_out, o = e.next_in, i = e.input, l = e.avail_in, u = n.hold, Ae = n.bits, de = l, ue = d, ye = R;
e: for ( ;; ) switch ( n.mode ) {
case T:
if ( 0 === n.wrap ) {
n.mode = V;
break
}
for ( ; Ae < 16; ) {
if ( 0 === l ) break e;
l--,
u += i[ o++ ] << Ae, Ae += 8
}
if ( 2 & n.wrap && 35615 === u ) {
n.check = 0, Ee[ 0 ] = 255 & u, Ee[ 1 ] = u >>> 8 & 255, n.check = f( n.check, Ee, 2, 0 ), u = 0, Ae = 0, n.mode = N;
break
}
if ( n.flags = 0, n.head && ( n.head.done = !1 ), !( 1 & n.wrap ) || ( ( ( 255 & u ) << 8 ) + ( u >> 8 ) ) % 31 ) {
e.msg = "incorrect header check", n.mode = ae;
break
}
if ( ( 15 & u ) !== Z ) {
e.msg = "unknown compression method", n.mode = ae;
break
}
if ( Ae -= 4, ke = 8 + ( 15 & ( u >>>= 4 ) ), 0 === n.wbits ) n.wbits = ke;
else if ( ke > n.wbits ) {
e.msg = "invalid window size", n.mode = ae;
break
}
n.dmax = 1 << ke, e.adler = n.check = 1, n.mode = 512 & u ? L : z, u = 0, Ae = 0;
break;
case N:
for ( ; Ae < 16; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
if ( n.flags = u, ( 255 & n.flags ) !== Z ) {
e.msg = "unknown compression method", n.mode = ae;
break
}
if ( 57344 & n.flags ) {
e.msg = "unknown header flags set", n.mode = ae;
break
}
n.head && ( n.head.text = u >> 8 & 1 ), 512 & n.flags && ( Ee[ 0 ] = 255 & u, Ee[ 1 ] = u >>> 8 & 255, n.check = f( n.check, Ee, 2, 0 ) ), u = 0, Ae = 0, n.mode = S;
case S:
for ( ; Ae < 32; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
n.head && ( n.head.time = u ), 512 & n.flags && ( Ee[ 0 ] = 255 & u, Ee[ 1 ] = u >>> 8 & 255, Ee[ 2 ] = u >>> 16 & 255, Ee[ 3 ] = u >>> 24 & 255,
n.check = f( n.check, Ee, 4, 0 ) ), u = 0, Ae = 0, n.mode = U;
case U:
for ( ; Ae < 16; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
n.head && ( n.head.xflags = 255 & u, n.head.os = u >> 8 ), 512 & n.flags && ( Ee[ 0 ] = 255 & u, Ee[ 1 ] = u >>> 8 & 255, n.check = f( n.check, Ee, 2, 0 ) ), u = 0, Ae = 0, n.mode = B;
case B:
if ( 1024 & n.flags ) {
for ( ; Ae < 16; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
n.length = u, n.head && ( n.head.extra_len = u ), 512 & n.flags && ( Ee[ 0 ] = 255 & u, Ee[ 1 ] = u >>> 8 & 255, n.check = f( n.check, Ee, 2, 0 ) ), u = 0, Ae = 0
} else n.head && ( n.head.extra = null );
n.mode = O;
case O:
if ( 1024 & n.flags && ( ( pe = n.length ) > l && ( pe = l ), pe && ( n.head && ( ke = n.head.extra_len - n.length, n.head.extra || ( n.head.extra = new Array( n.head.extra_len ) ), p.arraySet( n.head.extra, i, o, pe, ke ) ), 512 & n.flags && ( n.check = f( n.check, i, pe, o ) ), l -= pe, o += pe, n.length -= pe ), n.length ) ) break e;
n.length = 0, n.mode = F;
case F:
if ( 2048 & n.flags ) {
if ( 0 === l ) break e;
pe = 0;
do {
ke = i[ o + pe++ ], n.head && ke && n.length < 65536 && ( n.head.name += String.fromCharCode( ke ) )
} while ( ke && pe < l );
if ( 512 & n.flags && ( n.check = f( n.check, i, pe, o ) ), l -= pe, o += pe, ke ) break e
} else n.head && ( n.head.name = null );
n.length = 0, n.mode = j;
case j:
if ( 4096 & n.flags ) {
if ( 0 === l ) break e;
pe = 0;
do {
ke = i[ o + pe++ ], n.head && ke && n.length < 65536 && ( n.head.comment += String.fromCharCode( ke ) )
} while ( ke && pe < l );
if ( 512 & n.flags && ( n.check = f( n.check, i, pe, o ) ), l -= pe, o += pe, ke ) break e
} else n.head && ( n.head.comment = null );
n.mode = D;
case D:
if ( 512 & n.flags ) {
for ( ; Ae < 16; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
if ( u !== ( 65535 & n.check ) ) {
e.msg = "header crc mismatch", n.mode = ae;
break
}
u = 0, Ae = 0
}
n.head && ( n.head.hcrc = n.flags >> 9 & 1,
n.head.done = !0 ), e.adler = n.check = 0, n.mode = z;
break;
case L:
for ( ; Ae < 32; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
e.adler = n.check = r( u ), u = 0, Ae = 0, n.mode = P;
case P:
if ( 0 === n.havedict ) return e.next_out = a, e.avail_out = d, e.next_in = o, e.avail_in = l, n.hold = u, n.bits = Ae, C;
e.adler = n.check = 1, n.mode = z;
case z:
if ( t === k || t === y ) break e;
case V:
if ( n.last ) {
u >>>= 7 & Ae, Ae -= 7 & Ae, n.mode = ie;
break
}
for ( ; Ae < 3; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
switch ( n.last = 1 & u, Ae -= 1, 3 & ( u >>>= 1 ) ) {
case 0:
n.mode = Q;
break;
case 1:
if ( c( n ), n.mode = q,
t === y ) {
u >>>= 2, Ae -= 2;
break e
}
break;
case 2:
n.mode = X;
break;
case 3:
e.msg = "invalid block type", n.mode = ae
}
u >>>= 2, Ae -= 2;
break;
case Q:
for ( u >>>= 7 & Ae, Ae -= 7 & Ae; Ae < 32; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
if ( ( 65535 & u ) != ( u >>> 16 ^ 65535 ) ) {
e.msg = "invalid stored block lengths", n.mode = ae;
break
}
if ( n.length = 65535 & u, u = 0, Ae = 0, n.mode = H, t === y ) break e;
case H:
n.mode = Y;
case Y:
if ( pe = n.length ) {
if ( pe > l && ( pe = l ), pe > d && ( pe = d ), 0 === pe ) break e;
p.arraySet( s, i, o, pe, a ), l -= pe, o += pe, d -= pe, a += pe, n.length -= pe;
break
}
n.mode = z;
break;
case X:
for ( ; Ae < 14; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
if ( n.nlen = 257 + ( 31 & u ), u >>>= 5, Ae -= 5, n.ndist = 1 + ( 31 & u ), u >>>= 5, Ae -= 5, n.ncode = 4 + ( 15 & u ), u >>>= 4, Ae -= 4, n.nlen > 286 || n.ndist > 30 ) {
e.msg = "too many length or distance symbols", n.mode = ae;
break
}
n.have = 0, n.mode = W;
case W:
for ( ; n.have < n.ncode; ) {
for ( ; Ae < 3; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
n.lens[ Ie[ n.have++ ] ] = 7 & u, u >>>= 3, Ae -= 3
}
for ( ; n.have < 19; ) n.lens[ Ie[ n.have++ ] ] = 0;
if ( n.lencode = n.lendyn, n.lenbits = 7, Re = {
bits: n.lenbits
},
ye = m( _, n.lens, 0, 19, n.lencode, 0, n.work, Re ), n.lenbits = Re.bits, ye ) {
e.msg = "invalid code lengths set", n.mode = ae;
break
}
n.have = 0, n.mode = J;
case J:
for ( ; n.have < n.nlen + n.ndist; ) {
for ( ; me = ( Ce = n.lencode[ u & ( 1 << n.lenbits ) - 1 ] ) >>> 16 & 255, _e = 65535 & Ce, !( ( ge = Ce >>> 24 ) <= Ae ); ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
if ( _e < 16 ) u >>>= ge, Ae -= ge, n.lens[ n.have++ ] = _e;
else {
if ( 16 === _e ) {
for ( xe = ge + 2; Ae < xe; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
if ( u >>>= ge, Ae -= ge, 0 === n.have ) {
e.msg = "invalid bit length repeat", n.mode = ae;
break
}
ke = n.lens[ n.have - 1 ], pe = 3 + ( 3 & u ), u >>>= 2, Ae -= 2
} else if ( 17 === _e ) {
for ( xe = ge + 3; Ae < xe; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
Ae -= ge, ke = 0, pe = 3 + ( 7 & ( u >>>= ge ) ), u >>>= 3, Ae -= 3
} else {
for ( xe = ge + 7; Ae < xe; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
Ae -= ge, ke = 0, pe = 11 + ( 127 & ( u >>>= ge ) ), u >>>= 7, Ae -= 7
}
if ( n.have + pe > n.nlen + n.ndist ) {
e.msg = "invalid bit length repeat", n.mode = ae;
break
}
for ( ; pe--; ) n.lens[ n.have++ ] = ke
}
}
if ( n.mode === ae ) break;
if ( 0 === n.lens[ 256 ] ) {
e.msg = "invalid code -- missing end-of-block", n.mode = ae;
break
}
if ( n.lenbits = 9, Re = {
bits: n.lenbits
}, ye = m( b, n.lens, 0, n.nlen, n.lencode, 0, n.work, Re ), n.lenbits = Re.bits, ye ) {
e.msg = "invalid literal/lengths set", n.mode = ae;
break
}
if ( n.distbits = 6, n.distcode = n.distdyn, Re = {
bits: n.distbits
}, ye = m( v, n.lens, n.nlen, n.ndist, n.distcode, 0, n.work, Re ), n.distbits = Re.bits, ye ) {
e.msg = "invalid distances set", n.mode = ae;
break
}
if ( n.mode = q, t === y ) break e;
case q:
n.mode = K;
case K:
if ( l >= 6 && d >= 258 ) {
e.next_out = a, e.avail_out = d, e.next_in = o, e.avail_in = l, n.hold = u, n.bits = Ae, g( e, ue ), a = e.next_out,
s = e.output, d = e.avail_out, o = e.next_in, i = e.input, l = e.avail_in, u = n.hold, Ae = n.bits, n.mode === z && ( n.back = -1 );
break
}
for ( n.back = 0; me = ( Ce = n.lencode[ u & ( 1 << n.lenbits ) - 1 ] ) >>> 16 & 255, _e = 65535 & Ce, !( ( ge = Ce >>> 24 ) <= Ae ); ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
if ( me && 0 == ( 240 & me ) ) {
for ( be = ge, ve = me, we = _e; me = ( Ce = n.lencode[ we + ( ( u & ( 1 << be + ve ) - 1 ) >> be ) ] ) >>> 16 & 255, _e = 65535 & Ce, !( be + ( ge = Ce >>> 24 ) <= Ae ); ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
u >>>= be, Ae -= be, n.back += be
}
if ( u >>>= ge, Ae -= ge, n.back += ge, n.length = _e, 0 === me ) {
n.mode = re;
break
}
if ( 32 & me ) {
n.back = -1, n.mode = z;
break
}
if ( 64 & me ) {
e.msg = "invalid literal/length code", n.mode = ae;
break
}
n.extra = 15 & me, n.mode = $;
case $:
if ( n.extra ) {
for ( xe = n.extra; Ae < xe; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
n.length += u & ( 1 << n.extra ) - 1, u >>>= n.extra, Ae -= n.extra, n.back += n.extra
}
n.was = n.length, n.mode = ee;
case ee:
for ( ; me = ( Ce = n.distcode[ u & ( 1 << n.distbits ) - 1 ] ) >>> 16 & 255, _e = 65535 & Ce, !( ( ge = Ce >>> 24 ) <= Ae ); ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
if ( 0 == ( 240 & me ) ) {
for ( be = ge, ve = me,
we = _e; me = ( Ce = n.distcode[ we + ( ( u & ( 1 << be + ve ) - 1 ) >> be ) ] ) >>> 16 & 255, _e = 65535 & Ce, !( be + ( ge = Ce >>> 24 ) <= Ae ); ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
u >>>= be, Ae -= be, n.back += be
}
if ( u >>>= ge, Ae -= ge, n.back += ge, 64 & me ) {
e.msg = "invalid distance code", n.mode = ae;
break
}
n.offset = _e, n.extra = 15 & me, n.mode = te;
case te:
if ( n.extra ) {
for ( xe = n.extra; Ae < xe; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
n.offset += u & ( 1 << n.extra ) - 1, u >>>= n.extra, Ae -= n.extra, n.back += n.extra
}
if ( n.offset > n.dmax ) {
e.msg = "invalid distance too far back",
n.mode = ae;
break
}
n.mode = ne;
case ne:
if ( 0 === d ) break e;
if ( pe = ue - d, n.offset > pe ) {
if ( ( pe = n.offset - pe ) > n.whave && n.sane ) {
e.msg = "invalid distance too far back", n.mode = ae;
break
}
pe > n.wnext ? ( pe -= n.wnext, he = n.wsize - pe ) : he = n.wnext - pe, pe > n.length && ( pe = n.length ), fe = n.window
} else fe = s, he = a - n.offset, pe = n.length;
pe > d && ( pe = d ), d -= pe, n.length -= pe;
do {
s[ a++ ] = fe[ he++ ]
} while ( --pe );
0 === n.length && ( n.mode = K );
break;
case re:
if ( 0 === d ) break e;
s[ a++ ] = n.length, d--, n.mode = K;
break;
case ie:
if ( n.wrap ) {
for ( ; Ae < 32; ) {
if ( 0 === l ) break e;
l--, u |= i[ o++ ] << Ae, Ae += 8
}
if ( ue -= d, e.total_out += ue, n.total += ue, ue && ( e.adler = n.check = n.flags ? f( n.check, s, ue, a - ue ) : h( n.check, s, ue, a - ue ) ), ue = d, ( n.flags ? u : r( u ) ) !== n.check ) {
e.msg = "incorrect data check", n.mode = ae;
break
}
u = 0, Ae = 0
}
n.mode = se;
case se:
if ( n.wrap && n.flags ) {
for ( ; Ae < 32; ) {
if ( 0 === l ) break e;
l--, u += i[ o++ ] << Ae, Ae += 8
}
if ( u !== ( 4294967295 & n.total ) ) {
e.msg = "incorrect length check", n.mode = ae;
break
}
u = 0, Ae = 0
}
n.mode = oe;
case oe:
ye = x;
break e;
case ae:
ye = I;
break e;
case le:
return M;
case ce:
default:
return E
}
return e.next_out = a, e.avail_out = d, e.next_in = o, e.avail_in = l, n.hold = u, n.bits = Ae, ( n.wsize || ue !== e.avail_out && n.mode < ae && ( n.mode < ie || t !== w ) ) && A( e, e.output, e.next_out, ue - e.avail_out ) ? ( n.mode = le, M ) : ( de -= e.avail_in, ue -= e.avail_out, e.total_in += de, e.total_out += ue, n.total += ue, n.wrap && ue && ( e.adler = n.check = n.flags ? f( n.check, s, ue, e.next_out - ue ) : h( n.check, s, ue, e.next_out - ue ) ), e.data_type = n.bits + ( n.last ? 64 : 0 ) + ( n.mode === z ? 128 : 0 ) + ( n.mode === q || n.mode === H ? 256 : 0 ), ( 0 === de && 0 === ue || t === w ) && ye === R && ( ye = G ), ye )
},
n.inflateEnd = function ( e ) {
if ( !e || !e.state ) return E;
var t = e.state;
return t.window && ( t.window = null ), e.state = null, R
}, n.inflateGetHeader = function ( e, t ) {
var n;
return e && e.state ? 0 == ( 2 & ( n = e.state ).wrap ) ? E : ( n.head = t, t.done = !1, R ) : E
}, n.inflateSetDictionary = function ( e, t ) {
var n, r = t.length;
return e && e.state ? 0 !== ( n = e.state ).wrap && n.mode !== P ? E : n.mode === P && h( 1, t, r, 0 ) !== n.check ? I : A( e, t, r, r ) ? ( n.mode = le, M ) : ( n.havedict = 1, R ) : E
}, n.inflateInfo = "pako inflate (from Nodeca project)"
}, {
"../utils/common": 41,
"./adler32": 43,
"./crc32": 45,
"./inffast": 48,
"./inftrees": 50
} ],
50: [ function ( e, t ) {
"use strict";
var n = e( "../utils/common" ),
r = 15,
i = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 ],
s = [ 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78 ],
o = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0 ],
a = [ 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64 ];
t.exports = function ( e, t, l, c, A, d, u, p ) {
var h, f, g, m, _, b, v, w, k, y = p.bits,
R = 0,
x = 0,
C = 0,
E = 0,
I = 0,
M = 0,
G = 0,
Z = 0,
T = 0,
N = 0,
S = null,
U = 0,
B = new n.Buf16( 16 ),
O = new n.Buf16( 16 ),
F = null,
j = 0;
for ( R = 0; R <= r; R++ ) B[ R ] = 0;
for ( x = 0; x < c; x++ ) B[ t[ l + x ] ]++;
for ( I = y, E = r; E >= 1 && 0 === B[ E ]; E-- );
if ( I > E && ( I = E ), 0 === E ) return A[ d++ ] = 20971520, A[ d++ ] = 20971520, p.bits = 1, 0;
for ( C = 1; C < E && 0 === B[ C ]; C++ );
for ( I < C && ( I = C ), Z = 1, R = 1; R <= r; R++ )
if ( Z <<= 1, ( Z -= B[ R ] ) < 0 ) return -1;
if ( Z > 0 && ( 0 === e || 1 !== E ) ) return -1;
for ( O[ 1 ] = 0, R = 1; R < r; R++ ) O[ R + 1 ] = O[ R ] + B[ R ];
for ( x = 0; x < c; x++ ) 0 !== t[ l + x ] && ( u[ O[ t[ l + x ] ]++ ] = x );
if ( 0 === e ? ( S = F = u, b = 19 ) : 1 === e ? ( S = i, U -= 257, F = s, j -= 257, b = 256 ) : ( S = o, F = a, b = -1 ), N = 0, x = 0, R = C, _ = d, M = I, G = 0, g = -1, m = ( T = 1 << I ) - 1, 1 === e && T > 852 || 2 === e && T > 592 ) return 1;
for ( ;; ) {
v = R - G, u[ x ] < b ? ( w = 0, k = u[ x ] ) : u[ x ] > b ? ( w = F[ j + u[ x ] ], k = S[ U + u[ x ] ] ) : ( w = 96, k = 0 ), h = 1 << R - G, C = f = 1 << M;
do {
A[ _ + ( N >> G ) + ( f -= h ) ] = v << 24 | w << 16 | k | 0
} while ( 0 !== f );
for ( h = 1 << R - 1; N & h; ) h >>= 1;
if ( 0 !== h ? ( N &= h - 1, N += h ) : N = 0, x++, 0 == --B[ R ] ) {
if ( R === E ) break;
R = t[ l + u[ x ] ]
}
if ( R > I && ( N & m ) !== g ) {
for ( 0 === G && ( G = I ), _ += C, Z = 1 << ( M = R - G ); M + G < E && !( ( Z -= B[ M + G ] ) <= 0 ); ) M++, Z <<= 1;
if ( T += 1 << M,
1 === e && T > 852 || 2 === e && T > 592 ) return 1;
A[ g = N & m ] = I << 24 | M << 16 | _ - d | 0
}
}
return 0 !== N && ( A[ _ + N ] = R - G << 24 | 64 << 16 | 0 ), p.bits = I, 0
}
}, {
"../utils/common": 41
} ],
51: [ function ( e, t ) {
"use strict";
t.exports = {
2: "need dictionary",
1: "stream end",
0: "",
"-1": "file error",
"-2": "stream error",
"-3": "data error",
"-4": "insufficient memory",
"-5": "buffer error",
"-6": "incompatible version"
}
}, {} ],
52: [ function ( e, t, n ) {
"use strict";
function r( e ) {
for ( var t = e.length; --t >= 0; ) e[ t ] = 0
}
function i( e, t, n, r, i ) {
this.static_tree = e, this.extra_bits = t,
this.extra_base = n, this.elems = r, this.max_length = i, this.has_stree = e && e.length
}
function s( e, t ) {
this.dyn_tree = e, this.max_code = 0, this.stat_desc = t
}
function o( e ) {
return e < 256 ? X[ e ] : X[ 256 + ( e >>> 7 ) ]
}
function a( e, t ) {
e.pending_buf[ e.pending++ ] = 255 & t, e.pending_buf[ e.pending++ ] = t >>> 8 & 255
}
function l( e, t, n ) {
e.bi_valid > B - n ? ( e.bi_buf |= t << e.bi_valid & 65535, a( e, e.bi_buf ), e.bi_buf = t >> B - e.bi_valid, e.bi_valid += n - B ) : ( e.bi_buf |= t << e.bi_valid & 65535, e.bi_valid += n )
}
function c( e, t, n ) {
l( e, n[ 2 * t ], n[ 2 * t + 1 ] )
}
function A( e, t ) {
var n = 0;
do {
n |= 1 & e, e >>>= 1, n <<= 1
} while ( --t > 0 );
return n >>> 1
}
function d( e, t, n ) {
var r, i, s = new Array( U + 1 ),
o = 0;
for ( r = 1; r <= U; r++ ) s[ r ] = o = o + n[ r - 1 ] << 1;
for ( i = 0; i <= t; i++ ) {
var a = e[ 2 * i + 1 ];
0 !== a && ( e[ 2 * i ] = A( s[ a ]++, a ) )
}
}
function u( e ) {
var t;
for ( t = 0; t < Z; t++ ) e.dyn_ltree[ 2 * t ] = 0;
for ( t = 0; t < T; t++ ) e.dyn_dtree[ 2 * t ] = 0;
for ( t = 0; t < N; t++ ) e.bl_tree[ 2 * t ] = 0;
e.dyn_ltree[ 2 * F ] = 1, e.opt_len = e.static_len = 0, e.last_lit = e.matches = 0
}
function p( e ) {
e.bi_valid > 8 ? a( e, e.bi_buf ) : e.bi_valid > 0 && ( e.pending_buf[ e.pending++ ] = e.bi_buf ), e.bi_buf = 0,
e.bi_valid = 0
}
function h( e, t, n, r ) {
var i = 2 * t,
s = 2 * n;
return e[ i ] < e[ s ] || e[ i ] === e[ s ] && r[ t ] <= r[ n ]
}
function f( e, t, n ) {
for ( var r = e.heap[ n ], i = n << 1; i <= e.heap_len && ( i < e.heap_len && h( t, e.heap[ i + 1 ], e.heap[ i ], e.depth ) && i++, !h( t, r, e.heap[ i ], e.depth ) ); ) e.heap[ n ] = e.heap[ i ], n = i, i <<= 1;
e.heap[ n ] = r
}
function g( e, t, n ) {
var r, i, s, a, A = 0;
if ( 0 !== e.last_lit )
do {
r = e.pending_buf[ e.d_buf + 2 * A ] << 8 | e.pending_buf[ e.d_buf + 2 * A + 1 ], i = e.pending_buf[ e.l_buf + A ], A++, 0 === r ? c( e, i, t ) : ( c( e, ( s = W[ i ] ) + G + 1, t ), 0 !== ( a = P[ s ] ) && l( e, i -= J[ s ], a ),
c( e, s = o( --r ), n ), 0 !== ( a = z[ s ] ) && l( e, r -= ee[ s ], a ) )
} while ( A < e.last_lit );
c( e, F, t )
}
function m( e, t ) {
var n, r, i, s = t.dyn_tree,
o = t.stat_desc.static_tree,
a = t.stat_desc.has_stree,
l = t.stat_desc.elems,
c = -1;
for ( e.heap_len = 0, e.heap_max = S, n = 0; n < l; n++ ) 0 !== s[ 2 * n ] ? ( e.heap[ ++e.heap_len ] = c = n, e.depth[ n ] = 0 ) : s[ 2 * n + 1 ] = 0;
for ( ; e.heap_len < 2; ) s[ 2 * ( i = e.heap[ ++e.heap_len ] = c < 2 ? ++c : 0 ) ] = 1, e.depth[ i ] = 0, e.opt_len--, a && ( e.static_len -= o[ 2 * i + 1 ] );
for ( t.max_code = c, n = e.heap_len >> 1; n >= 1; n-- ) f( e, s, n );
i = l;
do {
n = e.heap[ 1 ],
e.heap[ 1 ] = e.heap[ e.heap_len-- ], f( e, s, 1 ), r = e.heap[ 1 ], e.heap[ --e.heap_max ] = n, e.heap[ --e.heap_max ] = r, s[ 2 * i ] = s[ 2 * n ] + s[ 2 * r ], e.depth[ i ] = ( e.depth[ n ] >= e.depth[ r ] ? e.depth[ n ] : e.depth[ r ] ) + 1, s[ 2 * n + 1 ] = s[ 2 * r + 1 ] = i, e.heap[ 1 ] = i++, f( e, s, 1 )
} while ( e.heap_len >= 2 );
e.heap[ --e.heap_max ] = e.heap[ 1 ],
function ( e, t ) {
var n, r, i, s, o, a, l = t.dyn_tree,
c = t.max_code,
A = t.stat_desc.static_tree,
d = t.stat_desc.has_stree,
u = t.stat_desc.extra_bits,
p = t.stat_desc.extra_base,
h = t.stat_desc.max_length,
f = 0;
for ( s = 0; s <= U; s++ ) e.bl_count[ s ] = 0;
for ( l[ 2 * e.heap[ e.heap_max ] + 1 ] = 0, n = e.heap_max + 1; n < S; n++ )( s = l[ 2 * l[ 2 * ( r = e.heap[ n ] ) + 1 ] + 1 ] + 1 ) > h && ( s = h, f++ ), l[ 2 * r + 1 ] = s, r > c || ( e.bl_count[ s ]++, o = 0, r >= p && ( o = u[ r - p ] ), a = l[ 2 * r ], e.opt_len += a * ( s + o ), d && ( e.static_len += a * ( A[ 2 * r + 1 ] + o ) ) );
if ( 0 !== f ) {
do {
for ( s = h - 1; 0 === e.bl_count[ s ]; ) s--;
e.bl_count[ s ]--, e.bl_count[ s + 1 ] += 2, e.bl_count[ h ]--, f -= 2
} while ( f > 0 );
for ( s = h; 0 !== s; s-- )
for ( r = e.bl_count[ s ]; 0 !== r; )( i = e.heap[ --n ] ) > c || ( l[ 2 * i + 1 ] !== s && ( e.opt_len += ( s - l[ 2 * i + 1 ] ) * l[ 2 * i ], l[ 2 * i + 1 ] = s ), r-- )
}
}( e, t ), d( s, c, e.bl_count )
}
function _( e, t, n ) {
var r, i, s = -1,
o = t[ 1 ],
a = 0,
l = 7,
c = 4;
for ( 0 === o && ( l = 138, c = 3 ), t[ 2 * ( n + 1 ) + 1 ] = 65535, r = 0; r <= n; r++ ) i = o, o = t[ 2 * ( r + 1 ) + 1 ], ++a < l && i === o || ( a < c ? e.bl_tree[ 2 * i ] += a : 0 !== i ? ( i !== s && e.bl_tree[ 2 * i ]++, e.bl_tree[ 2 * j ]++ ) : a <= 10 ? e.bl_tree[ 2 * D ]++ : e.bl_tree[ 2 * L ]++, a = 0, s = i, 0 === o ? ( l = 138, c = 3 ) : i === o ? ( l = 6, c = 3 ) : ( l = 7, c = 4 ) )
}
function b( e, t, n ) {
var r, i, s = -1,
o = t[ 1 ],
a = 0,
A = 7,
d = 4;
for ( 0 === o && ( A = 138, d = 3 ), r = 0; r <= n; r++ )
if ( i = o, o = t[ 2 * ( r + 1 ) + 1 ], !( ++a < A && i === o ) ) {
if ( a < d )
do {
c( e, i, e.bl_tree )
} while ( 0 != --a );
else 0 !== i ? ( i !== s && ( c( e, i, e.bl_tree ), a-- ), c( e, j, e.bl_tree ), l( e, a - 3, 2 ) ) : a <= 10 ? ( c( e, D, e.bl_tree ), l( e, a - 3, 3 ) ) : ( c( e, L, e.bl_tree ), l( e, a - 11, 7 ) );
a = 0, s = i, 0 === o ? ( A = 138, d = 3 ) : i === o ? ( A = 6, d = 3 ) : ( A = 7, d = 4 )
}
}
function v( e, t, n, r ) {
l( e, ( C << 1 ) + ( r ? 1 : 0 ), 3 ),
function ( e, t, n, r ) {
p( e ), r && ( a( e, n ), a( e, ~n ) ), w.arraySet( e.pending_buf, e.window, t, n, e.pending ), e.pending += n
}( e, t, n, !0 )
}
var w = e( "../utils/common" ),
k = 4,
y = 0,
R = 1,
x = 2,
C = 0,
E = 1,
I = 2,
M = 29,
G = 256,
Z = G + 1 + M,
T = 30,
N = 19,
S = 2 * Z + 1,
U = 15,
B = 16,
O = 7,
F = 256,
j = 16,
D = 17,
L = 18,
P = [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 ],
z = [ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 ],
V = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7 ],
Q = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ],
H = new Array( 2 * ( Z + 2 ) );
r( H );
var Y = new Array( 2 * T );
r( Y );
var X = new Array( 512 );
r( X );
var W = new Array( 256 );
r( W );
var J = new Array( M );
r( J );
var q, K, $, ee = new Array( T );
r( ee );
var te = !1;
n._tr_init = function ( e ) {
te || ( function () {
var e, t, n, r, s, o = new Array( U + 1 );
for ( n = 0, r = 0; r < M - 1; r++ )
for ( J[ r ] = n, e = 0; e < 1 << P[ r ]; e++ ) W[ n++ ] = r;
for ( W[ n - 1 ] = r, s = 0, r = 0; r < 16; r++ )
for ( ee[ r ] = s, e = 0; e < 1 << z[ r ]; e++ ) X[ s++ ] = r;
for ( s >>= 7; r < T; r++ )
for ( ee[ r ] = s << 7, e = 0; e < 1 << z[ r ] - 7; e++ ) X[ 256 + s++ ] = r;
for ( t = 0; t <= U; t++ ) o[ t ] = 0;
for ( e = 0; e <= 143; ) H[ 2 * e + 1 ] = 8, e++, o[ 8 ]++;
for ( ; e <= 255; ) H[ 2 * e + 1 ] = 9, e++, o[ 9 ]++;
for ( ; e <= 279; ) H[ 2 * e + 1 ] = 7, e++, o[ 7 ]++;
for ( ; e <= 287; ) H[ 2 * e + 1 ] = 8, e++, o[ 8 ]++;
for ( d( H, Z + 1, o ),
e = 0; e < T; e++ ) Y[ 2 * e + 1 ] = 5, Y[ 2 * e ] = A( e, 5 );
q = new i( H, P, G + 1, Z, U ), K = new i( Y, z, 0, T, U ), $ = new i( new Array( 0 ), V, 0, N, O )
}(), te = !0 ), e.l_desc = new s( e.dyn_ltree, q ), e.d_desc = new s( e.dyn_dtree, K ), e.bl_desc = new s( e.bl_tree, $ ), e.bi_buf = 0, e.bi_valid = 0, u( e )
}, n._tr_stored_block = v, n._tr_flush_block = function ( e, t, n, r ) {
var i, s, o = 0;
e.level > 0 ? ( e.strm.data_type === x && ( e.strm.data_type = function ( e ) {
var t, n = 4093624447;
for ( t = 0; t <= 31; t++, n >>>= 1 )
if ( 1 & n && 0 !== e.dyn_ltree[ 2 * t ] ) return y;
if ( 0 !== e.dyn_ltree[ 18 ] || 0 !== e.dyn_ltree[ 20 ] || 0 !== e.dyn_ltree[ 26 ] ) return R;
for ( t = 32; t < G; t++ )
if ( 0 !== e.dyn_ltree[ 2 * t ] ) return R;
return y
}( e ) ), m( e, e.l_desc ), m( e, e.d_desc ), o = function ( e ) {
var t;
for ( _( e, e.dyn_ltree, e.l_desc.max_code ), _( e, e.dyn_dtree, e.d_desc.max_code ), m( e, e.bl_desc ), t = N - 1; t >= 3 && 0 === e.bl_tree[ 2 * Q[ t ] + 1 ]; t-- );
return e.opt_len += 3 * ( t + 1 ) + 5 + 5 + 4, t
}( e ), i = e.opt_len + 3 + 7 >>> 3, ( s = e.static_len + 3 + 7 >>> 3 ) <= i && ( i = s ) ) : i = s = n + 5, n + 4 <= i && -1 !== t ? v( e, t, n, r ) : e.strategy === k || s === i ? ( l( e, ( E << 1 ) + ( r ? 1 : 0 ), 3 ),
g( e, H, Y ) ) : ( l( e, ( I << 1 ) + ( r ? 1 : 0 ), 3 ), function ( e, t, n, r ) {
var i;
for ( l( e, t - 257, 5 ), l( e, n - 1, 5 ), l( e, r - 4, 4 ), i = 0; i < r; i++ ) l( e, e.bl_tree[ 2 * Q[ i ] + 1 ], 3 );
b( e, e.dyn_ltree, t - 1 ), b( e, e.dyn_dtree, n - 1 )
}( e, e.l_desc.max_code + 1, e.d_desc.max_code + 1, o + 1 ), g( e, e.dyn_ltree, e.dyn_dtree ) ), u( e ), r && p( e )
}, n._tr_tally = function ( e, t, n ) {
return e.pending_buf[ e.d_buf + 2 * e.last_lit ] = t >>> 8 & 255, e.pending_buf[ e.d_buf + 2 * e.last_lit + 1 ] = 255 & t, e.pending_buf[ e.l_buf + e.last_lit ] = 255 & n, e.last_lit++, 0 === t ? e.dyn_ltree[ 2 * n ]++ : ( e.matches++, t--,
e.dyn_ltree[ 2 * ( W[ n ] + G + 1 ) ]++, e.dyn_dtree[ 2 * o( t ) ]++ ), e.last_lit === e.lit_bufsize - 1
}, n._tr_align = function ( e ) {
l( e, E << 1, 3 ), c( e, F, H ),
function ( e ) {
16 === e.bi_valid ? ( a( e, e.bi_buf ), e.bi_buf = 0, e.bi_valid = 0 ) : e.bi_valid >= 8 && ( e.pending_buf[ e.pending++ ] = 255 & e.bi_buf, e.bi_buf >>= 8, e.bi_valid -= 8 )
}( e )
}
}, {
"../utils/common": 41
} ],
53: [ function ( e, t ) {
"use strict";
t.exports = function () {
this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0,
this.msg = "", this.state = null, this.data_type = 2, this.adler = 0
}
}, {} ],
54: [ function ( e, t ) {
"use strict";
t.exports = "function" == typeof r ? r : function () {
var e = [].slice.apply( arguments );
e.splice( 1, 0, 0 ), setTimeout.apply( null, e )
}
}, {} ]
}, {}, [ 10 ] )( 10 )
} ).call( this, n( 34 ).Buffer, n( 20 ), n( 38 ).setImmediate )
}, function ( e, t, n ) {
"use strict";
( function ( e ) {
function r() {
return s.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823
}
function i( e, t ) {
if ( r() < t ) throw new RangeError( "Invalid typed array length" );
return s.TYPED_ARRAY_SUPPORT ? ( e = new Uint8Array( t ) ).__proto__ = s.prototype : ( null === e && ( e = new s( t ) ), e.length = t ), e
}
function s( e, t, n ) {
if ( !( s.TYPED_ARRAY_SUPPORT || this instanceof s ) ) return new s( e, t, n );
if ( "number" == typeof e ) {
if ( "string" == typeof t ) throw new Error( "If encoding is specified then the first argument must be a string" );
return l( this, e )
}
return o( this, e, t, n )
}
function o( e, t, n, r ) {
if ( "number" == typeof t ) throw new TypeError( '"value" argument must not be a number' );
return "undefined" != typeof ArrayBuffer && t instanceof ArrayBuffer ? function ( e, t, n, r ) {
if ( t.byteLength, n < 0 || t.byteLength < n ) throw new RangeError( "'offset' is out of bounds" );
if ( t.byteLength < n + ( r || 0 ) ) throw new RangeError( "'length' is out of bounds" );
return t = void 0 === n && void 0 === r ? new Uint8Array( t ) : void 0 === r ? new Uint8Array( t, n ) : new Uint8Array( t, n, r ), s.TYPED_ARRAY_SUPPORT ? ( e = t ).__proto__ = s.prototype : e = c( e, t ), e
}( e, t, n, r ) : "string" == typeof t ? function ( e, t, n ) {
if ( "string" == typeof n && "" !== n || ( n = "utf8" ),
!s.isEncoding( n ) ) throw new TypeError( '"encoding" must be a valid string encoding' );
var r = 0 | d( t, n ),
o = ( e = i( e, r ) ).write( t, n );
return o !== r && ( e = e.slice( 0, o ) ), e
}( e, t, n ) : function ( e, t ) {
if ( s.isBuffer( t ) ) {
var n = 0 | A( t.length );
return 0 === ( e = i( e, n ) ).length || t.copy( e, 0, 0, n ), e
}
if ( t ) {
if ( "undefined" != typeof ArrayBuffer && t.buffer instanceof ArrayBuffer || "length" in t ) return "number" != typeof t.length || ( r = t.length ) != r ? i( e, 0 ) : c( e, t );
if ( "Buffer" === t.type && D( t.data ) ) return c( e, t.data )
}
var r;
throw new TypeError( "First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object." )
}( e, t )
}
function a( e ) {
if ( "number" != typeof e ) throw new TypeError( '"size" argument must be a number' );
if ( e < 0 ) throw new RangeError( '"size" argument must not be negative' )
}
function l( e, t ) {
if ( a( t ), e = i( e, t < 0 ? 0 : 0 | A( t ) ), !s.TYPED_ARRAY_SUPPORT )
for ( var n = 0; n < t; ++n ) e[ n ] = 0;
return e
}
function c( e, t ) {
var n = t.length < 0 ? 0 : 0 | A( t.length );
e = i( e, n );
for ( var r = 0; r < n; r += 1 ) e[ r ] = 255 & t[ r ];
return e
}
function A( e ) {
if ( e >= r() ) throw new RangeError( "Attempt to allocate Buffer larger than maximum size: 0x" + r().toString( 16 ) + " bytes" );
return 0 | e
}
function d( e, t ) {
if ( s.isBuffer( e ) ) return e.length;
if ( "undefined" != typeof ArrayBuffer && "function" == typeof ArrayBuffer.isView && ( ArrayBuffer.isView( e ) || e instanceof ArrayBuffer ) ) return e.byteLength;
"string" != typeof e && ( e = "" + e );
var n = e.length;
if ( 0 === n ) return 0;
for ( var r = !1;; ) switch ( t ) {
case "ascii":
case "latin1":
case "binary":
return n;
case "utf8":
case "utf-8":
case void 0:
return U( e ).length;
case "ucs2":
case "ucs-2":
case "utf16le":
case "utf-16le":
return 2 * n;
case "hex":
return n >>> 1;
case "base64":
return B( e ).length;
default:
if ( r ) return U( e ).length;
t = ( "" + t ).toLowerCase(), r = !0
}
}
function u( e, t, n ) {
var r = !1;
if ( ( void 0 === t || t < 0 ) && ( t = 0 ), t > this.length ) return "";
if ( ( void 0 === n || n > this.length ) && ( n = this.length ), n <= 0 ) return "";
if ( ( n >>>= 0 ) <= ( t >>>= 0 ) ) return "";
for ( e || ( e = "utf8" );; ) switch ( e ) {
case "hex":
return C( this, t, n );
case "utf8":
case "utf-8":
return y( this, t, n );
case "ascii":
return R( this, t, n );
case "latin1":
case "binary":
return x( this, t, n );
case "base64":
return k( this, t, n );
case "ucs2":
case "ucs-2":
case "utf16le":
case "utf-16le":
return E( this, t, n );
default:
if ( r ) throw new TypeError( "Unknown encoding: " + e );
e = ( e + "" ).toLowerCase(), r = !0
}
}
function p( e, t, n ) {
var r = e[ t ];
e[ t ] = e[ n ], e[ n ] = r
}
function h( e, t, n, r, i ) {
if ( 0 === e.length ) return -1;
if ( "string" == typeof n ? ( r = n, n = 0 ) : n > 2147483647 ? n = 2147483647 : n < -2147483648 && ( n = -2147483648 ), n = +n, isNaN( n ) && ( n = i ? 0 : e.length - 1 ), n < 0 && ( n = e.length + n ), n >= e.length ) {
if ( i ) return -1;
n = e.length - 1
} else if ( n < 0 ) {
if ( !i ) return -1;
n = 0
}
if ( "string" == typeof t && ( t = s.from( t, r ) ), s.isBuffer( t ) ) return 0 === t.length ? -1 : f( e, t, n, r, i );
if ( "number" == typeof t ) return t &= 255, s.TYPED_ARRAY_SUPPORT && "function" == typeof Uint8Array.prototype.indexOf ? i ? Uint8Array.prototype.indexOf.call( e, t, n ) : Uint8Array.prototype.lastIndexOf.call( e, t, n ) : f( e, [ t ], n, r, i );
throw new TypeError( "val must be string, number or Buffer" )
}
function f( e, t, n, r, i ) {
function s( e, t ) {
return 1 === a ? e[ t ] : e.readUInt16BE( t * a )
}
var o, a = 1,
l = e.length,
c = t.length;
if ( void 0 !== r && ( "ucs2" === ( r = String( r ).toLowerCase() ) || "ucs-2" === r || "utf16le" === r || "utf-16le" === r ) ) {
if ( e.length < 2 || t.length < 2 ) return -1;
a = 2, l /= 2, c /= 2, n /= 2
}
if ( i ) {
var A = -1;
for ( o = n; o < l; o++ )
if ( s( e, o ) === s( t, -1 === A ? 0 : o - A ) ) {
if ( -1 === A && ( A = o ), o - A + 1 === c ) return A * a
} else -1 !== A && ( o -= o - A ), A = -1
} else
for ( n + c > l && ( n = l - c ), o = n; o >= 0; o-- ) {
for ( var d = !0, u = 0; u < c; u++ )
if ( s( e, o + u ) !== s( t, u ) ) {
d = !1;
break
} if ( d ) return o
}
return -1
}
function g( e, t, n, r ) {
n = Number( n ) || 0;
var i = e.length - n;
r ? ( r = Number( r ) ) > i && ( r = i ) : r = i;
var s = t.length;
if ( s % 2 != 0 ) throw new TypeError( "Invalid hex string" );
r > s / 2 && ( r = s / 2 );
for ( var o = 0; o < r; ++o ) {
var a = parseInt( t.substr( 2 * o, 2 ), 16 );
if ( isNaN( a ) ) return o;
e[ n + o ] = a
}
return o
}
function m( e, t, n, r ) {
return O( U( t, e.length - n ), e, n, r )
}
function _( e, t, n, r ) {
return O( function ( e ) {
for ( var t = [], n = 0; n < e.length; ++n ) t.push( 255 & e.charCodeAt( n ) );
return t
}( t ), e, n, r )
}
function b( e, t, n, r ) {
return _( e, t, n, r )
}
function v( e, t, n, r ) {
return O( B( t ), e, n, r )
}
function w( e, t, n, r ) {
return O( function ( e, t ) {
for ( var n, r, i, s = [], o = 0; o < e.length && !( ( t -= 2 ) < 0 ); ++o ) r = ( n = e.charCodeAt( o ) ) >> 8, i = n % 256, s.push( i ), s.push( r );
return s
}( t, e.length - n ), e, n, r )
}
function k( e, t, n ) {
return 0 === t && n === e.length ? F.fromByteArray( e ) : F.fromByteArray( e.slice( t, n ) )
}
function y( e, t, n ) {
n = Math.min( e.length, n );
for ( var r = [], i = t; i < n; ) {
var s, o, a, l, c = e[ i ],
A = null,
d = c > 239 ? 4 : c > 223 ? 3 : c > 191 ? 2 : 1;
if ( i + d <= n ) switch ( d ) {
case 1:
c < 128 && ( A = c );
break;
case 2:
128 == ( 192 & ( s = e[ i + 1 ] ) ) && ( l = ( 31 & c ) << 6 | 63 & s ) > 127 && ( A = l );
break;
case 3:
s = e[ i + 1 ],
o = e[ i + 2 ], 128 == ( 192 & s ) && 128 == ( 192 & o ) && ( l = ( 15 & c ) << 12 | ( 63 & s ) << 6 | 63 & o ) > 2047 && ( l < 55296 || l > 57343 ) && ( A = l );
break;
case 4:
s = e[ i + 1 ], o = e[ i + 2 ], a = e[ i + 3 ], 128 == ( 192 & s ) && 128 == ( 192 & o ) && 128 == ( 192 & a ) && ( l = ( 15 & c ) << 18 | ( 63 & s ) << 12 | ( 63 & o ) << 6 | 63 & a ) > 65535 && l < 1114112 && ( A = l )
}
null === A ? ( A = 65533, d = 1 ) : A > 65535 && ( A -= 65536, r.push( A >>> 10 & 1023 | 55296 ), A = 56320 | 1023 & A ), r.push( A ), i += d
}
return function ( e ) {
var t = e.length;
if ( t <= L ) return String.fromCharCode.apply( String, e );
for ( var n = "", r = 0; r < t; ) n += String.fromCharCode.apply( String, e.slice( r, r += L ) );
return n
}( r )
}
function R( e, t, n ) {
var r = "";
n = Math.min( e.length, n );
for ( var i = t; i < n; ++i ) r += String.fromCharCode( 127 & e[ i ] );
return r
}
function x( e, t, n ) {
var r = "";
n = Math.min( e.length, n );
for ( var i = t; i < n; ++i ) r += String.fromCharCode( e[ i ] );
return r
}
function C( e, t, n ) {
var r, i = e.length;
( !t || t < 0 ) && ( t = 0 ), ( !n || n < 0 || n > i ) && ( n = i );
for ( var s = "", o = t; o < n; ++o ) s += ( r = e[ o ] ) < 16 ? "0" + r.toString( 16 ) : r.toString( 16 );
return s
}
function E( e, t, n ) {
for ( var r = e.slice( t, n ), i = "", s = 0; s < r.length; s += 2 ) i += String.fromCharCode( r[ s ] + 256 * r[ s + 1 ] );
return i
}
function I( e, t, n ) {
if ( e % 1 != 0 || e < 0 ) throw new RangeError( "offset is not uint" );
if ( e + t > n ) throw new RangeError( "Trying to access beyond buffer length" )
}
function M( e, t, n, r, i, o ) {
if ( !s.isBuffer( e ) ) throw new TypeError( '"buffer" argument must be a Buffer instance' );
if ( t > i || t < o ) throw new RangeError( '"value" argument is out of bounds' );
if ( n + r > e.length ) throw new RangeError( "Index out of range" )
}
function G( e, t, n, r ) {
t < 0 && ( t = 65535 + t + 1 );
for ( var i = 0, s = Math.min( e.length - n, 2 ); i < s; ++i ) e[ n + i ] = ( t & 255 << 8 * ( r ? i : 1 - i ) ) >>> 8 * ( r ? i : 1 - i )
}
function Z( e, t, n, r ) {
t < 0 && ( t = 4294967295 + t + 1 );
for ( var i = 0, s = Math.min( e.length - n, 4 ); i < s; ++i ) e[ n + i ] = t >>> 8 * ( r ? i : 3 - i ) & 255
}
function T( e, t, n, r ) {
if ( n + r > e.length ) throw new RangeError( "Index out of range" );
if ( n < 0 ) throw new RangeError( "Index out of range" )
}
function N( e, t, n, r, i ) {
return i || T( e, 0, n, 4 ), j.write( e, t, n, r, 23, 4 ), n + 4
}
function S( e, t, n, r, i ) {
return i || T( e, 0, n, 8 ),
j.write( e, t, n, r, 52, 8 ), n + 8
}
function U( e, t ) {
var n;
t = t || 1 / 0;
for ( var r = e.length, i = null, s = [], o = 0; o < r; ++o ) {
if ( ( n = e.charCodeAt( o ) ) > 55295 && n < 57344 ) {
if ( !i ) {
if ( n > 56319 ) {
( t -= 3 ) > -1 && s.push( 239, 191, 189 );
continue
}
if ( o + 1 === r ) {
( t -= 3 ) > -1 && s.push( 239, 191, 189 );
continue
}
i = n;
continue
}
if ( n < 56320 ) {
( t -= 3 ) > -1 && s.push( 239, 191, 189 ), i = n;
continue
}
n = 65536 + ( i - 55296 << 10 | n - 56320 )
} else i && ( t -= 3 ) > -1 && s.push( 239, 191, 189 );
if ( i = null, n < 128 ) {
if ( ( t -= 1 ) < 0 ) break;
s.push( n )
} else if ( n < 2048 ) {
if ( ( t -= 2 ) < 0 ) break;
s.push( n >> 6 | 192, 63 & n | 128 )
} else if ( n < 65536 ) {
if ( ( t -= 3 ) < 0 ) break;
s.push( n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128 )
} else {
if ( !( n < 1114112 ) ) throw new Error( "Invalid code point" );
if ( ( t -= 4 ) < 0 ) break;
s.push( n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128, 63 & n | 128 )
}
}
return s
}
function B( e ) {
return F.toByteArray( function ( e ) {
if ( ( e = function ( e ) {
return e.trim ? e.trim() : e.replace( /^\s+|\s+$/g, "" )
}( e ).replace( P, "" ) ).length < 2 ) return "";
for ( ; e.length % 4 != 0; ) e += "=";
return e
}( e ) )
}
function O( e, t, n, r ) {
for ( var i = 0; i < r && !( i + n >= t.length || i >= e.length ); ++i ) t[ i + n ] = e[ i ];
return i
}
/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh <http://feross.org>
* @license MIT
*/
var F = n( 35 ),
j = n( 36 ),
D = n( 37 );
t.Buffer = s, t.SlowBuffer = function ( e ) {
return +e != e && ( e = 0 ), s.alloc( +e )
}, t.INSPECT_MAX_BYTES = 50, s.TYPED_ARRAY_SUPPORT = void 0 !== e.TYPED_ARRAY_SUPPORT ? e.TYPED_ARRAY_SUPPORT : function () {
try {
var e = new Uint8Array( 1 );
return e.__proto__ = {
__proto__: Uint8Array.prototype,
foo: function () {
return 42
}
}, 42 === e.foo() && "function" == typeof e.subarray && 0 === e.subarray( 1, 1 ).byteLength
} catch ( e ) {
return !1
}
}(), t.kMaxLength = r(), s.poolSize = 8192, s._augment = function ( e ) {
return e.__proto__ = s.prototype, e
},
s.from = function ( e, t, n ) {
return o( null, e, t, n )
}, s.TYPED_ARRAY_SUPPORT && ( s.prototype.__proto__ = Uint8Array.prototype, s.__proto__ = Uint8Array, "undefined" != typeof Symbol && Symbol.species && s[ Symbol.species ] === s && Object.defineProperty( s, Symbol.species, {
value: null,
configurable: !0
} ) ), s.alloc = function ( e, t, n ) {
return function ( e, t, n, r ) {
return a( t ), t <= 0 ? i( e, t ) : void 0 !== n ? "string" == typeof r ? i( e, t ).fill( n, r ) : i( e, t ).fill( n ) : i( e, t )
}( null, e, t, n )
}, s.allocUnsafe = function ( e ) {
return l( null, e )
},
s.allocUnsafeSlow = function ( e ) {
return l( null, e )
}, s.isBuffer = function ( e ) {
return !( null == e || !e._isBuffer )
}, s.compare = function ( e, t ) {
if ( !s.isBuffer( e ) || !s.isBuffer( t ) ) throw new TypeError( "Arguments must be Buffers" );
if ( e === t ) return 0;
for ( var n = e.length, r = t.length, i = 0, o = Math.min( n, r ); i < o; ++i )
if ( e[ i ] !== t[ i ] ) {
n = e[ i ], r = t[ i ];
break
} return n < r ? -1 : r < n ? 1 : 0
}, s.isEncoding = function ( e ) {
switch ( String( e ).toLowerCase() ) {
case "hex":
case "utf8":
case "utf-8":
case "ascii":
case "latin1":
case "binary":
case "base64":
case "ucs2":
case "ucs-2":
case "utf16le":
case "utf-16le":
return !0;
default:
return !1
}
}, s.concat = function ( e, t ) {
if ( !D( e ) ) throw new TypeError( '"list" argument must be an Array of Buffers' );
if ( 0 === e.length ) return s.alloc( 0 );
var n;
if ( void 0 === t )
for ( t = 0, n = 0; n < e.length; ++n ) t += e[ n ].length;
var r = s.allocUnsafe( t ),
i = 0;
for ( n = 0; n < e.length; ++n ) {
var o = e[ n ];
if ( !s.isBuffer( o ) ) throw new TypeError( '"list" argument must be an Array of Buffers' );
o.copy( r, i ), i += o.length
}
return r
}, s.byteLength = d, s.prototype._isBuffer = !0,
s.prototype.swap16 = function () {
var e = this.length;
if ( e % 2 != 0 ) throw new RangeError( "Buffer size must be a multiple of 16-bits" );
for ( var t = 0; t < e; t += 2 ) p( this, t, t + 1 );
return this
}, s.prototype.swap32 = function () {
var e = this.length;
if ( e % 4 != 0 ) throw new RangeError( "Buffer size must be a multiple of 32-bits" );
for ( var t = 0; t < e; t += 4 ) p( this, t, t + 3 ), p( this, t + 1, t + 2 );
return this
}, s.prototype.swap64 = function () {
var e = this.length;
if ( e % 8 != 0 ) throw new RangeError( "Buffer size must be a multiple of 64-bits" );
for ( var t = 0; t < e; t += 8 ) p( this, t, t + 7 ), p( this, t + 1, t + 6 ), p( this, t + 2, t + 5 ), p( this, t + 3, t + 4 );
return this
}, s.prototype.toString = function () {
var e = 0 | this.length;
return 0 === e ? "" : 0 === arguments.length ? y( this, 0, e ) : u.apply( this, arguments )
}, s.prototype.equals = function ( e ) {
if ( !s.isBuffer( e ) ) throw new TypeError( "Argument must be a Buffer" );
return this === e || 0 === s.compare( this, e )
}, s.prototype.inspect = function () {
var e = "",
n = t.INSPECT_MAX_BYTES;
return this.length > 0 && ( e = this.toString( "hex", 0, n ).match( /.{2}/g ).join( " " ),
this.length > n && ( e += " ... " ) ), "<Buffer " + e + ">"
}, s.prototype.compare = function ( e, t, n, r, i ) {
if ( !s.isBuffer( e ) ) throw new TypeError( "Argument must be a Buffer" );
if ( void 0 === t && ( t = 0 ), void 0 === n && ( n = e ? e.length : 0 ), void 0 === r && ( r = 0 ), void 0 === i && ( i = this.length ), t < 0 || n > e.length || r < 0 || i > this.length ) throw new RangeError( "out of range index" );
if ( r >= i && t >= n ) return 0;
if ( r >= i ) return -1;
if ( t >= n ) return 1;
if ( this === e ) return 0;
for ( var o = ( i >>>= 0 ) - ( r >>>= 0 ), a = ( n >>>= 0 ) - ( t >>>= 0 ), l = Math.min( o, a ), c = this.slice( r, i ), A = e.slice( t, n ), d = 0; d < l; ++d )
if ( c[ d ] !== A[ d ] ) {
o = c[ d ], a = A[ d ];
break
} return o < a ? -1 : a < o ? 1 : 0
}, s.prototype.includes = function ( e, t, n ) {
return -1 !== this.indexOf( e, t, n )
}, s.prototype.indexOf = function ( e, t, n ) {
return h( this, e, t, n, !0 )
}, s.prototype.lastIndexOf = function ( e, t, n ) {
return h( this, e, t, n, !1 )
}, s.prototype.write = function ( e, t, n, r ) {
if ( void 0 === t ) r = "utf8", n = this.length, t = 0;
else if ( void 0 === n && "string" == typeof t ) r = t, n = this.length,
t = 0;
else {
if ( !isFinite( t ) ) throw new Error( "Buffer.write(string, encoding, offset[, length]) is no longer supported" );
t |= 0, isFinite( n ) ? ( n |= 0, void 0 === r && ( r = "utf8" ) ) : ( r = n, n = void 0 )
}
var i = this.length - t;
if ( ( void 0 === n || n > i ) && ( n = i ), e.length > 0 && ( n < 0 || t < 0 ) || t > this.length ) throw new RangeError( "Attempt to write outside buffer bounds" );
r || ( r = "utf8" );
for ( var s = !1;; ) switch ( r ) {
case "hex":
return g( this, e, t, n );
case "utf8":
case "utf-8":
return m( this, e, t, n );
case "ascii":
return _( this, e, t, n );
case "latin1":
case "binary":
return b( this, e, t, n );
case "base64":
return v( this, e, t, n );
case "ucs2":
case "ucs-2":
case "utf16le":
case "utf-16le":
return w( this, e, t, n );
default:
if ( s ) throw new TypeError( "Unknown encoding: " + r );
r = ( "" + r ).toLowerCase(), s = !0
}
}, s.prototype.toJSON = function () {
return {
type: "Buffer",
data: [].slice.call( this._arr || this, 0 )
}
};
var L = 4096;
s.prototype.slice = function ( e, t ) {
var n, r = this.length;
if ( ( e = ~~e ) < 0 ? ( e += r ) < 0 && ( e = 0 ) : e > r && ( e = r ), ( t = void 0 === t ? r : ~~t ) < 0 ? ( t += r ) < 0 && ( t = 0 ) : t > r && ( t = r ), t < e && ( t = e ),
s.TYPED_ARRAY_SUPPORT )( n = this.subarray( e, t ) ).__proto__ = s.prototype;
else {
var i = t - e;
n = new s( i, void 0 );
for ( var o = 0; o < i; ++o ) n[ o ] = this[ o + e ]
}
return n
}, s.prototype.readUIntLE = function ( e, t, n ) {
e |= 0, t |= 0, n || I( e, t, this.length );
for ( var r = this[ e ], i = 1, s = 0; ++s < t && ( i *= 256 ); ) r += this[ e + s ] * i;
return r
}, s.prototype.readUIntBE = function ( e, t, n ) {
e |= 0, t |= 0, n || I( e, t, this.length );
for ( var r = this[ e + --t ], i = 1; t > 0 && ( i *= 256 ); ) r += this[ e + --t ] * i;
return r
}, s.prototype.readUInt8 = function ( e, t ) {
return t || I( e, 1, this.length ), this[ e ]
},
s.prototype.readUInt16LE = function ( e, t ) {
return t || I( e, 2, this.length ), this[ e ] | this[ e + 1 ] << 8
}, s.prototype.readUInt16BE = function ( e, t ) {
return t || I( e, 2, this.length ), this[ e ] << 8 | this[ e + 1 ]
}, s.prototype.readUInt32LE = function ( e, t ) {
return t || I( e, 4, this.length ), ( this[ e ] | this[ e + 1 ] << 8 | this[ e + 2 ] << 16 ) + 16777216 * this[ e + 3 ]
}, s.prototype.readUInt32BE = function ( e, t ) {
return t || I( e, 4, this.length ), 16777216 * this[ e ] + ( this[ e + 1 ] << 16 | this[ e + 2 ] << 8 | this[ e + 3 ] )
}, s.prototype.readIntLE = function ( e, t, n ) {
e |= 0, t |= 0, n || I( e, t, this.length );
for ( var r = this[ e ], i = 1, s = 0; ++s < t && ( i *= 256 ); ) r += this[ e + s ] * i;
return r >= ( i *= 128 ) && ( r -= Math.pow( 2, 8 * t ) ), r
}, s.prototype.readIntBE = function ( e, t, n ) {
e |= 0, t |= 0, n || I( e, t, this.length );
for ( var r = t, i = 1, s = this[ e + --r ]; r > 0 && ( i *= 256 ); ) s += this[ e + --r ] * i;
return s >= ( i *= 128 ) && ( s -= Math.pow( 2, 8 * t ) ), s
}, s.prototype.readInt8 = function ( e, t ) {
return t || I( e, 1, this.length ), 128 & this[ e ] ? -1 * ( 255 - this[ e ] + 1 ) : this[ e ]
}, s.prototype.readInt16LE = function ( e, t ) {
t || I( e, 2, this.length );
var n = this[ e ] | this[ e + 1 ] << 8;
return 32768 & n ? 4294901760 | n : n
}, s.prototype.readInt16BE = function ( e, t ) {
t || I( e, 2, this.length );
var n = this[ e + 1 ] | this[ e ] << 8;
return 32768 & n ? 4294901760 | n : n
}, s.prototype.readInt32LE = function ( e, t ) {
return t || I( e, 4, this.length ), this[ e ] | this[ e + 1 ] << 8 | this[ e + 2 ] << 16 | this[ e + 3 ] << 24
}, s.prototype.readInt32BE = function ( e, t ) {
return t || I( e, 4, this.length ), this[ e ] << 24 | this[ e + 1 ] << 16 | this[ e + 2 ] << 8 | this[ e + 3 ]
}, s.prototype.readFloatLE = function ( e, t ) {
return t || I( e, 4, this.length ), j.read( this, e, !0, 23, 4 )
}, s.prototype.readFloatBE = function ( e, t ) {
return t || I( e, 4, this.length ), j.read( this, e, !1, 23, 4 )
}, s.prototype.readDoubleLE = function ( e, t ) {
return t || I( e, 8, this.length ), j.read( this, e, !0, 52, 8 )
}, s.prototype.readDoubleBE = function ( e, t ) {
return t || I( e, 8, this.length ), j.read( this, e, !1, 52, 8 )
}, s.prototype.writeUIntLE = function ( e, t, n, r ) {
e = +e, t |= 0, n |= 0, r || M( this, e, t, n, Math.pow( 2, 8 * n ) - 1, 0 );
var i = 1,
s = 0;
for ( this[ t ] = 255 & e; ++s < n && ( i *= 256 ); ) this[ t + s ] = e / i & 255;
return t + n
}, s.prototype.writeUIntBE = function ( e, t, n, r ) {
e = +e, t |= 0, n |= 0,
r || M( this, e, t, n, Math.pow( 2, 8 * n ) - 1, 0 );
var i = n - 1,
s = 1;
for ( this[ t + i ] = 255 & e; --i >= 0 && ( s *= 256 ); ) this[ t + i ] = e / s & 255;
return t + n
}, s.prototype.writeUInt8 = function ( e, t, n ) {
return e = +e, t |= 0, n || M( this, e, t, 1, 255, 0 ), s.TYPED_ARRAY_SUPPORT || ( e = Math.floor( e ) ), this[ t ] = 255 & e, t + 1
}, s.prototype.writeUInt16LE = function ( e, t, n ) {
return e = +e, t |= 0, n || M( this, e, t, 2, 65535, 0 ), s.TYPED_ARRAY_SUPPORT ? ( this[ t ] = 255 & e, this[ t + 1 ] = e >>> 8 ) : G( this, e, t, !0 ), t + 2
}, s.prototype.writeUInt16BE = function ( e, t, n ) {
return e = +e, t |= 0, n || M( this, e, t, 2, 65535, 0 ),
s.TYPED_ARRAY_SUPPORT ? ( this[ t ] = e >>> 8, this[ t + 1 ] = 255 & e ) : G( this, e, t, !1 ), t + 2
}, s.prototype.writeUInt32LE = function ( e, t, n ) {
return e = +e, t |= 0, n || M( this, e, t, 4, 4294967295, 0 ), s.TYPED_ARRAY_SUPPORT ? ( this[ t + 3 ] = e >>> 24, this[ t + 2 ] = e >>> 16, this[ t + 1 ] = e >>> 8, this[ t ] = 255 & e ) : Z( this, e, t, !0 ), t + 4
}, s.prototype.writeUInt32BE = function ( e, t, n ) {
return e = +e, t |= 0, n || M( this, e, t, 4, 4294967295, 0 ), s.TYPED_ARRAY_SUPPORT ? ( this[ t ] = e >>> 24, this[ t + 1 ] = e >>> 16, this[ t + 2 ] = e >>> 8, this[ t + 3 ] = 255 & e ) : Z( this, e, t, !1 ), t + 4
},
s.prototype.writeIntLE = function ( e, t, n, r ) {
if ( e = +e, t |= 0, !r ) {
var i = Math.pow( 2, 8 * n - 1 );
M( this, e, t, n, i - 1, -i )
}
var s = 0,
o = 1,
a = 0;
for ( this[ t ] = 255 & e; ++s < n && ( o *= 256 ); ) e < 0 && 0 === a && 0 !== this[ t + s - 1 ] && ( a = 1 ), this[ t + s ] = ( e / o >> 0 ) - a & 255;
return t + n
}, s.prototype.writeIntBE = function ( e, t, n, r ) {
if ( e = +e, t |= 0, !r ) {
var i = Math.pow( 2, 8 * n - 1 );
M( this, e, t, n, i - 1, -i )
}
var s = n - 1,
o = 1,
a = 0;
for ( this[ t + s ] = 255 & e; --s >= 0 && ( o *= 256 ); ) e < 0 && 0 === a && 0 !== this[ t + s + 1 ] && ( a = 1 ), this[ t + s ] = ( e / o >> 0 ) - a & 255;
return t + n
}, s.prototype.writeInt8 = function ( e, t, n ) {
return e = +e, t |= 0, n || M( this, e, t, 1, 127, -128 ), s.TYPED_ARRAY_SUPPORT || ( e = Math.floor( e ) ), e < 0 && ( e = 255 + e + 1 ), this[ t ] = 255 & e, t + 1
}, s.prototype.writeInt16LE = function ( e, t, n ) {
return e = +e, t |= 0, n || M( this, e, t, 2, 32767, -32768 ), s.TYPED_ARRAY_SUPPORT ? ( this[ t ] = 255 & e, this[ t + 1 ] = e >>> 8 ) : G( this, e, t, !0 ), t + 2
}, s.prototype.writeInt16BE = function ( e, t, n ) {
return e = +e, t |= 0, n || M( this, e, t, 2, 32767, -32768 ), s.TYPED_ARRAY_SUPPORT ? ( this[ t ] = e >>> 8, this[ t + 1 ] = 255 & e ) : G( this, e, t, !1 ), t + 2
}, s.prototype.writeInt32LE = function ( e, t, n ) {
return e = +e,
t |= 0, n || M( this, e, t, 4, 2147483647, -2147483648 ), s.TYPED_ARRAY_SUPPORT ? ( this[ t ] = 255 & e, this[ t + 1 ] = e >>> 8, this[ t + 2 ] = e >>> 16, this[ t + 3 ] = e >>> 24 ) : Z( this, e, t, !0 ), t + 4
}, s.prototype.writeInt32BE = function ( e, t, n ) {
return e = +e, t |= 0, n || M( this, e, t, 4, 2147483647, -2147483648 ), e < 0 && ( e = 4294967295 + e + 1 ), s.TYPED_ARRAY_SUPPORT ? ( this[ t ] = e >>> 24, this[ t + 1 ] = e >>> 16, this[ t + 2 ] = e >>> 8, this[ t + 3 ] = 255 & e ) : Z( this, e, t, !1 ), t + 4
}, s.prototype.writeFloatLE = function ( e, t, n ) {
return N( this, e, t, !0, n )
}, s.prototype.writeFloatBE = function ( e, t, n ) {
return N( this, e, t, !1, n )
}, s.prototype.writeDoubleLE = function ( e, t, n ) {
return S( this, e, t, !0, n )
}, s.prototype.writeDoubleBE = function ( e, t, n ) {
return S( this, e, t, !1, n )
}, s.prototype.copy = function ( e, t, n, r ) {
if ( n || ( n = 0 ), r || 0 === r || ( r = this.length ), t >= e.length && ( t = e.length ), t || ( t = 0 ), r > 0 && r < n && ( r = n ), r === n ) return 0;
if ( 0 === e.length || 0 === this.length ) return 0;
if ( t < 0 ) throw new RangeError( "targetStart out of bounds" );
if ( n < 0 || n >= this.length ) throw new RangeError( "sourceStart out of bounds" );
if ( r < 0 ) throw new RangeError( "sourceEnd out of bounds" );
r > this.length && ( r = this.length ), e.length - t < r - n && ( r = e.length - t + n );
var i, o = r - n;
if ( this === e && n < t && t < r )
for ( i = o - 1; i >= 0; --i ) e[ i + t ] = this[ i + n ];
else if ( o < 1e3 || !s.TYPED_ARRAY_SUPPORT )
for ( i = 0; i < o; ++i ) e[ i + t ] = this[ i + n ];
else Uint8Array.prototype.set.call( e, this.subarray( n, n + o ), t );
return o
}, s.prototype.fill = function ( e, t, n, r ) {
if ( "string" == typeof e ) {
if ( "string" == typeof t ? ( r = t, t = 0, n = this.length ) : "string" == typeof n && ( r = n, n = this.length ), 1 === e.length ) {
var i = e.charCodeAt( 0 );
i < 256 && ( e = i )
}
if ( void 0 !== r && "string" != typeof r ) throw new TypeError( "encoding must be a string" );
if ( "string" == typeof r && !s.isEncoding( r ) ) throw new TypeError( "Unknown encoding: " + r )
} else "number" == typeof e && ( e &= 255 );
if ( t < 0 || this.length < t || this.length < n ) throw new RangeError( "Out of range index" );
if ( n <= t ) return this;
var o;
if ( t >>>= 0, n = void 0 === n ? this.length : n >>> 0, e || ( e = 0 ), "number" == typeof e )
for ( o = t; o < n; ++o ) this[ o ] = e;
else {
var a = s.isBuffer( e ) ? e : U( new s( e, r ).toString() ),
l = a.length;
for ( o = 0; o < n - t; ++o ) this[ o + t ] = a[ o % l ]
}
return this
};
var P = /[^+\/0-9A-Za-z-_]/g
} ).call( this, n( 20 ) )
}, function ( e, t ) {
"use strict";
function n( e ) {
var t = e.length;
if ( t % 4 > 0 ) throw new Error( "Invalid string. Length must be a multiple of 4" );
var n = e.indexOf( "=" );
return -1 === n && ( n = t ), [ n, n === t ? 0 : 4 - n % 4 ]
}
function r( e, t, n ) {
for ( var r, s, o = [], a = t; a < n; a += 3 ) r = ( e[ a ] << 16 & 16711680 ) + ( e[ a + 1 ] << 8 & 65280 ) + ( 255 & e[ a + 2 ] ), o.push( i[ ( s = r ) >> 18 & 63 ] + i[ s >> 12 & 63 ] + i[ s >> 6 & 63 ] + i[ 63 & s ] );
return o.join( "" )
}
t.byteLength = function ( e ) {
var t = n( e ),
r = t[ 0 ],
i = t[ 1 ];
return 3 * ( r + i ) / 4 - i
}, t.toByteArray = function ( e ) {
var t, r, i = n( e ),
a = i[ 0 ],
l = i[ 1 ],
c = new o( function ( e, t, n ) {
return 3 * ( t + n ) / 4 - n
}( 0, a, l ) ),
A = 0,
d = l > 0 ? a - 4 : a;
for ( r = 0; r < d; r += 4 ) t = s[ e.charCodeAt( r ) ] << 18 | s[ e.charCodeAt( r + 1 ) ] << 12 | s[ e.charCodeAt( r + 2 ) ] << 6 | s[ e.charCodeAt( r + 3 ) ], c[ A++ ] = t >> 16 & 255, c[ A++ ] = t >> 8 & 255, c[ A++ ] = 255 & t;
return 2 === l && ( t = s[ e.charCodeAt( r ) ] << 2 | s[ e.charCodeAt( r + 1 ) ] >> 4, c[ A++ ] = 255 & t ), 1 === l && ( t = s[ e.charCodeAt( r ) ] << 10 | s[ e.charCodeAt( r + 1 ) ] << 4 | s[ e.charCodeAt( r + 2 ) ] >> 2, c[ A++ ] = t >> 8 & 255,
c[ A++ ] = 255 & t ), c
}, t.fromByteArray = function ( e ) {
for ( var t, n = e.length, s = n % 3, o = [], a = 16383, l = 0, c = n - s; l < c; l += a ) o.push( r( e, l, l + a > c ? c : l + a ) );
return 1 === s ? ( t = e[ n - 1 ], o.push( i[ t >> 2 ] + i[ t << 4 & 63 ] + "==" ) ) : 2 === s && ( t = ( e[ n - 2 ] << 8 ) + e[ n - 1 ], o.push( i[ t >> 10 ] + i[ t >> 4 & 63 ] + i[ t << 2 & 63 ] + "=" ) ), o.join( "" )
};
for ( var i = [], s = [], o = "undefined" != typeof Uint8Array ? Uint8Array : Array, a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", l = 0, c = a.length; l < c; ++l ) i[ l ] = a[ l ], s[ a.charCodeAt( l ) ] = l;
s[ "-".charCodeAt( 0 ) ] = 62,
s[ "_".charCodeAt( 0 ) ] = 63
}, function ( e, t ) {
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
t.read = function ( e, t, n, r, i ) {
var s, o, a = 8 * i - r - 1,
l = ( 1 << a ) - 1,
c = l >> 1,
A = -7,
d = n ? i - 1 : 0,
u = n ? -1 : 1,
p = e[ t + d ];
for ( d += u, s = p & ( 1 << -A ) - 1, p >>= -A, A += a; A > 0; s = 256 * s + e[ t + d ], d += u, A -= 8 );
for ( o = s & ( 1 << -A ) - 1, s >>= -A, A += r; A > 0; o = 256 * o + e[ t + d ], d += u, A -= 8 );
if ( 0 === s ) s = 1 - c;
else {
if ( s === l ) return o ? NaN : 1 / 0 * ( p ? -1 : 1 );
o += Math.pow( 2, r ), s -= c
}
return ( p ? -1 : 1 ) * o * Math.pow( 2, s - r )
}, t.write = function ( e, t, n, r, i, s ) {
var o, a, l, c = 8 * s - i - 1,
A = ( 1 << c ) - 1,
d = A >> 1,
u = 23 === i ? Math.pow( 2, -24 ) - Math.pow( 2, -77 ) : 0,
p = r ? 0 : s - 1,
h = r ? 1 : -1,
f = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0;
for ( t = Math.abs( t ), isNaN( t ) || t === 1 / 0 ? ( a = isNaN( t ) ? 1 : 0, o = A ) : ( o = Math.floor( Math.log( t ) / Math.LN2 ), t * ( l = Math.pow( 2, -o ) ) < 1 && ( o--, l *= 2 ), ( t += o + d >= 1 ? u / l : u * Math.pow( 2, 1 - d ) ) * l >= 2 && ( o++, l /= 2 ), o + d >= A ? ( a = 0, o = A ) : o + d >= 1 ? ( a = ( t * l - 1 ) * Math.pow( 2, i ), o += d ) : ( a = t * Math.pow( 2, d - 1 ) * Math.pow( 2, i ), o = 0 ) ); i >= 8; e[ n + p ] = 255 & a, p += h, a /= 256, i -= 8 );
for ( o = o << i | a, c += i; c > 0; e[ n + p ] = 255 & o, p += h, o /= 256, c -= 8 );
e[ n + p - h ] |= 128 * f
}
}, function ( e ) {
var t = {}.toString;
e.exports = Array.isArray || function ( e ) {
return "[object Array]" == t.call( e )
}
}, function ( e, t, n ) {
( function ( e ) {
function r( e, t ) {
this._id = e, this._clearFn = t
}
var i = void 0 !== e && e || "undefined" != typeof self && self || window,
s = function () {}.apply;
t.setTimeout = function () {
return new r( s.call( setTimeout, i, arguments ), clearTimeout )
}, t.setInterval = function () {
return new r( s.call( setInterval, i, arguments ), clearInterval )
}, t.clearTimeout = t.clearInterval = function ( e ) {
e && e.close()
}, r.prototype.unref = r.prototype.ref = function () {}, r.prototype.close = function () {
this._clearFn.call( i, this._id )
},
t.enroll = function ( e, t ) {
clearTimeout( e._idleTimeoutId ), e._idleTimeout = t
}, t.unenroll = function ( e ) {
clearTimeout( e._idleTimeoutId ), e._idleTimeout = -1
}, t._unrefActive = t.active = function ( e ) {
clearTimeout( e._idleTimeoutId );
var t = e._idleTimeout;
t >= 0 && ( e._idleTimeoutId = setTimeout( ( function () {
e._onTimeout && e._onTimeout()
} ), t ) )
}, n( 39 ), t.setImmediate = "undefined" != typeof self && self.setImmediate || void 0 !== e && e.setImmediate || this && this.setImmediate,
t.clearImmediate = "undefined" != typeof self && self.clearImmediate || void 0 !== e && e.clearImmediate || this && this.clearImmediate
} ).call( this, n( 20 ) )
}, function ( e, t, n ) {
( function ( e, t ) {
! function ( e ) {
"use strict";
function n( e ) {
delete A[ e ]
}
function r( e ) {
if ( d ) setTimeout( r, 0, e );
else {
var t = A[ e ];
if ( t ) {
d = !0;
try {
! function ( e ) {
var t = e.callback,
n = e.args;
switch ( n.length ) {
case 0:
t();
break;
case 1:
t( n[ 0 ] );
break;
case 2:
t( n[ 0 ], n[ 1 ] );
break;
case 3:
t( n[ 0 ], n[ 1 ], n[ 2 ] );
break;
default:
t.apply( void 0, n )
}
}( t )
} finally {
n( e ), d = !1
}
}
}
}
if ( !e.setImmediate ) {
var i, s, o, a, l, c = 1,
A = {},
d = !1,
u = e.document,
p = Object.getPrototypeOf && Object.getPrototypeOf( e );
p = p && p.setTimeout ? p : e, "[object process]" === {}.toString.call( e.process ) ? i = function ( e ) {
t.nextTick( ( function () {
r( e )
} ) )
} : function () {
if ( e.postMessage && !e.importScripts ) {
var t = !0,
n = e.onmessage;
return e.onmessage = function () {
t = !1
}, e.postMessage( "", "*" ), e.onmessage = n, t
}
}() ? ( a = "setImmediate$" + Math.random() + "$", l = function ( t ) {
t.source === e && "string" == typeof t.data && 0 === t.data.indexOf( a ) && r( +t.data.slice( a.length ) )
}, e.addEventListener ? e.addEventListener( "message", l, !1 ) : e.attachEvent( "onmessage", l ), i = function ( t ) {
e.postMessage( a + t, "*" )
} ) : e.MessageChannel ? ( ( o = new MessageChannel ).port1.onmessage = function ( e ) {
r( e.data )
}, i = function ( e ) {
o.port2.postMessage( e )
} ) : u && "onreadystatechange" in u.createElement( "script" ) ? ( s = u.documentElement, i = function ( e ) {
var t = u.createElement( "script" );
t.onreadystatechange = function () {
r( e ),
t.onreadystatechange = null, s.removeChild( t ), t = null
}, s.appendChild( t )
} ) : i = function ( e ) {
setTimeout( r, 0, e )
}, p.setImmediate = function ( e ) {
"function" != typeof e && ( e = new Function( "" + e ) );
for ( var t = new Array( arguments.length - 1 ), n = 0; n < t.length; n++ ) t[ n ] = arguments[ n + 1 ];
var r = {
callback: e,
args: t
};
return A[ c ] = r, i( c ), c++
}, p.clearImmediate = n
}
}( "undefined" == typeof self ? void 0 === e ? this : e : self )
} ).call( this, n( 20 ), n( 40 ) )
}, function ( e ) {
function t() {
throw new Error( "setTimeout has not been defined" )
}
function n() {
throw new Error( "clearTimeout has not been defined" )
}
function r( e ) {
if ( l === setTimeout ) return setTimeout( e, 0 );
if ( ( l === t || !l ) && setTimeout ) return l = setTimeout, setTimeout( e, 0 );
try {
return l( e, 0 )
} catch ( t ) {
try {
return l.call( null, e, 0 )
} catch ( t ) {
return l.call( this, e, 0 )
}
}
}
function i() {
p && d && ( p = !1, d.length ? u = d.concat( u ) : h = -1, u.length && s() )
}
function s() {
if ( !p ) {
var e = r( i );
p = !0;
for ( var t = u.length; t; ) {
for ( d = u, u = []; ++h < t; ) d && d[ h ].run();
h = -1, t = u.length
}
d = null, p = !1,
function ( e ) {
if ( c === clearTimeout ) return clearTimeout( e );
if ( ( c === n || !c ) && clearTimeout ) return c = clearTimeout, clearTimeout( e );
try {
c( e )
} catch ( t ) {
try {
return c.call( null, e )
} catch ( t ) {
return c.call( this, e )
}
}
}( e )
}
}
function o( e, t ) {
this.fun = e, this.array = t
}
function a() {}
var l, c, A = e.exports = {};
! function () {
try {
l = "function" == typeof setTimeout ? setTimeout : t
} catch ( e ) {
l = t
}
try {
c = "function" == typeof clearTimeout ? clearTimeout : n
} catch ( e ) {
c = n
}
}();
var d, u = [],
p = !1,
h = -1;
A.nextTick = function ( e ) {
var t = new Array( arguments.length - 1 );
if ( arguments.length > 1 )
for ( var n = 1; n < arguments.length; n++ ) t[ n - 1 ] = arguments[ n ];
u.push( new o( e, t ) ), 1 !== u.length || p || r( s )
}, o.prototype.run = function () {
this.fun.apply( null, this.array )
}, A.title = "browser", A.browser = !0, A.env = {}, A.argv = [], A.version = "", A.versions = {}, A.on = a, A.addListener = a, A.once = a, A.off = a, A.removeListener = a, A.removeAllListeners = a, A.emit = a, A.prependListener = a, A.prependOnceListener = a, A.listeners = function () {
return []
}, A.binding = function () {
throw new Error( "process.binding is not supported" )
},
A.cwd = function () {
return "/"
}, A.chdir = function () {
throw new Error( "process.chdir is not supported" )
}, A.umask = function () {
return 0
}
}, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , function ( e, t, n ) {
"use strict";
n.r( t ), n( 22 );
var r = n( 3 );
const i = ( e, t, n, i, s, o ) => {
let a;
try {
let l = e + "_" + Object( r.createUniqueId )( n, i );
if ( null != s && ( l += "_" + s ), a = document.getElementById( l ), a && o ) {
const t = document.createElement( e );
t.setAttribute( "id", l );
const n = a.parentNode;
n.insertBefore( t, a ), n.removeChild( a ), a = t
} else a ? a.inserted = !0 : ( a = document.createElement( e ), a.setAttribute( "id", l ) );
t && a.setAttribute( "class", t ), a.__removeChild || ( a.__removeChild = a.removeChild, a.removeChild = e => {
delete e.inserted, a.__removeChild( e )
} ), a.__appendChild || ( a.__appendChild = a.appendChild, a.appendChild = ( e, t ) => {
"Array" !== Object( r.toType )( e ) && ( e = [ e ] ), e.forEach( e => {
( !e.parentElement && !e.inserted || t ) && a.__appendChild( e )
} )
} ), a.__insertBefore || ( a.__insertBefore = a.insertBefore, a.insertBefore = ( e, t ) => {
e.parentElement || e.inserted || a.__insertBefore( e, t )
} )
} catch ( e ) {
console.log( "options: Error:" + e.message )
}
return a
},
s = ( e, t, n, r, s ) => i( e, null, t, n, r, s );
var o = n( 0 );
let a = null,
l = null;
const c = ( e, t ) => {
t || ( t = {} );
const n = "ct",
r = "0",
o = s( "div", n, r, "p" ),
a = i( "div", "curbg", n, r, "c" ),
l = i( "div", t.fixed ? "curmiddle_fixed" : "curmiddle_relative", n, r, "d" );
o.inserted || ( o.setAttribute( "class", "curouter hide" ), o.setAttribute( "style", "z-index: 10000" ) );
const c = ( ( e, t, n, r ) => {
r || ( r = "" );
const s = i( "table", "curtable", t, n, "table" + r ),
o = i( "tr", "", t, n, "tr2" + r ),
a = i( "td", "curtableoutertd", t, n, "td1" + r ),
l = i( "td", "curtableinner", t, n, "td2" + r ),
c = i( "td", "curtableoutertd", t, n, "td3" + r );
return o.appendChild( a ), o.appendChild( l ), o.appendChild( c ), s.appendChild( o ), e && l.appendChild( e ), s
} )( e, n, r );
return l.appendChild( c ), o.appendChild( l ), o.appendChild( a ), o.show = () => {
o.setAttribute( "class", "curouter block" )
}, o.hide = () => {
o.setAttribute( "class", "curouter hide" )
}, o.remove = () => {
o.parentNode && o.parentNode.removeChild( o )
}, o.setText = e => {
o.text = e
}, o.print = e => {
o.text && ( o.text.textContent = e )
}, document.body.appendChild( o ), o
},
A = () => {
const e = document.createElement( "div" );
e.setAttribute( "class", "curcontainer" );
const t = document.createElement( "div" );
t.setAttribute( "class", "curwaithead" );
const n = document.createElement( "div" );
return n.setAttribute( "class", "curwaitmsg" ), e.appendChild( t ), e.appendChild( n ), {
outer: e,
inner: n
}
};
var d = e => {
if ( document.body ) {
if ( void 0 === e && ( e = o.I18N.getMessage( "Please_wait___" ) ), null === l ) {
a && ( a.remove(), a = null ), l = 0;
const t = ( e => {
const t = A(),
n = t.inner,
r = document.createElement( "div" );
return r.textContent = e, r.setAttribute( "class", "curtext" ), $( n ).append( $( '<div class="lds-css ng-scope"><div class="lds-dual-ring"><div></div><div></div></div></div>' ) ).append( r ), {
all: t.outer,
text: r
}
} )( e );
return a = c( t.all, {
fixed: !0
} ), a.setText( t.text ), a.show(), !0
}
return 0 === l && ( void 0 === e && ( e = o.I18N.getMessage( "Please_wait___" ) ),
a ) ? ( e && a.print( e ), a.show(), !0 ) : void 0
}
},
u = () => {
0 === l && ( a && a.hide(), l = null )
},
p = e => {
if ( !document.body ) return;
if ( 1 === l ) return !1;
if ( null !== l ) return;
a && ( a.remove(), a = null ), l = 1;
const t = A();
return t.inner.appendChild( e ), a = c( t.outer ), a.show(), !0
},
h = () => {
1 === l && ( a && a.hide(), l = null )
},
f = n( 9 ),
g = n( 1 ),
m = n( 12 ),
_ = n.n( m ),
b = n( 4 ),
v = n( 13 ),
w = n( 6 ),
k = n.n( w ),
y = n( 17 ),
R = n.n( y ),
x = n( 19 ),
C = n( 7 ),
E = n( 15 ),
I = n.n( E ),
M = n( 10 ),
G = n( 11 ),
Z = n( 14 ),
T = {
images: {
origin: f.a.images.origin,
brand: f.a.images.brand,
get: function ( e ) {
return {
about: "info-circle blue",
bug: "bug",
button_ok: "check green",
cancel: "times red",
check: "badge-check",
clock: "clock green",
cloud: "cloud",
critical: "exclamation-triangle orange",
contrib: "heart",
db: "database grey",
delete: "trash-alt",
download: "spinner rotate",
edit: "edit",
edit_add: "plus-square",
editor_cancel: "undo",
enabler: "angle-right",
enabler_enabled: "angle-down",
error: "bell red",
exit: "times",
filesave: "save",
filter: "filter",
flag: "flag",
encrypted: "lock orange",
save_to_disk: "download",
help: "question-square",
home: "home",
import: "upload",
info: "info-square",
no_script: "info",
lock: "cog",
menu_cmd: "cogs",
no: "minus-circle red",
no_domain: "thumbs-down red",
question_mark: "question-circle",
resources: "cloud cyan",
script_add: "plus-square",
script_cancel: "industry-alt",
script_download: "file-code cyan",
script_search: "search",
update: "sync",
utilities: "cog",
web: "globe blue",
windowlist: "window-restore grey",
yes_domain: "thumbs-up green"
} [ e ] || ""
}
},
formatBytes: ( e, t ) => {
if ( 0 == e ) return "0 Byte";
const n = t || 3,
r = Math.floor( Math.log( e ) / Math.log( 1e3 ) );
return parseFloat( ( e / Math.pow( 1e3, r ) ).toFixed( n ) ) + " " + [ "Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" ][ r ]
}
};
const N = T.images,
S = ( e, t, n, r ) => {
const i = ( r.uuid ? r.uuid : "" ) + r.id;
t.title = e;
const s = j( {
after: {
image: "help"
},
name: r.name,
id: i
} );
s && n.appendChild( s )
},
U = ( e, t, n, r, s, o ) => {
const a = i( "i", "far fa-" + e, t, n, r, !0 );
if ( s && ( a.title = s ), a.key = n, a.name = t, o ) {
const e = a.getAttribute( "class" ) || "";
a.setAttribute( "class", e + " clickable" ),
a.addEventListener( "click", o ), a.href = "#"
}
return a
},
B = ( e, t, n ) => {
const r = ( t.uuid ? t.uuid : "" ) + t.id,
o = s( "div", t.name, r, "input" );
o.key = t.id;
const a = s( "input", t.name, r, "input", !0 ),
l = e.split( "##" );
a.name = t.name, a.uuid = t.uuid, a.key = t.id, a.oldvalue = t.value, a.value = null != t.value ? t.value : "", a.type = t.password ? "password" : "text", a.setAttribute( "spellcheck", "false" ), t.placeholder && a.setAttribute( "placeholder", t.placeholder ), n && !a.inserted && a.addEventListener( "change", n );
const c = i( "span", "optiondesc", t.name, r, "s1" ),
A = s( "span", t.name, r, "s2" );
return c.textContent = l[ 0 ] + ":", l.length > 1 && ( A.textContent = l[ 1 ] ), o.appendChild( c ), o.appendChild( a ), o.appendChild( A ), t.enabledBy && o.setAttribute( "name", "enabled_by_" + t.enabledBy ), {
elem: o,
input: a
}
},
O = ( e, t, n ) => {
const r = ( t.uuid ? t.uuid : "" ) + t.id;
let s = null;
return s = i( "input", "button", t.name, r, "bu", !0 ), s.name = t.name, s.uuid = t.uuid, s.key = t.id, s.type = "button", s.value = t.name, s.data = t.data, s.reload = t.reload, s.ignore = t.ignore || t.reload,
s.warning = t.warning, t.enabledBy && s.setAttribute( "name", "enabled_by_" + t.enabledBy ), !s.inserted && n && s.addEventListener( "click", n ), s
},
F = ( e, t, n, r ) => {
let s = null;
return s = i( "input", "button", e, t, "bu", !0 ), s.name = e, s.key = t, s.type = "button", s.value = n, !s.inserted && r && s.addEventListener( "click", r ), s
},
j = ( e, t ) => {
const n = ( e.uuid ? e.uuid : "" ) + e.id;
let r, s, o;
if ( s = e.after || e.validation ) {
if ( o = e.validation ? "validation" : "help", t && ( o += " clickable" ), r = i( "span", o, e.name, n, o, !0 ), s.image ) {
const e = U( N.get( s.image ), n, "after_icon" ),
t = [];
s.opacity && t.push( "opacity: " + s.opacity ), e.setAttribute( "style", t.join( ";" ) ), r.appendChild( e )
}
r && ( t && r.addEventListener( "click", t ), s.msg && r.setAttribute( "title", s.msg ) )
}
return r
},
D = e => ( {
"&": "&amp;",
"<": "&lt;",
">": "&gt;"
} [ e ] || e );
var L = {
getInfoFromUrl: e => {
let t;
if ( -1 != e.search( /\/\^?(http(s|s\?|\.\+)?|\.\*):\/\/(\.\*)*\$?\/?$/ ) || -1 != e.search( /htt(ps|p):\/\/(\*\/\*|\*)*$/ ) || -1 != e.search( /\*:\/\/(\*\/\*|\*)*$/ ) || "*" == e ) return {
dom: "*",
tld: "*"
};
0 == e.search( /\// ) ? ( t = e, t = t.replace( /\([^\)]*\)[\?|\+|\*|\{[^\}]*]*/g, "" ), t = t.replace( /\[[^\]]*\][\?|\+|\*|\{[^\}]*]*/g, "" ), t = t.replace( /^\/|\/$|\^|\$|\\\?.*|#.*|\?|\(|\)|\+|\\|\.\*|/g, "" ) ) : t = e, t = t.replace( /^\*:\/\//, "http://" ), 0 != t.search( "http" ) && ( t = "http://" + t );
const n = t.split( "/" );
if ( n.length < 3 ) return null;
const r = n[ 2 ].split( "." );
if ( r.length < 2 ) return null;
const i = r[ r.length - 1 ].split( ":" )[ 0 ];
let s = r[ r.length - 2 ];
"*" !== s && ( s = s.replace( /\*/g, "" ) );
const o = [];
for ( let e = r.length - 3; e >= 0 && -1 == r[ e ].search( "\\*" ); e-- ) o.push( r[ e ] );
return {
tld: i,
dom: s,
subdom: o.reverse()
}
},
getValue: e => {
let t = e.value;
if ( "native" === e.valtype )
if ( "undefined" === t ) t = void 0;
else if ( "null" === t ) t = null;
else try {
t = JSON.parse( t )
} catch ( e ) {}
return t
},
safeTagsReplace: e => e.replace( /[&<>]/g, D ),
addClass: ( e, t ) => {
let n = e.getAttribute( "class" ) || "";
const r = new RegExp( "[ \t]*" + t + "[ \t]*" ); - 1 == n.search( r ) && ( n = ( n ? n + " " : "" ) + t ), e.setAttribute( "class", n )
},
toggleClass: ( e, t ) => {
let n = e.getAttribute( "class" ) || "";
const r = new RegExp( "[ \t]*" + t + "[ \t]*" );
n = -1 != n.search( r ) ? n.replace( r, "" ) : ( n ? n + " " : "" ) + t, e.setAttribute( "class", n )
},
setHelp: S,
createAfterIcon: j,
createEnabler: ( e, t, n, r, s ) => {
const o = r.append,
a = r.disabled,
l = r.title,
c = i( "div", "enabler " + e, t, n + "_enabler", o, "wrap" ),
A = i( "i", "far fa-toggle-on on", t, n + "toggle-on" ),
d = i( "i", "far fa-toggle-on fa-flip-horizontal off greyed", t, n + "toggle-off" );
c.appendChild( [ A, d ] ), l && ( c.title = l ), c.key = n, c.uuid = t;
const u = "enabler_enabled";
return a || c.addEventListener( "click", () => {
$( c ).hasClass( u ) ? $( c ).removeClass( u ) : $( c ).addClass( u ), s && window.setTimeout( () => {
s.call( c )
}, 100 )
} ), c
},
createImage: ( e, t, n, r, s, o ) => {
const a = i( "img", "icon16", t, n, r, !0 );
if ( a.setAttribute( "src", e ), o ) {
const e = a.getAttribute( "class" ) || "";
a.setAttribute( "class", e + " clickable" )
}
return s && ( a.title = s ), a.key = n, a.name = t, o && ( a.addEventListener( "click", o ), a.href = "#" ), a
},
createIcon: U,
createFavicon: ( e, t, n, s ) => {
const o = i( "img", "icon16", t, n, Object( r.filterString )( s, /[a-zA-Z0-9]/g ) );
if ( o.inserted ) return o;
"Array" !== Object( r.toType )( e ) && ( e = [ e ] );
const a = () => {
if ( 0 == e.length ) return;
const r = e.shift();
"function" == typeof r ? window.setTimeout( () => {
o.parentNode && ( o.parentNode.insertBefore( U( r(), t + "_ico", n, s ), o ), o.parentNode.removeChild( o ) )
}, 1 ) : ( o.setAttribute( "src", r ), o.setAttribute( "async", "true" ) )
};
return o.addEventListener( "error", a ), a(), s && ( o.title = s ), o
},
createFileInput: ( e, t, n ) => {
const r = i( "input", "import", "file", null, null, !0 );
return r.inserted || ( r.type = "file", n && r.addEventListener( "change", n ) ), r
},
createNamedSettings: ( e, t, n ) => {
const r = ( t.uuid ? t.uuid : "" ) + t.id,
o = i( "div", "settingsta", t.name, r, "named_wrapper" ),
a = i( "div", "named", t.name, r, "named_settings" ),
l = [],
c = s( "span", t.name, r, "s1" );
return e && ( c.textContent = e + ":" ), t.desc && S( t.desc, c, c, t ), o.appendChild( c ), o.appendChild( a ), o.key = t.id, t.value.forEach( e => {
const o = i( "div", "", t.name + e.name, r, "named", !0 ),
c = i( "div", "", t.name + e.name, r, "named_label", !0 );
c.textContent = e.name, o.appendChild( c );
const A = s( "textarea", t.name + e.name, r, "textarea", !0 );
A.setAttribute( "spellcheck", "false" ), A.name = t.name, A.key = t.id, A.named_name = e.name, A.uuid = t.uuid, A.named = !0, A.oldvalue = e.value || "", A.value = e.value || "", n && !A.inserted && A.addEventListener( "change", n ), o.appendChild( A ), a.appendChild( o ), l.push( A )
} ), {
elem: o,
textareas: l,
label: c
}
},
createTextarea: ( e, t, n ) => {
const r = ( t.uuid ? t.uuid : "" ) + t.id,
o = s( "div", t.name, r, "textarea" );
o.key = t.id;
const a = i( "textarea", "settingsta", t.name, r, "textarea", !0 );
a.setAttribute( "spellcheck", "false" ), a.name = t.name, a.key = t.id, a.uuid = t.uuid, a.json = t.json, a.array = t.array, a.oldvalue = t.value, void 0 === t.value || null === t.value ? a.value = "" : t.array ? a.value = t.value.join( "\n" ) : t.json ? a.value = JSON.stringify( t.value, null, 4 ) : a.value = t.value, n && !a.inserted && a.addEventListener( "change", n );
const l = s( "span", t.name, r, "s1" );
return e && ( l.textContent = e + ":" ), t.desc && S( t.desc, l, l, t ), o.appendChild( l ), o.appendChild( a ), {
elem: o,
textarea: a,
label: l
}
},
createFileSelect: ( e, t, n ) => {
const r = ( t.uuid ? t.uuid : "" ) + t.id,
i = s( "input", t.name, r, "file" );
if ( i.inserted || ( i.type = "file", i.addEventListener( "change", e => {
n( e.target.files )
}, !1 ) ), e ) {
const n = s( "div", t.name, r, "input" ),
o = s( "span", t.name, r, "s1" );
return o.textContent = e + ":", n.appendChild( o ), n.appendChild( i ), {
elem: n,
input: i
}
}
return {
elem: i
}
},
createInput: B,
createColorChooser: ( e, t, n ) => {
const r = ( t.uuid ? t.uuid : "" ) + t.id,
s = B( e, t, n ),
o = function () {
n && n.apply( this, arguments );
const e = ( this.value.match( /[a-fA-F0-9]+/ ) || "" )[ 0 ];
e && [ 3, 6 ].includes( e.length ) && a.setAttribute( "style", "background-color: #" + e + ";" )
};
s.input.inserted || s.input.addEventListener( "keyup", o );
const a = i( "span", "color_choosed", t.name, r, "col" );
return s.col = a, s.elem.appendChild( s.col ), o.call( s.input ), s
},
createPassword: ( e, t, n ) => {
const r = B( e, t, n );
return r.input.setAttribute( "type", "password" ), r
},
createCheckbox: ( e, t, n ) => {
const r = ( t.uuid ? t.uuid : "" ) + t.id,
o = i( "div", "checkbox", t.name, r, "cb1" );
o.key = t.id;
const a = s( "input", t.name, r, "cb", !0 );
a.title = t.desc ? t.desc : "", a.name = t.name, a.uuid = t.uuid, a.key = t.id, a.reload = t.reload, a.warning = t.warning, a.oldvalue = t.enabled, a.checked = t.enabled, a.type = "checkbox", a.valtype = "boolean", n && !a.inserted && a.addEventListener( "click", n );
const l = i( "span", "checkbox_desc", t.name, r, "cb2" );
return l.textContent = e, t.desc && S( t.desc, o, l, t ), o.appendChild( a ), o.appendChild( l ), {
elem: o,
input: a
}
},
createDropDown: ( e, t, n, o, a ) => {
const l = ( t.uuid ? t.uuid : "" ) + t.id,
c = s( "div", t.name, l, "outer_dd" );
c.key = t.id;
const A = s( "select", t.name, l, "dd", !0 );
let d = !1;
if ( n && Object.keys( n ).forEach( e => {
const i = s( "option", t.name, n[ e ].name, "dd" + l, !0 );
i.textContent = Object( r.decodeHtml )( n[ e ].name ), i.value = n[ e ].value, i.warning = n[ e ].warning, d |= !!n[ e ].warning, n[ e ].enabledBy && i.setAttribute( "name", "enabled_by_" + n[ e ].enabledBy ), t.enabler && n[ e ].enable && i.setAttribute( "enables", JSON.stringify( n[ e ].enable ) ),
n[ e ].value == t.value && ( i.selected = !0 ), A.appendChild( i )
} ), A.key = t.id, A.name = t.name, A.uuid = t.uuid, A.reload = t.reload, A.warning = t.warning, A.oldvalue = t.value, A.valtype = "native", A.inserted || ( o && A.addEventListener( "change", o ), d && a && A.addEventListener( "change", a ) ), null !== e ) {
const n = i( "span", "optiondesc", t.name, l, "inner_dd" );
n.textContent = e + ": ", c.appendChild( n )
}
return c.appendChild( A ), t.desc && S( t.desc, c, c, t ), t.enabledBy && c.setAttribute( "name", "enabled_by_" + t.enabledBy ), {
elem: c,
select: A
}
},
createImageButton: ( e, t, n, r, s ) => {
let o = null,
a = null,
l = null;
return o = i( "button", "imgbutton button", e, t, "bu", !0 ), a = i( "div", "imgbutton_container", e, t, "bu_container" ), a.appendChild( o ), o.uuid = e, o.key = t, l = i( "i", "imgbutton_image far fa-" + r, e, t, "bu_img", !0 ), o.appendChild( l ), o.title = l.title = l.alt = n, !o.inserted && s && o.addEventListener( "click", s ), a
},
createImageTextButton: ( e, t, n, r, o ) => {
const a = i( "button", "button imgtextbutton", e, t + n, "itb", !0 );
if ( a.key = t, a.uuid = e, r ) {
const i = U( N.get( r ), e, t + n + "itb", r );
a.appendChild( i )
}
const l = s( "span", e, t + n, "itb" );
return l.textContent = n, a.appendChild( l ), o && a.addEventListener( "click", o ), a
},
createButton: function ( e, t ) {
return "Object" === Object( r.toType )( t ) ? O.apply( this, arguments ) : F.apply( this, arguments )
},
createPosition: ( e, t, n ) => {
const r = ( t.uuid ? t.uuid : "" ) + t.id,
o = s( "div", t.name, r, "pos1" ),
a = s( "select", t.name, r, "pos", !0 );
for ( let e = 1; e <= t.posof; e++ ) {
const n = s( "option", t.name, r, "opt" + e );
n.textContent = e, e == t.pos && ( n.selected = !0 ), a.appendChild( n )
}
a.key = t.id,
a.uuid = t.uuid, a.name = t.name, n && !a.inserted && a.addEventListener( "change", n );
const l = i( "span", "optiondesc", t.name, r, "pos2" );
return l.textContent = e, o.appendChild( l ), o.appendChild( a ), o
},
createSearchBox: e => {
const t = i( "div", "searchbox", "search_inner" ),
n = i( "div", "searchbox_mv", "search_inner_mv" ),
r = i( "input", "searchbox_input", "search_input" ),
s = i( "input", "searchbox_button", "search_button" );
r.type = "text", r.setAttribute( "spellcheck", "false" ), r.value = e, s.type = "button", s.value = "Go";
const o = () => {
const e = r.value;
window.location = window.location.origin + window.location.pathname + "?url=" + encodeURIComponent( e )
};
return s.addEventListener( "click", o ), r.addEventListener( "keyup", e => {
e && 13 == e.keyCode && o()
} ), n.appendChild( r ), n.appendChild( s ), t.appendChild( n ), t
},
createSocialButtons: () => {
const e = [],
t = i( "a", "", "github_link" );
t.href = "https://github.com/derjanb", t.target = "_blank";
const n = i( "img", "icon16", "github" );
n.setAttribute( "src", N.origin( "gh" ) ), t.appendChild( n ), e.push( t );
const r = i( "a", "", "facebook_link" );
r.href = "https://www.facebook.com/tampermonkey", r.target = "_blank";
const s = i( "img", "icon16", "facebook" );
s.setAttribute( "src", N.brand( "facebook" ) ), r.appendChild( s ), e.push( r );
const o = i( "a", "", "insta_link" );
o.href = "https://www.instagram.com/der_jan_b/", o.target = "_blank";
const a = i( "img", "icon16", "instagram" );
return a.setAttribute( "src", N.brand( "instagram" ) ), o.appendChild( a ), e.push( o ), e
},
createGobalHint: ( e, t ) => {
const n = "global_hint_" + ( e.class ? e.class : "warning" ),
r = e.id || Date.now(),
o = i( "span", [ "global_hint", n ].join( " " ), "globalhint", r ),
a = s( "span", "globalhint_c", r ),
l = s( "span", "globalhint_t", r );
e.title && ( l.title = e.title ), e.image && a.appendChild( U( N.get( e.image ), "globalhint_" + r, "icon" + r ) ), l.textContent = e.text, e.onclick && !l.inserted && l.addEventListener( "click", e.onclick ), a.appendChild( l ), o.appendChild( a );
const c = $( o );
e.instant || ( c.hide(), window.setTimeout( () => {
c.fadeIn( 500 )
}, e.delay ? e.delay : 1 ) );
const A = () => {
e.instant ? ( c.hide(), c.remove() ) : c.fadeOut( 500, () => {
c.remove()
} ), e.done && e.done( o )
};
if ( e.timeout && window.setTimeout( A, e.timeout ), !e.timeout || e.timeout > 18e5 ) {
const e = i( "span", "close", "gh_close", r );
a.appendChild( e ), e.addEventListener( "click", () => A() )
}
return c.appendTo( t || document.body ), c
},
isScrolledIntoView: ( e, t ) => {
const n = $( e ),
r = $( window ),
i = t && t.padding || 0,
s = r.scrollTop(),
o = s + r.height(),
a = n.offset().top;
return a + n.height() <= o - i && a >= s + i
}
};
const P = {};
var z = ( e, t, n, o ) => {
const a = ( l = e,
Object( r.filterString )( l, /[0-9a-zA-Z]/g ) );
var l;
let c = !1;
null == n && ( n = {
tv: "tv",
tv_table: "tv_table",
tr_tabs: "tr_tabs",
tr_content: "tr_content",
td_content: "td_content",
td_tabs: "td_tabs",
tv_tabs_fill: "tv_tabs_fill",
tv_tabs_table: "tv_tabs_table",
tv_tabs_align: "tv_tabs_align",
tv_contents: "tv_contents",
tv_tab_selected: "tv_tab tv_selected",
tv_tab_close: "tv_tab_close",
tv_tab: "tv_tab",
tv_content: "tv_content"
} );
const A = i( "div", n.tv, "main" + a ),
d = i( "table", n.tv_table + " noborder", "main_table" + a );
d.inserted ? c = !0 : ( P[ a ] = {}, P[ a ].g_entries = {}, P[ a ].g_selectedId = null );
const u = i( "tr", n.tr_tabs, "tabs" + t.id + a ),
p = i( "td", n.td_tabs, "pages" + a ),
h = i( "div", n.tv_tabs_fill, "tv_tabs_fill" + a ),
f = i( "div", n.tv_tabs_table, "tv_tabs_table" + a ),
m = i( "div", n.tv_tabs_align, "tv_tabs_align" + a ),
_ = i( "tr", n.tr_content, "content" + t.id + a ),
b = i( "td", n.td_content, "content" + a ),
v = i( "div", n.tv_contents, "tv_content" + a ),
w = s( "tfoot", "tv_footer_t" + a ),
k = s( "tr", "tv_footer_tr" + a ),
y = s( "td", "tv_footer_td" + a );
w.appendChild( k ),
k.appendChild( y ), f.appendChild( m ), h.appendChild( f ), p.appendChild( h ), u.appendChild( p ), d.appendChild( u ), b.appendChild( v ), _.appendChild( b ), d.appendChild( _ ), d.appendChild( w ), A.appendChild( d ), t.appendChild( A );
const R = ( e, t, n ) => {
t ? e.setAttribute( "style", n ? r.staticVars.visible_move : r.staticVars.visible ) : e.setAttribute( "style", n ? r.staticVars.invisible_move : r.staticVars.invisible ), e.setAttribute( "vis", t.toString() )
},
x = ( e, t ) => {
const n = e.getId();
if ( P[ a ].g_entries[ n ] ) {
if ( t == P[ a ].g_entries[ n ].visible ) return;
P[ a ].g_entries[ n ].visible = t, R( P[ a ].g_entries[ n ].tab, t )
}
},
C = ( e, t ) => {
e && R( e.content, t, !1 )
},
E = e => {
if ( null === e ) return null;
const t = Object.keys( P[ a ].g_entries );
for ( let n, r = 0; n = t[ r ]; r++ ) {
const t = P[ a ].g_entries[ n ];
if ( t.entry.getId() == e ) return t.entry
}
return null
},
I = e => {
e.hide();
const t = e.getId(),
n = P[ a ].g_entries[ t ];
if ( n ) {
n.tab.parentNode.removeChild( n.tab ), n.content.parentNode.removeChild( n.content );
const e = ( e => {
const t = Object.keys( P[ a ].g_entries );
for ( let n, r = 0; n = t[ r ]; r++ )
if ( P[ a ].g_entries[ n ].tab.id == e.id ) return n;
return null
} )( n.tab );
e && delete P[ a ].g_entries[ e ]
} else console.log( "tv: WARN: tab not part of tabview!" )
};
let M = null;
return c ? M = P[ a ].tv : ( M = {
getTabById: E,
getSelectedTab: function () {
return E( P[ a ].g_selectedId )
},
getAllTabs: function () {
const e = $( m ).find( "div[tvid]" );
let t, n;
const r = [];
return e.each( i => {
( t = $( e.get( i ) ).attr( "tvid" ) ) && ( n = E( t ) ) && r.push( n )
} ), r
},
getNextTab: function () {
const e = $( m ).find( "div[tvid]" );
let t;
return P[ a ].g_selectedId && e.each( ( n, r ) => {
t || $( r ).attr( "tvid" ) === P[ a ].g_selectedId && ( t = $( e.get( n + 1 ) ).attr( "tvid" ) )
} ), E( t || e.first().attr( "tvid" ) )
},
getPreviousTab: function () {
const e = $( m ).find( "div[tvid]" );
let t;
return P[ a ].g_selectedId && e.each( ( n, r ) => {
t || $( r ).attr( "tvid" ) === P[ a ].g_selectedId && ( t = $( e.get( n - 1 ) ).attr( "tvid" ) )
} ), E( t || e.last().attr( "tvid" ) )
},
removeTab: I,
appendTab: function ( e, t, n, r, i ) {
return this.insertTab( void 0, e, t, n, r, i )
},
insertTab: function ( e, t, r, l, c, A ) {
null === e && ( e = m.firstChild );
const d = "tab_" + t,
u = s( "div", d, "content" + a ),
p = void 0 !== u.inserted && 1 == u.inserted,
h = s( "div", d, "head_text" + a );
if ( r.appendChild( h ), A ) {
const e = i( "div", n.tv_tab_close, d, "tv_close" + a, "tab_close" );
e.inserted || e.addEventListener( "click", () => {
A()
} ), r.appendChild( e )
}
if ( p ) {
const e = ( e => {
const t = Object.keys( P[ a ].g_entries );
for ( let n, r = 0; n = t[ r ]; r++ ) {
const t = P[ a ].g_entries[ n ];
if ( t.tab.id == e.id ) return t
}
return null
} )( u );
if ( e ) return e.entry;
console.log( "tv: WARN: old tab, but not in tabs collection!" )
}
let f;
const _ = t,
b = e => {
"" != e.target.className && e.target.className == n.tv_tab_close || f.select()
};
return u.setAttribute( "tvid", t ), u.addEventListener( "click", b ), r.addEventListener( "click", b ), u.setAttribute( "name", "tabview_tab" + a ), u.setAttribute( "class", n.tv_tab ), u.appendChild( r ), e ? m.insertBefore( u, e ) : m.appendChild( u ), l.setAttribute( "name", "tabview_content" + a ), l.setAttribute( "class", n.tv_content ), v.appendChild( l ), f = {
getId: function () {
return _
},
isVisible: function () {
return "true" == u.getAttribute( "vis" )
},
isSelected: function () {
return P[ a ].g_selectedId == this.getId()
},
isCloseable: function () {
return !!A
},
modified: function () {
return $( r ).hasClass( "modified" )
},
remove: function () {
I( this )
},
hide: function () {
( e => {
const t = e.getId(),
n = t == P[ a ].g_selectedId;
if ( P[ a ].g_entries[ t ] ? x( e, !1 ) : console.log( "tv: WARN: tab not part of tabview!" ), n ) {
let e = null,
t = null;
for ( const n in P[ a ].g_entries ) P[ a ].g_entries[ n ].visible && ( e = P[ a ].g_entries[ n ], t || e.closable || ( t = e ) );
o || e.closable || ( e = t ),
e ? e.entry.select() : ( P[ a ].g_selectedId = null, console.log( "tv: WARN: selected tab set, but entry collection empty!" ) )
}
} )( this )
},
show: function () {
( e => {
const t = e.getId();
P[ a ].g_entries[ t ] ? x( e, !0 ) : console.log( "tv: WARN: tab not part of tabview!" )
} )( this )
},
select: function ( e ) {
if ( !e && f.isSelected() ) return;
const t = Object( g.Deferred )();
c && c( t.promise() ), ( e => {
if ( e.getId() == P[ a ].g_selectedId ) return;
const t = e.getId();
P[ a ].g_selectedId && C( P[ a ].g_entries[ P[ a ].g_selectedId ], !1 ),
Object.keys( P[ a ].g_entries ).forEach( e => {
const r = P[ a ].g_entries[ e ];
r.entry.getId() == t ? r.visible ? r.selected || ( r.tab.setAttribute( "class", n.tv_tab_selected ), C( r, !0 ), r.selected = !0 ) : console.log( "tv: WARN: tab selected but not visible!" ) : r.selected && ( r.tab.setAttribute( "class", n.tv_tab ), C( r, !1 ), r.selected = !1 )
} ), P[ a ].g_selectedId = t
} )( this ), t.resolve()
},
setHeading: function ( e, t, n ) {
const i = r.firstChild;
if ( t && e.length > t ) {
const r = Math.round( t / 2 );
i.textContent = e.substr( 0, r ) + "..." + e.substr( r - t ), i.title = n || e
} else i.textContent = e
},
toggleClass: function ( e, t ) {
$( r, v ).toggleClass( e, t )
},
close: function () {
A && A()
}
}, P[ a ].g_entries[ _ ] = {
entry: f,
tab: u,
content: l,
closable: null != A
}, C( P[ a ].g_entries[ _ ], !1 ), f.show(), f
},
setFooter: function ( e ) {
y.appendChild( e )
}
}, P[ a ].tv = M ), M
};
window.requestFileSystem || ( window.requestFileSystem = window.webkitRequestFileSystem );
const V = rea.FEATURES,
Q = T.images,
H = window.CodeMirror,
Y = window.MirrorFrame;
window.Hinter = x.a;
var X = () => {
f.a.render( () => {
const e = {};
let t = {};
const n = [],
a = {},
l = {};
let c = {},
A = {};
const m = ( () => {
let e, t, n, r, i, s;
if ( ( e = V.HTML5.LOCALSTORAGE ) && ( t = e.getItem( "export_tm_settings" ), n = "true" === t, t = e.getItem( "export_externals" ), r = "false" !== t, t = e.getItem( "export_script_storage" ), s = "false" !== t, i = e.getItem( "cloud_config" ) ) ) try {
i = JSON.parse( k.a.Base64.decode( i ) )
} catch ( e ) {}
return {
script_storage: s,
add_tm_settings: n,
include_externals: r,
cloud_config: i
}
} )();
let w;
const y = {},
E = function ( e, t ) {
let n, r;
if ( ( n = y[ e ] ) && ( r = n[ t ] ) ) return r.apply( this, [].slice.call( arguments, 2 ) )
},
N = e => {
const t = e.msg || e;
if ( e.once ) {
if ( l[ t ] ) return !0;
l[ t ] = !0
}
let n = confirm( t ),
r = {};
return n && e.ok ? r = e.ok : !n && e.cancel && ( r = e.cancel ), ( e.ok || e.cancel ) && ( n = !0 ), r.url && sendMessage( {
method: "newTab",
url: r.url
}, () => {} ), n
},
S = ( e, t ) => {
try {
const n = () => {
t && V.OPTIONPAGE.CLOSE_ALLOWED && window.close()
};
t ? sendMessage( {
method: "newTab",
url: e
}, n ) : rea.tabs.getSelected( null, r => {
rea.tabs.sendMessage( r.id, {
method: "loadUrl",
url: e,
newtab: t
}, n )
} )
} catch ( e ) {
console.log( "lU: " + e.message )
}
};
let U = !1;
const B = e => {
if ( U ) return;
const t = o.I18N.getLocale(),
n = $( "<div>" ).hide(),
r = e => {
e ? ( n.html( "" ), n.append( $( '<div class="contrib_iframe" style="font-size: 2.5em;"></div>' ).append( $( '<div style="padding-top: 150px;">' ).text( e ) ) ), window.setTimeout( r, 1e3 ) ) : ( n.fadeOut( 1e3 ), window.setTimeout( h, 1e3 ) )
},
i = $( '<iframe src="https://www.tampermonkey.net/contrib.php?embedded=2' + ( t ? "&locale=" + t : "" ) + "&src=" + ( e || "e" ) + rea.runtime.short_id + '" class="contrib_iframe"></iframe>' ),
s = [ $( '<button class="contrib_button">' ).html( o.I18N.getMessage( "Remind_me_later" ) ).click( () => {
ce( "later" ), r( o.I18N.getMessage( "Ok" ) )
} ), $( '<button class="contrib_button">' ).html( o.I18N.getMessage( "I_contributed_already" ) ).click( () => {
ce( "contributed" ), r( o.I18N.getMessage( "Thank_you_very_much_" ) )
} ), $( '<button class="contrib_button">' ).html( o.I18N.getMessage( "I_dont_want_to_contribute" ) ).click( () => {
ce( "hide" ), r( o.I18N.getMessage( "Ok" ) )
} ) ],
a = () => {
l && window.clearTimeout( l ), s.forEach( e => {
e.prop( "disabled", !1 )
} )
};
s.forEach( e => {
e.prop( "disabled", !0 )
} ), n.append( i, s ), i.bind( "load", a );
let l = window.setTimeout( () => {
l = null, a()
}, 15e3 );
const c = () => {
const e = p( n[ 0 ] );
!0 === e ? ( n.fadeIn( 1e3 ), ce( "dialog" ) ) : void 0 === e && window.setTimeout( c, 500 ), U = !0
};
c(), window.addEventListener( "message", e => {
let t;
const i = e.data.clicked || e.data.type,
s = e.data.amount,
a = e.data.currency,
l = e.data.redirect_url;
if ( i )
if ( l && S( l, !0 ), e.data.success ) {
t = $( ".contrib_iframe" );
const n = t.data( "oheight" );
if ( !n || n < 0 || n > 1e3 ) return;
t.animate( {
height: n
}, 1e3 ), ce( "contributed", i, {
id: e.data.id
} )
} else e.data.clicked && ( ce( "clicked", i, {
amount: s || "?",
currency: a || "?"
} ), $( ".contrib_button" ).remove(), n.append( $( '<button class="contrib_button">' ).html( o.I18N.getMessage( "Ok" ) ).click( () => {
r()
} ) ), e.data.enlarge && ( t = $( ".contrib_iframe" ),
t.data( "oheight", t.height() ), t.animate( {
height: 740
}, 1e3 ) ) )
}, !1 )
},
O = e => {
const t = Object( g.Deferred )(),
n = new FileReader;
return n.onloadend = function () {
t.resolve( this.result )
}, n.onerror = t.reject, n.onabort = t.reject, n.readAsText( e ), t.promise()
},
F = () => {
if ( V.HTML5.LOCALSTORAGE ) return V.HTML5.LOCALSTORAGE.getItem( "sort_key" )
},
j = () => {
if ( V.HTML5.LOCALSTORAGE ) return V.HTML5.LOCALSTORAGE.getItem( "sort_sequence" )
},
D = e => {
if ( V.HTML5.LOCALSTORAGE ) return V.HTML5.LOCALSTORAGE.setItem( "sort_key", e )
},
P = e => {
if ( V.HTML5.LOCALSTORAGE ) return V.HTML5.LOCALSTORAGE.setItem( "sort_sequence", e )
},
X = e => {
const t = ( e, n ) => e.tagName == n ? e : e.parentNode ? t( e.parentNode, n ) : null;
let n = "down" == j(),
r = null,
i = [],
s = 0;
const a = Date.now();
Object.keys( c ).forEach( e => {
const n = c[ e ];
if ( !n ) return void console.warn( "options: something went wrong!", e );
const l = t( n.dom, "TR" );
if ( l ) {
const e = t( l, "TBODY" );
let c, A;
r ? e && r != e && console.warn( "options: different parents?!?!" ) : r = e, s++,
( !( c = n.script.lastModified || n.script.lastUpdated ) || ( A = a - parseInt( c ) ) && isNaN( A ) ) && ( A = 0 ), i.push( {
tr: l,
sites: J.get( n.script ),
enabled: n.script.enabled,
position: n.script.position ? n.script.position : 1e3 + s,
name: o.I18N.getTranslation( n.script, "name" ).toLowerCase(),
homepage: [ n.script.origin ? b.default.parse( n.script.origin.url ).hostname : "z", Se( n.script ) ? b.default.parse( Se( n.script ) ).hostname : "z" ].join( "_" ),
updated: A,
version: n.script.version || ""
} ), l.inserted = !1, l.parentNode && l.parentNode.removeChild( l )
} else console.log( "options: unable to sort script at pos " + n.pos )
} ), i = ( e => {
let t;
const r = e => ( t, n ) => t[ e ] - n[ e ],
i = F();
var s, o;
return "pos" == i ? t = r( "position" ) : "enabled" == i ? ( s = "enabled", o = n, t = ( e, t ) => {
const n = ( o ^ e[ s ] ? "a" : "b" ) + e.name,
r = ( o ^ t[ s ] ? "a" : "b" ) + t.name;
return n < r ? -1 : n > r ? 1 : 0
}, n = null ) : t = "ver" == i ? ( e => ( t, n ) => Object( C.versionCmp )( String( t[ e ] ), String( n[ e ] ) ) )( "version" ) : "updated" == i ? r( "updated" ) : ( e => ( t, n ) => t[ e ] < n[ e ] ? -1 : t[ e ] > n[ e ] ? 1 : 0 )( i ), e.sort( t ), e
} )( i ), n && ( i = i.reverse() );
for ( let e = 0; e < s; e++ ) r.appendChild( i[ e ].tr );
$( ".sorting" ).each( ( e, t ) => {
$( t )[ "pos" == F() && "up" == j() ? "fadeIn" : "fadeOut" ]()
} ), e && e()
},
W = Object( M.createCache )( {
timeout: 600,
check_interval: 300,
retimeout_on_get: !0
} ).init(),
J = ( () => {
let e = {};
const t = e => e.toString().length < 7 ? t( "0" + e ) : e,
n = e => {
if ( e.includes || e.matches ) {
const t = {},
n = [],
r = e.includes.length ? e.includes : e.matches;
for ( let i = 0; i < r.length; i++ ) {
const s = r[ i ];
if ( !s ) {
console.log( "o: Warn: script '" + e.name + "' has invalid include (index: " + i + ")" );
continue
}
const o = W.get( s ),
a = ( void 0 !== o ? o : null ) || L.getInfoFromUrl( s );
void 0 === o && W.set( s, a ), a && a.dom ? t[ a.dom ] || ( t[ a.dom ] = !0, n.push( {
include: s,
info: a
} ) ) : n.push( {
include: s
} )
}
return n
}
};
return {
init: function ( t ) {
e = {}, t.forEach( t => {
const r = n( t );
r && r.length && r.forEach( t => {
t.info && ( e[ t.info.dom ] = ( e[ t.info.dom ] || 0 ) + 1 )
} )
} )
},
get: function ( r ) {
const i = n( r );
if ( !i || !i.length ) return t( 0 );
const s = i.map( t => t.info ? {
score: 1e3 * e[ t.info.dom ] + t.info.dom.charCodeAt( 0 ) || 0,
dom: t.info.dom
} : {
score: 0,
dom: ""
} ).sort( ( e, t ) => t.score - e.score )[ 0 ];
return t( s.score ) + s.dom
},
topIcons: function ( t, s ) {
let o;
const a = [],
l = n( t );
if ( !l || !l.length ) return [];
const c = l.map( t => ( t.score = t.info && e[ t.info.dom ] || 0, t ) ).sort( ( e, t ) => t.score - e.score );
return Object( r.each )( c, e => {
const n = e.info;
if ( 0 == s-- ) {
const e = i( "span", "", t.uuid, "tbc" );
return e.textContent = "...", a.push( e ), !1
}
if ( !n ) return o = L.createIcon( Q.get( "question_mark" ), "favicon", t.uuid, e.include, e.include ), void a.push( o );
if ( "*" == n.tld ) return o = L.createIcon( Q.get( "web" ), "web", t.uuid, e.include, e.include ), a.push( o ), !1;
let r = "com",
l = "";
"*" != n.tld && "tld" != n.tld && ( r = n.tld ), n.subdom.length && ( l = n.subdom.join( "." ) + "." );
const c = ( l + n.dom + "." + r ).replace( /\*/g, "" ),
[ A, d ] = Ue( c );
o = L.createFavicon( [ A, d, () => Q.get( "question_mark" ) ].filter( e => e ), "favicon", t.uuid, e.include, e.include ), a.push( o )
} ), a
}
}
} )();
let q = null;
const K = () => {
q && ( window.clearTimeout( q ), q = null )
},
ee = e => {
let t;
const n = e.key || "general";
( t = $e[ n ] ) && $( t ).remove(),
$e[ n ] = L.createGobalHint( e, $( "body > div.status" )[ 0 ] )
},
te = ( e, t, n, r ) => {
void 0 === r && ( r = 3e3 ), ee( {
key: "success",
text: e,
image: t,
class: n,
delay: 500,
timeout: r,
done: () => {}
} )
},
ne = () => {
te( o.I18N.getMessage( "Operation_completed_successfully" ), "button_ok", "notice" )
},
re = ( e, t ) => {
void 0 === t && ( t = "button_ok" ), te( e, t, "information", 8e3 )
},
ie = ( e, t ) => {
void 0 === t && ( t = "error" ), te( e, t, "warning", 8e3 )
},
se = e => {
q || ( q = window.setTimeout( () => {
q = null, d( o.I18N.getMessage( "Please_wait___" ) )
}, e || 500 ) )
};
let oe = null,
ae = null;
const le = ( e, t ) => {
null != oe ? ( window.clearTimeout( oe ), oe = null, le( e || ae.items, e ? t : ae.with_scripts ) ) : ( ae = {
items: e,
with_scripts: t
}, oe = window.setTimeout( () => {
oe = null, ae.with_scripts && ( c = {}, A = {} ), Te( ae.items ), ae = null
}, 50 ) )
},
ce = ( e, t, n ) => {
const r = Object( g.Deferred )();
return sendMessage( {
method: "begEvent",
action: e,
type: t,
extra: n
}, e => {
r.resolve( e )
} ), r.promise()
},
Ae = ( e, t ) => {
const n = Object( g.Deferred )();
try {
se(), sendMessage( {
method: "installScript",
url: e.url,
code: e.code,
reload: t.reload
}, e => {
K(), e.items ? ( ne(),
le( e.items, !1 ) ) : u(), e.err ? n.reject( e ) : n.resolve( e )
} )
} catch ( e ) {
console.log( "sS: " + e.message ), n.reject( {
err: e.message
} )
}
return n.promise()
},
de = ( e, t ) => {
const n = Object( g.Deferred )();
try {
se(), sendMessage( {
method: "importFromJson",
json: e,
reload: t.reload
}, e => {
K(), e.reload ? window.setTimeout( () => {
rea.page.reload()
}, 500 ) : e.items ? ( ne(), le( e.items, !0 ) ) : u(), e.err ? n.reject( e ) : n.resolve( e )
} )
} catch ( e ) {
console.log( "sS: " + e.message ), n.reject( {
err: e.message
} )
}
return n.promise()
},
ue = ( e, t, n ) => {
const r = Object( g.Deferred )();
void 0 === n.reload && ( n.reload = !0 );
try {
n.auto_save || se(), sendMessage( {
method: "saveScript",
uuid: e,
code: t,
clean: n.clean,
force: n.force,
new_script: n.new_script,
auto_save: n.auto_save,
restore: n.restore,
lastModTime: n.lastModTime,
reload: n.reload
}, e => {
n.auto_save || ( ne(), K() ), ( e = e || {} ).items ? le( e.items, !0 ) : u(), !t && n.reload && u(), r.resolve( e )
} )
} catch ( e ) {
console.log( "sS: " + e.message ), r.reject( {
err: e.message
} )
}
return r.promise()
},
pe = ( e, n, r ) => {
const i = Object( g.Deferred )();
try {
se(),
sendMessage( {
method: "setOption",
name: e,
value: n
}, e => {
K(), ne(), t = e.options || t, !r && e.items ? le( e.items, !1 ) : u(), i.resolve( e )
} )
} catch ( e ) {
console.log( "sO: " + e.message ), i.reject( {
err: e.message
} )
}
return i.promise()
},
he = ( e, t ) => {
se(), sendMessage( {
method: "loadTree",
complete: e.complete,
uuid: e.uuid,
url: e.url,
referrer: e.referrer,
layout: e.layout,
filter: e.filter
}, e => {
K(),
e.items || ( e.error ? Object( r.cAlert )( e.error ) : confirm( o.I18N.getOriginalMessage( "An_internal_error_occured_Do_you_want_to_visit_the_forum_" ) ) && ( window.location.href = "https://www.tampermonkey.net/bug" ) ), t( e )
} )
},
fe = () => {
g.Deferred.onebyone( [ "options.scripts", "options.trash" ].map( e => () => {
const t = Object( g.Deferred )();
return he( {
referrer: e
}, e => {
t.resolve( e.items || [] )
} ), t.promise()
} ) ).then( e => {
const t = e.reduce( ( e, t ) => e.concat( t ), [] ).filter( e => e );
t && t.length ? le( t, !0 ) : u()
} )
},
ge = ( e, n, r ) => {
null == r && ( r = !0 );
try {
const i = {
method: "modifyScriptOptions",
uuid: e,
reload: r
};
for ( const e in n ) n.hasOwnProperty( e ) && ( i[ e ] = n[ e ] );
se(), sendMessage( i, e => {
K(), t = e.options || t, e.i18n && o.I18N.setLocale( e.i18n ), ne(), e.items ? le( e.items, !0 ) : u()
} )
} catch ( e ) {
console.log( "mSo: " + e.message )
}
},
me = ( e, t, n ) => {
try {
const r = {
method: "saveStorageKey",
uuid: e,
key: t,
value: n,
id: "options"
};
se(), sendMessage( r, () => {
K(), ne(), u()
} )
} catch ( e ) {
console.log( "sSk: " + e.message )
}
},
_e = ( e, t, n ) => {
try {
const r = {
method: "download",
details: {
url: e,
name: t,
saveAs: !0
},
id: "options"
};
se(), sendMessage( r, e => {
K(), e.load ? ne() : e.error && ie( o.I18N.getMessage( "Action_failed" ) ), u(), n && n()
} )
} catch ( e ) {
console.log( "dDU: " + e.message )
}
},
be = window.navigator.userAgent.includes( "Mac" ) ? "mac" : "other";
let ve;
window.addEventListener( "keydown", e => {
let t, n, r = !1;
if ( "keydown" == e.type && !e.defaultPrevented ) {
if ( 27 == e.keyCode ) {
if ( t = w.getTabById( "dashboard" ), !t.isSelected() ) return;
if ( e.target && "text" == e.target.type ) return void $( e.target ).blur();
y.multiselect.toggleRow( !1 ), r = !0
} else( "mac" != be && 39 == e.keyCode || "mac" == be && 40 == e.keyCode ) && !e.ctrlKey && e.altKey && !e.shiftKey ? ( n = w.getNextTab(), n && ( n.select(), r = !0 ) ) : ( "mac" != be && 37 == e.keyCode || "mac" == be && 38 == e.keyCode ) && !e.ctrlKey && e.altKey && !e.shiftKey && ( n = w.getPreviousTab(), n && ( n.select(), r = !0 ) );
return r ? ( e.stopPropagation(), e.preventDefault(), !1 ) : void 0
}
}, !0 ), window.addEventListener( "keydown", e => {
let t, n, r = !1;
if ( "keydown" == e.type && !e.defaultPrevented ) {
if ( 112 == e.keyCode ) t = w.getTabById( "help" ), t && t.select(),
r = !0;
else if ( 38 != e.keyCode && 40 != e.keyCode || !e.shiftKey ) {
if ( 70 == e.keyCode && ( e.ctrlKey || e.metaKey ) ) {
if ( t = w.getTabById( "dashboard" ), !t.isSelected() ) return;
y.multiselect.toggleRow( !0, !0 ), r = !0
} else if ( 65 == e.keyCode && ( e.ctrlKey || e.metaKey ) ) {
if ( t = w.getTabById( "dashboard" ), !t.isSelected() || e.target && "text" == e.target.type ) return;
y.multiselect.un_selectAll( !0 ), r = !0
}
} else {
if ( t = w.getTabById( "dashboard" ), !t.isSelected() ) return;
let i = We.length && We[ We.length - 1 ];
i && ( i = $( i ) ) && ( () => {
r = !0;
const t = i.closest( "tr" );
if ( !t.length ) return;
let s, o;
if ( 38 == e.keyCode ? ( n = t.prevAll( "tr:visible:first" ), s = !0 ) : ( n = t.nextAll( "tr:visible:first" ), s = !1 ), !n.length ) return;
const a = n.find( 'input[name="scriptselectors"]' );
We.includes( a[ 0 ] ) ? ( We.pop(), i.prop( "checked", !1 ), i.removeClass( "selected" ), o = i ) : a.length && ( a.prop( "checked", !0 ), a.addClass( "selected" ), We.push( a[ 0 ] ), void 0 === We.direction && ( We.direction = s ), o = a ), o && ( L.isScrolledIntoView( n, {
padding: 100
} ) || $( "html, body" ).animate( {
scrollTop: s ? n.offset().top - 100 - n.height() : n.offset().top - $( window ).height() + 100 + 2 * n.height()
}, 0 ), y.multiselect.single_click() )
} )()
}
return r ? ( e.stopPropagation(), e.preventDefault(), !1 ) : void 0
}
}, !1 );
const we = ( () => {
const e = {},
t = () => {
ve = Object( r.getUrlArgs )( !0 ), Object.keys( e ).forEach( t => {
const n = e[ t ];
o.is( n.main, n.sub ) && n.fn()
} )
};
let i;
t(), window.onhashchange = function () {
i || t.apply( this, arguments )
};
const s = e => {
i = !0, e(), i = !1
},
o = {
set: function ( e ) {
const n = o.get();
let r;
r = "object" == typeof e ? [ e.main, e.sub ].filter( e => e ) : arguments, n.main === r[ 0 ] && n.sub === r[ 1 ] || ( !r[ 0 ] && r[ 1 ] ? o.setSub( r[ 1 ] ) : s( () => {
window.location.hash = "nav=" + [].join.call( r, "+" ), t()
} ) )
},
setSub: function ( e ) {
const n = o.get();
n.sub !== e && s( () => {
window.location.hash = "nav=" + ( n.main ? n.main : "" ) + "+" + e, t()
} )
},
get: function () {
const e = ve.nav ? ve.nav.split( "+" ) : [];
return {
main: e[ 0 ],
sub: e[ 1 ]
}
},
is: function ( e, t ) {
const n = o.get(),
r = !e || n.main === e,
i = !t || n.sub === t;
return r && i
},
isSub: function ( e ) {
return o.is( null, e )
},
registerListener: function ( t, n, r ) {
void 0 === r && ( r = n, n = null );
const i = [ t, n ].join( "+" );
return e[ i ] = {
main: t,
sub: n,
fn: r
}, o.is( t, n ) && r(), i
},
unregisterListener: function ( t ) {
delete e[ t ]
},
clear: function () {
o.set( "" )
}
},
a = o.get();
return n.push( () => {
const e = w.getTabById( a.main );
if ( e ) return e.select( !0 );
if ( a.main ) {
const e = w.getTabById( "dashboard" );
e && e.select( !0 ), n.push( () => {
window.setTimeout( () => {
o.set( a )
}, 0 )
} )
} else window.onhashchange()
} ), o
} )();
n.push( () => {
t.statistics_enabled && _.a.init( "opt", !0, {
trackView: !1,
version: rea.extension.manifest.version
} )
} );
const ke = Object( r.getDebouncer )( 1e3 ),
ye = () => {
for ( ; n.length; ) try {
n.shift()()
} catch ( e ) {
console.warn( "doneListeners:", e )
}
},
Re = ( e, t ) => {
const n = s( "input", e.name, e.id, "Save" );
return n.inserted || ( n.type = "button", n.section = e, n.disabled = !0, n.value = o.I18N.getMessage( "Save" ), n.addEventListener( "click", ( function () {
if ( t && t.warning && !N( t.warning ) ) return;
const e = $( this.section ).find( "input, select, textarea" ).toArray(),
n = [],
i = [];
for ( let s = 0; s < e.length; s++ ) {
let a = null;
const l = e[ s ],
c = l.key;
if ( !i.includes( l ) ) {
if ( "textarea" == l.tagName.toLowerCase() )
if ( l.named ) {
const e = document.getElementsByName( l.name );
a = [], Object( r.each )( e, e => {
a.push( {
name: e.named_name,
value: e.value
} ), i.push( e )
} )
} else if ( l.array ) a = l.value.split( "\n" ).map( e => e.trim() ).filter( e => e );
else if ( l.json ) {
let e;
try {
a = ( e = l.value ) && ( e = e.trim() ) ? JSON.parse( e ) : null
} catch ( e ) {
return void Object( r.cAlert )( o.I18N.getMessage( "Unable_to_parse_0name0", l.name ) )
}
} else a = l.value;
else if ( "checkbox" == l.getAttribute( "type" ) ) a = l.checked;
else if ( "select" == l.getAttribute( "type" ) ) {
let e = 0;
l.selectedIndex >= 0 && l.selectedIndex < l.options.length && ( e = l.selectedIndex ), a = l[ e ] ? l[ e ].value : l.options[ 0 ].value
} else "button" == l.getAttribute( "type" ) || ( a = l.value );
c && n.push( pe( c, a, t && t.reload ) )
}
}
t && t.reload && ( d(), g.Deferred.when( n ).done( () => {
rea.page.reload()
} ) )
} ), !1 ) ), n
},
xe = ( a, l, p, h ) => {
let f, m, _, b, v, w, k = [];
const R = ( e, t ) => {
if ( p )
if ( p.save_button ) $( e ).on( "change", () => {
p.save_button.disabled = !1
} ), $( t ).on( "input propertychange", () => {
p.save_button.disabled = !1
} );
else {
const e = "Section needs a save button!";
console.error( e, p )
}
};
if ( l.divider ) return null;
if ( l.image && ( l.image_id = Q.get( l.image ) ), l.checkbox ) _ = function () {
let e = !0;
const t = this;
t.warning && ( e = N( t.warning ), e || ( t.checked = !t.checked ) ), e && pe( this.key, t.checked, t.reload ).always( () => {
t.reload && rea.page.reload( 500 )
} )
}, p && p.need_save && ( m = null, _ = null ), f = L.createCheckbox( l.name, l, _ ), k.push( f.elem ),
p && p.save_button && R( null, f.input );
else if ( l.button ) _ = function () {
let e = !0;
const t = this;
t.warning && ( e = N( t.warning ) ), e && ( ( e, t, n ) => {
const r = Object( g.Deferred )();
try {
se(), sendMessage( {
method: "buttonPress",
name: e,
data: t
}, e => {
K(), !n && e.items ? ( ne(), le( e.items, !1 ) ) : u(), r.resolve( e )
} )
} catch ( e ) {
console.log( "sO: " + e.message ), r.reject( {
err: e.message
} )
}
return r.promise()
} )( t.key, t.data, t.ignore ).always( () => {
t.reload && rea.page.reload( 500 )
} )
}, f = L.createButton( l.name, l, _ ),
k.push( f );
else if ( l.named ) f = L.createNamedSettings( l.name, l ), k.push( {
element: f.elem,
validation: f.label
} ), R( null, f.textareas );
else if ( l.input ) f = L.createTextarea( l.name, l ), k.push( {
element: f.elem,
validation: f.label
} ), R( null, f.textarea );
else if ( l.text ) f = L.createInput( l.name, l ), k.push( f.elem ), R( f.input );
else if ( l.color ) f = L.createColorChooser( l.name, l ), k.push( f.elem ), R( f.input );
else if ( l.password ) f = L.createPassword( l.name, l ), k.push( f.elem ), R( f.input );
else if ( l.select ) {
m = function () {
let e = !0;
const t = this;
t.warning && ( e = N( t.warning ), e || ( t.value = t.oldvalue ) ), e && pe( t.key, L.getValue( t ), t.reload ).always( () => {
t.reload && rea.page.reload( 500 )
} )
};
const e = function () {
let e = !0;
this.selectedOptions.length && this.selectedOptions[ 0 ].warning && this.selectedOptions[ 0 ].value !== this.oldvalue && ( e = N( this.selectedOptions[ 0 ].warning ), e || ( this.value = this.previousValue || this.oldvalue ) ), this.previousValue = this.value
};
p && p.need_save && ( m = l.enabler ? function () {
const e = document.getElementsByName( "enabled_by_" + this.key ),
t = ( this.selectedIndex < this.options.length ? this.options[ this.selectedIndex ] : this.options[ 0 ] ).getAttribute( "enables" ),
n = t ? JSON.parse( t ) : {};
Object( r.each )( e, e => {
void 0 === n[ e.key ] || n[ e.key ] ? e.setAttribute( "style", r.staticVars.visible ) : e.setAttribute( "style", r.staticVars.invisible )
} )
} : null ), f = L.createDropDown( l.name, l, l.select, m, e ), k.push( f.elem ), p && p.save_button && R( f.select ), a && l.enabler && ( () => {
const e = m,
t = f;
n.push( () => {
e.apply( t.select, [] )
} )
} )()
} else if ( l.url ) {
const e = s( "a", l.name, l.id );
e.href = "#", e.url = l.url, e.newtab = l.newtab, e.inserted || ( m = function () {
S( this.url, this.newtab )
}, e.addEventListener( "click", m ) ), e.textContent = l.name, k = Array( 13 ), k[ 3 ] = e
} else if ( l.main_menu_item ) {
v = s( "div", l.name, l.id ), v.textContent = l.name;
const c = s( "div", l.name, l.id, "tab_content" ),
f = ( ( e, a ) => {
const l = ( e, t, n, r, s ) => {
let o;
const a = i( "th", "settingsth", e.name, e.id, t ),
l = i( "a", "settingsth_a", e.name, e.id, t + "_a" );
l.setAttribute( "name", "settingsth_a" + e.name );
const c = i( "a", "settingsth_a_up", e.name, e.id, t + "_a_up" );
c.setAttribute( "name", "settingsth_a_up" + e.name );
const A = i( "a", "settingsth_a_down", e.name, e.id, t + "_a_down" );
A.setAttribute( "name", "settingsth_a_down" + e.name );
const d = () => {
( ( t, n, r ) => {
const i = document.getElementsByName( "settingsth_a_up" + e.name ),
s = document.getElementsByName( "settingsth_a_down" + e.name );
for ( o = 0; o < i.length; o++ ) i[ o ].style.display = "none";
for ( o = 0; o < s.length; o++ ) s[ o ].style.display = "none";
"up" == j() ? n.style.display = "" : r.style.display = ""
} )( 0, c, A )
},
u = () => {
d()
},
p = () => {
window.setTimeout( () => {
F() == r ? P( "down" == j() ? "up" : "down" ) : D( r ), X( u )
}, 0 )
};
return a.inserted || ( a.appendChild( l ), a.appendChild( A ), a.appendChild( c ), l.addEventListener( "click", p ), c.addEventListener( "click", p ), A.addEventListener( "click", p ), l.textContent = n + " ", l.href = "#", c.innerHTML = "&#x25B4;", c.href = "#", A.innerHTML = "&#x25BE;", A.href = "#" ), s && !F() ? ( D( r ), P( "up" ), window.setTimeout( d, 0 ) ) : r == F() && window.setTimeout( d, 0 ), a
};
let c, u, p, h, f, g;
if ( f = s( "tbody", e.name, e.id, "body" ),
g = s( "thead", e.name, e.id, "head" ), "dashboard" == e.id ) {
const A = Ke( e ),
d = Xe( e );
c = s( "table", e.name, e.id, "main" ), c.inserted || c.setAttribute( "class", "scripttable multiselect" );
const f = i( "th", "script_sel", e.name, e.id, "thead_sel" );
f.appendChild( A.selAllm );
const m = i( "th", "left", e.name, e.id, "thead_multi_action" );
m.setAttribute( "colspan", V.RUNTIME.MOBILE ? 3 : 11 ), m.appendChild( A.actionBox ), m.appendChild( d );
const _ = i( "th", "right", e.name, e.id, "thead_multi_close" );
_.appendChild( A.close ),
p = i( "tr", "multiselectrow", e.name, e.id, "filler_multi" ), p.appendChild( [ f, m, _ ] ), h = i( "tr", "multiselectscrolldummy", e.name, e.id, "scrolldummy" );
const b = i( "th", "left", e.name, e.id, "scrolldummyth" );
b.setAttribute( "colspan", V.RUNTIME.MOBILE ? 3 : 11 ), h.appendChild( [ b ] ), u = i( "tr", "scripttr multiselectreplaced", e.name, e.id, "filler" );
const v = i( "th", "script_sel", e.name, e.id, "thead_sel" );
v.appendChild( A.selAll );
const w = l( e, "thead_pos", "#", "pos" ),
k = l( e, "thead_en", o.I18N.getMessage( "Enabled" ), "enabled" ),
R = l( e, "thead_name", o.I18N.getMessage( "Name" ), "name", !0 ),
x = i( "th", "settingsth", e.name, e.id, "thead_del" );
if ( x.textContent = o.I18N.getMessage( "Actions" ), V.RUNTIME.MOBILE ) Object( r.each )( [ v, w, k, R, x ], e => {
u.appendChild( e )
} );
else {
const s = l( e, "thead_ver", o.I18N.getMessage( "Version" ), "ver" ),
a = i( "th", "settingsth ", e.name, e.id, "thead_type" ),
c = i( "span", "script_type", e.name, e.id, "thead_type_span" );
c.textContent = o.I18N.getMessage( "Type" ), a.appendChild( c );
const A = i( "th", "settingsth", e.name, e.id, "thead_sync" );
A.textContent = "";
const d = l( e, "thead_sites", o.I18N.getMessage( "Sites" ), "sites" );
d.width = "25%";
const p = i( "th", "settingsth", e.name, e.id, "thead_features" );
p.textContent = o.I18N.getMessage( "Features" );
const h = l( e, "thead_homepage", o.I18N.getMessage( "Homepage" ), "homepage" ),
f = l( e, "thead_updated", o.I18N.getMessage( "Last_updated" ), "updated" ),
g = i( "th", "settingsth", e.name, e.id, "thead_sort" ),
m = i( "span", "sorting", e.name, e.id, "thead_sort_span" );
m.textContent = o.I18N.getMessage( "Sort" ), "pos" == F() && "up" == j() || m.setAttribute( "style", "display: none;" ), g.appendChild( m );
const _ = () => {
t.sync_enabled && ( A.textContent = o.I18N.getMessage( "Imported" ) )
};
n.push( _ ), Object( r.each )( [ v, w, k, R, s, a, A, d, p, h, f, g, x ], e => {
u.appendChild( e )
} )
}
g.appendChild( [ p, h, u ] ), u.inserted || ( y.multiselect.checkScroll = () => {
const e = $( g ),
t = e.is( ":visible" ) && $( p ).is( ":visible" ) && $( a ).scrollTop() > 0;
e.toggleClass( "multiscrolling", t )
}, $( a ).scroll( y.multiselect.checkScroll ) )
} else if ( "trash" == e.id ) {
c = i( "table", "settingstable", e.name, e.id, "main" );
const t = i( "tr", "", "tr_trash" ),
n = i( "td", "", "td_trash" ),
r = i( "div", "trash_actions", "div_trash_actions" );
n.appendChild( r ), t.appendChild( n ), c.appendChild( t );
const s = L.createButton( "restore_all", e.uuid + "_delall", o.I18N.getMessage( "Restore_all" ), () => {
if ( confirm( o.I18N.getMessage( "Really_restore_all_userscripts_" ) ) ) {
const e = $( c ).find( 'input[name ="restore"]' );
e.length && ( d(), e.click() )
}
} ),
a = L.createButton( "delete_all", e.uuid + "_delall", o.I18N.getMessage( "Delete_all" ), () => {
if ( confirm( o.I18N.getMessage( "Really_delete_all_userscripts_" ) ) ) {
const e = Object.values( A ).map( e => e.script );
e.forEach( e => {
y[ e.uuid ].purgeScript( null, !0 )
} ), e.length && d()
}
} );
r.appendChild( [ s, a ] )
} else c = i( "table", "settingstable", e.name, e.id, "main" );
return c.appendChild( g ), c.appendChild( f ), {
table: c,
head: g,
body: f
}
} )( l, c );
c.appendChild( f.table );
let g = null;
const m = h.appendTab( l.id, v, c, t => {
t.then( () => {
g && ( e.global ? g() : n.push( g ) ), we.set( l.id ), document.title = l.name
} )
} );
we.registerListener( l.id, () => {
m.select()
} ), l.hidden ? m.hide() : m.show(), l.referrer && ( g = () => {
g = null, se( 50 ), he( {
referrer: l.referrer
}, e => {
e.items && e.items.forEach( e => {
xe( a, e, p, h )
} ), ye(), K(), u()
} )
} ),
l.items && Ce( f.body, l.items, null, h ), !e.global && l.selected_default && n.push( () => {
h.getSelectedTab() || m.select()
} )
} else if ( l.sub_menu_item ) b = i( "div", "section type_" + l.id, l.name, l.id, "section" ), v = i( "div", "section_head", l.name, l.id, "head" ), w = i( "table", "section_content", l.name, l.id, "content" ), v.textContent = l.name, b.appendChild( v ), l.desc && L.setHelp( l.desc, v, v, l ), b.appendChild( w ), l.need_save && ( l.save_button = Re( w, l ) ), Ce( w, l.items, l, h ), l.save_button && w.appendChild( l.save_button ),
k.push( b );
else if ( l.userscript )
if ( l.deleted ) {
A[ l.uuid ] = {
dom: a,
script: l
};
const e = i( "div", "trash_list", "deleted_scripts" );
e.appendChild( Le( l, e, h ) ), e.inserted || i( "td", "", "td_trash" ).appendChild( e )
} else if ( k = Pe( l, a, h ), c[ l.uuid ] = {
dom: a,
script: l
}, a.setAttribute( "class", "scripttr" ), l.nnew ) a.setAttribute( "style", "display: none;" );
else {
const t = "script_refresh";
ke.is( t ) || ( n.push( () => {
J.init( Object.values( c ).map( e => e.script ) ), y.multiselect.single_click(), X(), e.scripts = !0, ke.clear()
} ), ke.add( t ) )
} else if ( l.globalhint ) ee( Object( r.copy )( l.options, {
onclick: l.options.info_url ? () => {
S( l.options.info_url, !0 )
} : null
} ) );
else {
const e = s( "span", "", l.uuid || l.id + l.name );
e.textContent = l.name, k = Array( 13 ), k[ 3 ] = e
}
return k.forEach( e => {
if ( e ) {
if ( void 0 !== l.level && ( e.element || e ).setAttribute( "style", l.level > t.configMode ? r.staticVars.invisible : r.staticVars.visible || "" ), l.hint ) {
const t = s( "span", "", l.uuid || l.id + l.name, "hint" );
t.textContent = l.hint, e.appendChild( t )
}
l.validation && Ee( l, e.validation || e.element || e ),
l.width && e.setAttribute( "class", "width-172-" + l.width )
}
} ), a && ( w = a.getAttribute( "class" ), v = " hide", !1 === l.visible ? w = ( w || "" ) + v : w && ( w = w.replace( v, "" ) ), a.setAttribute( "class", w ) ), k
},
Ce = ( e, t, n, s ) => {
Object.keys( t ).forEach( o => {
const a = t[ o ],
l = e ? i( "tr", "settingstr", a.uuid || a.id + a.name, "pi" ) : null,
c = xe( l, a, n, s );
c && c.length && ( e && e.appendChild( l ), Object( r.each )( c, ( e, t ) => {
let n = e,
s = "";
"Object" === Object( r.toType )( e ) && ( n = e.element, s = e.style || "" );
const o = i( "td", s + " settingstd", "", a.uuid || a.id + a.name, t );
e && o.appendChild( n ), l && l.appendChild( o )
} ) )
} )
},
Ee = ( e, t ) => {
let n;
if ( e.validation ) {
e.validation.url && ( n = function () {
S( this.url, !0 )
} );
const r = L.createAfterIcon( e, n );
r && ( r.url = e.validation ? e.validation.url : void 0, t.appendChild( r ) )
}
},
Ie = e => {
const t = e.meta || {},
n = e.settings || {},
r = e => ( {
url: e.meta.url,
sri: e.meta.sri,
ts: e.meta.ts,
mimetype: e.meta.mimetype,
modified: e.meta.modified,
content: e.source
} );
return {
source: e.source,
name: t.name,
uuid: t.uuid,
file_url: t.file_url,
options: e.options,
storage: e.storage,
lastModified: t.modified,
enabled: n.enabled,
position: n.position,
resources: e.resources ? e.resources.map( r ) : [],
requires: e.requires ? e.requires.map( r ) : []
}
},
Me = ( e, t ) => {
const n = Object( g.Deferred )(),
r = [];
return ( ( e, t ) => {
const n = [];
let r, i = Object( g.Deferred )();
const s = e => {
i && ( e && i.reject(), r && r.disconnect(), i = null )
};
try {
se(), r = rea.extension.connect( "exportToJson" ), r.onMessage.addListener( e => {
if ( i )
if ( e.partial && n.push( e.partial ), e.done ) {
const e = n.join( "" );
let t;
try {
t = JSON.parse( e )
} catch ( e ) {}
K(), u(),
t ? i.resolve( t ) : i.reject(), s()
} else e.error && s( !0 )
} ), r.onDisconnect.addListener( () => {
s( !0 )
} ), r.postMessage( {
method: "exportToJson",
ids: e,
options: t
} )
} catch ( e ) {
console.log( "eJ: " + e.message ), s( !0 )
}
return i.promise()
} )( e, t ).done( e => {
e.scripts.forEach( e => {
e.uuid && e.userscript && !e.system && !e.nnew && ( e.code && "" != e.code.trim() ? r.push( ( e => {
const t = e => e.url ? {
meta: {
name: b.default.parse( e.url ).pathname.split( "/" ).pop(),
url: e.url,
sri: e.sri,
ts: e.ts,
mimetype: e.mimetype,
modified: e.modified
},
source: e.data.content
} : void 0,
n = e => e;
return {
source: e.code,
meta: {
name: e.name,
uuid: e.uuid,
modified: e.lastModified,
file_url: e.file_url && e.file_url.trim() ? e.file_url : void 0
},
storage: e.storage,
options: e.options,
settings: {
enabled: e.enabled,
position: e.position
},
resources: e.resources ? e.resources.map( t ).filter( n ) : [],
requires: e.requires ? e.requires.map( t ).filter( n ) : []
}
} )( e ) ) : console.log( "options: Strange script: " + e.name ) )
} ), n.resolve( {
scripts: r,
global_settings: e.global_settings
} )
} ).fail( () => {
n.reject()
} ), n.promise()
};
let Ge = () => {
if ( !V.RUNTIME.SHARED_OBJECT_URLS || V.RUNTIME.FIREFOX && V.RUNTIME.MOBILE ) {
if ( V.RUNTIME.SAFARI ) return window.saveAs = ( e, t ) => {
k.a.blob2dataUri( e, e => _e( e, t ) )
}, g.Deferred.Pledge();
if ( V.RUNTIME.EDGE && window.navigator && window.navigator.msSaveBlob ) return window.saveAs = ( e, t ) => {
window.navigator.msSaveBlob( e, t )
}, g.Deferred.Pledge(); {
const e = Object( g.Deferred )();
return Object( Z.vendor )( [ "vendor/saveas/filesaver" ], () => {
Ge = g.Deferred.Pledge, e.resolve()
} ), e.promise()
}
}
return window.saveAs = ( e, t ) => {
const n = URL.createObjectURL( e );
_e( n, t, () => {
URL.revokeObjectURL( n )
} )
}, g.Deferred.Pledge()
};
const Ze = e => {
const a = {
name: "utils",
id: "utils"
},
l = s( "div", a.name, a.id, "tab_util_h" ),
c = l.textContent = o.I18N.getMessage( "Utilities" ),
A = s( "div", a.name, a.id, "tab_util" );
e.appendTab( a.id, l, A, e => {
e.then( () => {
we.set( a.id ), document.title = c
} )
} ).show();
const f = i( "div", "tv_util", a.name, a.id, "tab_util_cont" );
let _ = () => {
I.a.init( e => {
let t = Object( g.Deferred )();
const n = rea.extension.connect( "tabWatch" );
return n.onMessage.addListener( e => {
let r;
t && ( ( r = e.tab ) ? t.notify( r ) : ( t.resolve(), t = null, n.disconnect() ) )
} ), n.onDisconnect.addListener( () => {
t && t.resolve()
} ), n.postMessage( {
method: "tabWatch",
url: e.url
} ), {
promise: t.promise(),
close: function () {
t && t.resolve(), n.disconnect()
}
}
} ), _ = null
},
b = {};
const v = e => {
let t, n;
return t = "webdav" == e && ( n = m.cloud_config ) ? {
url: n.url,
basic_auth: k.a.Base64.encode( n.user + ":" + n.pass )
} : {}, b[ e ] = b[ e ] || I.a[ e ]( t )
},
w = () => Me( null, {
storage: m.script_storage,
global_settings: m.add_tm_settings,
externals: m.include_externals
} ).then( e => ( d(), R.a.zip.create( e.scripts, e.global_settings ).progress( d ).done( () => ne() ).fail( () => ie( o.I18N.getMessage( "Action_failed" ) ) ) ) ),
y = e => {
for ( let t, n = 0; t = e[ n ]; n++ ) R.a.zip.read( t ).progress( d ).then( e => de( {
scripts: Object.values( e.scripts ).map( e => Ie( e ) ),
global_settings: e.global_settings
}, {
reload: !0
} ) ).done( e => {
e.err && Object( r.cAlert )( e.err )
} ).fail( () => {
Object( r.cAlert )( o.I18N.getMessage( "Unable_to_parse_this_" ) )
} ).always( u )
},
x = L.createButton( a.name, a.id + "_i_ta", o.I18N.getMessage( "Import" ), () => {
R.a.json.read( P.value ).then( e => de( {
scripts: Object.values( e.scripts ).map( e => Ie( e ) ),
global_settings: e.global_settings
}, {
reload: !0
} ) ).done( e => {
e.err && Object( r.cAlert )( e.err )
} ).fail( () => {
Object( r.cAlert )( o.I18N.getMessage( "Unable_to_parse_this_" ) )
} )
} ),
C = L.createFileSelect( o.I18N.getMessage( "Import" ), {
name: "zip",
id: a.id
}, e => ( d(), y( e ) ) ),
E = L.createFileSelect( o.I18N.getMessage( "Import" ), {
name: "file",
id: a.id
}, e => {
d();
for ( let t, n = 0; t = e[ n ]; n++ ) O( t ).then( e => R.a.json.read( e ).then( e => de( {
scripts: Object.values( e.scripts ).map( e => Ie( e ) ),
global_settings: e.global_settings
}, {
reload: !0
} ), ( function () {
return Ae( {
code: e
}, {
reload: !0
} )
} ) ) ).done( e => {
e.err && Object( r.cAlert )( e.err )
} ).fail( () => {
Object( r.cAlert )( o.I18N.getMessage( "Unable_to_parse_this_" ) )
} ).always( u )
} ),
G = L.createButton( a.name, a.id + "_i_cloud", o.I18N.getMessage( "Show_backups" ), () => {
d();
const e = le.select.value,
t = le.select.selectedOptions[ 0 ].text;
_ && _(),
v( e ).list().progress( e => {
e.total > 0 && d( t + ": " + Math.floor( e.loaded / e.total * 100 ) + "%" )
} ).then( e => ( e = e.filter( e => e.name.match( /\.zip$/ ) ) ).length ? e : g.Deferred.Breach( "empty" ) ).then( t => {
const n = Object( g.Deferred )(),
r = $( '<table class="nowrap file_select">' );
$( '<thead><tr><th colspan="3">' + o.I18N.getMessage( "Please_select_a_file" ) + ":</th></tr></thead>" ).appendTo( r ), t.sort( ( e, t ) => e.modified - t.modified ).forEach( t => {
const i = $( '<input class="button" type="button" value="' + o.I18N.getMessage( "Import" ) + '">' ).click( () => {
n.resolve( t ), h(), d()
} ),
s = $( '<input class="button" type="button" value="' + o.I18N.getMessage( "Delete" ) + '">' ).click( () => {
a.hide(), v( e ).delete( t )
} ),
a = $( "<tr><td>" + [ L.safeTagsReplace( t.name ), T.formatBytes( t.size, 2 ), new Date( t.modified ).toLocaleString().replace( ( new Date ).toLocaleDateString(), o.I18N.getMessage( "Today" ) ) ].join( "</td><td>" ) + "</td></tr>" );
$( "<td>" ).append( i, s ).appendTo( a ), a.appendTo( r )
} );
const i = $( '<input class="button" type="button" value="' + o.I18N.getMessage( "Cancel" ) + '">' ).click( () => {
n.reject( "cancel" ), h()
} );
return $( "<tfoot>" ).append( $( "<tr>" ).append( $( '<td colspan="3">' ).append( i ) ) ).appendTo( r ), u(), p( r[ 0 ] ), n.promise()
} ).then( n => v( e ).get( n ).progress( e => {
e.total > 0 && d( t + ": " + Math.floor( e.loaded / e.total * 100 ) + "%" )
} ) ).then( e => y( [ e ] ) ).fail( e => {
let t;
"empty" === e ? t = o.I18N.getMessage( "No_backups_found" ) : "cancel" == e || ( "auth_failed" == e ? console.warn( "cloud: Authentication failed" ) : t = o.I18N.getMessage( "Error" ) + ": " + ( e || o.I18N.getMessage( "Action_failed" ) ) ), t && Object( r.cAlert )( t ), u()
} )
} ),
Z = L.createButton( a.name, a.id + "_i_url", o.I18N.getMessage( "Install" ), () => ( d(), Ae( {
url: ve.value
}, {
reload: !0
} ).fail( e => {
const t = e.err ? e.err : o.I18N.getMessage( "Unable_to_parse_this_" );
Object( r.cAlert )( t )
} ).always( u ) ) ),
N = L.createButton( a.name, a.id + "_e_ta", o.I18N.getMessage( "Export" ), () => {
d(), Me( null, {
storage: m.script_storage,
global_settings: m.add_tm_settings,
externals: m.include_externals
} ).then( e => R.a.json.create( e.scripts, e.global_settings ) ).done( e => {
P.value = e, ne()
} ).fail( () => ie( o.I18N.getMessage( "Action_failed" ) ) ).always( u )
} ),
S = L.createButton( a.name, a.id + "_e_file", o.I18N.getMessage( "Export" ), () => {
d(), Me( null, {
storage: m.script_storage,
global_settings: m.add_tm_settings,
externals: m.include_externals
} ).then( e => R.a.json.create( e.scripts, e.global_settings ).then( e => Ge().done( () => {
const t = new Blob( [ e ], {
type: "text/plain"
} );
saveAs( t, Object( r.safeFileName )( "tampermonkey-backup-" + V.RUNTIME.BROWSER + "-" + ( new Date ).toISOString().replace( /[.:]/g, "-" ) + ".txt" ) ), ne()
} ) ) ).fail( () => ie( o.I18N.getMessage( "Action_failed" ) ) ).always( u )
} ),
U = L.createButton( a.name, a.id + "_e_zip", o.I18N.getMessage( "Export" ), () => w().then( e => Ge().done( () => {
saveAs( e, Object( r.safeFileName )( "tampermonkey-backup-" + V.RUNTIME.BROWSER + "-" + ( new Date ).toISOString().replace( /[.:]/g, "-" ) + ".zip" ) )
} ) ).always( u ) ),
B = L.createButton( a.name, a.id + "_e_zip", o.I18N.getMessage( "Export" ), () => {
const e = Object( g.Deferred )(),
t = le.select.value,
n = le.select.selectedOptions[ 0 ].text;
return Object( r.cPrompt )( o.I18N.getMessage( "Name" ), "backup-" + V.RUNTIME.BROWSER + "-" + ( new Date ).toISOString().replace( /[.:]/g, "-" ), i => {
i ? e.consume( ( e => w().then( r => ( d( n + "..." ), _ && _(),
v( t ).put( e + ".zip", r ).progress( e => {
e.total > 0 && d( n + ":" + Math.floor( e.loaded / e.total * 100 ) + "%" )
} ) ) ).fail( e => {
Object( r.cAlert )( o.I18N.getMessage( "Error" ) + ": " + ( e || o.I18N.getMessage( "Action_failed" ) ) )
} ).always( u ) )( i ) ) : e.reject( "aborted" )
} ), e.promise()
} ),
F = L.createCheckbox( o.I18N.getMessage( "Include_TM_settings" ), {
id: a.id + "_e_export_tm_settings",
enabled: "true"
}, ( function () {
m.add_tm_settings = this.checked, V.HTML5.LOCALSTORAGE && V.HTML5.LOCALSTORAGE.setItem( "export_tm_settings", m.add_tm_settings )
} ) );
F.elem.setAttribute( "style", "padding-left: 2px" ), F.input.checked = m.add_tm_settings;
const j = L.createCheckbox( o.I18N.getMessage( "Include_script_storage" ), {
id: a.id + "_e_export_storage",
enabled: "true"
}, ( function () {
m.script_storage = this.checked, V.HTML5.LOCALSTORAGE && V.HTML5.LOCALSTORAGE.setItem( "export_script_storage", m.script_storage )
} ) );
j.elem.setAttribute( "style", "padding-left: 2px; display: inline" ), j.input.checked = m.script_storage;
const D = L.createCheckbox( o.I18N.getMessage( "Include_script_externals" ), {
id: a.id + "_e_export_externals",
enabled: "true"
}, ( function () {
m.include_externals = this.checked, V.HTML5.LOCALSTORAGE && V.HTML5.LOCALSTORAGE.setItem( "export_externals", m.include_externals )
} ) );
D.elem.setAttribute( "style", "padding-left: 2px" ), D.input.checked = m.include_externals;
var P = i( "textarea", "importta", a.name, a.id, "ta" );
P.setAttribute( "spellcheck", "false" );
const z = i( "div", "section", a.name, a.id, "ta" ),
Q = i( "div", "section_head", a.name, a.id, "head_ta" ),
H = i( "div", "section_content", a.name, a.id, "content_ta" );
Q.textContent = o.I18N.getMessage( "General" ), H.appendChild( j.elem ), H.appendChild( F.elem ), H.appendChild( D.elem ), z.appendChild( Q ), z.appendChild( H );
const Y = i( "div", "section", a.name, a.id, "ta" ),
X = i( "div", "section_head", a.name, a.id, "head_ta" ),
W = i( "div", "section_content", a.name, a.id, "content_ta" );
X.textContent = o.I18N.getMessage( "TextArea" ), W.appendChild( N ),
W.appendChild( x ), W.appendChild( P ), Y.appendChild( X ), Y.appendChild( W );
const J = i( "div", "section", a.name, a.id, "sb" ),
q = i( "div", "section_head", a.name, a.id, "head_sb" ),
K = i( "div", "section_content", a.name, a.id, "content_sb" );
q.textContent = o.I18N.getMessage( "Zip" ), J.appendChild( q ), J.appendChild( K ), K.appendChild( U ), K.appendChild( C.elem );
const ee = i( "div", "section", a.name, a.id, "sb" ),
te = i( "div", "section_head", a.name, a.id, "head_sb" ),
re = i( "div", "section_content", a.name, a.id, "content_sb" ),
se = V.HTML5.LOCALSTORAGE,
oe = function () {
$( fe ).toggle( "webdav" === this.value );
const e = v( this.value );
$( ge ).toggle( e && !!e.revoke ), se && se.setItem( "cloud_type", this.value )
};
let ae;
se && ( ae = se.getItem( "cloud_type" ) );
var le = L.createDropDown( o.I18N.getMessage( "Type" ), {
id: "cloud_type",
value: ae || ( "edge" == V.RUNTIME.BROWSER ? "onedrive" : "drive" )
}, [ {
name: o.I18N.getMessage( "Google_Drive" ),
value: "drive"
}, "safari" == V.RUNTIME.BROWSER ? null : {
name: o.I18N.getMessage( "Dropbox" ),
value: "dropbox"
}, {
name: o.I18N.getMessage( "OneDrive" ),
value: "onedrive"
}, "safari" == V.RUNTIME.BROWSER ? null : {
name: o.I18N.getMessage( "Yandex_Disk" ),
value: "yandex"
}, "safari" == V.RUNTIME.BROWSER ? null : {
name: o.I18N.getMessage( "WebDAV" ),
value: "webdav"
} ].filter( e => e ), oe );
const ce = e => function () {
let t;
b = {}, ( m.cloud_config = m.cloud_config || {} )[ e ] = this.value,
( t = V.HTML5.LOCALSTORAGE ) && t.setItem( "cloud_config", k.a.Base64.encode( JSON.stringify( m.cloud_config ) ) )
},
ue = L.createInput( o.I18N.getMessage( "URL" ), {
id: "select_cloud_url",
uuid: a.uuid,
value: ( m.cloud_config ? m.cloud_config.url : null ) || ""
}, ce( "url" ) ),
pe = L.createInput( o.I18N.getMessage( "Login" ), {
id: "select_cloud_username",
uuid: a.uuid,
value: ( m.cloud_config ? m.cloud_config.user : null ) || ""
}, ce( "user" ) ),
he = L.createInput( o.I18N.getMessage( "Password" ), {
id: "select_cloud_password",
uuid: a.uuid,
password: !0,
value: ( m.cloud_config ? m.cloud_config.pass : null ) || ""
}, ce( "pass" ) ),
fe = [ ue.elem, pe.elem, he.elem ];
n.push( () => {
oe.apply( le.select, [] )
} ), te.textContent = o.I18N.getMessage( "Cloud" ), ee.appendChild( te ), ee.appendChild( re ), re.appendChild( [ le.elem ].concat( fe ) ), re.appendChild( B ), re.appendChild( G );
const ge = L.createButton( "revoke_token_button", a.uuid, o.I18N.getMessage( "Revoke_Access_Token" ), () => {
_ && _(), $( ge ).prop( "disabled", !0 );
const e = v( le.select.value );
d(),
e.revoke().then( () => Object( M.sleep )( 15e3 ) ).done( ne ).fail( () => ie( o.I18N.getMessage( "Action_failed" ) ) ).always( () => {
u(), $( ge ).prop( "disabled", !1 )
} )
} );
re.appendChild( ge );
const me = i( "div", "section", a.name, a.id, "fi" ),
_e = i( "div", "section_head", a.name, a.id, "head_fi" ),
be = i( "div", "section_content", a.name, a.id, "content_fi" );
_e.textContent = o.I18N.getMessage( "File" ), me.appendChild( _e ), me.appendChild( be ), be.appendChild( S ), be.appendChild( E.elem );
const ve = i( "input", "updateurl_input", a.name, a.id, "url" );
ve.setAttribute( "type", "text" ), ve.setAttribute( "spellcheck", "false" );
const ke = i( "div", "section", a.name, a.id, "ur" ),
ye = i( "div", "section_head", a.name, a.id, "head_ur" ),
Re = i( "div", "section_content", a.name, a.id, "content_ur" );
ye.textContent = o.I18N.getMessage( "Install_from_URL" ), ke.appendChild( ye ), ke.appendChild( Re ), Re.appendChild( ve ), Re.appendChild( Z ), f.appendChild( z ), "undefined" != typeof Blob && f.appendChild( ee ), V.RUNTIME.CAN_SAVEAS_ZIP && f.appendChild( J ), "undefined" != typeof Blob && f.appendChild( me ),
f.appendChild( Y ), f.appendChild( ke ), Object( r.each )( [ Y ], e => {
const n = " hide";
let r = e.getAttribute( "class" );
t.configMode < 50 ? r += n : r = r.replace( n, "" ), e.setAttribute( "class", r )
} ), A.appendChild( f )
},
Te = e => {
Ce( null, e, null, w ), u(), ye()
},
Ne = ( e, t, n, a ) => {
void 0 === a && ( a = {} );
const l = t.item,
c = l.uuid + ( a.orig || "" ) + t.id,
A = ( a.orig ? "orig_" : "use_" ) + t.id,
d = e => "select_" + Object( r.createUniqueId )( e, l.uuid ) + "_sel1",
u = i( "div", "cludes", e, c, "cb1" ),
p = s( "span", e, c, "cb2" );
if ( a.orig ) {
const n = function () {
if ( "checkbox" == this.type ) {
const e = {};
e[ this.key ] = this.checked, ge( this.uuid, e )
}
},
r = "merge_" + t.id,
i = !!( l.options && l.options.override && l.options.override[ r ] ),
s = L.createCheckbox( e, {
id: r,
uuid: l.uuid,
enabled: i
}, n );
p.appendChild( s.elem )
} else p.textContent = e;
const h = i( "select", "cludes", A, l.uuid, "sel1" );
h.innerHTML = "", h.setAttribute( "size", "6" ), h.setAttribute( "multiple", "true" );
for ( let e = 0; e < n.length; e++ ) {
const t = document.createElement( "option" );
t.value = t.text = n[ e ], h.appendChild( t )
}
u.appendChild( p ),
l.desc && L.setHelp( l.desc, u, p, l ), u.appendChild( h );
const f = e => {
const t = [],
n = e && e.options;
for ( let e = 0, r = n.length; e < r; e++ ) n[ e ].selected && t.push( n[ e ] );
return t
},
g = () => {
const e = d( "use_" + ( "excludes" == t.id ? "includes" : "excludes" ) ),
n = document.getElementById( e ),
r = f( h );
let i = !1;
const s = "matches" == t.id;
r.forEach( e => {
const t = s ? "/" + b.default.getRegExpFromMatch( e.value, !0 ) + "/" : e.value;
let r;
e && !n.querySelector( 'option[value="' + t + '"]' ) && ( r = e.cloneNode( !0 ), s && ( r.value = t, r.textContent = t ), n.appendChild( r ), i = !0 )
} ),
i && k()
},
m = () => {
const e = prompt( o.I18N.getMessage( "Enter_the_new_rule" ) );
if ( e ) {
const t = document.createElement( "option" );
t.value = t.text = e.trim(), h.appendChild( t ), k()
}
},
_ = () => {
const e = h.options[ h.selectedIndex ];
if ( !e ) return;
const t = prompt( o.I18N.getMessage( "Enter_the_new_rule" ), e.value );
t && ( e.value = e.text = t.trim(), k() )
},
v = () => {
const e = f( h );
let t = !1;
e.forEach( e => {
e && ( e.parentNode.removeChild( e ), t = !0 )
} ), t && k()
},
w = e => {
const t = [];
for ( let n = 0; n < e.options.length; n++ ) t.push( e.options[ n ].value );
return t
};
var k = () => {
const e = {
includes: w( document.getElementById( d( "use_includes" ) ) ),
matches: w( document.getElementById( d( "use_matches" ) ) ),
excludes: w( document.getElementById( d( "use_excludes" ) ) ),
connects: w( document.getElementById( d( "use_connects" ) ) ),
temp_connects: w( document.getElementById( d( "use_temp_connects" ) ) ),
blockers: w( document.getElementById( d( "use_blockers" ) ) )
};
return ge( l.uuid, e ), !0
};
if ( a.other_name ) {
const t = s( "button", e, c, "btn1", !0 );
t.textContent = o.I18N.getMessage( "Add_as_0clude0", a.other_name ),
t.addEventListener( "click", g, !1 ), u.appendChild( t )
} else if ( !a.orig ) {
const t = s( "button", e, c, "btn2", !0 );
t.textContent = o.I18N.getMessage( "Add" ) + "...", t.addEventListener( "click", m, !1 ), u.appendChild( t );
const n = s( "button", e, c, "btn3", !0 );
n.textContent = o.I18N.getMessage( "Edit" ) + "...", n.addEventListener( "click", _, !1 ), u.appendChild( n );
const r = s( "button", e, c, "btn4", !0 );
r.textContent = o.I18N.getMessage( "Remove" ), r.addEventListener( "click", v, !1 ), u.appendChild( r )
}
return {
elem: u
}
},
Se = e => e.homepage ? e.homepage : e.namespace && 0 == e.namespace.search( /https?:\/\// ) ? e.namespace : null,
Ue = e => {
const n = "http://" + e + "/",
r = V.RUNTIME.CHROME ? "chrome://favicon/" + n : null;
let i;
return i = 0 == n.indexOf( "http://userscripts.org/" ) || 0 == n.indexOf( "http://userscripts.com/" ) ? Q.origin( "uso" ) : "native" == t.favicon_service ? n + "favicon.ico" : "duckduckgo" == t.favicon_service ? "https://icons.duckduckgo.com/ip2/" + encodeURIComponent( e ) + ".ico" : "https://www.google.com/s2/favicons?domain=" + encodeURIComponent( e ), [ i, r ]
},
Be = ( e, t ) => {
const n = s( "div", e.uuid, "script_setting_h" ),
r = s( "div", e.uuid, "script_settings_c" );
n.textContent = o.I18N.getMessage( "Settings" );
const a = function () {
const e = {};
if ( "checkbox" == this.type ) e[ this.key ] = !!this.checked, ge( this.uuid, e );
else if ( "button" == this.type ) e[ this.key ] = !this.oldvalue, ge( this.uuid, e );
else if ( "text" == this.type || "textarea" == this.type || "select-one" == this.type ) {
const t = L.getValue( this );
e[ this.key ] = t, ge( this.uuid, e )
}
},
l = L.createCheckbox( o.I18N.getMessage( "Enabled" ), {
id: "enabled",
uuid: e.uuid,
name: "upd",
enabled: e.enabled
}, a ).elem,
c = L.createPosition( o.I18N.getMessage( "Position_" ) + ": ", {
id: "position",
uuid: e.uuid,
name: "pos",
pos: e.position,
posof: e.positionof
}, a ),
A = L.createDropDown( o.I18N.getMessage( "Run_at" ), {
id: "run_at",
uuid: e.uuid,
name: "run-at",
value: e.run_at
}, [ {
name: "document-start",
value: "document-start"
}, {
name: "document-body",
value: "document-body"
}, {
name: "document-end",
value: "document-end"
}, {
name: "document-idle",
value: "document-idle"
}, {
name: "context-menu",
value: "context-menu"
}, {
name: o.I18N.getMessage( "Default" ),
value: null
} ], a ),
d = L.createDropDown( o.I18N.getMessage( "No_frames" ), {
id: "noframes",
uuid: e.uuid,
name: "no_frames",
value: e.noframes
}, [ {
name: o.I18N.getMessage( "Yes" ),
value: !0
}, {
name: o.I18N.getMessage( "No" ),
value: !1
}, {
name: o.I18N.getMessage( "Default" ),
value: null
} ], a ),
u = L.createCheckbox( o.I18N.getMessage( "Check_for_Updates" ), {
id: "check_for_updates",
uuid: e.uuid,
name: "upd",
enabled: e.check_for_updates
} ),
p = L.createInput( o.I18N.getMessage( "Update_URL_" ), {
id: "file_url",
uuid: e.uuid,
name: "uu",
value: e.file_url
} );
p.input.setAttribute( "class", "updateurl_input" ), p.elem.setAttribute( "class", "updateurl" ), e.is_external && p.input.setAttribute( "readonly", "true" );
const h = t => ( e.options && e.options.override ? e.options.override[ t ] : null ) || [],
f = Ne( o.I18N.getMessage( "Original_includes" ), {
id: "includes",
item: e
}, h( "orig_includes" ), {
orig: !0,
other_name: o.I18N.getMessage( "User_excludes" )
} ),
g = Ne( o.I18N.getMessage( "Original_matches" ), {
id: "matches",
item: e
}, h( "orig_matches" ), {
orig: !0,
other_name: o.I18N.getMessage( "User_excludes" )
} ),
m = Ne( o.I18N.getMessage( "Original_excludes" ), {
id: "excludes",
item: e
}, h( "orig_excludes" ), {
orig: !0,
other_name: o.I18N.getMessage( "User_includes" )
} ),
_ = i( "div", "clear", e.uuid, "clear" ),
b = Ne( o.I18N.getMessage( "User_includes" ), {
id: "includes",
item: e
}, h( "use_includes" ) ),
v = Ne( o.I18N.getMessage( "User_matches" ), {
id: "matches",
item: e
}, h( "use_matches" ) ),
w = Ne( o.I18N.getMessage( "User_excludes" ), {
id: "excludes",
item: e
}, h( "use_excludes" ) ),
k = Ne( o.I18N.getMessage( "Original_domain_whitelist" ), {
id: "connects",
item: e
}, e.connects, {
orig: !0
} ),
y = Ne( o.I18N.getMessage( "Temporary_domain_whitelist" ), {
id: "temp_connects",
item: e
}, e.temp_connects ),
R = Ne( o.I18N.getMessage( "User_domain_whitelist" ), {
id: "connects",
item: e
}, h( "use_connects" ) ),
x = Ne( o.I18N.getMessage( "User_domain_blacklist" ), {
id: "blockers",
item: e
}, h( "use_blockers" ) ),
C = [ L.createCheckbox( o.I18N.getMessage( "Apply_compatibility_options_to_required_script_too" ), {
id: "compatopts_for_requires",
uuid: e.uuid,
name: "",
enabled: e.compatopts_for_requires
}, a ), L.createCheckbox( o.I18N.getMessage( "Fix_wrappedJSObject_property_access" ), {
id: "compat_wrappedjsobject",
uuid: e.uuid,
name: "",
enabled: e.compat_wrappedjsobject
}, a ), L.createCheckbox( o.I18N.getMessage( "Convert_CDATA_sections_into_a_chrome_compatible_format" ), {
id: "compat_metadata",
uuid: e.uuid,
name: "",
enabled: e.compat_metadata
}, a ), L.createCheckbox( o.I18N.getMessage( "Replace_for_each_statements" ), {
id: "compat_foreach",
uuid: e.uuid,
name: "",
enabled: e.compat_foreach
}, a ), L.createCheckbox( o.I18N.getMessage( "Add_toSource_function_to_Object_Prototype" ), {
id: "compat_prototypes",
uuid: e.uuid,
name: "",
enabled: e.compat_prototypes
}, a ) ],
E = i( "div", "section", e.uuid, "ta_opt" ),
I = i( "div", "section_head", e.uuid, "head_ta_opt" ),
M = i( "div", "section_content", e.uuid, "content_ta_opt" );
I.textContent = o.I18N.getMessage( "Settings" ), E.appendChild( I ), E.appendChild( M );
const G = i( "div", "section", e.uuid, "ta_upd" ),
Z = i( "div", "section_head", e.uuid, "head_ta_upd" ),
N = i( "div", "section_content", e.uuid, "content_ta_upd" );
Z.textContent = o.I18N.getMessage( "Updates" ), G.appendChild( Z ), G.appendChild( N );
const S = i( "div", "section", e.uuid, "ta_cludes" ),
U = i( "div", "section_head", e.uuid, "head_ta_cludes" ),
B = i( "div", "section_content", e.uuid, "content_ta_cludes" );
U.textContent = o.I18N.getMessage( "Includes_Excludes" ), S.appendChild( U ), S.appendChild( B );
const O = i( "div", "section", e.uuid, "ta_security" ),
F = i( "div", "section_head", e.uuid, "head_ta_security" ),
j = i( "div", "section_content", e.uuid, "content_ta_security" );
F.textContent = o.I18N.getMessage( "XHR_Security" ), O.appendChild( F ), O.appendChild( j );
const D = i( "div", "section", e.uuid, "ta_compat" ),
P = i( "div", "section_head", e.uuid, "head_ta_compat" ),
z = i( "div", "section_content", e.uuid, "content_ta_compat" );
P.textContent = o.I18N.getMessage( "GM_compat_options_" ), D.appendChild( P ), D.appendChild( z ), M.appendChild( l ), M.appendChild( c ), M.appendChild( A.elem ), M.appendChild( d.elem );
const V = L.createButton( "save_update_button", e.uuid, o.I18N.getMessage( "Save" ), () => {
a.apply( u.input, [] ), e.is_external || a.apply( p.input, [] )
} );
N.appendChild( [ u.elem, p.elem, V ] ), B.appendChild( [ f.elem, g.elem, m.elem, _, b.elem, v.elem, w.elem ] ), j.appendChild( [ k.elem, y.elem, R.elem, x.elem ] ), r.appendChild( [ E, G, S, O ] );
for ( let e = 0; e < C.length; e++ ) z.appendChild( C[ e ].elem );
r.appendChild( D );
const Q = {
name: "",
uuid: e.uuid,
id: "comment",
value: e.options.comment
},
H = L.createTextarea( null, Q );
H.elem.setAttribute( "class", "script_setting_wrapper" );
const Y = s( "div", e.uuid, "save" ),
X = L.createButton( "save_button", e.uuid, o.I18N.getMessage( "Save" ), () => {
a.apply( H.textarea, [] )
} );
Y.appendChild( X );
const W = i( "div", "section", e.uuid, "ta_comment" ),
J = i( "div", "section_head", e.uuid, "head_ta_comment" ),
q = i( "div", "section_content", e.uuid, "content_ta_comment" );
J.textContent = o.I18N.getMessage( "Comment" ), W.appendChild( J ), W.appendChild( q ), q.appendChild( H.elem ), q.appendChild( Y ), r.appendChild( W );
const K = i( "div", "section", e.uuid, "ta_det" ),
$ = i( "div", "section_head", e.uuid, "head_ta_det" ),
ee = i( "div", "section_content", e.uuid, "content_ta_det" );
$.textContent = o.I18N.getMessage( "Details" ), K.appendChild( $ ),
K.appendChild( ee ), $.textContent = o.I18N.getMessage( "Details" );
const te = i( "table", "script_details", e.uuid, "script_details" );
[ {
label: o.I18N.getMessage( "Size" ),
value: T.formatBytes( ( e.code ? e.code : e ).length, 2 )
}, {
label: o.I18N.getMessage( "UUID" ),
value: e.uuid
} ].forEach( t => {
const n = i( "tr", "external_desc", e.uuid, t.label, "tr" ),
r = i( "td", "external_desc", e.uuid, t.label, "td1" ),
s = i( "td", "", e.uuid, t.label, "td2" );
r.textContent = t.label, s.textContent = t.value, n.appendChild( r ), n.appendChild( s ), te.appendChild( n )
} ),
ee.appendChild( te ), r.appendChild( K );
const ne = t.appendTab( "settings", n, r, e => {
e.then( () => {
we.setSub( "settings" )
} )
} );
return we.registerListener( e.uuid, "settings", () => {
ne.select()
} ), {}
},
Oe = ( e, t, n, a ) => {
const l = i( "table", "externals", e.uuid, "outer_req2html", t, !0 );
let c = 0;
const A = [ {
label: o.I18N.getMessage( "URL" ),
prop: "display_url"
}, {
label: o.I18N.getMessage( "Size" ),
prop: "data",
fn: function ( e ) {
let t = "?";
return e && ( void 0 !== e.length ? t = e.length : void 0 !== e.content && ( t = e.content.length ) ), T.formatBytes( t, 2 )
}
}, {
label: o.I18N.getMessage( "MIME_Type" ),
prop: "mimetype"
}, {
label: o.I18N.getMessage( "Subresource_Integrity" ),
prop: "sri",
fn: function ( e ) {
return e ? e.type + "=" + e.value : o.I18N.getMessage( "_not_set_" )
}
}, {
label: o.I18N.getMessage( "Last_updated" ),
prop: "ts",
fn: function ( e ) {
return e ? new Date( e ).toString() : null
}
} ];
if ( A.push( {
label: o.I18N.getMessage( "User_modified" ),
prop: "modified",
klass: "validation",
title: o.I18N.getMessage( "This_external_resource_will_not_auto_update__Please_delete_it_in_order_to_enable_updates_again_" ),
icon: Q.get( "info" ),
fn: function ( e ) {
return e ? o.I18N.getMessage( "Yes" ) : null
}
} ), e[ t ].forEach( d => {
const p = c + Object( r.createUniqueId )( d.url ) + t;
A.forEach( t => {
let n;
const r = i( "tr", "", e.uuid, t.prop, "tr" + p ),
s = i( "td", "external_label", e.uuid, t.prop, "td1" + p ),
o = i( "td", "external_desc", e.uuid, t.prop, "td2" + p );
if ( s.textContent = t.label, o.textContent = n = ( t.fn ? t.fn : e => e )( d[ t.prop ] ), null !== n ) {
if ( t.klass && $( o ).addClass( t.klass ), t.title && o.setAttribute( "title", t.title ), t.icon ) {
const n = i( "span", "validation", e.uuid, "validation", "span" + p );
n.appendChild( L.createIcon( t.icon + " red", "warning", e.uuid, p + "no_require_update_warning" ) ), o.appendChild( n )
}
r.appendChild( s ), r.appendChild( o ), l.appendChild( r )
}
} );
const h = i( "tr", "external_desc_buttons", e.uuid, d.url, "tr" + p ),
f = i( "td", "", e.uuid, "buttons", "td" + p );
if ( h.appendChild( f ), l.appendChild( h ), d.ts ) {
if ( "requires" == t || d.editable ) {
const t = s( "span", e.uuid, "edit_external" + p ),
r = L.createImageTextButton( e.uuid, "edit_external" + p, o.I18N.getMessage( "Edit" ), "edit", () => {
Fe( n, e.uuid, d, a )
} );
t.appendChild( r ), f.appendChild( t )
}
const r = s( "span", e.uuid, "delete_external" + p ),
i = L.createImageTextButton( e.uuid, "delete_external" + p, o.I18N.getMessage( "Delete" ), "delete", () => {
( ( e, t ) => {
try {
se(), sendMessage( {
method: "buttonPress",
name: "externals_delete",
scriptuid: e,
safe_url: t
}, e => {
K(), ne(), e.items ? le( e.items, !1 ) : u()
} )
} catch ( e ) {
console.log( "dEx: " + e.message )
}
} )( e.uuid, d.url ), i.parentNode && i.parentNode.removeChild( i )
} );
r.appendChild( i ), f.appendChild( r )
}
c++
} ), !c ) {
const t = i( "tr", "script_desc", e.uuid, c, "tr" ),
n = i( "td", "script_desc", e.uuid, c, "td1" );
n.textContent = o.I18N.getMessage( "No_entry_found" ), t.appendChild( n ), l.appendChild( t )
}
return l
},
Fe = ( e, t, n, r ) => {
const i = "externals-" + t + "-" + n.url;
y[ i ] = {};
const s = De( {
uuid: i,
script_uuid: t,
mimetype: n.mimetype,
name: o.I18N.getMessage( "Externals" ) + " - " + n.url,
file_url: n.url,
referrer: "options.scripts.userscripts"
}, e, () => {
r( s.getEditor() )
}, () => {
delete a[ "tab" + i ], delete a[ "editor" + i ], delete y[ i ]
} );
s.show()
},
je = ( e, n, l ) => {
const c = i( "tr", "editor_container p100100", e.uuid, "container" ),
A = l.mimetype || "text/javascript",
p = !A || /(application|text)\/(?:x-)?(?:java|ecma)script/.test( A );
if ( !e.nnew && E( e.uuid, "lastI" ) ) return a[ "editor" + e.uuid ] || {};
e.nnew && ( e.code = ( e => {
const t = ve.url ? k.a.Base64.decode( ve.url ) : null;
return e.replace( "<$URL$>", t || "http://*/*" ).replace( "<$ICON$>", t ? Ue( b.default.parse( t ).domain )[ 0 ] : f.a.images.empty )
} )( t.script_templates[ 0 ].value ) );
const h = s( "div", e.uuid, "script_editor_h" ),
m = h.inserted,
_ = s( "div", e.uuid, "script_editor_c" ),
v = i( "tr", "editormenubar", e.uuid, "container_menu" ),
w = i( "tr", "editorbuttonbar", e.uuid, "container_button_menu" ),
R = i( "table", "editor_container_o p100100 noborder", e.uuid, "container_o" );
R.appendChild( w ), R.appendChild( v ), R.appendChild( c ), _.appendChild( R );
const C = () => {
let n = !1;
return c.editor && ( t.editor_enabled ? n |= c.editor.changed && c.editor.mirror.historySize().undo : n = c.editor.value != e.code ), n
},
I = () => {
H.commands.trimTrailingSpacesIfEnabled( c.editor.mirror ), E( e.uuid, "saveEm" )
},
M = ( e, t, n ) => {
l.do_close && l.do_close( t, n )
},
G = n => {
( n || confirm( o.I18N.getMessage( "Really_reset_all_changes_" ) ) ) && c.editor && ( t.editor_enabled ? ( c.editor.mirror.setValue( e.code ), Z( !1 ) ) : c.editor.value = e.code )
},
Z = e => {
c.editor.changed != e && ( l.set_tab_class && l.set_tab_class( "modified", e ), q.toggleClass( "modified", e ) ), c.editor.changed = e
},
T = i( "td", "", e.uuid, "editor_buttonmenu_td" );
w.appendChild( T );
const N = i( "ul", "editormenu", e.uuid, "editormenu" ),
S = i( "td", "", e.uuid, "editormenu_td" );
let U, B;
S.appendChild( N );
const O = ( e, t ) => {
let n, r;
e && ( n = $( e ), r = !!t && n.hasClass( "visible" ) ), $( "ul.editormenu .submenu" ).removeClass( "visible" ), e ? ( n.toggleClass( "visible", !r ), B = r ? null : e ) : B = null, e && r || ( U = e => {
let t;
U && ( t = $( e.target ) ) && !t.closest( ".editormenu" ).length && ( O(), document.body.removeEventListener( "click", U ), U = null )
}, document.body.addEventListener( "click", U ) )
},
F = ( t, n ) => {
const r = i( "li", "entry", e.uuid, t, "editormenuentry", !0 ),
o = s( "label", e.uuid, t, "editormenulabel_id" );
o.textContent = n;
const a = i( "table", "submenu noborder", e.uuid, "editormenucontent" + t );
return r.appendChild( [ o, a ] ), r.addEventListener( "click", e => {
$( e.target ).closest( ".entry" ).hasClass( "list" ) || O( a, !0 )
} ),
r.addEventListener( "mousemove", ( function () {
B && B != this && O( a )
} ) ), {
elem: r,
content: a
}
},
j = e => () => {
c.editor.mirror.focus(), c.editor.mirror.execCommand( e )
},
D = {
file: {
text: o.I18N.getMessage( "File" ),
entries: [ {
text: o.I18N.getMessage( "Save" ),
command: "save",
image: Q.get( "filesave" ),
cb: I
}, {
text: o.I18N.getMessage( "Save_to_disk" ),
command: "save_to_disk",
image: Q.get( "save_to_disk" ),
cb: () => {
E( e.uuid, "saveToDisk" )
}
}, {
type: "sep"
}, {
command: "cancel",
text: o.I18N.getMessage( "Editor_reset" ),
image: Q.get( "editor_cancel" ),
cb: G
} ].concat( e.nnew || e.is_external ? [] : [ {
text: o.I18N.getMessage( "Check_for_Updates" ),
command: "update",
image: Q.get( "update" ),
disabled: ( !e.options.check_for_updates || !e.file_url || "none" == e.file_url ) && o.I18N.getMessage( "Update_check_is_disabled" ),
cb: () => {
C() && !confirm( o.I18N.getMessage( "Really_reset_all_changes_" ) ) || ( G( !0 ), E( e.uuid, "scriptUpdate" ) )
}
}, {
text: o.I18N.getMessage( "Remove" ),
command: "remove",
image: Q.get( "delete" ),
cb: () => {
M( 0, !0, !1 ), y[ e.uuid ].deleteScript()
}
} ] ).concat( [ {
type: "sep"
}, {
text: o.I18N.getMessage( "Close" ),
command: "close",
image: Q.get( "exit" ),
cb: M
} ] )
},
edit: {
text: o.I18N.getMessage( "Edit" ),
entries: [ {
text: o.I18N.getMessage( "Undo" ),
command: "undo"
}, {
text: o.I18N.getMessage( "Redo" ),
command: "redo"
}, {
type: "sep"
}, {
text: o.I18N.getMessage( "Select_All" ),
command: "selectAll"
}, {
type: "sep"
}, {
text: o.I18N.getMessage( "Toggle_Comment" ),
command: "toggleComment"
}, {
text: o.I18N.getMessage( "Toggle_Comment_Indented" ),
command: "toggleCommentIndented"
}, {
text: o.I18N.getMessage( "Toggle_Block_Comment" ),
command: "toggleBlockComment",
modes: [ "js" ]
}, {
type: "sep"
}, {
id: "edit_lines",
text: o.I18N.getMessage( "Lines_Menu" ),
modes: [ "js" ],
entries: [ {
text: o.I18N.getMessage( "Indent" ),
command: "intelligentTab"
}, {
text: o.I18N.getMessage( "Indent_Less" ),
command: "indentLess"
}, {
text: o.I18N.getMessage( "Indent_More" ),
command: "indentMore"
}, {
text: o.I18N.getMessage( "Auto_Indent_all" ),
command: "reindentall"
}, {
type: "sep"
}, {
text: o.I18N.getMessage( "Move_Line_Up" ),
command: "swapLineUp"
}, {
text: o.I18N.getMessage( "Move_Line_Down" ),
command: "swapLineDown"
}, {
text: o.I18N.getMessage( "Duplicate_Lines" ),
command: "duplicateLine"
}, {
text: o.I18N.getMessage( "Delete_Line" ),
command: "deleteLine"
}, {
text: o.I18N.getMessage( "Join_Lines" ),
command: "joinLines"
}, {
type: "sep"
}, {
text: o.I18N.getMessage( "Insert_Line_Before" ),
command: "insertLineBefore"
}, {
text: o.I18N.getMessage( "Insert_Line_After" ),
command: "insertLineAfter"
} ]
}, {
id: "edit_text",
text: o.I18N.getMessage( "Text" ),
entries: [ {
text: o.I18N.getMessage( "Upper_Case" ),
command: "upcaseAtCursor"
}, {
text: o.I18N.getMessage( "Lower_Case" ),
command: "downcaseAtCursor"
}, {
type: "sep"
}, {
text: o.I18N.getMessage( "Delete_Line_Left" ),
command: "delLineLeft"
}, {
text: o.I18N.getMessage( "Delete_Line_Right" ),
command: "delLineRight"
}, {
text: o.I18N.getMessage( "Delete_to_Previous_Word_Boundary" ),
command: "delGroupBefore"
}, {
text: o.I18N.getMessage( "Delete_to_Next_Word_Boundary" ),
command: "delGroupAfter"
}, {
text: o.I18N.getMessage( "Delete_Line" ),
command: "deleteLine"
}, {
type: "sep"
}, {
text: o.I18N.getMessage( "Transpose" ),
command: "transposeChars"
} ]
}, {
id: "edit_sort",
text: o.I18N.getMessage( "Sort" ),
entries: [ {
text: o.I18N.getMessage( "Lines" ),
command: "sortLines"
}, {
text: o.I18N.getMessage( "Line_Case_Insensitive" ),
command: "sortLinesInsensitive"
} ]
}, {
id: "edit_folding",
text: o.I18N.getMessage( "Folding" ),
entries: [ {
text: o.I18N.getMessage( "Fold" ),
command: "fold"
}, {
text: o.I18N.getMessage( "Unfold" ),
command: "unfold"
}, {
text: o.I18N.getMessage( "Fold_All" ),
command: "foldAll"
}, {
text: o.I18N.getMessage( "Unfold_All" ),
command: "unfoldAll"
} ]
}, {
id: "edit_sublime_mark",
text: o.I18N.getMessage( "Sublime_Mark" ),
entries: [ {
text: o.I18N.getMessage( "Set_Sublime_Mark" ),
command: "setSublimeMark"
}, {
text: o.I18N.getMessage( "Select_to_Sublime_Mark" ),
command: "selectToSublimeMark"
}, {
text: o.I18N.getMessage( "Swap_with_Sublime_Mark" ),
command: "swapWithSublimeMark"
}, {
text: o.I18N.getMessage( "Delete_to_Sublime_Mark" ),
command: "deleteToSublimeMark"
}, {
text: o.I18N.getMessage( "Yank_Sublime_Mark" ),
command: "sublimeYank"
} ]
} ]
},
selection: {
text: o.I18N.getMessage( "Selection" ),
entries: [ {
text: o.I18N.getMessage( "Incremental_Find" ),
command: "selectMatchingPartsOfCurrentSelection"
}, {
text: o.I18N.getMessage( "Split_into_Lines" ),
command: "splitSelection"
}, {
type: "sep"
}, {
text: o.I18N.getMessage( "Incremental_Find" ),
command: "selectMatchingPartsOfCurrentSelection"
}, {
type: "sep"
}, {
text: o.I18N.getMessage( "Select_Line" ),
command: "selectLine"
}, {
text: o.I18N.getMessage( "Select_Scope" ),
command: "selectScope"
}, {
text: o.I18N.getMessage( "Select_Bookmarks" ),
command: "selectBookmarks"
}, {
text: o.I18N.getMessage( "Select_between_Brackets" ),
command: "selectBetweenBrackets"
}, {
text: o.I18N.getMessage( "Select_Next_Occurrence" ),
command: "selectNextOccurrence"
} ]
},
find: {
text: o.I18N.getMessage( "Find" ),
entries: [ {
text: o.I18N.getMessage( "Find" ),
command: "find"
}, {
text: o.I18N.getMessage( "Replace" ),
command: "replace"
}, {
text: o.I18N.getMessage( "Replace_All" ),
command: "replaceAll"
}, {
type: "sep"
}, {
text: o.I18N.getMessage( "Find_Next" ),
command: "findNext"
}, {
text: o.I18N.getMessage( "Find_Previous" ),
command: "findPrev"
}, {
text: o.I18N.getMessage( "Find_Under" ),
command: "findUnder"
}, {
text: o.I18N.getMessage( "Find_All_Under" ),
command: "findAllUnder"
}, {
text: o.I18N.getMessage( "Find_Under_Previous" ),
command: "findUnderPrevious"
}, {
type: "sep"
}, {
text: o.I18N.getMessage( "Incremental_Find" ),
command: "selectMatchingPartsOfCurrentSelection"
} ]
},
goto: {
text: o.I18N.getMessage( "GoTo" ),
entries: [ {
text: o.I18N.getMessage( "Jump_to_line" ),
command: "jump"
}, {
text: o.I18N.getMessage( "Document_Start" ),
command: "goDocStart"
}, {
text: o.I18N.getMessage( "Document_End" ),
command: "goDocEnd"
}, {
text: o.I18N.getMessage( "Group_Left" ),
command: "goGroupLeft"
}, {
text: o.I18N.getMessage( "Group_Right" ),
command: "goGroupRight"
}, {
text: o.I18N.getMessage( "Closing_Bracket" ),
command: "goToBracket"
}, {
text: o.I18N.getMessage( "Line_Up" ),
command: "goLineUp"
}, {
text: o.I18N.getMessage( "Line_Down" ),
command: "goLineDown"
}, {
type: "sep"
}, {
text: o.I18N.getMessage( "Center_Cursor" ),
command: "showInCenter"
}, {
type: "sep"
}, {
id: "bookmarks",
text: o.I18N.getMessage( "Bookmarks" ),
entries: [ {
text: o.I18N.getMessage( "Toggle" ),
command: "toggleBookmark"
}, {
text: o.I18N.getMessage( "Clear_All" ),
command: "clearBookmarks"
}, {
type: "sep"
}, {
text: o.I18N.getMessage( "Next_Bookmark" ),
command: "nextBookmark"
}, {
text: o.I18N.getMessage( "Prev_Bookmark" ),
command: "prevBookmark"
} ]
} ]
},
dev: {
text: o.I18N.getMessage( "Developer" ),
entries: [ {
command: "macro",
text: o.I18N.getMessage( "Insert_constructor" ),
modes: [ "js" ]
} ].concat( !e.system && t.editor_enabled && p ? [ {
type: "sep"
}, {
text: o.I18N.getMessage( "Run_syntax_check" ),
command: "lint_script",
image: Q.get( "check" ),
cb: () => {
window.setTimeout( () => {
let e;
t.editor_enabled && ( e = c.editor ) && ( d(), window.setTimeout( () => {
( () => {
const t = e.mirror.performLint( !0 );
return t && t.then ? t : g.Deferred.Pledge( t )
} )().then( () => {
const t = e.mirror.state.lint ? e.mirror.state.lint.marked : null;
if ( t && t.length ) {
1 === t.length ? ie( o.I18N.getMessage( "One_error_or_hint_was_found_" ) ) : ie( o.I18N.getMessage( "0count0_errors_or_hints_were_found_", t.length ) );
for ( let n, r = 0; n = t[ r ]; r++ ) {
let t, r, i;
if ( void 0 !== n.line && void 0 !== n.column ? ( r = n.line, i = n.column ) : n.lines && n.lines.length && ( t = n.lines[ 0 ], r = t.lineNo() + 1, i = t.markedSpans && t.markedSpans.length ? t.markedSpans[ 0 ].from + 1 : 1 ), r && i ) {
e.mirror.setCursor( r - 1, i - 1 ), e.mirror.focus();
break
}
}
} else re( o.I18N.getMessage( "No_syntax_errors_were_found_" ) );
u()
} )
}, 100 ) )
}, 0 )
}
}, {
text: o.I18N.getMessage( "Auto_Indent_all" ),
command: "reindentall"
} ] : [] ).concat( e.nnew || e.is_external ? [] : [ {
type: "sep"
}, {
text: o.I18N.getMessage( "Full_reset" ),
command: "reset",
image: Q.get( "script_cancel" ),
cb: () => {
confirm( o.I18N.getMessage( "Really_factory_reset_this_script_" ) ) && y[ e.uuid ].fullReset( e => {
e.cleaned && M( 0, !0, !1 )
} )
}
} ] ).concat( e.nnew ? [ {
type: "sep"
}, {
id: "templates",
text: o.I18N.getMessage( "Templates" ),
entries: t.script_templates.map( e => ( {
text: e.name,
command: e.name,
image: Q.get( "dot" ),
cb: function () {
if ( C() && !confirm( o.I18N.getMessage( "Really_reset_all_changes_" ) ) ) return;
const n = e.value;
c.editor && ( t.editor_enabled ? ( c.editor.mirror.setValue( n ), Z( !1 ) ) : c.editor.value = n )
}
} ) )
} ] : [] )
}
},
P = ( e, t ) => {
const n = t[ 0 ];
let r, i;
return ( r = e[ n ] ) ? P( r, t.slice( 1 ) ) : ( e.entries && e.entries.some( e => e.command == n ? ( i = e, !0 ) : !( !e.entries || !( i = P( e, t ) ) ) || void 0 ), i )
};
[ "file.save_to_disk", "file.save", "file.cancel", "dev.reset", "find.findNext", "find.findPrev", "edit.replace", "goto.jump", "edit.reindentall", "dev.lint_script", "file.close" ].forEach( t => {
const n = P( D, t.split( "." ) );
n && ( n.image ? T.appendChild( L.createImageButton( e.uuid, n.id || n.command, n.text, n.image, n.cb || j( n.command ) ) ) : T.appendChild( L.createButton( n.id || n.command, e.uuid, n.text, n.cb || j( n.command ) ) ) )
} );
const z = ( e, n ) => {
const r = n || H.keyMap[ t.editor_keyMap ];
let i, s;
return Object.keys( r ).every( t => r[ t ] != e || ( i = t, !1 ) ), i || ( r.fallthrough && ( s = H.keyMap[ r.fallthrough ] ) && s !== r ? z( e, s ) : void 0 )
},
V = ( t, n ) => n.map( ( n, r ) => {
if ( n.modes && !n.modes.includes( p ? "js" : "other" ) );
else {
if ( "sep" == n.type ) return ( t => {
const n = i( "tr", "entry sep", e.uuid, "editorsubmenusep_tr" + t ),
r = s( "td", e.uuid, "editorsubmenusep_td" + t ),
o = s( "hr", e.uuid, "editorsubmenusep" + t );
return r.setAttribute( "colspan", 4 ), n.appendChild( r ), r.appendChild( o ), n
} )( t + r );
if ( n.command ) return ( ( t, n, r, o, a, l, c, A ) => {
const d = l || H.commands.hasOwnProperty( n ),
u = i( "tr", "entry " + ( !c && d ? "" : "disabled" ), e.uuid, t, "editorsubmenuentry_tr", !0 );
let p;
p = i( "i", o ? "far fa-" + o : "far", e.uuid, t, "editorsubmenuentry_i", !0 );
const h = s( "td", e.uuid, "editorsubmenuentry_td_i" + t );
h.appendChild( p );
const f = i( "td", "label", e.uuid, "editorsubmenuentry_td_l" + t );
f.textContent = r;
const g = i( "td", "shortcut", e.uuid, "editorsubmenuentry_td_m" + t );
return g.setAttribute( "colspan", 2 ), a && ( g.textContent = a ), u.appendChild( [ h, f, g ] ),
c ? "string" == typeof c && u.setAttribute( "title", c ) : d && u.addEventListener( "click", A ), u
} )( t + "_" + n.command, n.command, n.text, n.image, z( n.command ), !!n.cb, n.disabled, n.cb || j( n.command ) ); {
const r = t + n.id,
o = ( ( t, n, r ) => {
const o = i( "tr", "entry list", e.uuid, t, "editorsubmenulistentry", !0 );
let a;
a = i( "i", r ? "far fa-" + r : "far", e.uuid, t, "editorsubmenulistentry_i", !0 );
const l = s( "td", e.uuid, "editorsubmenulistentry_td_i" + t );
l.appendChild( a );
const c = i( "td", "label", e.uuid, "editorsubmenulistentry_td_l" + t );
c.textContent = n;
const A = i( "td", e.uuid, "editorsubmenulistentry_td_m" + t ),
d = s( "td", e.uuid, "editorsubmenulistentry_td_s" + t );
o.appendChild( [ l, c, A, d ] );
const u = i( "span", "submenulist", e.uuid, "editorsubmenulistcontent" + t ),
p = i( "span", "submenumore", e.uuid, "editorsubmenulistmore" + t ),
h = i( "i", "more far fa-caret-right", e.uuid, t, "editorsubmenulistentrymore_i", !0 );
return p.appendChild( [ h, u ] ), d.appendChild( [ h, p ] ), {
elem: o,
content: u
}
} )( r, n.text, n.image ),
a = V( r, n.entries );
if ( a.length > 0 ) return o.content.appendChild( a ), o.elem
}
}
} ).filter( e => e );
Object.keys( D ).forEach( e => {
const t = D[ e ],
n = F( e, t.text ),
r = V( e, t.entries );
r.length > 0 && ( N.appendChild( n.elem ), n.content.appendChild( r ) )
} );
const X = i( "textarea", "editorta", e.uuid, "editor" );
X.setAttribute( "wrap", "off" ), X.setAttribute( "spellcheck", "false" );
const W = i( "td", "editor_outer", e.uuid, "edit" ),
J = i( "div", "editor_100 editor_border", e.uuid, "edit" );
W.appendChild( J ), v.appendChild( S ), c.inserted || ( J.appendChild( X ), c.appendChild( W ) ), y[ e.uuid ].saveToDisk = () => {
if ( !c.editor ) return;
const n = t.editor_enabled ? c.editor.mirror.getValue() : c.editor.value;
return d(), Ge().done( () => {
const t = new Blob( [ n ], {
type: "text/plain"
} );
saveAs( t, Object( r.safeFileName )( e.name + ( e.is_external ? "" : ".user.js" ) ) )
} ).always( () => {
u()
} )
}, e.system || ( e.is_external ? y[ e.uuid ].saveEm = n => {
if ( !c.editor ) return;
const i = t.editor_enabled ? c.editor.mirror.getValue() : c.editor.value;
( ( e, t, n ) => {
const r = Object( g.Deferred )();
try {
n.auto_save || se(), sendMessage( {
method: "saveExternal",
uuid: e,
code: t,
mimetype: n.mimetype,
url: n.url,
auto_save: n.auto_save
}, e => {
n.auto_save || ( ne(), K() ), ( e = e || {} ).items ? le( e.items, !0 ) : u(), r.resolve( e )
} )
} catch ( e ) {
console.log( "sS: " + e.message ), r.reject( {
err: e.message
} )
}
return r.promise()
} )( e.script_uuid, i, {
url: e.file_url,
mimetype: e.mimetype,
auto_save: n && n.auto_save
} ).done( e => {
e.success ? Z( !1 ) : e.aborted || n && n.auto_save || ( e.messages && e.messages.errors && e.messages.errors.length ? Object( r.cAlert )( e.messages.errors.join( "\n" ) ) : Object( r.cAlert )( o.I18N.getMessage( "Unable_to_parse_this_" ) ) )
} )
} : y[ e.uuid ].saveEm = n => {
if ( !c.editor ) return;
let i = !0;
t.showFixedSrc && ( i = confirm( o.I18N.getMessage( "Do_you_really_want_to_store_fixed_code_", o.I18N.getMessage( "Show_fixed_source" ) ) ) );
const s = t.editor_enabled ? c.editor.mirror.getValue() : c.editor.value;
return i && ue( e.uuid, s, {
clean: !1,
new_script: e.nnew,
auto_save: n && n.auto_save,
reload: !0,
lastModTime: y[ e.uuid ].saveEm_lastModTime
} ).done( t => {
t.installed ? e.nnew ? M( 0, !0, !1 ) : ( Z( !1 ),
t.lastModified && ( e.lastModTime = t.lastModified ) ) : t.aborted || n && n.auto_save || ( t.messages && t.messages.errors && t.messages.errors.length ? Object( r.cAlert )( t.messages.errors.join( "\n" ) ) : Object( r.cAlert )( o.I18N.getMessage( "Unable_to_parse_this_" ) ) )
} ), i
} );
const q = n.insertTab( null, l.navid, h, _, e => {
e.then( () => {
we.setSub( l.navid ), l.on_tab_select && l.on_tab_select()
} )
}, l.on_tab_close );
if ( q.setHeading( l.tab_name || o.I18N.getMessage( "Editor" ), 50 ), we.registerListener( e.uuid, l.navid, () => {
q.select(),
t.editor_enabled && c.editor && ( c.editor.refresh(), c.editor.mirror.focus() )
} ), m ) return a[ "editor" + e.uuid ];
const ee = ( e, t, n, r ) => {
e = r.getValue();
const i = r.getHelper( H.Pos( 0, 0 ), "lint" )( e, n, r );
if ( i && i.then ) return i.then( t );
t( i )
},
te = e => {
pe( "editor_theme", e, !0 ).done( () => {
re( "Theme switched to " + e )
} )
},
oe = () => {
t.editor_autoSave && C() && E( e.uuid, "saveEm", {
auto_save: !0
} )
},
ae = {
getTab: function () {
return q
},
getEditor: function () {
if ( c.editor ) return t.editor_enabled ? c.editor.mirror : {
save: I
}
},
onShow: () => {
( () => {
const t = Object( g.Deferred )();
return e.referrer && void 0 === e.code ? he( Object( r.copy )( l.tree_opts || {}, {
referrer: e.referrer + "." + l.treeid,
uuid: e.uuid
} ), n => {
n.items ? ( e.code = n.items[ 0 ], t.resolve() ) : t.reject(), u()
} ) : window.setTimeout( t.resolve, 100 ), t.promise()
} )().done( () => {
const n = _.getElementsByTagName( "textarea" );
if ( y[ e.uuid ].lastI = () => e, n.length && !c.editor ) {
const r = n[ 0 ],
i = () => {
c.editor && Z( !!c.editor.mirror.historySize().undo )
};
if ( t.editor_enabled ) {
const n = r.parentNode;
n.removeChild( r ),
c.editor = new Y( n, {
mode: A,
theme: t.editor_theme,
fontSize: t.editor_fontSize,
themeOptions: {
all: f.a.getEditorThemes().map( e => e.value ),
onChange: te
},
value: e.code,
indentUnit: Number( t.editor_indentUnit ),
tabSize: Number( t.editor_tabSize ),
indentWithTabs: "tabs" == t.editor_indentWithTabs,
smartIndent: "classic" != t.editor_tabMode,
indentByTab: "indent" == t.editor_tabMode,
electricChars: "true" == t.editor_electricChars.toString(),
lineNumbers: !0,
lineWrapping: t.editor_lineWrapping,
extraKeys: {
Enter: "newlineAndIndentContinueComment"
},
keyMap: t.editor_keyMap,
bookmarkGutter: !0,
gutters: [ "gutter", "CodeMirror-linenumbers", "CodeMirror-foldgutter", "CodeMirror-lint-markers", "CodeMirror-bookmarks" ],
matchBrackets: !0,
foldGutter: !0,
styleActiveLine: !0,
specifyMoreJsTokens: p,
styleSelectedText: !0,
autoTrimTrailingSpace: "true" == t.editor_trimTrailingSpacesFromModifiedLines.toString(),
highlightSelectionMatches: "off" != t.editor_highlightSelectionMatches ? {
showToken: /\w/,
annotateScrollbar: !0,
cursorOnly: "cursor" == t.editor_highlightSelectionMatches
} : void 0,
hintOptions: p ? {
keywords: Object.keys( x.a.globals )
} : void 0,
lint: p ? {
lintOnChange: t.editor_autoLint,
autoLintMaxLen: t.editor_autoLintMaxLen,
async: !0,
getAnnotations: ee,
hint_config: t.editor_linter_config || x.a.config
} : void 0,
showTrailingSpace: t.editor_highlightTrailingWhitespace
}, o.I18N.getMessage, {
save: I,
close: M
}, {
change: i,
blur: oe
} )
} else c.editor = r, r.value = e.code;
l.on_editor_load && l.on_editor_load()
}
} ).fail( () => {
M( 0, !1, !0 )
} )
},
onClose: function ( t ) {
const n = () => {
c.editor = null, delete y[ e.uuid ].lastI
};
if ( !t && C() ) {
const e = confirm( o.I18N.getMessage( "There_are_unsaved_changed_" ) );
return e && n(), !e
}
return n(), !1
}
};
return a[ "editor" + e.uuid ] = ae, ae
},
De = ( e, t, n, r ) => {
let i;
e.is_external = !0;
const s = () => {
i && !o.onClose() && ( r(), i && i.remove(), i = null )
},
o = je( e, t, {
tab_name: e.name,
navid: e.uuid,
treeid: "external",
mimetype: e.mimetype,
tree_opts: {
url: e.file_url,
uuid: e.script_uuid
},
do_close: function () {
window.setTimeout( s, 100 )
},
on_tab_close: s,
on_tab_select: n,
on_editor_load: n
} );
return i = o.getTab(), o.show = () => {
o.onShow(), i.select()
}, o
},
Le = e => {
y[ e.uuid ] || ( y[ e.uuid ] = {} );
const t = ( t, n, r, s ) => {
const o = i( "dt", " " + ( s || "" ), e.name, e.uuid, "dt_mapping" + n ),
a = i( "dd", " " + ( s || "" ), e.name, e.uuid, "dd_mapping" + n );
o.textContent = n, "string" == typeof r ? ( a.textContent = r, a.setAttribute( "title", r ) ) : a.appendChild( r ), t.appendChild( [ o, a ] )
},
n = i( "dl", "trash_script_details", e.name, e.uuid, "script_details_dl" ),
r = e.icon,
s = i( "span", "name", e.uuid, "sname" ),
a = i( r ? "img" : "span", "nameNicon16 icon16 " + ( r ? "nameNicon16" : "nameNOicon16" ), e.uuid, "sname_img" ),
l = i( "span", "nameNname16", e.uuid, "sname_name" ),
c = o.I18N.getTranslation( e, "name" );
l.textContent = c, r && ( a.src = e.icon, s.appendChild( a ) ), s.appendChild( l ), t( n, o.I18N.getMessage( "Name" ), s ), t( n, o.I18N.getMessage( "Version" ), e.version || "" ),
t( n, o.I18N.getMessage( "Deleted_on" ), new Date( e.deleted ).toISOString().split( "T" )[ 0 ] );
const A = L.createButton( "restore", e.uuid + "_restore", o.I18N.getMessage( "Restore" ), () => {
ue( e.uuid, null, {
reload: !0,
restore: !0
} ), n.parentNode.removeChild( n )
} ),
d = y[ e.uuid ].purgeScript = ( t, r ) => {
1 == ( r || confirm( o.I18N.getMessage( "Really_delete_0name0__", e.name ) ) ) && ( ( e => {
const t = Object( g.Deferred )();
try {
se(), sendMessage( {
method: "purgeScript",
uuid: e
}, e => {
K(), e.items ? ( ne(), le( e.items, !1 ) ) : u(), t.resolve( e )
} )
} catch ( e ) {
console.log( "sO: " + e.message ), t.reject( {
err: e.message
} )
}
t.promise()
} )( e.uuid ), n.parentNode.removeChild( n ) )
},
p = L.createButton( "delete", e.uuid + "_delete", o.I18N.getMessage( "Delete" ), d ),
h = i( "span", "", e.uuid, "actions" );
return h.appendChild( [ A, p ] ), t( n, o.I18N.getMessage( "Actions" ), h, "actions" ), [ n ]
},
Pe = ( e, l, A ) => {
let p, h;
y[ e.uuid ] || ( y[ e.uuid ] = {} );
const f = e.icon,
m = [];
m.push( "clickable" ), ( e.blacklisted || e.foisted ) && m.push( "crossedout" );
const _ = i( "span", m.join( " " ), e.uuid, "sname" ),
b = i( f ? "img" : "span", "nameNicon16 icon16 " + ( f ? "nameNicon16" : "nameNOicon16" ), e.uuid, "sname_img" ),
w = i( "span", "nameNname16 " + ( e.enabled ? "" : "greyed" ), e.uuid, "sname_name" );
_.appendChild( b );
const k = Se( e ),
R = o.I18N.getTranslation( e, "name" );
w.textContent = R;
const x = s( "span", e.uuid, "spos" );
x.textContent = e.position || "";
const C = s( "span", e.uuid, "sversion" );
C.textContent = e.version ? e.version : "", f && ( b.src = e.icon );
const I = [],
M = ( e, t, n ) => {
const s = i( "span", n || "", e.uuid, "wrap" );
return t && ( "Array" === Object( r.toType )( t ) ? Object( r.each )( t, e => {
s.appendChild( e )
} ) : s.appendChild( t ) ), s
},
G = ( t, n ) => {
void 0 === n && ( n = !t ), h && h.onClose && h.onClose( t ) || ( e.uuid && we.is( e.uuid ) && we.clear(), p && ( p.remove(), p = null ), delete a[ "tab" + e.uuid ], delete a[ "editor" + e.uuid ], _.parentNode && _.parentNode.removeChild( _ ), n && window.setTimeout( () => {
const t = Object.keys( c );
for ( let n, r = 0; n = t[ r ]; r++ ) {
const t = c[ n ].script;
if ( t.uuid == e.uuid ) {
Ce( l, [ t ], null, A );
break
}
}
ye()
}, 0 ) )
},
Z = e => {
h && h.onSelect && h.onSelect( e )
},
T = () => {
let n = null;
e.nnew ? ( n = i( "div", "head_icon", e.uuid, "details_h" ), n.appendChild( L.createIcon( e.image_id, "", e.uuid, "new_script_head" ) ) ) : n = s( "div", e.uuid, "details_h" );
const l = s( "div", e.uuid, "details_c" );
if ( p = A.insertTab( null, e.uuid, n, l, Z, e.nnew ? null : G ), !e.nnew ) {
let t;
t = e.version ? " " + e.version : "";
const n = o.I18N.getMessage( "Edit" ) + " - " + o.I18N.getTranslation( e, "name" ) + t;
p.setHeading( n, 50 )
}
h = ( ( e, n, l, c, A ) => {
const p = s( "div", n.uuid, "script_tab_head" ),
h = p.inserted,
f = i( "table", "noborder p100100 heading", n.uuid, "h_table" ),
m = i( "tr", "", n.uuid, "h_tr1" ),
_ = i( "td", "nameNicon64", n.uuid, "h_td1" ),
b = i( "td", "", n.uuid, "h_td2" );
f.appendChild( m ), m.appendChild( _ ), m.appendChild( b ), b.setAttribute( "style", "width: 99%" );
const v = s( "img", n.uuid, "heading_icon" ),
w = n.icon64 ? n.icon64 : n.icon;
v.src = w;
const k = i( "div", "nameNname64", n.uuid, "heading_name" );
k.textContent = o.I18N.getTranslation( n, "name" ), w && _.appendChild( v ),
b.appendChild( k );
const y = i( "div", "author", n.uuid, "author" );
n.author ? y.textContent = "by " + n.author : n.copyright && ( y.innerHTML = "&copy; ", y.textContent += n.copyright ), b.appendChild( y );
const R = i( "table", "noborder p100100", n.uuid, "table" ),
x = i( "tr", "script_tab_head", n.uuid, "tr1" ),
C = i( "tr", "details", n.uuid, "tr2" ),
E = i( "td", "", n.uuid, "td1" ),
I = i( "td", "", n.uuid, "td2" );
p.appendChild( f ), E.appendChild( p ), x.appendChild( E ), C.appendChild( I ), R.appendChild( x ), R.appendChild( C ), c.appendChild( R );
const M = z( "_details" + n.uuid, I, {
tv: "tv tv_alt",
tv_table: "tv_table tv_table_alt",
tr_tabs: "tr_tabs tr_tabs_alt",
tr_content: "tr_content tr_content_alt",
td_content: "td_content td_content_alt",
td_tabs: "td_tabs td_tabs_alt",
tv_tabs_align: "tv_tabs_align tv_tabs_align_alt",
tv_tabs_fill: "tv_tabs_fill tv_tabs_fill_alt",
tv_tabs_table: "tv_tabs_table tv_tabs_table_alt",
tv_contents: "tv_contents tv_contents_alt",
tv_tab_selected: "tv_tab tv_selected tv_tab_alt tv_selected_alt",
tv_tab_close: "tv_tab_close",
tv_tab: "tv_tab tv_tab_alt",
tv_content: "tv_content tv_content_alt"
}, !0 ),
G = ( ( e, t, n, r ) => je( e, t, {
do_close: r,
set_tab_class: n,
navid: "editor",
treeid: "source"
} ) )( n, M, ( t, n ) => {
e.toggleClass( t, n )
}, A ),
Z = n.nnew || n.system ? {} : Be( n, M ),
T = n.nnew || n.system || !n.storage_key_count || t.configMode < 80 ? {} : ( ( e, t ) => {
const n = s( "div", "", e.uuid, "script_storage_h" );
n.textContent = o.I18N.getMessage( "Storage" );
const a = s( "div", "", e.uuid, "script_storages_c" ),
l = i( "div", "section", e.uuid, "ta_storage" ),
c = i( "div", "section_head", e.uuid, "head_ta_storage" ),
A = i( "div", "section_content", e.uuid, "content_ta_storage" );
let p;
c.textContent = o.I18N.getMessage( "Storage" ), l.appendChild( c ), l.appendChild( A );
const h = i( "textarea", "storageta", e.uuid, "storage" );
h.setAttribute( "wrap", "off" ), h.setAttribute( "spellcheck", "false" ), h.addEventListener( "change", () => p = !0 );
const f = L.createButton( "storage_save_button", e.uuid, o.I18N.getMessage( "Save" ), () => {
let t = null;
try {
t = JSON.parse( h.value )
} catch ( e ) {
return void Object( r.cAlert )( o.I18N.getMessage( "Unable_to_parse_this_" ) )
}
const n = Object.keys( t ),
i = Object.keys( e.storage );
n.concat( i ).filter( ( e, t, n ) => n.lastIndexOf( e ) === t ).forEach( r => {
n.includes( r ) ? i.includes( r ) && t[ r ] === e.storage[ r ] || me( e.uuid, r, ( e => {
const t = ( typeof e )[ 0 ];
switch ( t ) {
case "o":
try {
e = t + JSON.stringify( e )
} catch ( e ) {
return void console.log( e )
}
break;
default:
e = t + e
}
return e
} )( t[ r ] ) ) : me( e.uuid, r )
} )
} ),
m = L.createButton( "storage_reload_button", e.uuid, o.I18N.getMessage( "Reload" ), () => {
p && !confirm( o.I18N.getMessage( "Really_reset_all_changes_" ) ) || ( d(), _( !0 ).always( () => {
window.setTimeout( u, 500 ), ne()
} ) )
} ),
_ = t => ( h.setAttribute( "disabled", "disabled" ), ( () => {
if ( e.referrer && void 0 === e.storage ) {
const t = Object( g.Deferred )();
return he( {
referrer: e.referrer + ".storage",
uuid: e.uuid
}, e => {
if ( e.items ) {
const n = {},
r = e.items[ 0 ];
Object.keys( r ).forEach( e => {
n[ e ] = ( ( e, t ) => {
if ( "string" != typeof e ) return t; {
const n = e[ 0 ];
switch ( e = e.substr( 1 ), n ) {
case "b":
return "true" === e;
case "n":
return Number( e );
case "o":
try {
return JSON.parse( e )
} catch ( e ) {
console.log( "values: parseValueFromStorage: " + e )
}
return t;
default:
return e
}
}
} )( r[ e ] )
} ), t.resolve( n )
} else t.reject();
u()
} ), t.promise()
}
return g.Deferred.Pledge( e.storage )
} )().done( n => {
!t && h.value || ( h.value = JSON.stringify( n, null, 4 ), p = !1 ), e.storage = n, h.removeAttribute( "disabled" )
} ).fail( () => {
h.setAttribute( "disabled", !0 )
} ) );
A.appendChild( h ), A.appendChild( f ), A.appendChild( m ), a.appendChild( l );
const b = t.appendTab( "storage", n, a, e => {
e.then( () => {
we.setSub( "storage" )
} )
} );
return we.registerListener( e.uuid, "storage", () => {
_(), b.select()
} ), {}
} )( n, M ),
N = n.nnew || n.system || !n.requires.length && !n.resources.length ? {} : ( ( e, t ) => {
let n;
const r = e => {
n = e
},
a = s( "div", "", e.uuid, "script_external_h" );
a.textContent = o.I18N.getMessage( "Externals" );
const l = s( "div", "", e.uuid, "script_externals_c" ),
c = i( "div", "section", e.uuid, "ta_requires" ),
A = i( "div", "section_head", e.uuid, "head_ta_requires" ),
d = i( "div", "section_content", e.uuid, "content_ta_requires" );
A.textContent = o.I18N.getMessage( "Requires" ), c.appendChild( A ), c.appendChild( d ), d.appendChild( Oe( e, "requires", t, r ) );
const u = i( "div", "section", e.uuid, "ta_resources" ),
p = i( "div", "section_head", e.uuid, "head_ta_resources" ),
h = i( "div", "section_content", e.uuid, "content_ta_resources" );
p.textContent = o.I18N.getMessage( "Resources" ), u.appendChild( p ), u.appendChild( h ), h.appendChild( Oe( e, "resources", t, r ) ), l.appendChild( c ), l.appendChild( u );
const f = t.appendTab( "externals", a, l, e => {
e.then( () => {
we.setSub( "externals" )
} )
} );
return we.registerListener( e.uuid, "externals", () => {
f.select()
} ), {
getEditor: function () {
return n
}
}
} )( n, M );
if ( h ) return a[ "tab" + n.uuid ];
const S = () => {
let e;
return ( e = M.getSelectedTab() ) && e.isCloseable() ? N.getEditor() : G.getEditor()
},
U = n => {
let r = !1;
if ( "keydown" == n.type && e.isSelected() && !n.defaultPrevented ) {
if ( 27 == n.keyCode ) {
if ( !t.editor_enabled || "vim" != t.editor_keyMap ) {
let e;
( e = M.getSelectedTab() ) && e.isCloseable() ? e.close() : window.setTimeout( A, 0 ), r = !0
}
} else if ( t.editor_enabled ) {
const e = {
save: !0,
find: !0,
findNext: !0,
findPrev: !0,
replace: !0,
replaceAll: !0
},
t = S(),
i = H.keyName( n );
t && !t.hasFocus() && "handled" == H.lookupKey( i, t.getOption( "keyMap" ), n => {
if ( e[ n ] ) return t.execCommand( n ), !0
} ) && ( r = !0 )
} else if ( 83 == n.keyCode && ( n.ctrlKey || n.metaKey ) ) {
const e = S();
e && ( e.save(), r = !0 )
}
return r ? ( n.stopPropagation(), n.preventDefault(), !1 ) : void 0
}
},
B = {
onShow: () => {
Object( r.each )( [ Z, G, T, N ], e => {
e.onShow && e.onShow()
} ), window.addEventListener( "keydown", U, !1 )
},
onClose: e => {
let t;
return Object( r.each )( [ Z, G, T, N ], n => {
if ( n.onClose && n.onClose( e ) ) return t = !0, !1
} ), t || window.removeEventListener( "keydown", U, !1 ), t
},
onSelect: e => {
e.then( () => {
if ( n.uuid ) {
const e = we.get().sub,
t = M.getTabById( e );
we.set( n.uuid, ( t ? e : null ) || "editor" ),
document.title = o.I18N.getTranslation( n, "name" )
}
} ), Object( r.each )( [ Z, G, N ], t => {
t.onSelect && t.onSelect( e )
} )
}
};
return a[ "tab" + n.uuid ] = B, B
} )( p, e, 0, l, G )
},
N = y[ e.uuid ].scriptClick = ( e, t ) => {
p || T(), h && h.onShow && h.onShow(), p.show(), e && 1 == e.button || t || p.select(), w.setAttribute( "open", "true" )
};
"true" == w.getAttribute( "open" ) && N( null, !0 );
const S = s( "span", "", e.uuid, "last_updated", !0 );
let U = "?";
if ( e.nnew || e.system ) U = "";
else if ( y[ e.uuid ].scriptUpdate = () => {
const t = S.textContent;
S.textContent = "",
S.appendChild( L.createIcon( Q.get( "download" ), "down", e.uuid, "spinner" ) ), ( ( e, t ) => {
try {
sendMessage( {
method: "buttonPress",
name: "run_script_updates",
scriptuid: e
}, e => {
ne(), t && t( e.updatable )
} )
} catch ( e ) {
console.log( "rSu: " + e.message )
}
} )( e.uuid, n => {
S.textContent = t, n ? ( $( S ).addClass( "green" ), S.title = o.I18N.getMessage( "There_is_an_update_for_0name0_avaiable_", e.name ), G( !0 ), fe() ) : ( $( S ).addClass( "red" ), S.title = o.I18N.getMessage( "No_update_found__sry_" ) )
} )
},
e.options.check_for_updates && e.file_url && "none" != e.file_url ? ( S.addEventListener( "click", () => {
E( e.uuid, "scriptUpdate" )
} ), S.setAttribute( "class", "clickable" ), S.title = o.I18N.getMessage( "Check_for_Updates" ) ) : ( S.setAttribute( "class", "greyed italic" ), S.title = o.I18N.getMessage( "Update_check_is_disabled" ) ), e.lastModified || e.lastUpdated ) try {
U = ( ( e, t ) => {
const n = e.getTime(),
r = t.getTime(),
i = Math.abs( n - r ),
s = Math.round( i / 6e4 ),
o = Math.round( i / 36e5 ),
a = Math.round( i / 864e5 );
return s <= 60 ? s + " min" : o <= 48 ? o + " h" : a + " d"
} )( new Date, new Date( e.lastModified || e.lastUpdated ) )
} catch ( e ) {
console.log( "o: error calculating time " + e.message )
}
S.textContent = U;
let B, O = s( "div", e.uuid, "imported" ),
F = "";
n.push( () => {
t.sync_enabled && ( F = e.nnew || e.system ? "" : e.sync && e.sync.imported ? e.sync.imported == v.b.eCHROMESYNC ? V.RUNTIME.FIREFOX ? '<img src="' + Q.brand( "firefox" ) + '" class="icon16" title="Firefox Sync"/>' : '<img src="' + Q.brand( "chrome" ) + '" class="icon16" title="Google Sync"/>' : e.sync.imported == v.b.eGDRIVE ? '<img src="' + Q.brand( "gdrive" ) + '" class="icon16" title="Google Drive"/>' : e.sync.imported == v.b.eDROPBOX ? '<img src="' + Q.brand( "dropbox" ) + '" class="icon16" title="Dropbox"/>' : e.sync.imported == v.b.eWEBDAV ? '<img src="' + Q.brand( "webdav" ) + '" class="icon16" title="WebDAV"/>' : e.sync.imported == v.b.eYANDEX ? '<img src="' + Q.brand( "yandex" ) + '" class="icon16" title="Yandex"/>' : e.sync.imported == v.b.eONEDRIVE ? '<img src="' + Q.brand( "onedrive" ) + '" class="icon16" title="OneDrive"/>' : '<i class="icon16 far fa-' + Q.get( "question_mark" ) + '" />' : "",
O.innerHTML = F, O = null )
} );
const j = s( "span", e.uuid, "hp" );
if ( e.origin ) {
B = s( "a", e.uuid, "hp_origin" ), B.setAttribute( "href", e.origin.url ), B.setAttribute( "target", "_blank" );
const t = L.createImage( Q.origin( e.origin.token ), "", e.uuid, e.origin.token );
B.appendChild( t ), j.appendChild( B )
}
if ( k && ( !e.origin || e.origin.url !== k ) ) {
B = s( "a", e.uuid, "hp_script" ), B.setAttribute( "href", k ), B.setAttribute( "target", "_blank" );
const t = L.createIcon( Q.get( "home" ), "", e.uuid, "homepage", "" );
B.appendChild( t ), j.appendChild( B )
}
y[ e.uuid ].saveEm_lastModTime = e.lastModified, y[ e.uuid ].fullReset = t => {
ue( e.uuid, null, {
clean: !0,
reload: !0
} ).done( t || ( () => {} ) ), l.parentNode.removeChild( l )
}, y[ e.uuid ].reportAnIssue = t => {
( ( e, t ) => {
try {
sendMessage( {
method: "reportAnIssue",
uuid: e,
to: t
}, () => {} )
} catch ( e ) {
console.log( "rRi: " + e.message )
}
} )( e.uuid, t )
}, y[ e.uuid ].deleteScript = ( t, n ) => {
const r = {
reload: !n
};
ue( e.uuid, null, r ), l.parentNode.removeChild( l )
};
const D = [];
if ( !e.nnew && !e.system && e.origin && e.origin.abuse_url ) {
const t = L.createIcon( Q.get( "flag" ), "", e.uuid, "issue", o.I18N.getMessage( "Report_an_issue_to_the_script_hoster_" ), () => {
E( e.uuid, "reportAnIssue", "hoster" )
} );
D.push( t )
}
if ( !e.nnew && !e.system && ( e.origin || e.supportURL ) ) {
const t = L.createIcon( Q.get( "bug" ), "", e.uuid, "bug", o.I18N.getMessage( "Report_a_bug" ), () => {
E( e.uuid, "reportAnIssue", "author" )
} );
D.push( t )
}
if ( !e.nnew && !e.system ) {
if ( e.remote_url ) {
const t = L.createIcon( Q.get( "cloud" ), "", e.uuid, "cloud_edit", o.I18N.getMessage( "Edit" ), () => {
sendMessage( {
method: "newTab",
url: e.remote_url
}, () => {} )
} );
D.push( t )
}
const t = L.createIcon( Q.get( "edit" ), "", e.uuid, "edit", o.I18N.getMessage( "Edit" ), () => {
E( e.uuid, "scriptClick" )
} );
D.push( t )
}
if ( !e.nnew && !e.system ) {
const t = L.createIcon( Q.get( "delete" ), "", e.uuid, "delete", o.I18N.getMessage( "Delete" ), () => {
E( e.uuid, "deleteScript" )
} );
D.push( t )
}
V.RUNTIME.MOBILE ? _.inserted || w.addEventListener( "click", () => {
$( l ).toggleClass( "show_details" )
} ) : _.inserted || ( _.addEventListener( "click", N ), _.addEventListener( "auxclick", N ) ),
_.appendChild( w );
let P = [ e.name ];
if ( e.description && P.push( o.I18N.getTranslation( e, "description" ) ), ( e.blacklisted || e.foisted ) && ( P = [ e.blacklisted || e.foisted ] ), _.title = P.join( "\n\n" ).replace( /\"/g, '"' ), I.push( e.nnew || e.system ? null : {
element: qe( e ),
style: "script_sel"
} ), I.push( x ), I.push( ( () => {
let t = null;
t = e.blacklisted || e.foisted ? "enabler_warning" : e.enabled ? e.contexter ? "enabler_enabled enabler_later" : "enabler_enabled" : "enabler_disabled";
const n = e.blacklisted || e.foisted || ( e.enabled ? o.I18N.getMessage( "Enabled" ) : o.I18N.getMessage( "Disabled" ) ),
r = L.createEnabler( t, e.uuid, "enabled", {
append: "enabled",
disabled: !!e.blacklisted,
title: n
}, () => {
E( e.uuid, "switchEnabled" )
} );
return y[ e.uuid ].switchEnabled = ( t, n, r ) => {
void 0 === n && ( n = !e.enabled ), ge( e.uuid, {
enabled: n,
whitewash: !!e.foisted
}, r )
}, r
} )() ), I.push( {
element: _,
style: "script_name"
} ), V.RUNTIME.MOBILE ) {
const t = ( t, n, r, s ) => {
const o = i( "dt", "script_info " + ( s || "" ), e.name, e.uuid, "dt_mapping" + n ),
a = i( "dd", "script_info " + ( s || "" ), e.name, e.uuid, "dd_mapping" + n );
o.textContent = n, "string" == typeof r ? a.textContent = r : a.appendChild( r ), t.appendChild( [ o, a ] )
},
n = i( "dl", "script_details", e.name, e.uuid, "script_details_dl" );
let r;
_.appendChild( n ), t( n, o.I18N.getMessage( "Version" ), C ), t( n, o.I18N.getMessage( "Type" ), ze( e ), "script_type" ), t( n, o.I18N.getMessage( "Sites" ), Ye( e ) ), ( r = Ve( e ) ) && t( n, o.I18N.getMessage( "Features" ), r ),
k && t( n, o.I18N.getMessage( "Homepage" ), j ), U && t( n, o.I18N.getMessage( "Last_updated" ), S ), I.push( M( e, D, "actions" ) )
} else {
I.push( {
element: C,
style: "script_version"
} ), I.push( ze( e ) ), I.push( O ), I.push( Ye( e ) ), I.push( Ve( e ) ), I.push( j ), I.push( S ), I.push( He( e ) ), I.push( M( e, D, "actions" ) );
for ( let e = I.length; e < 10; e++ ) I.push( null )
}
return we.registerListener( e.uuid, () => {
N()
} ), e.nnew && n.push( () => {
N( null, !0 )
} ), I
},
ze = e => {
let t;
const n = i( "span", "script_type", "", e.uuid, "pos_type", !0 );
return e.nnew || e.userscript && ( t = L.createImage( Q.origin( "uso" ), "", e.uuid, "user_script", o.I18N.getMessage( "This_is_a_userscript" ) ), n.appendChild( t ) ), n
},
Ve = e => {
let t, n, r, i = null;
const a = [];
if ( e.nnew ) return null;
e.system && ( t = L.createIcon( Q.get( "lock" ), "", e.uuid, "lock", o.I18N.getMessage( "This_is_a_system_script" ) ), a.push( t ) ), e.warnings && e.warnings.forEach( ( n, r ) => {
t = L.createIcon( Q.get( "critical" ), "compat", e.uuid, "warning_" + r, n ), $( t ).addClass( "flashing" ), a.push( t )
} ),
e.requires.length && ( r = !e.requires.filter( e => e.modified ).length, t = L.createIcon( Q.get( "script_download" ) + ( r ? "" : " red" ), "", e.uuid, "requires", e.requires.filter( e => e && e.url ).map( e => e.url ).join( "\n" ), () => {
we.set( e.uuid, "externals" )
} ), a.push( t ) ), e.resources.length && ( r = !e.resources.filter( e => e.modified ).length, t = L.createIcon( Q.get( "resources" ) + ( r ? "" : " red" ), "", e.uuid, "resources", e.resources.filter( e => e && e.url ).map( e => e.url ).join( "\n" ), () => {
we.set( e.uuid, "externals" )
} ), a.push( t ) );
let l = !1;
const c = {
includes: !0,
matches: !0
};
for ( n in c )
if ( e[ n ] ) {
for ( let r = 0; r < e[ n ].length; r++ )
if ( e[ n ][ r ] && ( 0 == e[ n ][ r ].search( /\/\^?http(s|\.\*?|s\?|\[[^\]]*s[^\]]*\]|\([^\)]*s[^\)]*\))+/ ) || 0 == e[ n ][ r ].search( /http[s\*]{1,1}|\*/ ) ) ) {
t = L.createIcon( Q.get( "encrypted" ), "", e.uuid, "encrypt", o.I18N.getMessage( "This_script_has_access_to_https_pages" ) ), a.push( t ), l = !0;
break
} if ( l ) break
} const A = {};
for ( n in e.grant.forEach( e => {
A[ e ] = !0
} ),
A.GM_xmlhttpRequest && ( t = L.createIcon( Q.get( "web" ), "", e.uuid, "web", o.I18N.getMessage( "This_script_has_full_web_access" ) ), a.push( t ) ), A.GM_setValue && ( t = L.createIcon( Q.get( "db" ), "", e.uuid, "db", o.I18N.getMessage( "This_script_stores_data" ) ), a.push( t ) ), A.unsafeWindow && ( t = L.createIcon( Q.get( "windowlist" ), "", e.uuid, "unsafeWindow", o.I18N.getMessage( "This_script_has_access_to_webpage_scripts" ) ), a.push( t ) ), e.options )
if ( -1 != n.indexOf( "compat_" ) && e.options[ n ] ) {
t = L.createIcon( Q.get( "critical" ), "compat", e.uuid, "crit", o.I18N.getMessage( "One_or_more_compatibility_options_are_set" ) ), a.push( t );
break
} for ( n in e.antifeatures ) {
const r = e.antifeatures[ n ];
let i;
i = "ads" == n ? o.I18N.getMessage( "Antifeature_ads" ) : "miner" == n ? o.I18N.getMessage( "Antifeature_miner" ) : "tracking" == n ? o.I18N.getMessage( "Antifeature_tracking" ) : o.I18N.getMessage( "Antifeature_other" );
const s = r[ o.I18N.getBestLocale( Object.keys( r ) ) ] || r.default || r.en || o.I18N.getMessage( "Antifeature_no_details" );
t = L.createIcon( Q.get( "about" ), "compat", e.uuid, "crit", o.I18N.getMessage( "Antifeature__0name0__0description0", i, s ) ), a.push( t )
}
return a.length && ( i = s( "span", "", e.uuid, "pos_features", !0 ), i.appendChild( a, !0 ) ), i
},
Qe = ( () => {
let e = null,
t = null,
n = null,
r = 0,
i = 0,
s = 0;
const o = t => {
const r = n.x + t.pageX,
i = n.y + t.pageY;
e.style.top = i + "px", e.style.left = r + "px"
};
let a, l, c;
const A = n => {
if ( e && !a ) {
let e, u, p, h, f, g = null;
for ( o( n ), l && ( window.clearTimeout( l ), l = null ); g != s; ) g = s, u = t.previousSibling, p = t.nextSibling, h = t.parentNode,
f = d( t ), n.pageY > f.y + r + i && p ? ( h.removeChild( p ), h.insertBefore( p, t ), s++, e = !1 ) : n.pageY < f.y && s > 1 && ( h.removeChild( u ), p ? h.insertBefore( u, p ) : h.appendChild( u ), s--, e = !0 );
const m = Math.min( .03 * document.documentElement.clientHeight, 100 );
if ( void 0 !== e ) {
if ( p = e ? $( u ) : $( p ), p.length && !L.isScrolledIntoView( p, {
padding: m
} ) ) {
const t = e ? p.offset().top - m - p.height() : p.offset().top - document.documentElement.clientHeight + m + 2 * p.height();
a = !0;
const r = t - document.body.scrollTop;
$( "html, body" ).animate( {
scrollTop: t
}, 0, () => {
window.setTimeout( () => {
a = !1, l = window.setTimeout( () => {
l = null, c === n && A( {
pageX: c.pageX,
pageY: c.pageY + r
} )
}, 100 )
}, 100 )
} )
}
return n.stopPropagation && ( n.stopPropagation(), n.preventDefault() ), c = n, !1
}
}
},
d = e => {
const t = e.getBoundingClientRect();
return {
x: Math.floor( t.left + window.pageXOffset ),
y: Math.floor( t.top + window.pageYOffset )
}
},
u = r => {
e.style.position = "static";
const i = {};
return i[ e.key ] = s, ge( e.uuid, i ), e = t = n = null, document.removeEventListener( "mousemove", A ), document.removeEventListener( "scroll", A ),
document.removeEventListener( "mouseup", u ), r.stopPropagation(), r.preventDefault(), !1
};
return {
start: function ( a, l ) {
return ( ( s, a ) => {
const l = s.parentNode.parentNode,
c = l.parentNode,
A = c.parentNode.parentNode;
e = s, t = c, r = t.offsetHeight, i = t.offsetHeight - l.clientHeight, n = d( A ), n.x = -n.x - e.offsetWidth / 2, n.y = -n.y - t.offsetHeight / 2 + 2 * i, e.style.position = "absolute", o( a )
} )( this, a ), s = l, document.addEventListener( "mousemove", A ), document.addEventListener( "scroll", A ), document.addEventListener( "mouseup", u ),
a.stopPropagation(), a.preventDefault(), !1
}
}
} )(),
He = e => {
const t = i( "span", "sorting", "", e.uuid, "pos_images", !0 );
if ( e.nnew ) return t;
if ( "pos" == F() && "up" == j() || t.setAttribute( "style", "display: none;" ), e.position > 1 || e.position < e.positionof ) {
const n = i( "span", "clickable movable", "position", e.uuid, !0 );
n.innerHTML = "&#9776;", n.title = o.I18N.getMessage( "Click_here_to_move_this_script" ), n.uuid = e.uuid, n.key = "position", n.addEventListener( "mousedown", ( function ( t ) {
Qe.start.apply( this, [ t, e.position ] )
} ) ),
t.appendChild( n )
}
return t
},
Ye = e => {
let t = s( "span", "", e.uuid, "site_images" ),
n = null;
return t.inserted && ( n = t, n.setAttribute( "id", n.id + "foo" ), t = s( "span", "", e.uuid, "site_images" ) ), J.topIcons( e, 7 ).forEach( e => {
t.appendChild( e, !0 )
} ), n && n.parentNode.removeChild( n ), t
},
Xe = e => {
const t = i( "div", "search_filter", e.name, e.id, "filter" );
if ( t.inserted ) return t;
const s = $( t );
let a, l, A, d = null;
const p = ( e, t ) => {
a && !e || ( d && window.clearTimeout( d ), m.show(), d = window.setTimeout( () => {
_ = null, l = v, A = h.value;
const e = () => l != v || A != h.value,
t = document.getElementsByName( "scriptselectors" ),
n = [];
for ( let e = 0; e < t.length; e++ ) n.push( t[ e ] );
a = !0, ( "matching_url" != l && "auto" != l || !A.match( b.matching_url.match ) ? g.Deferred.Pledge() : ( w = b.matching_url.update_interval || w, ( e => {
const t = Object( g.Deferred )();
return sendMessage( {
method: "determineScriptsToRun",
url: e
}, e => {
t.resolve( e.scripts || [] )
} ), t.promise()
} )( A ) ) ).then( t => {
const i = new RegExp( Object( r.escapeForRegExp )( A ), "i" ),
o = new RegExp( Object( r.escapeForRegExp )( A ) ),
a = Object( M.createQueue )( {
threads: 32
} ),
d = [],
u = n.map( n => () => {
let r, a, A, u;
return ( a = c[ n.s_id ] ) && ( A = a.script ) && ( u = a.dom ) && !e() ? ( d.push( () => {
$( u ).toggle( !!r ), n.is_hidden = !r
} ), ( () => {
if ( !s.is( ":visible" ) ) return g.Deferred.Pledge();
if ( "auto" == l ) return g.Deferred.or( Object.keys( b ).map( e => () => {
const n = b[ e ];
return n.check ? n.check( A, n.ignore_case ? i : o, t ) : g.Deferred.Breach()
} ) ); {
const e = b[ l ];
if ( e.check ) return e.check( A, e.ignore_case ? i : o, t )
}
return g.Deferred.Breach()
} )().done( () => {
r = !0
} ).fail( () => {
r = !1
} ) ) : g.Deferred.Breach()
} );
return g.Deferred.sidebyside( u.map( e => a.add( e ) ) ).always( () => d.forEach( e => e() ) )
} ).always( () => {
a = !1, e() ? p( !1, 1 ) : m.fadeOut()
} )
}, t || w ) )
},
h = i( "input", "filter_text", "sms", "all", null );
h.setAttribute( "spellcheck", "false" );
let f = "";
h.inserted || h.addEventListener( "keyup", () => {
f != h.value && ( f = h.value, p() )
} );
const m = $( L.createIcon( Q.get( "download" ), "wait_for_filter", e.uuid ) );
let _;
m.attr( "style", "vertical-align: middle;" ), m.hide(), y.filter = {
onShow: function ( e ) {
p( !0 ), e && $( h ).focus()
},
onHide: function () {
h.value = "", p( !0, 1 )
}
};
const b = {
auto: {
name: o.I18N.getMessage( "Auto" ),
update_interval: 500
},
name: {
name: "@name",
sync: function ( e, t ) {
return -1 != e.name.search( t )
},
ignore_case: !0
},
namespace: {
name: "@namespace",
sync: function ( e, t ) {
return e.namespace && -1 != e.namespace.search( t )
},
ignore_case: !0
},
author: {
name: "@author",
sync: function ( e, t ) {
return e.author && -1 != e.author.search( t )
},
ignore_case: !0
},
grant: {
name: "@grant",
default: "GM_",
sync: function ( e, t ) {
return e.grant && e.grant.filter( e => -1 != e.search( t ) ).length > 0
},
ignore_case: !0
},
includes: {
name: "@include/@match",
sync: function ( e, t ) {
return e.includes && e.includes.filter( e => -1 != e.search( t ) ).length > 0 || e.matches && e.matches.filter( e => -1 != e.search( t ) ).length > 0
},
ignore_case: !0
},
code: {
name: o.I18N.getMessage( "Source_Code" ),
async: function ( e, t ) {
const n = Object( g.Deferred )();
if ( !_ ) {
const e = Object( g.Deferred )();
_ = e.promise(), null, r = {
code: t.toString()
}, i = t => {
e.resolve( t )
}, he( {
referrer: "options.scripts.userscripts.matches",
uuid: null,
filter: r
}, e => {
u(), i( e.items )
} )
}
var r, i;
return _.done( t => {
window.setTimeout( () => {
( t.includes( e.uuid ) ? n.resolve : n.reject )()
}, 0 )
} ), n.promise()
},
ignore_case: !0
},
comment: {
name: o.I18N.getMessage( "Comment" ),
sync: function ( e, t ) {
return e.comment && -1 != e.comment.search( t )
},
ignore_case: !0
},
url: {
name: o.I18N.getMessage( "Update_URL_" ),
default: "https://",
sync: function ( e, t ) {
return e.file_url && -1 != e.file_url.search( t )
},
ignore_case: !0
},
matching_url: {
name: o.I18N.getMessage( "Matching_URL" ),
update_interval: 1500,
default: "http://",
match: new RegExp( "^https?://.*" ),
sync: function ( e, t, n ) {
return n && n.includes( e.uuid )
}
}
};
Object.keys( b ).forEach( e => {
const t = b[ e ];
t.check = t.sync || t.async ? function () {
return t.sync ? t.sync.apply( this, arguments ) ? g.Deferred.Pledge() : g.Deferred.Breach() : t.async ? t.async.apply( this, arguments ) : void 0
} : null
} );
let v = "auto",
w = b.auto.update_interval;
const k = L.createDropDown( o.I18N.getMessage( "Filter_by" ), {
value: 0,
uuid: "sms-filter",
name: "select"
}, Object.keys( b ).map( e => ( {
name: b[ e ].name,
value: e
} ) ), ( function () {
let e, t;
const n = this.value;
n != v && ( v = n, e = b[ v ], w = ( e ? e.update_interval : null ) || b.auto.update_interval, t = ( e ? e.default : null ) || "", h.value = h.value || t, p() )
} ) );
return k.elem.setAttribute( "class", "label" ), t.appendChild( k.elem ), t.appendChild( h ), t.appendChild( m[ 0 ] ), ve.filter && n.push( () => {
y.multiselect.toggleRow( !0, !0 ), h.value = ve.filter
} ), t
};
let We = [];
const Je = e => {
We = [], e && We.push( e )
},
qe = e => {
const t = s( "input", "", e.uuid, "sel" );
return t.type = "checkbox", t.s_id = e.uuid, t.name = "scriptselectors", t.inserted || t.addEventListener( "click", e => {
Je( t ), e.ctrlKey || e.metaKey ? y.multiselect.un_selectAll() : y.multiselect.single_click()
} ), t
},
Ke = e => {
const t = i( "input", "multiselectcb", "sms", "all", null ),
n = i( "div", "filter multiselectcb clickable", "sms2", "all", null );
t.inserted || ( t.type = "checkbox",
t.addEventListener( "click", y.multiselect.un_selectAll ), n.addEventListener( "click", () => {
y.multiselect.toggleRow()
} ) );
let r = 0,
s = [ {
name: o.I18N.getMessage( "__Please_choose__" ),
value: 0
}, {
name: o.I18N.getMessage( "Enable" ),
value: 1
}, {
name: o.I18N.getMessage( "Disable" ),
value: 2
}, {
name: o.I18N.getMessage( "Toggle_Enable" ),
value: 7
} ];
( V.RUNTIME.CAN_SAVEAS_ZIP || "undefined" != typeof Blob ) && s.push( {
name: o.I18N.getMessage( "Export" ),
value: 3
} ), s = s.concat( [ {
name: o.I18N.getMessage( "Trigger_Update" ),
value: 5
}, {
name: o.I18N.getMessage( "Factory_Reset" ),
value: 8
}, {
name: o.I18N.getMessage( "Remove" ),
value: 6
} ] );
const a = L.createDropDown( o.I18N.getMessage( "Apply_this_action_to_the_selected_scripts" ), {
value: 0,
uuid: "sms-select",
name: "select"
}, s, ( function () {
0 == this.value ? l.setAttribute( "disabled", "true" ) : l.removeAttribute( "disabled" ), r = this.value
} ) ),
l = L.createButton( "MultiSelectButton", "start_button", o.I18N.getMessage( "Start" ), () => {
if ( 0 == r ) return void console.log( "option: ?!?!" );
let e, t = null;
if ( 6 == r ? t = o.I18N.getMessage( "Really_delete_the_selected_items_" ) : 8 == r && ( t = o.I18N.getMessage( "Really_factory_reset_the_selected_items_" ) ), t && !confirm( t ) ) return;
const n = document.getElementsByName( "scriptselectors" ),
i = [];
for ( e = 0; e < n.length; e++ ) i.push( n[ e ] );
const s = {};
let a, l = !1,
A = 100;
for ( e = 0; e < i.length; e++ )
if ( i[ e ].checked && !i[ e ].is_hidden )
if ( 1 == r || 2 == r || 7 == r ) {
let t;
a = "switchEnabled";
const n = c[ i[ e ].s_id ] ? c[ i[ e ].s_id ].script : null;
7 == r ? n && ( t = !n.enabled || !!n.foisted ) : 2 == r && n && n.foisted || ( t = 1 == r ),
void 0 !== t && ( E( i[ e ].s_id, a, null, t, !1 ), l = !0 )
} else 3 == r ? s[ i[ e ].s_id ] = !0 : 5 == r ? ( a = "scriptUpdate", E( i[ e ].s_id, a ) ) : 6 == r ? ( a = "deleteScript", E( i[ e ].s_id, a, null, !0 ), l = !0, A = 1500 ) : 8 == r && ( a = "fullReset", E( i[ e ].s_id, a ), l = !0, A = 1500 );
3 == r && ( d(), Me( s, {
storage: m.script_storage,
externals: m.include_externals
} ).then( e => ( d(), V.RUNTIME.CAN_SAVEAS_ZIP ? R.a.zip.create( e.scripts ).progress( d ) : R.a.json.create( e.scripts ).then( e => new Blob( [ e ], {
type: "text/plain"
} ) ) ) ).then( e => Ge().done( () => {
saveAs( e, "tampermonkey_scripts" + ( V.RUNTIME.CAN_SAVEAS_ZIP ? ".zip" : ".txt" ) ), ne()
} ) ).fail( () => ie( o.I18N.getMessage( "Action_failed" ) ) ).always( () => {
u()
} ) ), l && ( d( o.I18N.getMessage( "Please_wait___" ) ), window.setTimeout( () => {
fe()
}, A ) )
} );
l.setAttribute( "class", "action_button" ), l.setAttribute( "disabled", "true" ), a.elem.appendChild( l );
const A = i( "div", "actions", e.name, e.id, "actions" );
A.appendChild( a.elem );
const p = L.createButton( "MultiSelectButton", "close_button", o.I18N.getMessage( "Close" ), () => {
y.multiselect.toggleRow( !1 )
} );
return $( p ).addClass( "close_button" ), {
selAllm: t,
selAll: n,
actionBox: A,
close: p
}
};
( () => {
let e = 0;
y.multiselect = {};
let t = !1;
y.multiselect.toggleRow = ( e, n ) => {
const r = $( ".multiselect" );
void 0 === e && ( e = !t ), e ? ( t = !0, r.addClass( "multiselectvisible" ), y.filter.onShow( n ) ) : ( t = !1, r.removeClass( "multiselectvisible" ), y.filter.onHide(), y.multiselect.un_selectAll( !1 ) )
}, y.multiselect.single_click = () => {
let t = 0;
const n = document.getElementsByName( "scriptselectors" );
let r = !0,
i = !1,
s = !1,
o = 0;
for ( let e = 0; e < n.length; e++ ) {
s = !0, r = r && n[ e ].checked, i = i || n[ e ].checked;
const t = $( n[ e ] ).closest( "tr" );
n[ e ].checked ? ( o++, t.addClass( "selected" ) ) : t.removeClass( "selected" )
}
s && r && ( t += 2 ), t != e && ( e = t, $( ".multiselectcb" ).prop( "checked", 0 != t ? "checked" : "" ) ), o && y.multiselect.toggleRow( !0 ), y.multiselect.checkScroll && y.multiselect.checkScroll()
}, y.multiselect.un_selectAll = t => {
++e > 3 && ( e = 0 ), 1 == e && e++;
let n = !1,
r = 0;
const i = document.getElementsByName( "scriptselectors" );
Je(), !0 === t && ( e = 2 );
for ( let s = 0; s < i.length; s++ ) {
const o = $( i[ s ] ).closest( "tr" );
!1 === t ? ( i[ s ].checked = !1, o.removeClass( "selected" ) ) : ( 0 == s && 3 == e && ( e = 0 ), n = !0, i[ s ].checked = 3 == e || 2 == e, i[ s ].checked ? ( r++, o.addClass( "selected" ), We.push( i[ s ] ) ) : o.removeClass( "selected" ) ), r && y.multiselect.toggleRow( !0 )
}
void 0 === t ? e > 1 && !n && ( e = 0 ) : t || ( e = 0 ), $( ".multiselectcb" ).prop( "checked", 0 != e ? "checked" : "" )
}
} )();
const $e = {};
rea.extension.onMessage.addListener( ( e, n, i ) => {
if ( "updateOptions" == e.method ) t = e.options || t, le( e.items, !1 ),
i( {} );
else if ( "confirm" == e.method ) {
const t = e => {
i( {
confirm: e
} )
};
Object( r.cConfirm )( e.msg, t )
} else if ( "showMsg" == e.method ) Object( r.cAlert )( e.msg ), i( {} );
else {
if ( "status" != e.method ) return !1;
ee( e.options ), i( {} )
}
return !0
} ), ( () => {
const r = i( "div", "content_wrapper", "options", "main" ),
a = i( "div", "options status", "options", "status" );
$( document.body ).append( r, a ).addClass( "main" );
const l = i( "div", "head_container", "opt", "head_container" ),
c = i( "div", "tv_container_fit", "opt", "tv_container" ),
A = s( "a", "head_link", "heads", "head_link" );
A.href = "https://www.tampermonkey.net", A.target = "_blank";
const p = i( "div", "float", "heads", "head1" ),
h = i( "img", "banner", "heads" );
h.src = Q.brand( "tampermonkey" );
const f = i( "div", "float head", "heads", "head2" ),
g = i( "div", "header_title", "heads" ),
m = i( "div", "version", "version", "version" );
m.textContent = "v" + rea.extension.manifest.version;
const _ = s( "div", "search", "box", "" ),
b = i( "div", "footer", "footer" );
g.innerHTML = "Tampermonkey<sup>®</sup>";
const v = i( "div", "social", "social" );
v.textContent = " by Jan Biniok", v.appendChild( L.createSocialButtons() ), g.appendChild( v ), p.appendChild( h ), f.appendChild( g ), f.appendChild( m ), A.appendChild( p ), A.appendChild( f ), l.appendChild( A ), l.appendChild( _ ), r.appendChild( l ), r.appendChild( c ), window.tab_view = w = z( "_main", c ), w.setFooter( b ), n.unshift( () => {
Ze( w ), ( e => {
let n, r;
const a = "help",
l = "help",
c = s( "div", a, l, "tab_help_h" ),
A = c.textContent = o.I18N.getMessage( "Help" ),
p = s( "div", a, l, "tab_help" );
e.appendTab( l, c, p, e => {
e.then( () => {
if ( we.set( l ), document.title = A, !r ) {
d();
const e = i( "div", "section", a, l, "ta" ),
c = i( "div", "section_head", a, l, "head_ta" ),
A = i( "div", "section_content", a, l, "content_ta" );
c.textContent = o.I18N.getMessage( "Editor" ), e.appendChild( [ c, A ] );
const h = i( "dl", "dl-horizontal shortcuts", a, l, "dl" );
A.appendChild( h );
const f = i( "dt", "keymapping", a, l, "dt_mapping" );
if ( n = i( "dd", "keymapping", a, l, "dd_mapping" ), f.textContent = o.I18N.getMessage( "Key_Mapping" ), n.textContent = t.editor_keyMap, h.appendChild( [ f, n ] ), "vim" == t.editor_keyMap ) n = i( "dd", "keymapping", a, l, "dd_unsup" ), n.textContent = o.I18N.getMessage( "Please_check_the_0editor0_documentation_for_more_details_", "VIM" ), h.appendChild( n );
else if ( "emacs" == t.editor_keyMap ) n = i( "dd", "keymapping", a, l, "dd_unsup" ), n.textContent = o.I18N.getMessage( "Please_check_the_0editor0_documentation_for_more_details_", "Emacs" ),
h.appendChild( n );
else {
const e = [];
r = {};
const n = e => {
const t = e.split( /-+/ ),
n = t.pop(),
r = [];
let i = "";
return -1 != ( i = [ "up", "down", "left", "right" ].indexOf( n.toLowerCase() ) ) && r.push( "#cursor" ), n.toLowerCase().match( /f[0-9]{1,2}/ ) && r.push( "#function" ), r.length ? r.join( "-" ) + t.join( "-" ) + i + n : ( "0000" + ( 100 - Math.min( n.length, 4 ) ) ).slice( -4 ) + n + t.join( "-" )
};
[ {
Esc: "backOrClose",
..."mac" != be ? {
"Alt-Left": "previousTab",
"Alt-Right": "nextTab"
} : {
"Alt-Up": "previousTab",
"Alt-Down": "nextTab"
}
}, H.keyMap[ t.editor_keyMap ], "mac" != be ? H.keyMap.pcDefault : H.keyMap.macDefault, H.keyMap.default ].forEach( t => {
Object.keys( t ).forEach( i => {
r[ i ] || "fallthrough" == i || ( e.push( {
name: i,
fn: t[ i ].replace ? t[ i ].replace( /([A-Z])/g, " $1" ).replace( / [A-Z]/g, e => e.toLowerCase() ) : t[ i ],
sort: n( i )
} ), r[ i ] = !0 )
} )
} ), e.sort( ( e, t ) => e.sort < t.sort ? -1 : e.sort > t.sort ? 1 : 0 ), e.forEach( e => {
const t = s( "dt", a, l, "dt_" + e.sort ),
n = s( "dd", a, l, "dd_" + e.sort );
t.textContent = e.name, n.textContent = e.fn, h.appendChild( [ t, n ] )
} )
}
p.appendChild( e ), u()
}
} )
} )
} )( w )
} ), n.push( () => {
void 0 !== ve.contribute && window.setTimeout( () => {
B( "f" )
}, 100 ), e.global = !0
} ), window.onbeforeunload = () => {
let e;
return w.getAllTabs().forEach( t => {
e = e || t.modified()
} ), e ? o.I18N.getMessage( "There_are_unsaved_changed_" ) : void 0
}
} )(), he( {
referrer: "options"
}, e => {
if ( e.options && e.options.layout_user_css && "reset" !== ve.layout ) {
const t = document.createElement( "style" );
t.innerHTML = e.options.layout_user_css, ( document.head || document.body || document.documentElement || document ).appendChild( t )
}
t = e.options || t, e.xhr && G.default.setConfig( e.xhr ), e.items ? ( le( e.items, !1 ), e.begging && n.push( () => {
window.setTimeout( () => {
B( e.begging )
}, 100 )
} ) ) : u()
} )
} )
};
window.requestFileSystem || ( window.requestFileSystem = window.webkitRequestFileSystem ), window.BlobBuilder || ( window.BlobBuilder = window.WebKitBlobBuilder );
const W = rea.FEATURES,
J = T.images,
q = window.MirrorFrame;
var K = () => {
f.a.render( () => {
let e = null,
t = {},
n = "???",
a = null;
const l = ( e, n, i ) => {
i = i || {};
const s = Object( g.Deferred )();
try {
const a = {
aid: e,
method: n
};
i.data && Object( r.each )( i.data, ( e, t ) => {
a[ t ] = i.data[ t ]
} ), sendMessage( {
method: "askCom",
data: a
}, e => {
i.bg || u(), t = e.options || t, e.error ? ( e.please_close && window.setTimeout( window.close, 100 ), s.reject( e ) ) : s.resolve( e )
} ), i.bg || d( o.I18N.getMessage( "Please_wait___" ) )
} catch ( e ) {
console.warn( "sS: " + e.message ), s.reject()
}
return s.promise()
},
c = () => l( e.aid, "ping", {
bg: !0
} ),
A = () => l( e.aid, "abort" ),
p = () => {
let e;
const t = i( "div", "content_wrapper", "ask", "main" ),
n = i( "div", "ask status", "ask", "status" );
$( document.body ).append( t, n ).addClass( "main" );
const r = i( "div", "head_container", "ask", "head_container" ),
o = i( "div", "tv_container_fit", "ask", "tv_container" ),
a = s( "a", "head_link", "ask", "head_link" );
a.href = "https://www.tampermonkey.net", a.target = "_blank";
const l = i( "div", "float", "ask", "head1" ),
c = i( "img", "banner", "ask" );
c.src = J.brand( "tampermonkey" );
const A = i( "div", "float head", "ask", "head2" ),
d = i( "div", "header_title", "heading" ),
p = i( "div", "version", "version", "version" );
p.textContent = "v" + rea.extension.manifest.version;
const f = s( "div", "search", "box", "" );
d.innerHTML = "Tampermonkey<sup>&reg;</sup>", l.appendChild( c ), A.appendChild( d ), A.appendChild( p ), a.appendChild( l ), a.appendChild( A ), r.appendChild( a ), r.appendChild( f ), t.appendChild( n ), t.appendChild( r ), t.appendChild( o );
const g = z( "_main", o );
return e = h( g ), u(), e
},
h = e => {
const t = "main",
i = "main",
o = s( "div", t, i, "tab_content_h" );
o.textContent = n;
const a = s( "div", t, i, "tab_content" );
return e.appendTab( Object( r.createUniqueId )( t, i ), o, a ).select(), a
},
f = e => {
const n = e.script,
r = e.oldscript,
a = i( "div", "viewer_bottom_tab", "bottom", "" ),
l = {
tv: "tv tv_alt",
tv_table: "tv_table tv_table_alt",
tr_tabs: "tr_tabs tr_tabs_alt",
tr_content: "tr_content tr_content_alt",
td_content: "td_content td_content_alt",
td_tabs: "td_tabs td_tabs_alt",
tv_tabs_align: "tv_tabs_align tv_tabs_align_alt",
tv_tabs_fill: "tv_tabs_fill tv_tabs_fill_alt",
tv_tabs_table: "tv_tabs_table tv_tabs_table_alt",
tv_contents: "tv_contents tv_contents_alt",
tv_tab_selected: "tv_tab tv_selected tv_tab_alt tv_selected_alt",
tv_tab_close: "",
tv_tab: "tv_tab tv_tab_alt",
tv_content: "tv_content tv_content_alt"
};
if ( t.editor_enabled ) {
const e = z( "_source" + n.uuid, a, l );
let c;
const A = ( e, t ) => {
const n = i( "div", "tv_content tv_content_alt", e.uuid, t + "container_o" ),
r = i( "table", "editor_container_o editor_400p_container_o p100100 noborder", e.uuid, t + "container_o" ),
s = i( "tr", "editor_container p100100", e.uuid, t + "container" );
n.appendChild( r ), r.appendChild( s );
const o = i( "td", "editor_outer editor_400p_outer", e.uuid, t + "edit" ),
a = i( "div", "editor_100 editor_border", e.uuid, t + "edit" );
return s.appendChild( o ), o.appendChild( a ), {
c: n,
e: a
}
};
let d = () => {
const e = Object( g.Deferred )();
return Object( Z.vendor )( [ "vendor/jsdiff/diff" ], () => {
d = g.Deferred.Pledge, e.resolve()
} ), e.promise()
};
( r && r.textContent != n.textContent ? d().then( () => {
const i = s( "div", n.uuid, "diff_h" );
i.textContent = o.I18N.getMessage( "Changes" );
const l = A( n, "diff" );
a.diff = new q( l.e, {
theme: "diff",
fontSize: t.editor_fontSize,
value: o.I18N.getMessage( "Please_wait___" ),
noButtons: !0,
mode: "diff",
readOnly: !0
}, o.I18N.getMessage ), c = e.appendTab( "diff", i, l.c, () => {
window.setTimeout( () => {
a.diff.refresh(), a.diff.mirror.focus()
}, 1 )
} ), window.setTimeout( () => {
let e;
try {
e = window.JsDiff.createTwoFilesPatch( o.I18N.getMessage( "Current_Version" ), o.I18N.getMessage( "New_Version" ), r.textContent, n.textContent, void 0, void 0, {
timeout: 4e3
} )
} catch ( e ) {
console.warn( e )
}
e || ( e = o.I18N.getMessage( "The_diff_for_this_script_is_too_large_to_render" ) ), a.diff.mirror.setValue( e )
}, 500 )
} ) : g.Deferred.Pledge() ).then( () => {
const r = s( "div", n.uuid, "source_h" );
r.textContent = o.I18N.getMessage( "Source_Code" );
const i = A( n, "source" );
a.editor = new q( i.e, {
theme: t.editor_theme,
fontSize: t.editor_fontSize,
tabSize: Number( t.editor_tabSize ),
styleSelectedText: !0,
highlightSelectionMatches: "off" != t.editor_highlightSelectionMatches ? {
showToken: /\w/,
annotateScrollbar: !0,
cursorOnly: "cursor" == t.editor_highlightSelectionMatches
} : void 0,
value: n.textContent,
noButtons: !0,
matchBrackets: !0,
readOnly: !0
}, o.I18N.getMessage );
const l = e.appendTab( "source", r, i.c, () => {
window.setTimeout( () => {
a.editor.refresh(), a.editor.mirror.focus()
}, 1 )
} );
c = c || l
} ).then( () => {
c.select()
} )
} else {
const e = i( "div", "editor_400p_outer", "editor", n.name ),
t = i( "div", "editor_400p editor_border", "editor", n.name );
a.appendChild( e ), e.appendChild( t );
const r = i( "textarea", "editorta", "editor", n.name );
r.setAttribute( "wrap", "off" ), t.appendChild( r ), r.value = n.textContent
}
return a
},
m = ( () => {
const e = {};
return window.addEventListener( "keydown", t => {
let n = !1;
if ( "keydown" == t.type ) return e[ t.keyCode ] && ( n = e[ t.keyCode ]( t ) ), n ? ( t.stopPropagation(), t.preventDefault(), !1 ) : void 0
}, !0 ), {
registerListener: function ( t, n ) {
e[ t ] = n
}
}
} )(),
b = ( e, t, n ) => {
n.filter( e => e.label ).forEach( n => {
const r = n.icon ? L.createImageTextButton( n.id, n.id, n.label, n.icon, n.fn ) : L.createButton( n.label, n.id, n.label, n.fn ),
i = $( r );
if ( i.addClass( t ),
n.id && i.attr( "data-btn-id", n.id ), e.appendChild( r ), n.focus && window.setTimeout( () => {
i.focus()
}, 300 ), n.keyDown ) {
const e = n.keyDown.keyCode ? n.keyDown.keyCode : n.keyDown,
t = n.keyDown.cb ? n.keyDown.cb : n.fn;
m.registerListener( e, t )
}
} )
},
v = t => {
const n = t.script,
r = i( "div", "viewer_last", "install" ),
s = i( "div", "viewer_content", "install_content" ),
a = i( "div", "ask_action_buttons", "install_buttons" ),
c = [];
return c.push( {
label: t.messages.action,
fn: function () {
l( e.aid, "install" )
},
focus: !0
} ),
W.RUNTIME.CHROME && W.RUNTIME.BROWSER_VERSION < 21 && c.push( {
label: t.messages.flags.install ? o.I18N.getMessage( "Process_with_Chrome" ) : null,
fn: function () {
R( n.fileURL ), $( r ).hide()
}
} ), c.push( {
label: o.I18N.getMessage( "Cancel" ),
fn: x,
keyDown: 27
} ), b( a, "install", c ), s.appendChild( a ), r.appendChild( s ), r
},
w = () => {
const e = i( "div", "viewer_last", "ok" ),
t = i( "div", "viewer_content", "ok_content" ),
n = i( "div", "ask_action_buttons", "ok_buttons" );
return b( n, "import", [ {
label: o.I18N.getMessage( "Ok" ),
fn: x,
focus: !0
} ] ),
t.appendChild( n ), e.appendChild( t ), e
},
k = ( e, t ) => {
const n = s( "input", e + "_", t, "", !0 );
return n.setAttribute( `data-${e}-id`, t ), n.checked = !0, n.type = "checkbox", n.title = o.I18N.getMessage( "Press_ctrl_to_toggle_all_checkboxes" ), n.addEventListener( "click", r => {
( r.ctrlKey || r.metaKey ) && $( `input[type=checkbox][data-${e}-id][data-${e}-id!=${t}]` ).prop( "checked", n.checked )
} ), n
},
y = ( e, t ) => {
const n = e.preparat,
r = e.content,
a = n.script || {},
l = a.uuid || a.id || a.name;
n.short_info || ( n.short_info = [] );
const c = i( "div", "viewer_upper", l ),
A = i( "div", "viewer_info " + ( t ? "viewer_info_wide" : "viewer_info_multiple" ), "general", l ),
d = i( "div", "viewer_content", "general_content", l ),
u = s( "h3", "install", "heading", l );
if ( e.checkbox && u.appendChild( k( "import", e.key ) ), a.icon || a.icon64 ) {
const e = s( "img", "version", "heading", l );
e.src = a.icon || a.icon64, u.appendChild( e )
}
const p = s( "span", "name", "heading", l );
if ( p.textContent = n.heading || a.name || "", u.appendChild( p ), a.version ) {
const e = i( "span", "view_version", "heading", l );
e.textContent = "v" == a.version[ 0 ] ? "" : "v", e.textContent += a.version, u.appendChild( e )
}
A.appendChild( u ), e.externals && n.short_info.unshift( {
prop: "externals",
dom: k( "externals", e.key ),
label: o.I18N.getMessage( "Externals" )
} ), e.storage && n.short_info.unshift( {
prop: "storage",
dom: k( "storage", e.key ),
label: o.I18N.getMessage( "Storage" )
} ), t && n.short_info.unshift( {
prop: "heading",
value: n.messages.heading,
label: o.I18N.getMessage( "Action" )
} );
const h = i( "table", "script_desc", l );
n.short_info.forEach( e => {
const n = a[ e.prop ] || e.value,
r = e.dom;
if ( !r && !n && t ) return;
const s = i( "tr", "script_desc", e.prop, l ),
c = i( "td", "script_desc", e.prop, l + "dt" ),
A = i( "td", "script_desc", e.prop, l + "dd" );
c.textContent = e.label ? e.label : "", r ? A.appendChild( r ) : A.textContent = n || o.I18N.getMessage( "_not_set_" ), s.appendChild( c ), s.appendChild( A ), h.appendChild( s )
} ), d.appendChild( h );
const f = i( "div", "viewer_info viewer_info_multiple", "info", l );
let g;
if ( t ) g = d;
else {
g = i( "div", "viewer_content", "info_content", l );
const e = s( "h4", "action", "heading", l );
document.title = e.textContent = n.messages.heading, g.appendChild( e )
}
let m = 0;
[ "errors", "warnings", "info" ].forEach( e => {
const t = s( "table", e, l + m );
( n.messages[ e ] || [] ).forEach( n => {
m++;
const r = s( "tr", e, l + m ),
i = s( "td", e, l + "dt" + m ),
o = s( "td", e, l + "dd" + m );
if ( "info" == e )
if ( n.label && n.value ) i.textContent = n.label, o.textContent = n.value;
else {
let e = '<i class="far fa-' + J.get( "about" ) + '"></i>&nbsp;';
W.RUNTIME.MOBILE || ( i.innerHTML = e, e = "" ),
o.innerHTML = e + L.safeTagsReplace( n ).replace( /\n/g, "<br />" )
}
else if ( "warnings" == e ) {
let e = '<i class="far fa-' + J.get( "critical" ) + '"></i>&nbsp;';
W.RUNTIME.MOBILE || ( i.innerHTML = e, e = "" ), o.innerHTML = e + L.safeTagsReplace( n ).replace( /\n/g, "<br />" )
} else if ( "errors" == e ) {
let e = '<i class="far fa-' + J.get( "error" ) + '"></i>&nbsp;';
W.RUNTIME.MOBILE || ( i.innerHTML = e, e = "" ), o.innerHTML = e + L.safeTagsReplace( n ).replace( /\n/g, "<br />" )
}
r.appendChild( i ), r.appendChild( o ), t.appendChild( r )
} ), g.appendChild( t )
} );
const _ = ( e, t, n, r ) => {
const c = s( "table", e, l );
let A = 0;
const d = {};
if ( t.forEach( t => {
if ( A > r ) return;
const s = t;
if ( d[ s ] ) return;
d[ s ] = !0;
const o = i( "tr", e + "desc", s, l + A ),
a = i( "td", e + "desc", s, l + A + "dt" ),
u = i( "td", e + "desc", s, l + A + "dd" );
a.innerHTML = 0 == A ? L.safeTagsReplace( n.label ) : "&nbsp;", u.innerHTML = A == r ? '<span title="' + L.safeTagsReplace( n.warning ) + '">...!</span>' : L.safeTagsReplace( s ), o.appendChild( a ), o.appendChild( u ), c.appendChild( o ), A++
} ), a.options ) {
const t = a.options.override && a.options.override[ "use_" + e ];
if ( t && t.length ) {
const t = i( "tr", e + "desc", "ovverride", l + A ),
r = i( "td", e + "desc", "ovverride", l + A + "dt" ),
s = i( "td", e + "desc", "ovverride", l + A + "dd" );
r.innerHTML = 0 == A ? L.safeTagsReplace( n.label ) : "&nbsp;", s.innerHTML = L.safeTagsReplace( " (" + o.I18N.getMessage( "overwritten_by_user" ) + ")" ), t.appendChild( r ), t.appendChild( s ), c.appendChild( t )
}
}
g.appendChild( c )
};
_( "includes", ( a.includes || [] ).concat( a.matches || [] ), {
label: o.I18N.getMessage( "Include_s__" ),
warning: o.I18N.getMessage( "Attention_Can_not_display_all_includes_" )
}, 5 ), _( "excludes", a.excludes || [], {
label: o.I18N.getMessage( "Exclude_s__" ),
warning: o.I18N.getMessage( "Attention_Can_not_display_all_excludes_" )
}, 3 ), A.appendChild( d ), f.appendChild( g ), c.appendChild( A ), c.appendChild( f );
const b = i( "div", "section", l, "install_src" );
b.appendChild( c ), e.install && b.appendChild( e.install( n ) ), e.editor && b.appendChild( e.editor( n ) ), r.appendChild( b )
},
R = e => {
A(), window.setTimeout( () => {
window.location = e + "#bypass=true"
}, 10 )
};
var x = () => {
A(), window.setTimeout( () => {
window.close()
}, 3e3 )
};
const C = () => {
l( e.aid, "unload" ), a && ( window.clearInterval( a ), a = null ), window.removeEventListener( "unload", C )
};
window.addEventListener( "unload", C );
const E = () => {
window.location.search || window.location.hash ? ( e = Object( r.getUrlArgs )(), e.aid ? ( ( e.aid, l( e.aid, "preparat" ) ).done( t => {
if ( t.options && ( t.options.statistics_enabled && _.a.init( "ask", !0, {
trackView: !1,
version: rea.extension.manifest.version
} ),
t.options.layout_user_css ) ) {
const e = document.createElement( "style" );
e.innerHTML = t.options.layout_user_css, ( document.head || document.body || document.documentElement || document ).appendChild( e )
}
n = o.I18N.getMessage( "Install" );
let r = null;
t.preparat && ( "install" == t.type ? r = () => {
y( {
content: p(),
preparat: t.preparat,
install: v,
editor: f
} )
} : "install_error" == t.type ? r = () => {
y( {
content: p(),
preparat: t.preparat,
install: w
}, !0 )
} : "import" == t.type ? r = () => {
( ( t, n ) => {
if ( document.title = o.I18N.getMessage( "Import" ),
t.appendChild( ( t => {
const n = i( "div", "viewer_last", "import" ),
r = i( "div", "viewer_content", "import_content" ),
s = i( "div", "ask_action_buttons import_buttons", "import_buttons" );
b( s, "import", [ {
label: o.I18N.getMessage( "Import" ),
fn: function () {
const n = Object.keys( t.scripts ).filter( e => !!$( "input[type=checkbox][data-import-id=" + e + "]:checked" ).val() );
var r, i, s, o;
r = Object.keys( t.scripts ).filter( e => !!$( "input[type=checkbox][data-storage-id=" + e + "]:checked" ).val() ),
i = Object.keys( t.scripts ).filter( e => !!$( "input[type=checkbox][data-externals-id=" + e + "]:checked" ).val() ), s = n, o = t.global_settings && !!$( "input[type=checkbox][data-settings-id=global_settings]:checked" ).val(), l( e.aid, "import", {
data: {
storage_ids: r,
externals_ids: i,
import_ids: s,
global_settings: o
}
} )
},
focus: !0
}, {
label: o.I18N.getMessage( "Cancel" ),
fn: x,
keyDown: 27
} ] ), r.appendChild( s ), n.appendChild( r );
const a = i( "div", "section", "btn" );
return a.appendChild( n ), a
} )( n ) ), n.global_settings ) {
const e = i( "div", "viewer_upper", "" );
( e => {
const t = e.key,
n = e.content,
r = i( "div", "viewer_upper", t ),
a = i( "div", "viewer_info viewer_info_wide", "general", t ),
l = i( "div", "viewer_content", "general_content", t ),
c = s( "h3", "install", "heading", t );
e.checkbox && c.appendChild( k( e.checkbox, e.key ) );
const A = s( "img", "version", "heading", t );
A.src = J.brand( "tampermonkey" ), c.appendChild( A );
const d = s( "span", "name", "heading", t );
d.textContent = o.I18N.getMessage( "Global_Settings" ), c.appendChild( d ), a.appendChild( c );
const u = i( "table", "script_desc", t );
let p = i( "tr", "settings_desc", "action", t ),
h = i( "td", "settings_desc", "action", t + "dt" ),
f = i( "td", "settings_desc", "action", t + "dd" );
h.textContent = o.I18N.getMessage( "Action" ), f.textContent = o.I18N.getMessage( "Global_settings_import" ), p.appendChild( h ), p.appendChild( f ), u.appendChild( p ), p = i( "tr", "settings_desc", "warning", t ), h = i( "td", "settings_desc", "warning", t + "dt" ), f = i( "td", "settings_desc", "warning", t + "dd" );
let g = '<i class="far fa-' + J.get( "critical" ) + '"></i>&nbsp;';
W.RUNTIME.MOBILE || ( h.innerHTML = g, g = "" ), f.innerHTML = g + L.safeTagsReplace( o.I18N.getMessage( "This_will_overwrite_your_global_settings_" ) ), p.appendChild( h ), p.appendChild( f ), u.appendChild( p ), l.appendChild( u ), a.appendChild( l ), r.appendChild( a );
const m = i( "div", "section", "settings_src" );
m.appendChild( r ), n.appendChild( m )
} )( {
content: e,
checkbox: "settings",
key: "global_settings"
} ), t.appendChild( e )
}
const r = n.storage_ids || [],
a = n.externals_ids || [];
n.scripts && Object.keys( n.scripts ).forEach( e => {
const s = n.scripts[ e ],
o = i( "div", "viewer_upper", e );
y( {
content: o,
preparat: s,
checkbox: "import",
storage: r.includes( e ),
externals: a.includes( e ),
key: e
}, !0 ), t.appendChild( o )
} )
} )( p(), t.preparat )
} : "permission" == t.type ? r = () => {
( ( t, n ) => {
const r = i( "div", "viewer_last", "ok" ),
a = i( "div", "viewer_content", "ok_content" ),
c = i( "div", "ask_action_buttons", "ok_buttons" );
b( c, "permission", [ {
label: o.I18N.getMessage( "Ok" ),
fn: () => {
const t = {
permissions: n.permissions,
origins: n.origins
};
rea.permissions.request( t, n => {
let r;
rea.runtime.lastError && ( r = rea.runtime.lastError.message, console.warn( "notify: error on getting permission", t, "reason:", r ) ), ( ( t, n, r ) => {
l( e.aid, "permission", {
data: {
granted: t,
permissions: n.permissions,
origins: n.origins,
error: r
}
} )
} )( n, t, r )
} )
},
focus: !0
}, {
label: o.I18N.getMessage( "Cancel" ),
fn: x,
keyDown: 27
} ] ), a.appendChild( c ), r.appendChild( a );
const A = "permission",
d = i( "div", "viewer_upper", A ),
u = i( "div", "viewer_info viewer_info_wide", "general", A ),
p = i( "div", "viewer_content", "general_content", A ),
h = s( "h3", "install", "heading", A ),
f = s( "span", "install", "heading_span", A ),
g = i( "span", "message", "heading", A );
document.title = f.textContent = n.title, g.innerHTML = L.safeTagsReplace( n.message ).replace( /\n/g, "<br>" ), h.appendChild( f ), p.appendChild( g ), u.appendChild( h ), u.appendChild( p ), d.appendChild( u );
const m = i( "div", "section", "perm_src", A );
m.appendChild( d ),
m.appendChild( r ), t.appendChild( m )
} )( p(), t.preparat )
} : "connect" == t.type && ( r = () => {
( ( t, n ) => {
const r = Date.now();
let a, c;
n.timeout && ( a = window.setTimeout( () => {
x(), d()
}, n.timeout ) );
const A = () => $( "input[data-btn-id]" )[ 0 ],
d = () => {
let e;
c && window.clearInterval( c ), a && window.clearTimeout( a ), c = a = null, ( e = A() ) && e.parentNode.removeChild( e )
},
u = i( "div", "viewer_last", "ok" ),
p = i( "div", "viewer_content", "ok_content" ),
h = i( "div", "ask_action_buttons", "ok_buttons" ),
f = i( "div", "ask_action_buttons", "ok_buttons" ),
g = i( "div", "ask_action_buttons", "ok_buttons" ),
m = "connect";
b( h, "connect", [ {
label: o.I18N.getMessage( "Allow_once" ),
icon: "button_ok",
fn: function () {
return l( e.aid, "connect", {
data: {
ok: !0,
allow: !0,
once: !0
}
} )
},
focus: !0
}, {
label: o.I18N.getMessage( "Temporarily_allow" ),
icon: "clock",
fn: function () {
return l( e.aid, "connect", {
data: {
ok: !0,
allow: !0,
temporary: !0
}
} )
}
}, {
label: n.hostname != n.domain ? o.I18N.getMessage( "Always_allow" ) : o.I18N.getMessage( "Always_allow_domain" ),
icon: "yes_domain",
fn: function () {
return l( e.aid, "connect", {
data: {
ok: !0,
allow: !0
}
} )
}
}, n.domain && n.hostname != n.domain ? {
label: o.I18N.getMessage( "Always_allow_domain" ),
icon: "yes_domain",
fn: function () {
return l( e.aid, "connect", {
data: {
ok: !0,
allow: !0,
whole_domain: !0
}
} )
}
} : null, n.all_domains ? {
label: o.I18N.getMessage( "Always_allow_all_domains" ),
icon: "critical",
fn: function () {
if ( d(),
window.confirm( o.I18N.getMessage( "This_gives_this_script_the_permission_to_retrieve_and_send_data_from_and_to_every_webpage__This_is_potentially_unsafe__Are_you_sure_you_want_to_continue_" ) ) ) return l( e.aid, "connect", {
data: {
ok: !0,
allow: !0,
all_domains: !0
}
} )
}
} : null ].filter( e => e ) ), b( f, "connect", [ {
label: o.I18N.getMessage( "Forbid_once" ),
icon: "cancel",
fn: function () {
return l( e.aid, "connect", {
data: {
ok: !0,
deny: !0,
once: !0
}
} )
},
keyDown: 27
}, {
label: n.hostname != n.domain ? o.I18N.getMessage( "Always_forbid" ) : o.I18N.getMessage( "Always_forbid_domain" ),
icon: "no_domain",
fn: function () {
return l( e.aid, "connect", {
data: {
ok: !0,
deny: !0
}
} )
}
}, n.domain && n.hostname != n.domain ? {
label: o.I18N.getMessage( "Always_forbid_domain" ),
icon: "no",
fn: function () {
return l( e.aid, "connect", {
data: {
ok: !0,
deny: !0,
whole_domain: !0
}
} )
}
} : null, {
label: o.I18N.getMessage( "Dont_ask_again" ),
icon: "no",
fn: function () {
return l( e.aid, "connect", {
data: {
ok: !0,
deny: !0,
all_domains: !0
}
} )
}
} ].filter( e => e ) ), b( g, "connect_misc", [ n.tabid ? {
label: o.I18N.getMessage( "Focus_tab" ),
icon: "windowlist",
fn: function () {
( ( e, t ) => {
try {
sendMessage( {
method: "buttonPress",
name: "focus_tab",
...t
}, () => {} )
} catch ( e ) {
console.log( "button: " + e.message )
}
} )( 0, {
tabid: n.tabid
} )
}
} : null, ( () => {
if ( n.timeout ) return c = window.setInterval( () => {
let e;
( e = A() ) && $( e ).attr( "value", o.I18N.getMessage( "Skip_timeout__0seconds0_seconds_", Math.round( ( n.timeout + r - Date.now() ) / 1e3 ) ) )
}, 1e3 ), {
label: o.I18N.getMessage( "Skip_timeout__0seconds0_seconds_", Math.round( n.timeout / 1e3 ) ),
id: "skip_timeout_button",
fn: d
}
} )() ].filter( e => e ) );
const _ = i( "div", "viewer_upper", m ),
v = i( "div", "viewer_info viewer_info_wide", "general", m ),
w = i( "div", "viewer_content", "general_content", m ),
k = s( "h3", "install", "heading", m ),
y = s( "span", "install", "heading_span", m ),
R = i( "span", "message", "heading", m );
if ( n.script.icon ) {
const e = s( "img", "version", "heading", m );
e.src = n.script.icon, y.appendChild( e )
}
document.title = y.textContent = o.I18N.getMessage( "A_userscript_wants_to_access_a_cross_origin_resource_" );
const C = i( "div", "ask_action_buttons message", "help", m ),
E = s( "div", "help", m );
let I = o.I18N.getMessage( "A_request_to_a_cross_origin_resource_is_nothing_unusual__You_just_have_to_check_whether_this_script_has_a_good_reason_to_access_this_domain__For_example_there_are_only_a_very_few_reasons_for_a_userscript_to_contact_your_bank__Please_note_that_userscript_authors_can_avoid_this_dialog_by_adding_@connect_tags_to_their_scripts__You_can_change_your_opinion_at_any_time_at_the_scripts_settings_tab_", n.connect_url, n.settings_url );
I = L.safeTagsReplace( I ).replace( /\[url=([^\]]+)\](.*)\[\/url\]/g, '<a target="_blank" href="$1">$2 &#x2B00;</a>' ).replace( /\n/g, "<br>" ), E.innerHTML = I + "<br><br>", C.appendChild( E ), k.appendChild( y ), p.appendChild( [ g, C, h, f ] ), u.appendChild( p );
const M = i( "table", "script_desc", m );
[ {
prop: "name",
label: o.I18N.getMessage( "Name" )
}, {
prop: "src_url",
label: o.I18N.getMessage( "Tab_URL" )
}, n.domain ? {
prop: "hostname",
label: o.I18N.getMessage( "Destination_domain" )
} : null, {
prop: "url",
label: o.I18N.getMessage( "Destination_URL" )
} ].forEach( e => {
if ( !e ) return;
const t = n[ e.prop ] || n.script[ e.prop ] || e.value,
r = i( "tr", "script_desc", e.prop, m ),
s = i( "td", "script_desc", e.prop, m + "dt" ),
a = i( "td", "script_desc", e.prop, m + "dd" );
s.textContent = e.label ? e.label : "", a.textContent = t || o.I18N.getMessage( "_not_set_" ), r.appendChild( s ), r.appendChild( a ), M.appendChild( r )
} ), R.appendChild( M ), w.appendChild( R ), v.appendChild( k ), v.appendChild( w ), _.appendChild( v );
const G = i( "div", "section", "connect_src", m );
G.appendChild( _ ), G.appendChild( u ), t.appendChild( G )
} )( p(), t.preparat )
} ), a = window.setInterval( c, 3e3 ), r && window.setTimeout( () => {
var e, n;
r(), ( e = t.preparat ) && ( n = e.hints ) && n.length && n.forEach( e => {
e.globalhint && L.createGobalHint( e.options, $( "body > div.status" )[ 0 ] )
} )
}, 1 ) )
} ).fail( () => {
x()
} ), d( o.I18N.getMessage( "Please_wait___" ) ) ) : x() ) : window.onhashchange = () => {
E()
}
};
rea.extension.onMessage.addListener( ( e, n, i ) => {
if ( t = e.options || t, "confirm" == e.method ) {
const t = e => {
i( {
confirm: e
} )
};
Object( r.cConfirm )( e.msg, t )
} else {
if ( "showMsg" != e.method ) return !1;
Object( r.cAlert )( e.msg ), i( {} )
}
return !0
} ), E()
} )
};
const ee = rea.FEATURES,
te = T.images;
let ne = 3;
if ( ee.RUNTIME.MOBILE ) try {
window.matchMedia( "(orientation: portrait)" ).matches && ( ne = 1 )
} catch ( e ) {}
var re = () => {
f.a.render( () => {
let e, t = {};
const n = ( l, h ) => {
const _ = [];
if ( h.sub_menu_item ) {
if ( h.tabId && ( e = h.tabId ), h.items.length ) {
const e = i( "table", "actiontable at_" + h.id, "actiontable-" + h.id );
if ( h.more_menu ) {
const t = i( "tr", "", h.name, h.id, "mm_outer_tr" );
e.appendChild( t );
const n = i( "td", "", h.name, h.id, "mm_outer_td1" ),
r = i( "td", "", h.name, h.id, "mm_outer_td2" );
r.setAttribute( "colspan", 2 ), t.appendChild( [ n, r ] );
const s = i( "table", "moremenu", "mmtable-" + h.id );
r.appendChild( s );
const o = i( "tr", "moremenu_toggle", h.name, h.id, "tw_tr1" );
let l = [ o ];
const c = i( "div", "clickable", h.name, h.id, "mmname" );
c.textContent = h.name;
const A = i( "td", "", h.name, h.id, "mm_td2" );
A.setAttribute( "colspan", 2 ), o.appendChild( A ), A.appendChild( c );
const d = i( "div", "", h.name, h.id, "mmenablercol" ),
u = i( "i", "ifdisabled clickable far fa-" + te.get( "enabler" ), h.name, h.id, "mmenabler" ),
p = i( "i", "ifenabled clickable far fa-" + te.get( "enabler_enabled" ), h.name, h.id, "mmenabler_enabled" ),
f = i( "td", "moremenuenabler", h.name, h.id, "tw_td3" ),
g = $( f );
let m;
$( "body" ).get( 0 ).addEventListener( "click", () => {
m ? m = !1 : ( $( s ).removeClass( "show_moremenu" ), g.removeClass( "enabled" ) )
}, !1 ), t.addEventListener( "click", () => {
g.toggleClass( "enabled" ), $( s ).toggleClass( "show_moremenu" ),
m = !0
}, !0 ), d.appendChild( [ u, p ] ), o.appendChild( f ), f.appendChild( d ), s.appendChild( l ), a( s, h.items )
} else a( e, h.items );
_.push( e )
}
} else {
let e = null;
if ( h.image ? e = L.createIcon( te.get( h.image ), h.name, h.id, null, "" ) : h.enabler && ( e = L.createIcon( te.get( t.enabled ? "button_ok" : "cancel" ), h.name, h.uuid, null, "" ) ), e && _.push( e ), h.url || h.urls ) {
const e = s( "span", h.name, h.id, "urls" ),
t = h.urls || [ h ];
for ( let n = 0; n < t.length; n++ ) {
const r = t[ n ],
i = document.createElement( "span" );
let s;
r.social ? ( s = L.createSocialButtons(),
$( i ).addClass( "social" ).append( s ) ) : ( i.textContent = r.name, s = h.urls ? i : l, s.url = r.url, s.url_alt = r.url_alt, s.newtab = r.newtab );
const o = function ( e ) {
return this.url_alt && e && ( 0 != e.button || e.ctrlKey || e.metaKey ) ? c( this.url_alt, this.newtab || r.social ) : c( this.url || this.href, this.newtab || r.social ), e.stopPropagation(), e.preventDefault(), !1
};
if ( $( s ).addClass( "clickable" ).on( "click auxclick", o ), e.appendChild( i ), h.always_visible && $( l ).addClass( "always_visible" ), n < t.length - 1 ) {
const t = document.createElement( "span" );
t.textContent = " | ", e.appendChild( t )
}
}
_.push( e )
} else if ( h.globalhint ) d( h.options );
else if ( h.button ) {
const e = function () {
let e = !0;
this.warning && ( e = A( this.warning ) ), e && p( this.key, {
reload: this.reload,
data: this.data
} )
},
t = i( "span", h.display || "", h.name, h.id, "bu", !0 );
t.textContent = h.name, l.key = h.id, l.warning = h.warning, l.reload = h.reload, l.data = h.data, l.addEventListener( "click", e ), $( l ).addClass( "clickable" ), _.push( t )
} else if ( h.userscript ) {
const e = i( "table", "", h.name, h.uuid, "tw" ),
t = i( "tr", "script", h.name, h.uuid, "tw_tr1" );
let n = [ t ];
const s = i( "div", "clickable" + ( h.active_count ? "" : " not_executed" ) + ( h.deleted ? " was_deleted" : "" ), h.name, h.uuid, "ai" );
if ( h.uuid ) {
const e = [];
let n = null;
n = h.blacklisted || h.foisted ? "enabler_warning" : h.enabled ? h.contexter ? "enabler_enabled enabler_later" : "enabler_enabled" : "enabler_disabled";
const a = h.blacklisted || h.foisted || ( h.enabled ? o.I18N.getMessage( "Enabled" ) : o.I18N.getMessage( "Disabled" ) ),
A = function ( e ) {
if ( e && ( 0 != e.button || e.ctrlKey || e.metaKey ) ) return c( rea.extension.getURL( "options.html" ) + "#nav=" + this.key, !0 ), e.stopPropagation(), e.preventDefault(), !1;
h.foisted ? v( h.uuid, "whitewash", !0 ) : v( h.uuid, "enabled", !h.enabled )
},
d = L.createEnabler( n, h.uuid, "enabled", {
append: "enabled",
disabled: h.blacklisted || h.deleted,
title: a
}, A ),
p = i( "td", "", h.name, h.uuid, "tw_td1" );
t.appendChild( p ), p.appendChild( d );
const _ = i( "div", "script_name", h.name, h.uuid, "name" );
if ( _.textContent = o.I18N.getTranslation( h, "name" ),
s.appendChild( _ ), s.uuid = h.uuid, s.key = h.uuid, !h.deleted && !h.blacklisted ) {
$( s ).on( "click auxclick", A );
const t = o.I18N.getMessage( "Edit" ),
n = L.createIcon( te.get( "edit" ), "", h.uuid, "edit_script", t ),
r = i( "span", "clickable", h.name, h.uuid, "edit_script" );
r.setAttribute( "title", t ), r.textContent = t, e.push( {
always_visible: !1,
id: "edit_script",
img: n,
text: r,
oc: function () {
c( rea.extension.getURL( "options.html" ) + "#nav=" + h.uuid, !0 )
}
} )
}
h.blacklisted || h.foisted ? ( l.setAttribute( "title", h.blacklisted || h.foisted ),
$( s ).addClass( "crossedout" ) ) : h.active_count ? _.title = o.I18N.getMessage( "This_script_was_executed_0count0_times", h.active_count ) : h.all_time_active_count ? _.title = o.I18N.getMessage( "This_script_was_executed_0count0_times_but_is_not_active_anymore", h.all_time_active_count ) : _.title = o.I18N.getMessage( "This_script_was_not_executed_yet" );
const w = i( "td", "", h.name, h.uuid, "tw_td2" );
let k;
if ( w.appendChild( s ), !h.nnew && !h.system && h.abuse ) {
const t = L.createIcon( te.get( "flag" ), "", h.uuid, "issue", o.I18N.getMessage( "Report_an_issue_to_the_script_hoster_" ) ),
n = i( "span", "clickable", h.name, h.uuid, "action_issue_expl" );
n.textContent = o.I18N.getMessage( "Report_an_issue_to_the_script_hoster_" ).split( /[\.\(]+/ )[ 0 ], e.push( {
always_visible: !1,
id: "action_issue_expl",
img: t,
text: n,
oc: function () {
u( h.uuid, "hoster" )
}
} )
}
if ( !h.nnew && !h.system && h.support ) {
const t = L.createIcon( te.get( "bug" ), "", h.uuid, "bug", o.I18N.getMessage( "Report_a_bug" ) ),
n = i( "span", "clickable", h.name, h.uuid, "action_issue_expl" );
n.textContent = o.I18N.getMessage( "Report_a_bug" ), e.push( {
always_visible: !1,
id: "action_issue_expl",
img: t,
text: n,
oc: function () {
u( h.uuid, "author" )
}
} )
}
const y = {};
if ( h.active_urls && h.active_urls.forEach( t => {
const n = b.default.parse( t ).hostname;
if ( y[ n ] ) return;
y[ n ] = !0;
const r = "/" + b.default.getRegExpFromMatch( "*://*." + n + "/*", !0 ) + "/";
if ( h.override && h.override.use_excludes.includes( r ) ) return;
const s = o.I18N.getMessage( "Exclude_0domain0", n ),
a = L.createIcon( te.get( "no" ), "", h.uuid, "domain" + t, s ),
l = i( "span", "clickable", h.name, h.uuid, "action_domain" );
l.setAttribute( "title", s ), l.textContent = s, e.push( {
always_visible: !1,
id: "action_domain",
img: a,
text: l,
oc: function () {
v( h.uuid, "add_excludes", [ r ] )
}
} )
} ), !h.deleted && !h.blacklisted ) {
const t = o.I18N.getMessage( "Delete" ),
n = L.createIcon( te.get( "delete" ), "", h.uuid, "delete_script", t ),
r = i( "span", "clickable", h.name, h.uuid, "delete_script" );
r.setAttribute( "title", t ), r.textContent = t, e.push( {
always_visible: !1,
id: "delete_script",
img: n,
text: r,
oc: function () {
m( h.uuid )
}
} )
}
if ( h.menu_cmds ) {
let t;
try {
t = new RegExp( "^" + Object( r.escapeForRegExp )( h.name ) + "[ -:+/]*" )
} catch ( e ) {
console.log( e )
}
h.menu_cmds.forEach( n => {
const r = i( "span", "clickable", h.name, h.uuid, "menucmd_" + h.id );
r.setAttribute( "title", h.name );
const s = t ? n.name.replace( t, "" ) : n.name;
r.textContent = s;
const o = () => {
g( n.id, () => {
ee.ACTIONMENU.CLOSE_ALLOWED && window.close()
} )
};
if ( n.accessKey ) {
const e = n.accessKey[ 0 ].toUpperCase();
if ( f( e, o, l ) ) {
const t = new RegExp( e, "i" );
let s = r.textContent.search( t );
const o = []; - 1 == s && ( r.textContent += " (" + e + ")", s = r.textContent.search( t ) ), o.push( {
text: r.textContent.substr( 0, s )
} ), o.push( {
text: r.textContent.substr( s, 1 ),
class: "underlined"
} ), o.push( {
text: r.textContent.substr( s + 1 )
} ),
r.textContent = "", o.forEach( e => {
const t = i( "span", e.class || "", n.id, e );
t.textContent = e.text, r.appendChild( t )
} )
} else console.warn( "Registering keyboard shortcut for '" + n.name + "' failed" )
}
e.push( {
always_visible: !0,
id: h.id,
img: L.createIcon( te.get( n.image ), s, n.id, null, "" ),
text: r,
oc: o
} )
} )
}
if ( h.deleted || !e.length ) t.appendChild( w );
else {
const n = i( "td", "", h.name, h.uuid, "mma_outer_td2" );
n.setAttribute( "colspan", 2 );
const r = i( "table", "moremenu", "mmatable-" + h.uuid );
n.appendChild( r ), t.appendChild( n );
const s = i( "tr", "moremenu_toggle", h.name, h.uuid, "mma_n_tr" );
s.appendChild( w ), r.appendChild( s ), e.forEach( e => {
const t = h.uuid + e.id,
n = i( "tr", e.always_visible ? " always_visible" : "", h.name, h.uuid, "tw_tr1" ),
s = i( "td", "clickable", t, "tw_tdn", 2, !0 );
s.setAttribute( "colspan", "2" ), s.addEventListener( "click", e.oc ), s.appendChild( [ e.img, e.text ] ), n.appendChild( s ), r.appendChild( n )
} ), k = i( "div", "", h.name, h.uuid, "moremenuenabler" );
const o = i( "i", "ifdisabled clickable far fa-" + te.get( "enabler" ), h.name, h.uuid, "moremenuenabler" ),
a = i( "i", "ifenabled clickable far fa-" + te.get( "enabler_enabled" ), h.name, h.uuid, "moremenuenabler_enabled" ),
l = i( "td", "moremenuenabler", h.name, h.uuid, "tw_td3" ),
c = $( l );
let A;
$( "body" ).get( 0 ).addEventListener( "click", () => {
A ? A = !1 : ( $( r ).removeClass( "show_moremenu" ), c.removeClass( "enabled" ) )
}, !1 ), k.addEventListener( "click", () => {
c.toggleClass( "enabled" ), $( r ).toggleClass( "show_moremenu" ), A = !0
}, !0 ),
k.appendChild( [ o, a ] ), s.appendChild( l ), l.appendChild( k )
}
}
e.appendChild( n ), _.push( e )
} else if ( h.referrer ) {
const t = i( "span", h.class || "", h.referrer, h.id, "ref", !0 );
t.textContent = h.name, $( l ).addClass( "pleasewait" ), _.push( t ), w( Object( r.copy )( h.data, {
referrer: h.referrer
} ), r => {
$( l ).removeClass( "pleasewait" );
const [ i, s ] = n( l, r.items[ 0 ] );
let o, a;
s ? ( o = i, a = s ) : a = i, o && e.parentNode.replaceChild( o, e ), t.parentNode.replaceChild( a, t )
} )
} else {
const e = i( "span", h.class || "", h.name, h.id, "ai" );
e.textContent = h.name, _.push( e )
}
}
return _
},
a = ( e, t, r ) => {
Object.keys( t ).forEach( i => {
const o = t[ i ];
if ( !e ) {
if ( !r[ o.pos ] ) return void console.warn( "Warn(cAm): unknown pos " + o.pos );
o.items && o.items.length && $( r[ o.pos ] ).show()
}
const a = e || r[ o.pos ],
l = a ? s( "tr", o.name, o.uuid || o.id, "outer" ) : null,
c = n( l, o );
if ( c && c.length ) {
a.appendChild( l );
for ( let e, t = 0; e = c[ t ]; t++ ) {
const n = t == c.length - 1 ? 3 - t : 0,
r = s( "td", "actiontd", o.name, o.uuid || o.id, t );
n > 0 && r.setAttribute( "colspan", n ), e && r.appendChild( e ), l.appendChild( r )
}
}
} )
},
l = e => {
let n;
if ( n = document.getElementById( "action" ) ) n.innerHTML = "";
else {
n = s( "div" ), n.setAttribute( "id", "action" ), n.setAttribute( "class", "action" );
const e = i( "div", "action status", "status", "status" );
e.setAttribute( "id", "status" ), $( document.body ).append( e, n )
}
const r = i( "table", "actionlayout", "actionlayout" );
n.appendChild( r );
const o = i( "tr", "actionpostr", "hor" ),
l = i( "td", "actionpostd", "hor_west" );
let c;
o.appendChild( l ), r.appendChild( o );
const A = i( "table", "actionregion noborder ar_top", "top" ),
d = i( "table", "actionregion noborder ar_right", "right" );
let u;
const p = i( "table", "actionregion noborder ar_left", "left" ),
h = i( "table", "actionregion noborder ar_bottom", "bottom" );
if ( Math.min( t.action_menu_columns, ne ) > 2 ) {
u = i( "table", "actionregion noborder ar_center", "center" );
const e = i( "td", "actionpostd", "hor_center" );
c = i( "td", "actionpostd", "hor_east" ), e.appendChild( u ), o.appendChild( e ), o.appendChild( c )
} else Math.min( t.action_menu_columns, ne ) > 1 ? ( u = d, c = i( "td", "actionpostd", "hor_east" ), o.appendChild( c ) ) : ( u = p, c = l );
$( [ u, d ] ).hide(), l.appendChild( A ), c.appendChild( d ), l.appendChild( p ), l.appendChild( h ), a( null, e, {
top: A,
left: p,
center: u,
right: d,
bottom: h
} )
},
c = ( e, t ) => {
try {
const n = () => {
t && ee.ACTIONMENU.CLOSE_ALLOWED && window.close()
};
t ? sendMessage( {
method: "newTab",
url: e
}, n ) : rea.tabs.getSelected( null, r => {
rea.tabs.sendMessage( r.id, {
method: "loadUrl",
url: e,
newtab: t
}, n )
} )
} catch ( e ) {
console.warn( "lU:", e )
}
},
A = e => {
let t = confirm( e.msg ),
n = {};
return t && e.ok ? n = e.ok : !t && e.cancel && ( n = e.cancel ), ( e.ok || e.cancel ) && ( t = !0 ), n.url && sendMessage( {
method: "newTab",
url: n.url
}, () => null ), t
},
d = e => {
let t;
const n = e.key || "general";
( t = k[ n ] ) && $( t ).remove(), k[ n ] = L.createGobalHint( Object( r.copy )( e, {
instant: !0
} ), document.getElementById( "status" ) )
},
u = ( e, t, n ) => {
try {
sendMessage( {
method: "reportAnIssue",
uuid: e,
to: t
}, () => {
n && n()
} )
} catch ( e ) {
console.warn( "raI:", e )
}
},
p = ( e, t ) => {
try {
sendMessage( {
method: "buttonPress",
name: e,
data: t.data
}, () => {
t.reload && rea.page.reload()
} )
} catch ( e ) {
console.warn( "rSU:", e )
}
},
h = {},
f = ( e, t, n ) => {
const r = e.charCodeAt( 0 );
return h[ r ] ? ( console.log( "MenuCmdKeyListener: ...failed!" ), !1 ) : ( h[ r ] = {
key: r,
cb: t,
elem: n
}, !0 )
},
g = ( e, t ) => {
try {
sendMessage( {
method: "execMenuCmd",
id: e
}, () => {
t && t()
} )
} catch ( e ) {
console.warn( "Error(eMC):", e )
}
},
m = e => {
try {
sendMessage( {
method: "saveScript",
uuid: e,
code: null
}, e => {
document.getElementById( "action" ).innerHTML = "", e && e.items && ( e.options && ( t = {
...t,
...e.options
} ), l( e.items ) )
} )
} catch ( e ) {
console.warn( "Error(sS): " + e.message )
}
},
v = ( e, n, r ) => {
try {
const i = {
method: "modifyScriptOptions",
uuid: e
};
n && "" != n && ( i[ n ] = r ), sendMessage( i, e => {
document.getElementById( "action" ).innerHTML = "", e && e.items && ( e.options && ( t = {
...t,
...e.options
} ), l( e.items ) )
} )
} catch ( e ) {
console.warn( "Error(mSo): " + e.message )
}
},
w = ( e, n ) => {
const r = Date.now(),
i = e.referrer,
s = e.min_delay,
o = e.layout;
sendMessage( {
method: "loadTree",
referrer: i,
layout: o,
url: e.url,
available_columns: ne,
uuid: e.uuid,
tabId: e.tabId
}, e => {
e.options && ( t = {
...t,
...e.options
}, t.statistics_enabled && _.a.init( "act", !0, {
trackView: !1,
version: rea.extension.manifest.version
} ) );
const i = Date.now() - r,
o = () => {
n( e )
};
!s || i >= s ? o() : window.setTimeout( o, s - i )
} )
},
k = {};
rea.extension.onMessage.addListener( ( e, t, n ) => {
"update" == e.method ? y() : "status" == e.method ? ( d( e.options ), n( {} ) ) : console.log( 'onMessage: Unknown method "' + e.method + '"' )
} );
const y = window.main = () => {
w( {
referrer: "actions",
min_delay: ee.ACTIONMENU.MIN_DELAY,
layout: !0,
tabId: e
}, e => {
if ( e.options && e.options.layout_user_css ) {
const t = document.createElement( "style" );
t.innerHTML = e.options.layout_user_css, ( document.head || document.body || document.documentElement || document ).appendChild( t )
}
document.body.addEventListener( "keydown", e => {
e.altKey || e.ctrlKey || e.shiftKey || Object.keys( h ).forEach( t => {
const n = h[ t ];
n && e.keyCode == n.key && n.cb.apply( n.elem || window, [] )
} )
}, !1 ), l( e.items )
} )
};
y()
} )
};
if ( o.I18N.init(), navigator.serviceWorker ) {
const e = rea.FEATURES.HTML5.LOCALSTORAGE,
t = () => {
[ "/options.html" ].forEach( e => {
navigator.serviceWorker.register( "cache.js", {
scope: e
} ).then( ( function ( t ) {
console.debug( `SQ: registration succ'ed for ${e} scope -> ${t.scope}` )
} ) ).catch( ( function ( t ) {
console.log( `SQ: registration for ${e} failed -> ${t}` )
} ) )
} )
},
n = () => {
navigator.serviceWorker.getRegistrations().then( ( function ( e ) {
for ( let t of e ) t.unregister()
} ) )
};
e && "true" !== e.getItem( "no_sw" ) ? t() : n()
}
0 === window.location.pathname.indexOf( "/action" ) ? ( () => {
window.sendMessage = ( e, t ) => {
e.origin = "action";
const r = e => {
n(), t( e )
};
rea.extension.sendMessage( e, e => {
if ( e && e.i18n ) return o.I18N.setLocale( e.i18n ).always( () => r( e ) );
r( e )
} )
};
let e = null,
t = null;
const n = () => {
e && ( window.clearTimeout( e ), e = null ), t && ( t.remove(), t = null )
};
e = window.setTimeout( () => {
t = $( '<div id="initialWait" class="lds-css ng-scope"><div class="lds-dual-ring"><div></div><div></div></div></div>' ), $( "body" ).append( t )
}, 200 ), f.a.init( {
suc: () => {
re()
},
fail: () => {
n(),
confirm( o.I18N.getMessage( "An_internal_error_occured_Do_you_want_to_visit_the_forum_" ) ) && window.open( "https://www.tampermonkey.net/bug" )
}
} )
} )() : 0 === window.location.pathname.indexOf( "/options" ) ? ( window.sendMessage = ( e, t ) => {
e.origin = "options", rea.extension.sendMessage( e, e => {
if ( e && e.i18n ) return o.I18N.setLocale( e.i18n ).always( () => {
t( e )
} );
t( e )
} )
}, d( o.I18N.getMessage( "Please_wait___" ) ), f.a.init( {
suc: () => {
u(), X()
},
fail: () => {
window.confirm( o.I18N.getOriginalMessage( "An_internal_error_occured_Do_you_want_to_visit_the_forum_" ) ) && ( window.location.href = "https://www.tampermonkey.net/bug" )
}
} ), document.title = "..." ) : 0 === window.location.pathname.indexOf( "/ask" ) ? ( window.sendMessage = ( e, t ) => {
e.origin = "extension", rea.extension.sendMessage( e, e => {
if ( e && e.i18n ) return o.I18N.setLocale( e.i18n ).always( () => {
t( e )
} );
t( e )
} )
}, f.a.init( {
suc: () => {
d( o.I18N.getMessage( "Please_wait___" ) ), K()
},
fail: () => {
window.confirm( o.I18N.getOriginalMessage( "An_internal_error_occured_Do_you_want_to_visit_the_forum_" ) ) && ( window.location.href = "https://www.tampermonkey.net/bug" )
}
} ), document.title = "..." ) : 0 === window.location.pathname.indexOf( "/userscript" ) && ( () => {
const e = Object( r.getUrlArgs )( !0 );
e.id && ( window.location.href = rea.extension.getURL( "options.html" ) + "#nav=" + e.id + "+editor" )
} )()
} ] );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment