@privacyscrubber/sdk 2.4.1 → 2.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.js +7 -1
- package/examples/python-bridge/bridge_daemon.cjs +1 -1
- package/examples/python-bridge/fastapi_example.py +1 -1
- package/examples/python-bridge/privacyscrubber/__init__.py +1 -1
- package/examples/python-bridge/privacyscrubber/bridge_daemon.cjs +1 -1
- package/examples/python-bridge/privacyscrubber/cli.py +1 -1
- package/examples/python-bridge/pyproject.toml +1 -1
- package/examples/python-bridge/setup.py +1 -1
- package/examples/python-bridge/test_python_bridge.py +1 -1
- package/index.cjs +21 -7
- package/index.js +21 -7
- package/package.json +5 -1
- package/ps-license-manager.js +261 -11
- package/ps-pii-engine.cjs +3611 -8
- package/scrubber-core.cjs +1801 -8
package/ps-license-manager.js
CHANGED
|
@@ -1,11 +1,261 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
function _0x1a5f(_0x32c7f9,_0x5978ca){_0x32c7f9=_0x32c7f9-0x1c6;const _0x3c944b=_0x3c94();let _0x1a5f83=_0x3c944b[_0x32c7f9];if(_0x1a5f['QPOVOO']===undefined){var _0x6c9e1f=function(_0xeb4aff){const _0x17c291='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x473892='',_0x2f0d32='';for(let _0x5954e1=0x0,_0x43867a,_0xc00880,_0x22903b=0x0;_0xc00880=_0xeb4aff['charAt'](_0x22903b++);~_0xc00880&&(_0x43867a=_0x5954e1%0x4?_0x43867a*0x40+_0xc00880:_0xc00880,_0x5954e1++%0x4)?_0x473892+=String['fromCharCode'](0xff&_0x43867a>>(-0x2*_0x5954e1&0x6)):0x0){_0xc00880=_0x17c291['indexOf'](_0xc00880);}for(let _0x20ba2d=0x0,_0x2ffc3f=_0x473892['length'];_0x20ba2d<_0x2ffc3f;_0x20ba2d++){_0x2f0d32+='%'+('00'+_0x473892['charCodeAt'](_0x20ba2d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2f0d32);};_0x1a5f['xfJTIw']=_0x6c9e1f,_0x1a5f['qKKzFY']={},_0x1a5f['QPOVOO']=!![];}const _0x3a4d53=_0x3c944b[0x0],_0x2b17b1=_0x32c7f9+_0x3a4d53,_0x2883d7=_0x1a5f['qKKzFY'][_0x2b17b1];return!_0x2883d7?(_0x1a5f83=_0x1a5f['xfJTIw'](_0x1a5f83),_0x1a5f['qKKzFY'][_0x2b17b1]=_0x1a5f83):_0x1a5f83=_0x2883d7,_0x1a5f83;}function _0x3c94(){const _0x9a59a6=['mdmXmq','DgvT','mJCZna','B25bBG','nZm1oa','luXjqW','mJG1mG','v0LfqG','nta0na','mJCXmq','odKYnq','ntC0nG','nMPYwePhsq','ndy3oa','mJqYoa','mty0oa','A2v5ia','B2r3yG','ndC3mG','ntGXoa','odiZnW','mtqXmq','ywLSzq','zxKGCa','ndyZnW','ntaXnW','BM93','nJC4mq','nJi2ma','B24GzG','mteYswTTDMTg','mdGYoq','odmXnW','mta0ma','mta5mJy4mgPmtKnJuW','C2v0sq','u0eT','mte0oq','mtmZnG','Dg9tDa','uMrsuW','ndG4mG','DhjPBq','mtCYoq','nta4nG','ode0mG','y3j5Ca','yw5HzW','odyXmG','ugLSBW','nZyXna','nJG4na','mJC0mJCYvfLbEwPL','zMLUzq','CM92Aq','yxnL','oteYnq','CgLYzq','mdu5mq','mte0otC4ndbYwxfoyMO','ody2mG','mJy4ma','mtKWnq','EurpAq','y29UyW','ota4ma','B25fEa','DxvpDa','ntG4na','u0rl','mtqYmq','BgXIyq','nte1oa','mta5nW','Dw5Kzq','otyWoq','zgvK','odboy2XZvwK','mtiWmq','mtK3na','Bw9JAW','x1nbta','nZK3oq','zxLk','nty3ma','Aw5JBa','suH4tG','nJa1nG','tKrNuq','C2XPyW','z01kqq','mJeZmq','Cg93','otaYmG','odq5nW','mJmZna','nZmXmG','mtyYnG','BgvK','nZCXnW','BhKGza','CgfYCW','ote4mG','ntmXoq','sw52yq','ote2oq','otGYmJi2n3rzvejArG','C3rVCG','B21HBa','nZqYna','otm5nq','EhLzsq','y0v5rW','ndq3nW','C05pqW','BM9Tyq','zgf0Aq','q2HHCG','DgvK','t0zgta','Dg9vCa','y2HHCG','zxrLyW','ze9Zwa','CMLUzW','ywDL','zNjVBq','ndaWnW','nty5mG','mZiYma','sLDuia','nJKXmG','vevbtq','nJq5oq','ody1mG','zxHWAq','ufmTua','v0LtDG','rwz3ua','nZa2mq','zgvJCG','odiXmG','uKLkva','mZyWoa','ndC5nG','otG2oa','ntqZmdi3uvniAKrH','yMLUyq','mdy5na','otKWma','BfjKsW','CMvK','ntu0nW','ufvcta','nJqYma','uLbssq','vf8Yma','CMvWBa','vgLTzq','r0vnBa','zM9YBq','lvbjta','mZiXoq','su5fxW','nZyWmW','mtyWmG','nJm0nW','mZu0ma','ndi1mW','EfP5sa','C2vLBG','nde0oq','mJm4oq','C3bSAq','mte3mq','mZuYmq','DgLVBG','ntaXoq','mZy5ma','DcbLEa','mZq5na','t1qT','B3bQtG','mJC2nW','nde1mW','mJC2oq','mtziC05TseS','nZu5nq','uxz2BW','mJe4oa','ndeYoq','sM1guq','odG1nW','nJmWmW','nZCWnG','ntaZna','mdG1nW','ntC0oq','nZa4nW','nJa4mW','v2L0Aa','igzHAq','otaZnW','mdy0nW','ru5urq','s0vzxW','s2X1sa','DhfvuG','mZGXmW','DhnxAq','nZmWoa','DcbKzq','mJa2nG','q29Kzq','mdG2nq','CgvYqW','BgLKia','oti5na','nZq3ma','ndKXnq','nJKZmG','CfvKtq','nta1oa','nti0mG','ndu2mG','tgLJzq','mJu4mq','mJeYnW','odeWnq','sLDu','CNrZ','zxHWBW','oda1nW','AYbYBW','yxn0xW','BNnLtq','t0vn','C3vICW','ntaZnG','odCYoq','q2XVyW','odqYoq','ntu4nW','nZG2oq','y2SGyq','nteXoq','wLreuW','ndyWoa','BgvUzW','odyYoa','nJG5oq','odK3oq','mtaZngXUsu96Bq','mZqYmdHHCgHhtfC','mZC2ma','DwrLCW','nJy4mq','AfDhEa','DMfSAq','nZyWnq','C3rHCG','suXpva','zxHW','mZGWmW','nJiXmq','mJK2ma','nZaYmG','ChnFBa','se5AwG','otm3oq','nJi0mG','rvLFrq','mZi4ntK0v1nStvz0','tM8GAW','z2v0sq','mdq4nq','mZG4nG','ndy4ma','mJa2nq','DgfYDa','tNL0yW','uLnb','mtu0oq','uLnbia','zw5KCW','nZq2mq','odu1oq','mJyZnq','rvLFtG','AezTsW','nJu1na','mJuYnW','mdmYma','yMfZzq','DgLLCG','ufmTuG','CxHurG','CgfKuW','x3rPBq','wKvHwa','uvvADq','mdC1na','rePptW','DhjPBG','u0fmva','sunFsW','ywnL','Exb0Aq','mZq4nG','ufjp','mJzFiq','ntK2na','D01nEG','mZa5nG'];_0x3c94=function(){return _0x9a59a6;};return _0x3c94();}const _0x221d4e=_0x1a5f,_0x598653=_0x1a5f;(function(_0x3013c9,_0x46b52a){const _0x358231={_0x1a1d16:0x258,_0x39e3e9:0x1ce,_0xeb8f01:0x29d,_0x11258d:0x22d,_0x24be28:0x1e1,_0x3240e0:0x275,_0x10618b:0x246,_0x588399:0x1cd,_0x2eb230:0x23f},_0x3db264=_0x1a5f,_0x8e2592=_0x1a5f,_0x31155a=_0x3013c9();while(!![]){try{const _0x4daf72=-parseInt(_0x3db264(_0x358231._0x1a1d16))/0x1*(-parseInt(_0x8e2592(_0x358231._0x39e3e9))/0x2)+-parseInt(_0x8e2592(_0x358231._0xeb8f01))/0x3*(-parseInt(_0x3db264(0x2c5))/0x4)+parseInt(_0x3db264(_0x358231._0x11258d))/0x5*(parseInt(_0x8e2592(0x217))/0x6)+parseInt(_0x8e2592(_0x358231._0x24be28))/0x7*(parseInt(_0x8e2592(0x229))/0x8)+parseInt(_0x8e2592(_0x358231._0x3240e0))/0x9+-parseInt(_0x8e2592(_0x358231._0x10618b))/0xa+-parseInt(_0x8e2592(_0x358231._0x588399))/0xb*(parseInt(_0x8e2592(_0x358231._0x2eb230))/0xc);if(_0x4daf72===_0x46b52a)break;else _0x31155a['push'](_0x31155a['shift']());}catch(_0x2ba0d2){_0x31155a['push'](_0x31155a['shift']());}}}(_0x3c94,0xb9d6b),function(_0x3b16f3){const _0x44cba6={_0x1df1a0:0x2a6,_0x4a9981:0x25e,_0x19661d:0x240,_0x3bc060:0x286,_0x6f6a9:0x266,_0x2f3881:0x25d,_0x5032d4:0x22c,_0x5dff64:0x26a,_0x2c1377:0x2ea,_0x57257b:0x1d8,_0x1fd936:0x29c,_0x135730:0x2bc,_0x1a9f48:0x2c3,_0xcc36a7:0x2c6,_0x31b1d0:0x29a,_0x45032d:0x256,_0x57ce4e:0x219,_0x5d4b1a:0x1d4,_0x1c675f:0x1f3,_0x49c0cd:0x259,_0x1b63ee:0x2d5,_0x4e4e45:0x223,_0x29e613:0x2ee,_0x5c4530:0x23d,_0x21b097:0x2cb,_0x152e47:0x272,_0x83391d:0x2d2,_0xa9ca7b:0x290,_0x1b7e4f:0x1fe,_0x5bbaaf:0x1de,_0x5ab8eb:0x1c8,_0x35686e:0x254,_0x4d2624:0x214,_0x57e851:0x20d,_0x5a97af:0x27c,_0x44b23c:0x1e4,_0x49298b:0x2fe,_0x2fd7b3:0x1e6,_0x2ab0d5:0x2a3,_0x31421d:0x2b3,_0xd0d705:0x2e1,_0x2ff59d:0x20a,_0x224c90:0x1ca,_0xfb0df0:0x2af,_0x2f715d:0x230,_0x204d11:0x1eb,_0x4b151d:0x26c,_0x135b06:0x23b,_0x1ee7ba:0x22a,_0xc8c3ef:0x215,_0x3e59d3:0x22b,_0x15344f:0x262,_0x5289f0:0x1cb,_0x2b7c65:0x1cc,_0x239f87:0x2d6,_0x40abe6:0x21f,_0xcaf30:0x28c,_0x48d2aa:0x26e,_0x2979a9:0x268,_0x5d4af6:0x21e,_0x2097f2:0x269,_0x255ab3:0x1df,_0x20cbd5:0x296,_0x436810:0x2e7,_0x54d364:0x2b2,_0x1422c8:0x2eb,_0x570bcf:0x291,_0x59b9af:0x2a5,_0x4bc517:0x278,_0x35091b:0x205,_0xeba6e3:0x1ef,_0x57a199:0x247,_0x126e8b:0x2b9,_0x46aaaa:0x2b1,_0x42dd21:0x231,_0x3e7b45:0x238,_0x5441be:0x279,_0x54b8ba:0x21d,_0x5623cc:0x216,_0x5792aa:0x2c4,_0xf17806:0x227,_0x15e368:0x26b,_0xa31af:0x2d0,_0x242705:0x208,_0x4b783a:0x1e7,_0xdcc722:0x2e4,_0x5f3880:0x1d9,_0x5e08e8:0x2b6,_0x118258:0x1d1,_0x325bf0:0x1f4,_0x3b6915:0x1cf,_0x4008a7:0x298,_0x504a34:0x2dd,_0x3c2877:0x2e5,_0x5a530d:0x2e6,_0x428f9f:0x25a,_0xe250d:0x1db,_0x4e6e7d:0x271,_0x1c5e40:0x29b,_0x3d8f11:0x2f9,_0x5a12b1:0x1c6,_0x5bdfc6:0x2df,_0x338565:0x2c2,_0x3d2881:0x245,_0x514bc8:0x28a,_0x1ec124:0x211,_0x3ed658:0x2fc,_0x3d5252:0x2fa,_0x3933bd:0x2d1,_0x48100f:0x2bd,_0x1bbf71:0x2a0,_0x41b5b9:0x1f5,_0x5d37b0:0x2bf,_0x2dbfee:0x2b0,_0x10b59b:0x21a,_0x1edc25:0x1f0,_0x1edde3:0x220,_0x350050:0x2fd,_0x1d73ca:0x274,_0x4afa98:0x2a4,_0x20f146:0x202,_0x5bcf61:0x1f1,_0x5c5652:0x1e0,_0xb85996:0x282,_0x419ae4:0x2ae,_0x4e2d1f:0x2d8,_0x558990:0x201,_0x15b9fc:0x2a7,_0x4fddcd:0x207,_0x43dfd6:0x255,_0x45e76f:0x2ec,_0x15a47b:0x2f6,_0x33bd49:0x23a,_0x382df2:0x2a1,_0x439ff7:0x209,_0x193884:0x2ec,_0x537ca8:0x2ec,_0x2558b4:0x240,_0x173482:0x2f2,_0x2f58dd:0x2f1,_0xdb38fe:0x2ec,_0x333659:0x23a},_0x39f92f={_0xd7b636:0x222,_0x2721e4:0x241,_0x33b642:0x257,_0x3acaf3:0x235,_0x36753a:0x283,_0x369a11:0x2e2,_0x55f9c2:0x242,_0x137404:0x2b8,_0x233739:0x2da,_0x431ac1:0x25b,_0x2dc2e9:0x288,_0x4efafe:0x276,_0x5a1e2c:0x1e3,_0x220c7a:0x1dc,_0x13bb03:0x2f5,_0x54d341:0x2b5,_0x359a30:0x1fb,_0x237794:0x2a9,_0x3d5ebe:0x212,_0x35c773:0x2a9,_0x2e7f74:0x288,_0x2e0165:0x22e,_0x40b530:0x232,_0x4f7248:0x287,_0xd4bbdc:0x212,_0x3ec217:0x2a9,_0x913127:0x2a9,_0x3436ea:0x20e,_0x3b3a7d:0x277,_0x38f8bd:0x2fb,_0x358ab4:0x2f4,_0x35f6b5:0x252,_0x56b235:0x2ff,_0x4f327d:0x27e,_0x138d01:0x281,_0x21d8d7:0x2d9,_0x72c6f4:0x255,_0x2b867a:0x1d5,_0x513435:0x2dc,_0x4aba3e:0x293,_0x252269:0x1d6,_0x2c7aa6:0x2f8,_0x159fd8:0x200,_0x26e0be:0x284,_0x268cdc:0x2e0,_0x28b488:0x232,_0x64fbf1:0x1fa,_0x212421:0x1e8,_0x1f1ae9:0x1c7,_0x1187a6:0x1dd,_0x567b38:0x28f,_0x132a2d:0x244,_0x95ab5d:0x24d,_0x349b89:0x244,_0x46c6c7:0x23c,_0x1b76eb:0x2be,_0x4a7e5e:0x2de,_0x1f0eb7:0x239,_0x39508e:0x26d,_0x337664:0x2dc,_0x4024de:0x1f8,_0x1a0d75:0x22f,_0xf759cd:0x1c9,_0x131f6c:0x1c9,_0x184d78:0x284,_0x5106c9:0x2e0,_0x2d7b41:0x232,_0x535c80:0x287,_0x2ae324:0x1fa,_0x2e97e8:0x1ff,_0x1f51a6:0x1c7,_0x45ea9:0x2b8,_0x4f233a:0x1fc,_0x28282d:0x2c1,_0x2c9882:0x244,_0x83b5d0:0x24d,_0x1e3128:0x1ec,_0x2079fd:0x21b,_0x2de481:0x292,_0x3acefc:0x2a2,_0x4cc4cb:0x297,_0x365709:0x228,_0x2d0a8d:0x221,_0x36e384:0x233,_0x41ada7:0x206,_0x32bde1:0x28f,_0x3a5070:0x261,_0x46c82a:0x24e,_0x5a78e3:0x1fd,_0x8b326b:0x260,_0x14974f:0x1d0,_0xa5c7f8:0x1c7,_0x5a1d10:0x25c,_0x2f10ae:0x2a7,_0x6c42f9:0x2e0,_0x2f4f54:0x232,_0x29face:0x287,_0x50cb25:0x1fa,_0x371982:0x1e8,_0x4a81cc:0x2aa,_0x5b20bc:0x2dc,_0x5c2025:0x263,_0x49b6ec:0x2b8,_0x32eda3:0x2a8,_0xb7d473:0x2a8,_0x57037e:0x203,_0x1cc88b:0x1c9,_0xc0fd84:0x1ff,_0x1da7e6:0x1c9,_0x23d40c:0x284,_0xa6b36:0x232,_0x573c61:0x1fa,_0xc25e3b:0x1c9,_0x5a2d20:0x27a,_0x1bafaf:0x21c,_0x420411:0x1ed,_0x3f3b9a:0x2d3,_0x3b9a08:0x203,_0x59abac:0x2a8,_0x485904:0x203,_0x5d35de:0x270,_0x5e06b4:0x1f7,_0x496893:0x206,_0x6511a4:0x244,_0x2dd924:0x244,_0x53b09f:0x2f0,_0x4bd75e:0x2a2,_0x1a66a7:0x28d,_0x46d661:0x27f,_0x5c6693:0x273,_0x3b5659:0x2e3,_0x576a91:0x2ab},_0x55373f={_0xa1b11f:0x267,_0x17cf30:0x1c9,_0x8f438b:0x2c7,_0xd4d9bc:0x2b4,_0x43b60b:0x1dd,_0x16cbaf:0x299,_0x13cb69:0x265,_0x498cc7:0x264,_0x3f2189:0x1d2,_0x236a32:0x2ca,_0x51ecb1:0x1e9,_0xcb076e:0x24a,_0x255a98:0x1d2,_0x42a0c3:0x295,_0x81bf25:0x2ca,_0x305164:0x24b,_0xf6b359:0x21c,_0x40698c:0x287},_0x543496={_0x3efe61:0x1f2,_0x25aafe:0x27b,_0x6ab21a:0x1f9},_0x2788ab={_0x2e7418:0x2c1,_0x2fb208:0x1c9,_0x4c2768:0x287,_0x3e4e83:0x1fa,_0x4b5078:0x1e8},_0x32dd92={_0x3b9f15:0x232,_0x219611:0x287,_0x2f277e:0x1c9,_0x12185c:0x289,_0x1967f3:0x280,_0xd8fea8:0x2e0,_0x431b24:0x2f8},_0x7de70f={_0x40f8cc:0x27d},_0x2e3d02=_0x1a5f,_0x47b3e3=_0x1a5f,_0x334b7a={'xZyHO':function(_0x1949bf,_0x48e02e){return _0x1949bf%_0x48e02e;},'sNOCD':function(_0x24e862,_0x425b38){return _0x24e862/_0x425b38;},'opjNM':function(_0x5552c3,_0x53ed61){return _0x5552c3<_0x53ed61;},'WISvS':function(_0x49ad03,_0x255756){return _0x49ad03<<_0x255756;},'QvvoI':function(_0x18456e,_0x246cba){return _0x18456e|_0x246cba;},'HNZZm':function(_0x3c962a,_0x30802a){return _0x3c962a<_0x30802a;},'RIJTN':function(_0x280609,_0x2e80f8){return _0x280609%_0x2e80f8;},'gMJAa':function(_0x348f2f,_0xcde018){return _0x348f2f|_0xcde018;},'hWGxS':function(_0x3fea3f,_0x3fa154,_0x27f928){return _0x3fea3f(_0x3fa154,_0x27f928);},'JmFQY':function(_0xc88662,_0x57071b){return _0xc88662&_0x57071b;},'Nytcx':function(_0x5adf3b,_0x41bcbc){return _0x5adf3b^_0x41bcbc;},'yDOiU':function(_0x844fcc,_0x49745a){return _0x844fcc^_0x49745a;},'EfwPT':function(_0x4e828e,_0x15bfb7,_0x1dd8fd){return _0x4e828e(_0x15bfb7,_0x1dd8fd);},'odwby':function(_0x5cb30a,_0x1b244c){return _0x5cb30a+_0x1b244c;},'pUdMr':function(_0x47ccd7,_0x482d15){return _0x47ccd7>>_0x482d15;},'tqURs':function(_0xd2073e,_0x33f2d7){return _0xd2073e!==_0x33f2d7;},'WIEBS':function(_0x7b9e56,_0x5b5a2a){return _0x7b9e56===_0x5b5a2a;},'KluHU':function(_0x264cd8,_0x260c4c){return _0x264cd8!==_0x260c4c;},'DJOOK':function(_0x388133,_0x5278d3){return _0x388133(_0x5278d3);},'ZEaXU':function(_0x50fdc0,_0x42dc76,_0x235ac8){return _0x50fdc0(_0x42dc76,_0x235ac8);},'RdRST':function(_0x221059,_0x101631){return _0x221059===_0x101631;},'IHxNE':_0x2e3d02(0x250),'uuOtH':_0x2e3d02(0x2f7),'QUZue':_0x2e3d02(0x2d7)+_0x2e3d02(_0x44cba6._0x1df1a0)+'SE','GEMlO':function(_0x34106f,_0x25f5a9){return _0x34106f===_0x25f5a9;},'NDgQK':_0x47b3e3(_0x44cba6._0x4a9981),'xyYIT':function(_0x2ea19a,_0x3fc42d){return _0x2ea19a+_0x3fc42d;},'dOsXx':function(_0x27227a,_0xfc4ad4){return _0x27227a(_0xfc4ad4);},'lRdKK':function(_0x8495b3,_0x3662f7){return _0x8495b3!==_0x3662f7;},'wMMzi':_0x2e3d02(0x255)+_0x47b3e3(_0x44cba6._0x19661d)+'d'},_0x15c2fd=_0x334b7a[_0x47b3e3(_0x44cba6._0x3bc060)+'x'](BigInt,_0x2e3d02(_0x44cba6._0x6f6a9)+_0x2e3d02(_0x44cba6._0x2f3881)+_0x47b3e3(_0x44cba6._0x5032d4)+_0x2e3d02(0x2ce)+_0x47b3e3(0x218)+_0x47b3e3(_0x44cba6._0x5dff64)+_0x2e3d02(_0x44cba6._0x2c1377)+_0x2e3d02(_0x44cba6._0x57257b)+_0x47b3e3(_0x44cba6._0x1fd936)+_0x47b3e3(0x23e)+_0x2e3d02(0x248)+_0x47b3e3(_0x44cba6._0x135730)+_0x47b3e3(_0x44cba6._0x1a9f48)+_0x47b3e3(0x2f3)+_0x2e3d02(_0x44cba6._0xcc36a7)+_0x2e3d02(_0x44cba6._0x31b1d0)+_0x2e3d02(_0x44cba6._0x45032d)+_0x47b3e3(0x24c)+_0x47b3e3(_0x44cba6._0x57ce4e)+_0x2e3d02(0x236)+_0x47b3e3(_0x44cba6._0x5d4b1a)+_0x47b3e3(0x28b)+_0x47b3e3(0x2c8)+_0x47b3e3(0x2ef)+_0x2e3d02(_0x44cba6._0x1c675f)+_0x47b3e3(_0x44cba6._0x49c0cd)+_0x2e3d02(0x2ad)+_0x2e3d02(_0x44cba6._0x1b63ee)+_0x47b3e3(_0x44cba6._0x4e4e45)+_0x2e3d02(_0x44cba6._0x29e613)+_0x47b3e3(_0x44cba6._0x5c4530)+_0x47b3e3(_0x44cba6._0x21b097)+_0x2e3d02(0x249)+_0x47b3e3(_0x44cba6._0x152e47)+_0x47b3e3(0x2b7)+_0x47b3e3(_0x44cba6._0x83391d)+_0x47b3e3(_0x44cba6._0xa9ca7b)+_0x2e3d02(_0x44cba6._0x1b7e4f)+_0x47b3e3(_0x44cba6._0x5bbaaf)+_0x47b3e3(0x243)+_0x47b3e3(_0x44cba6._0x5ab8eb)+_0x47b3e3(_0x44cba6._0x35686e)+_0x2e3d02(_0x44cba6._0x4d2624)+_0x2e3d02(_0x44cba6._0x57e851)+_0x2e3d02(_0x44cba6._0x5a97af)+_0x2e3d02(_0x44cba6._0x44b23c)+_0x47b3e3(0x234)+_0x47b3e3(_0x44cba6._0x49298b)+_0x2e3d02(_0x44cba6._0x2fd7b3)+_0x47b3e3(_0x44cba6._0x2ab0d5)+_0x47b3e3(0x20b)+_0x2e3d02(_0x44cba6._0x31421d)+_0x47b3e3(_0x44cba6._0xd0d705)+_0x2e3d02(0x213)+_0x2e3d02(_0x44cba6._0x2ff59d)+_0x47b3e3(_0x44cba6._0x224c90)+_0x47b3e3(_0x44cba6._0xfb0df0)+_0x2e3d02(_0x44cba6._0x2f715d)+_0x47b3e3(0x2c9)+_0x47b3e3(_0x44cba6._0x204d11)+_0x47b3e3(0x237)+_0x47b3e3(0x253)+_0x47b3e3(0x20f)+_0x2e3d02(_0x44cba6._0x4b151d)+_0x47b3e3(_0x44cba6._0x135b06)+_0x2e3d02(0x2ed)+_0x2e3d02(_0x44cba6._0x1ee7ba)+_0x2e3d02(0x226)+_0x47b3e3(_0x44cba6._0xc8c3ef)+_0x2e3d02(_0x44cba6._0x3e59d3)+_0x47b3e3(0x251)+_0x47b3e3(_0x44cba6._0x15344f)+_0x2e3d02(_0x44cba6._0x5289f0)+_0x2e3d02(_0x44cba6._0x2b7c65)+_0x47b3e3(_0x44cba6._0x239f87)+_0x47b3e3(_0x44cba6._0x40abe6)+_0x2e3d02(0x2fa)+_0x2e3d02(_0x44cba6._0xcaf30)+_0x2e3d02(_0x44cba6._0x48d2aa)+_0x47b3e3(_0x44cba6._0x2979a9)+_0x2e3d02(_0x44cba6._0x5d4af6)+_0x2e3d02(_0x44cba6._0x2097f2)+_0x2e3d02(_0x44cba6._0x255ab3)+_0x2e3d02(_0x44cba6._0x20cbd5)+_0x2e3d02(_0x44cba6._0x436810)+_0x2e3d02(_0x44cba6._0x54d364)+_0x47b3e3(_0x44cba6._0x1422c8)+_0x2e3d02(_0x44cba6._0x570bcf)+_0x2e3d02(_0x44cba6._0x59b9af)+_0x2e3d02(_0x44cba6._0x4bc517)+_0x2e3d02(_0x44cba6._0x35091b)+_0x47b3e3(_0x44cba6._0xeba6e3)+_0x47b3e3(_0x44cba6._0x57a199)+_0x47b3e3(_0x44cba6._0x126e8b)+_0x2e3d02(_0x44cba6._0x46aaaa)+_0x47b3e3(_0x44cba6._0x42dd21)+_0x2e3d02(_0x44cba6._0x3e7b45)+_0x2e3d02(_0x44cba6._0x5441be)+_0x47b3e3(_0x44cba6._0x54b8ba)+_0x2e3d02(0x25f)+_0x2e3d02(_0x44cba6._0x5623cc)+_0x47b3e3(_0x44cba6._0x5792aa)+_0x2e3d02(_0x44cba6._0xf17806)+_0x2e3d02(_0x44cba6._0x15e368)+_0x47b3e3(_0x44cba6._0xa31af)+_0x47b3e3(_0x44cba6._0x242705)+_0x47b3e3(_0x44cba6._0x4b783a)+_0x2e3d02(_0x44cba6._0xdcc722)+_0x47b3e3(_0x44cba6._0x5f3880)+_0x2e3d02(_0x44cba6._0x5e08e8)+_0x47b3e3(0x1da)+_0x2e3d02(_0x44cba6._0x118258)+_0x47b3e3(_0x44cba6._0x325bf0)+_0x2e3d02(0x2e9)+_0x47b3e3(_0x44cba6._0x3b6915)+_0x47b3e3(_0x44cba6._0x4008a7)+_0x2e3d02(_0x44cba6._0x504a34)+_0x47b3e3(_0x44cba6._0x3c2877)+_0x47b3e3(_0x44cba6._0x5a530d)+_0x2e3d02(0x2ba)+_0x2e3d02(_0x44cba6._0x428f9f)+_0x2e3d02(_0x44cba6._0xe250d)+_0x47b3e3(_0x44cba6._0x4e6e7d)+_0x2e3d02(_0x44cba6._0x1c5e40)+_0x47b3e3(0x1e5)+_0x2e3d02(0x2cc)+_0x2e3d02(_0x44cba6._0x3d8f11)+_0x47b3e3(_0x44cba6._0x5a12b1)+_0x2e3d02(_0x44cba6._0x5bdfc6)+_0x2e3d02(_0x44cba6._0x338565)+_0x2e3d02(_0x44cba6._0x3d2881)+_0x47b3e3(_0x44cba6._0x514bc8)+_0x2e3d02(_0x44cba6._0x1ec124)+_0x2e3d02(0x2db)+_0x47b3e3(0x1ee)+_0x47b3e3(_0x44cba6._0x3ed658)+_0x2e3d02(0x2cf)+_0x47b3e3(_0x44cba6._0x3d5252)+_0x2e3d02(0x24f)+_0x2e3d02(_0x44cba6._0x3933bd)+_0x2e3d02(0x28e)+_0x2e3d02(_0x44cba6._0x48100f)+_0x47b3e3(_0x44cba6._0x1bbf71)+_0x47b3e3(0x224)+_0x2e3d02(_0x44cba6._0x41b5b9)+_0x2e3d02(_0x44cba6._0x5d37b0)+_0x2e3d02(_0x44cba6._0x2dbfee)+_0x2e3d02(0x29f)+_0x47b3e3(_0x44cba6._0x10b59b)+_0x47b3e3(_0x44cba6._0x1edc25)+_0x47b3e3(_0x44cba6._0x1edde3)+_0x47b3e3(0x2cd)+_0x2e3d02(_0x44cba6._0x350050)+_0x47b3e3(_0x44cba6._0x1d73ca)+'1'),_0x243f53=0x10001n;function _0x15e052(_0x458a3d,_0x119841,_0x37eed0){const _0xe2ad87=_0x2e3d02,_0x543fb8=_0x2e3d02;let _0x478e6a=0x1n;_0x458a3d=_0x458a3d%_0x37eed0;while(_0x119841>0x0n){if(_0x334b7a[_0xe2ad87(0x2b4)+'O'](_0x119841,0x2n)===0x1n)_0x478e6a=_0x478e6a*_0x458a3d%_0x37eed0;_0x119841=_0x334b7a[_0xe2ad87(_0x7de70f._0x40f8cc)+'D'](_0x119841,0x2n),_0x458a3d=_0x458a3d*_0x458a3d%_0x37eed0;}return _0x478e6a;}function _0x14784c(_0xa56482){const _0xe73633=_0x47b3e3,_0x3a32d2=_0x47b3e3;let _0x44e609=_0xa56482[_0xe73633(_0x32dd92._0x3b9f15)+_0x3a32d2(_0x32dd92._0x219611)](0x10);if(_0x44e609[_0x3a32d2(_0x32dd92._0x2f277e)+'th']%0x2!==0x0)_0x44e609='0'+_0x44e609;let _0x2a592e='';for(let _0x4b2933=0x0;_0x4b2933<_0x44e609[_0xe73633(_0x32dd92._0x2f277e)+'th'];_0x4b2933+=0x2){_0x2a592e+=String[_0xe73633(_0x32dd92._0x12185c)+_0xe73633(_0x32dd92._0x1967f3)+_0xe73633(_0x32dd92._0xd8fea8)](parseInt(_0x44e609[_0xe73633(_0x32dd92._0x431b24)+'tr'](_0x4b2933,0x2),0x10));}return _0x2a592e;}function _0x3a8184(_0x328779){const _0x459ed4=_0x2e3d02,_0x53f859=_0x2e3d02;let _0x537fd2='';for(let _0x5f47aa=0x0;_0x334b7a[_0x459ed4(_0x2788ab._0x2e7418)+'M'](_0x5f47aa,_0x328779[_0x459ed4(_0x2788ab._0x2fb208)+'th']);_0x5f47aa++){_0x537fd2+=_0x328779[_0x459ed4(0x284)+_0x459ed4(0x2e0)+'At'](_0x5f47aa)[_0x459ed4(0x232)+_0x53f859(_0x2788ab._0x4c2768)](0x10)[_0x459ed4(_0x2788ab._0x3e4e83)+_0x459ed4(_0x2788ab._0x4b5078)](0x2,'0');}return BigInt('0x'+_0x537fd2);}function _0x1c0e86(_0x1fe587){const _0x580afd=_0x2e3d02,_0x538eab=_0x2e3d02,_0x1dea45={'hFmKe':function(_0x595b68,_0x3662a8){return _0x595b68|_0x3662a8;},'cEyGx':function(_0x4da091,_0x1e4482){return _0x4da091>>>_0x1e4482;},'qxTFJ':function(_0x24710a,_0x4d0c89){const _0xcb4d78=_0x1a5f;return _0x334b7a[_0xcb4d78(0x294)+'S'](_0x24710a,_0x4d0c89);}};function _0x3be773(_0x3bc4d6,_0x20bc6e){const _0x5a5ea4=_0x1a5f,_0x127b98=_0x1a5f;return _0x1dea45[_0x5a5ea4(_0x543496._0x3efe61)+'e'](_0x1dea45[_0x127b98(_0x543496._0x25aafe)+'x'](_0x3bc4d6,_0x20bc6e),_0x1dea45[_0x5a5ea4(_0x543496._0x6ab21a)+'J'](_0x3bc4d6,0x20-_0x20bc6e));}var _0x546093=Math[_0x580afd(_0x55373f._0xa1b11f)],_0x1709c7=_0x546093(0x2,0x20),_0x4ac304=_0x538eab(_0x55373f._0x17cf30)+'th',_0x248873,_0x51a087,_0x99e006='',_0x50c2fb=[],_0x340975=_0x1fe587[_0x4ac304]*0x8,_0x321734=_0x1c0e86['h']=_0x1c0e86['h']||[],_0x1b861f=_0x1c0e86['k']=_0x1c0e86['k']||[],_0x193dc0=_0x1b861f[_0x4ac304],_0x5b7783={};for(var _0x12cf79=0x2;_0x193dc0<0x40;_0x12cf79++){if(!_0x5b7783[_0x12cf79]){for(_0x248873=0x0;_0x248873<0x139;_0x248873+=_0x12cf79){_0x5b7783[_0x248873]=_0x12cf79;}_0x321734[_0x193dc0]=_0x334b7a[_0x538eab(_0x55373f._0x8f438b)+'I'](_0x546093(_0x12cf79,0.5)*_0x1709c7,0x0),_0x1b861f[_0x193dc0++]=_0x546093(_0x12cf79,0x1/0x3)*_0x1709c7|0x0;}}_0x1fe587+='\u0080';while(_0x334b7a[_0x580afd(_0x55373f._0xd4d9bc)+'O'](_0x1fe587[_0x4ac304],0x40)-0x38)_0x1fe587+='\x00';for(_0x248873=0x0;_0x334b7a[_0x580afd(_0x55373f._0x43b60b)+'m'](_0x248873,_0x1fe587[_0x4ac304]);_0x248873++){_0x51a087=_0x1fe587[_0x580afd(0x284)+_0x538eab(0x2e0)+'At'](_0x248873);if(_0x51a087>>0x8)return;_0x50c2fb[_0x248873>>0x2]|=_0x51a087<<_0x334b7a[_0x580afd(_0x55373f._0x16cbaf)+'N'](0x3-_0x248873,0x4)*0x8;}_0x50c2fb[_0x50c2fb[_0x4ac304]]=_0x334b7a[_0x538eab(_0x55373f._0x13cb69)+'a'](_0x340975/_0x1709c7,0x0),_0x50c2fb[_0x50c2fb[_0x4ac304]]=_0x340975;for(_0x51a087=0x0;_0x334b7a[_0x538eab(_0x55373f._0x43b60b)+'m'](_0x51a087,_0x50c2fb[_0x4ac304]);){var _0x5886cb=_0x50c2fb[_0x538eab(_0x55373f._0x498cc7)+'e'](_0x51a087,_0x51a087+=0x10),_0x3b4f64=_0x321734;_0x321734=_0x321734[_0x538eab(_0x55373f._0x498cc7)+'e'](0x0,0x8);for(_0x248873=0x0;_0x248873<0x40;_0x248873++){var _0x30929d=_0x5886cb[_0x248873-0xf],_0x1ca41f=_0x5886cb[_0x248873-0x2],_0x3de2ee=_0x321734[0x0],_0x256229=_0x321734[0x4],_0x2d5baf=_0x321734[0x7]+(_0x3be773(_0x256229,0x6)^_0x334b7a[_0x538eab(_0x55373f._0x3f2189)+'S'](_0x3be773,_0x256229,0xb)^_0x3be773(_0x256229,0x19))+(_0x256229&_0x321734[0x5]^_0x334b7a[_0x580afd(_0x55373f._0x236a32)+'Y'](~_0x256229,_0x321734[0x6]))+_0x1b861f[_0x248873]+(_0x5886cb[_0x248873]=_0x248873<0x10?_0x5886cb[_0x248873]:_0x5886cb[_0x248873-0x10]+_0x334b7a[_0x538eab(_0x55373f._0x51ecb1)+'x'](_0x3be773(_0x30929d,0x7)^_0x3be773(_0x30929d,0x12),_0x30929d>>>0x3)+_0x5886cb[_0x248873-0x7]+(_0x334b7a[_0x580afd(_0x55373f._0xcb076e)+'U'](_0x3be773(_0x1ca41f,0x11),_0x334b7a[_0x538eab(_0x55373f._0x255a98)+'S'](_0x3be773,_0x1ca41f,0x13))^_0x1ca41f>>>0xa)|0x0),_0x3779f5=(_0x3be773(_0x3de2ee,0x2)^_0x3be773(_0x3de2ee,0xd)^_0x334b7a[_0x538eab(_0x55373f._0x42a0c3)+'T'](_0x3be773,_0x3de2ee,0x16))+(_0x334b7a[_0x580afd(_0x55373f._0x81bf25)+'Y'](_0x3de2ee,_0x321734[0x1])^_0x3de2ee&_0x321734[0x2]^_0x321734[0x1]&_0x321734[0x2]);_0x321734=[_0x2d5baf+_0x3779f5|0x0][_0x580afd(_0x55373f._0x305164)+'at'](_0x321734),_0x321734[0x4]=_0x334b7a[_0x538eab(_0x55373f._0xf6b359)+'y'](_0x321734[0x4],_0x2d5baf)|0x0;}for(_0x248873=0x0;_0x248873<0x8;_0x248873++){_0x321734[_0x248873]=_0x321734[_0x248873]+_0x3b4f64[_0x248873]|0x0;}}for(_0x248873=0x0;_0x248873<0x8;_0x248873++){for(_0x51a087=0x3;_0x51a087+0x1;_0x51a087--){var _0x33f352=_0x334b7a[_0x580afd(0x2e8)+'r'](_0x321734[_0x248873],_0x51a087*0x8)&0xff;_0x99e006+=(_0x33f352<0x10?0x0:'')+_0x33f352[_0x580afd(0x232)+_0x580afd(_0x55373f._0x40698c)](0x10);}}return _0x99e006;}class LicenseManager{static validate(_0x5c94e1,_0x5aed7b={}){const _0x19797b=_0x47b3e3,_0x577d1d=_0x47b3e3;if(!_0x5c94e1)return{'valid':![],'tier':null,'reason':_0x19797b(0x1e2)+_0x577d1d(_0x39f92f._0xd7b636)+_0x577d1d(_0x39f92f._0x2721e4)+_0x577d1d(_0x39f92f._0x33b642)};const _0x5e08c8=_0x5c94e1[_0x19797b(_0x39f92f._0x3acaf3)](),_0x506a73=_0x5e08c8[_0x577d1d(_0x39f92f._0x36753a)+_0x577d1d(_0x39f92f._0x369a11)+_0x577d1d(_0x39f92f._0x55f9c2)](),_0xefd43d=_0x506a73[_0x19797b(_0x39f92f._0x137404)+'t']('-'),_0xf3a576=_0x5aed7b[_0x19797b(0x25b)+_0x19797b(0x2a9)]!==undefined&&_0x334b7a[_0x577d1d(_0x39f92f._0x233739)+'s'](_0x5aed7b[_0x19797b(0x25b)+_0x577d1d(0x2a9)],null)?_0x5aed7b[_0x577d1d(_0x39f92f._0x431ac1)+_0x19797b(0x2a9)]:Date[_0x577d1d(0x225)]();let _0x28ea37=0x0;_0x5aed7b[_0x577d1d(0x276)+_0x577d1d(_0x39f92f._0x2dc2e9)]&&(_0x28ea37=parseInt(_0x5aed7b[_0x19797b(_0x39f92f._0x4efafe)+_0x577d1d(_0x39f92f._0x2dc2e9)][_0x19797b(_0x39f92f._0x5a1e2c)+_0x19797b(0x20c)](_0x577d1d(_0x39f92f._0x220c7a)+_0x19797b(_0x39f92f._0x13bb03)+_0x577d1d(_0x39f92f._0x54d341)+_0x577d1d(_0x39f92f._0x359a30)+'e')||'0',0xa),(_0x5aed7b[_0x577d1d(_0x39f92f._0x431ac1)+_0x577d1d(_0x39f92f._0x237794)]===undefined||_0x334b7a[_0x577d1d(_0x39f92f._0x3d5ebe)+'S'](_0x5aed7b[_0x19797b(_0x39f92f._0x431ac1)+_0x19797b(_0x39f92f._0x35c773)],null))&&_0x5aed7b[_0x19797b(_0x39f92f._0x4efafe)+_0x577d1d(_0x39f92f._0x2e7f74)][_0x19797b(_0x39f92f._0x2e0165)+_0x577d1d(0x20c)](_0x19797b(_0x39f92f._0x220c7a)+_0x19797b(_0x39f92f._0x13bb03)+_0x577d1d(_0x39f92f._0x54d341)+_0x577d1d(0x1fb)+'e',_0xf3a576[_0x19797b(_0x39f92f._0x40b530)+_0x19797b(_0x39f92f._0x4f7248)]()));if((_0x334b7a[_0x19797b(_0x39f92f._0xd4bbdc)+'S'](_0x5aed7b[_0x577d1d(_0x39f92f._0x431ac1)+_0x19797b(_0x39f92f._0x3ec217)],undefined)||_0x5aed7b[_0x19797b(_0x39f92f._0x431ac1)+_0x577d1d(_0x39f92f._0x913127)]===null)&&_0xf3a576<_0x28ea37){if(_0x5aed7b[_0x19797b(_0x39f92f._0x3436ea)+_0x577d1d(_0x39f92f._0x3b3a7d)+'y'])_0x5aed7b[_0x577d1d(0x20e)+_0x577d1d(0x277)+'y']();return{'valid':![],'tier':null,'reason':_0x19797b(_0x39f92f._0x38f8bd)+_0x19797b(_0x39f92f._0x358ab4)+_0x19797b(_0x39f92f._0x35f6b5)+_0x19797b(_0x39f92f._0x56b235)+_0x19797b(_0x39f92f._0x4f327d)+_0x577d1d(0x26f)+_0x19797b(0x285)+_0x577d1d(_0x39f92f._0x138d01)};}const _0x219dd1=_0x334b7a[_0x577d1d(_0x39f92f._0x21d8d7)+'U'](typeof atob,_0x19797b(_0x39f92f._0x72c6f4)+_0x577d1d(0x240)+'d')?atob:_0x53e39a=>Buffer[_0x19797b(0x289)](_0x53e39a,_0x19797b(0x1f6)+'64')[_0x19797b(0x232)+_0x577d1d(0x287)](_0x577d1d(0x29e)+'ry');if(_0x506a73[_0x19797b(_0x39f92f._0x2b867a)+_0x19797b(_0x39f92f._0x513435)+'th'](_0x19797b(_0x39f92f._0x4aba3e)+_0x19797b(_0x39f92f._0x252269)+'-'))try{const _0x1fca06=_0x5e08c8[_0x19797b(_0x39f92f._0x2c7aa6)+_0x19797b(_0x39f92f._0x159fd8)+'g'](0x9),_0x5dc7dc=_0x219dd1(_0x1fca06),_0x23fcc0=new Uint8Array(_0x5dc7dc[_0x577d1d(0x1c9)+'th']);for(let _0x365b9e=0x0;_0x365b9e<_0x5dc7dc[_0x19797b(0x1c9)+'th'];_0x365b9e++){_0x23fcc0[_0x365b9e]=_0x5dc7dc[_0x19797b(_0x39f92f._0x26e0be)+_0x577d1d(_0x39f92f._0x268cdc)+'At'](_0x365b9e);}let _0x1af48d='';for(let _0x58298d=0x0;_0x58298d<_0x23fcc0[_0x19797b(0x1c9)+'th'];_0x58298d++){_0x1af48d+=_0x23fcc0[_0x58298d][_0x19797b(_0x39f92f._0x28b488)+_0x19797b(_0x39f92f._0x4f7248)](0x10)[_0x577d1d(_0x39f92f._0x64fbf1)+_0x577d1d(_0x39f92f._0x212421)](0x2,'0');}const _0x312c6d=BigInt('0x'+_0x1af48d),_0x1224f0=_0x15e052(_0x312c6d,_0x243f53,_0x15c2fd),_0x306574=_0x14784c(_0x1224f0);if(_0x306574[_0x577d1d(_0x39f92f._0x2b867a)+_0x577d1d(_0x39f92f._0x513435)+'th'](_0x577d1d(_0x39f92f._0x1f1ae9)+_0x577d1d(0x2ac)+_0x577d1d(0x2c0))){const _0x5d8743=parseInt(_0x306574[_0x19797b(_0x39f92f._0x2c7aa6)+_0x19797b(0x200)+'g'](0xb),0xa);if(!isNaN(_0x5d8743)){if(_0x334b7a[_0x577d1d(_0x39f92f._0x1187a6)+'m'](_0xf3a576,_0x5d8743))return{'valid':!![],'tier':_0x577d1d(_0x39f92f._0x567b38)+'S','expires':_0x5d8743};if(_0x5aed7b[_0x19797b(0x24d)+_0x19797b(_0x39f92f._0x132a2d)+'d'])_0x5aed7b[_0x19797b(_0x39f92f._0x95ab5d)+_0x577d1d(_0x39f92f._0x349b89)+'d'](_0x577d1d(_0x39f92f._0x46c6c7)+'t');return{'valid':![],'tier':null,'reason':_0x577d1d(0x23c)+_0x19797b(_0x39f92f._0x1b76eb)+_0x19797b(0x244)+'d'};}}}catch(_0x43db6e){return{'valid':![],'tier':null,'reason':_0x577d1d(_0x39f92f._0x46c6c7)+_0x19797b(_0x39f92f._0x4a7e5e)+_0x577d1d(_0x39f92f._0x1f0eb7)+_0x19797b(0x2bb)+_0x19797b(0x2d4)+_0x577d1d(_0x39f92f._0x39508e)};}if(_0x506a73[_0x19797b(_0x39f92f._0x2b867a)+_0x19797b(_0x39f92f._0x337664)+'th'](_0x19797b(_0x39f92f._0x4024de)+_0x19797b(_0x39f92f._0x1a0d75)))try{const _0x2298c2=_0x5e08c8[_0x577d1d(0x2f8)+_0x19797b(_0x39f92f._0x159fd8)+'g'](0x7),_0x290d85=_0x219dd1(_0x2298c2),_0x28e99f=new Uint8Array(_0x290d85[_0x19797b(_0x39f92f._0xf759cd)+'th']);for(let _0x4d1987=0x0;_0x4d1987<_0x290d85[_0x19797b(_0x39f92f._0x131f6c)+'th'];_0x4d1987++){_0x28e99f[_0x4d1987]=_0x290d85[_0x577d1d(_0x39f92f._0x184d78)+_0x19797b(_0x39f92f._0x5106c9)+'At'](_0x4d1987);}let _0x2dc7bc='';for(let _0x394dbd=0x0;_0x394dbd<_0x28e99f[_0x577d1d(_0x39f92f._0xf759cd)+'th'];_0x394dbd++){_0x2dc7bc+=_0x28e99f[_0x394dbd][_0x577d1d(_0x39f92f._0x2d7b41)+_0x19797b(_0x39f92f._0x535c80)](0x10)[_0x577d1d(_0x39f92f._0x2ae324)+_0x577d1d(_0x39f92f._0x212421)](0x2,'0');}const _0xfbb6c5=_0x334b7a[_0x577d1d(_0x39f92f._0x2e97e8)+'K'](BigInt,'0x'+_0x2dc7bc),_0x177d76=_0x15e052(_0xfbb6c5,_0x243f53,_0x15c2fd),_0x3320ca=_0x334b7a[_0x577d1d(0x1ff)+'K'](_0x14784c,_0x177d76);if(_0x3320ca[_0x577d1d(_0x39f92f._0x2b867a)+_0x19797b(_0x39f92f._0x337664)+'th'](_0x577d1d(_0x39f92f._0x1f51a6)+_0x19797b(0x210)+'-')){const _0xa927ea=_0x3320ca[_0x577d1d(_0x39f92f._0x45ea9)+'t']('-');if(_0xa927ea[_0x19797b(_0x39f92f._0xf759cd)+'th']>=0x5){const _0x3941a5=_0xa927ea[0x2],_0x131691=_0x334b7a[_0x19797b(_0x39f92f._0x4f233a)+'U'](parseInt,_0xa927ea[0x4],0xa);if(!isNaN(_0x131691)){if(_0x334b7a[_0x577d1d(_0x39f92f._0x28282d)+'M'](_0xf3a576,_0x131691))return{'valid':!![],'tier':_0x3941a5,'expires':_0x131691};if(_0x5aed7b[_0x19797b(_0x39f92f._0x95ab5d)+_0x577d1d(_0x39f92f._0x2c9882)+'d'])_0x5aed7b[_0x577d1d(_0x39f92f._0x83b5d0)+_0x577d1d(_0x39f92f._0x2c9882)+'d'](_0x577d1d(0x1ea));return{'valid':![],'tier':null,'reason':_0x577d1d(_0x39f92f._0x1e3128)+_0x19797b(_0x39f92f._0x2079fd)+_0x577d1d(_0x39f92f._0x2de481)+_0x19797b(_0x39f92f._0x3acefc)};}}}}catch(_0xbd9f43){return{'valid':![],'tier':null,'reason':_0x577d1d(_0x39f92f._0x1e3128)+_0x19797b(_0x39f92f._0x4cc4cb)+_0x19797b(0x204)+_0x19797b(_0x39f92f._0x365709)+_0x577d1d(_0x39f92f._0x2d0a8d)+'d'};}if(_0xefd43d[_0x577d1d(_0x39f92f._0xf759cd)+'th']===0x4&&_0x334b7a[_0x577d1d(_0x39f92f._0x36e384)+'T'](_0xefd43d[0x0],'PS')&&[_0x577d1d(_0x39f92f._0x41ada7),_0x19797b(_0x39f92f._0x32bde1)+'S',_0x334b7a[_0x577d1d(_0x39f92f._0x3a5070)+'E'],_0x334b7a[_0x19797b(_0x39f92f._0x46c82a)+'H'],_0x334b7a[_0x577d1d(_0x39f92f._0x5a78e3)+'e']][_0x577d1d(_0x39f92f._0x8b326b)+_0x577d1d(_0x39f92f._0x14974f)](_0xefd43d[0x1])){const _0x18c30c=_0xefd43d[0x1],_0x2b8e10=_0xefd43d[0x2],_0x1072c0=_0xefd43d[0x3],_0x52cb86=_0x19797b(_0x39f92f._0xa5c7f8)+_0x19797b(_0x39f92f._0x5a1d10)+_0x577d1d(_0x39f92f._0x2f10ae)+_0x19797b(0x207)+'@#',_0x363cfd=_0x2b8e10+_0x52cb86+_0x18c30c;let _0x5783b6=0x0;for(let _0x97b4ad=0x0;_0x334b7a[_0x577d1d(_0x39f92f._0x1187a6)+'m'](_0x97b4ad,_0x363cfd[_0x577d1d(0x1c9)+'th']);_0x97b4ad++){_0x5783b6+=_0x363cfd[_0x577d1d(0x284)+_0x577d1d(_0x39f92f._0x6c42f9)+'At'](_0x97b4ad)*(_0x97b4ad+0x1);}const _0x204271=(_0x5783b6%0x270f)[_0x19797b(_0x39f92f._0x2f4f54)+_0x577d1d(_0x39f92f._0x29face)]()[_0x19797b(_0x39f92f._0x50cb25)+_0x19797b(_0x39f92f._0x371982)](0x4,'0');if(_0x334b7a[_0x577d1d(_0x39f92f._0x4a81cc)+'O'](_0x1072c0,_0x204271))return{'valid':!![],'tier':_0x18c30c};}if(_0x5e08c8[_0x19797b(0x1d5)+_0x19797b(_0x39f92f._0x5b20bc)+'th'](_0x334b7a[_0x19797b(_0x39f92f._0x5c2025)+'K'])&&_0x5e08c8[_0x577d1d(_0x39f92f._0x49b6ec)+'t']('.')[_0x577d1d(_0x39f92f._0x131f6c)+'th']===0x3)try{const [_0x31e0b7,_0x5ce286,_0x3031a4]=_0x5e08c8[_0x19797b(_0x39f92f._0x137404)+'t']('.');let _0x590752=_0x3031a4[_0x577d1d(_0x39f92f._0x32eda3)+_0x19797b(0x203)](/-/g,'+')[_0x19797b(_0x39f92f._0xb7d473)+_0x19797b(_0x39f92f._0x57037e)](/_/g,'/');while(_0x590752[_0x19797b(_0x39f92f._0x1cc88b)+'th']%0x4)_0x590752+='=';const _0xa2cc16=_0x334b7a[_0x19797b(_0x39f92f._0xc0fd84)+'K'](_0x219dd1,_0x590752);let _0x2b76ad='';for(let _0x3dc915=0x0;_0x3dc915<_0xa2cc16[_0x577d1d(_0x39f92f._0x1da7e6)+'th'];_0x3dc915++){_0x2b76ad+=_0xa2cc16[_0x577d1d(_0x39f92f._0x23d40c)+_0x577d1d(0x2e0)+'At'](_0x3dc915)[_0x577d1d(_0x39f92f._0xa6b36)+_0x577d1d(_0x39f92f._0x535c80)](0x10)[_0x577d1d(_0x39f92f._0x573c61)+_0x577d1d(0x1e8)](0x2,'0');}const _0x77c3de=BigInt('0x'+_0x2b76ad),_0x439f3c=_0x15e052(_0x77c3de,_0x243f53,_0x15c2fd);let _0xc91fac=_0x439f3c[_0x19797b(_0x39f92f._0x40b530)+_0x577d1d(_0x39f92f._0x29face)](0x10);if(_0xc91fac[_0x19797b(_0x39f92f._0xc25e3b)+'th']%0x2!==0x0)_0xc91fac=_0x334b7a[_0x19797b(_0x39f92f._0x5a2d20)+'T']('0',_0xc91fac);const _0x5b610d=_0x1c0e86(_0x334b7a[_0x19797b(_0x39f92f._0x1bafaf)+'y'](_0x31e0b7,'.')+_0x5ce286);if(_0xc91fac[_0x577d1d(_0x39f92f._0x420411)+_0x19797b(_0x39f92f._0x3f3b9a)](_0x5b610d)){const _0x5c5a1c=_0x219dd1(_0x5ce286[_0x577d1d(_0x39f92f._0xb7d473)+_0x19797b(_0x39f92f._0x3b9a08)](/-/g,'+')[_0x19797b(_0x39f92f._0x59abac)+_0x577d1d(_0x39f92f._0x485904)](/_/g,'/')),_0x5b6a84=JSON[_0x19797b(_0x39f92f._0x5d35de)+'e'](_0x5c5a1c);if(_0x5b6a84[_0x577d1d(0x1d7)]&&_0xf3a576/0x3e8<_0x5b6a84[_0x19797b(0x1d7)])return{'valid':!![],'tier':_0x5b6a84[_0x19797b(_0x39f92f._0x5e06b4)]||_0x19797b(_0x39f92f._0x496893),'expires':_0x5b6a84[_0x577d1d(0x1d7)]*0x3e8};else{if(_0x5aed7b[_0x577d1d(_0x39f92f._0x83b5d0)+_0x577d1d(_0x39f92f._0x6511a4)+'d'])_0x5aed7b[_0x19797b(_0x39f92f._0x83b5d0)+_0x577d1d(_0x39f92f._0x2dd924)+'d'](_0x577d1d(_0x39f92f._0x53b09f));return{'valid':![],'tier':null,'reason':_0x577d1d(0x28d)+_0x19797b(_0x39f92f._0x2de481)+_0x19797b(_0x39f92f._0x4bd75e)};}}}catch(_0xa854d3){return{'valid':![],'tier':null,'reason':_0x577d1d(_0x39f92f._0x1a66a7)+_0x19797b(0x1d3)+_0x19797b(_0x39f92f._0x46d661)+_0x19797b(_0x39f92f._0x365709)+_0x19797b(0x221)+'d'};}return{'valid':![],'tier':null,'reason':_0x577d1d(_0x39f92f._0x5c6693)+_0x19797b(_0x39f92f._0x3b5659)+_0x19797b(_0x39f92f._0x576a91)+'at'};}}LicenseManager[_0x47b3e3(_0x44cba6._0x4afa98)+_0x2e3d02(_0x44cba6._0x20f146)+_0x47b3e3(_0x44cba6._0x5bcf61)]=_0x15c2fd,LicenseManager[_0x47b3e3(_0x44cba6._0x4afa98)+_0x47b3e3(_0x44cba6._0x20f146)+_0x47b3e3(_0x44cba6._0x5c5652)]=_0x243f53,LicenseManager[_0x47b3e3(_0x44cba6._0xb85996)+_0x2e3d02(_0x44cba6._0x419ae4)+_0x2e3d02(_0x44cba6._0x4e2d1f)+_0x47b3e3(_0x44cba6._0x558990)]=_0x2e3d02(0x1c7)+_0x2e3d02(0x25c)+_0x47b3e3(_0x44cba6._0x15b9fc)+_0x2e3d02(_0x44cba6._0x4fddcd)+'@#',typeof globalThis!==_0x47b3e3(_0x44cba6._0x43dfd6)+_0x2e3d02(_0x44cba6._0x19661d)+'d'&&(globalThis[_0x2e3d02(_0x44cba6._0x45e76f)+_0x2e3d02(_0x44cba6._0x15a47b)+_0x2e3d02(_0x44cba6._0x33bd49)+'er']=LicenseManager),_0x334b7a[_0x47b3e3(_0x44cba6._0x382df2)+'K'](typeof _0x3b16f3,_0x334b7a[_0x47b3e3(_0x44cba6._0x439ff7)+'i'])&&(_0x3b16f3[_0x47b3e3(_0x44cba6._0x193884)+_0x47b3e3(_0x44cba6._0x15a47b)+_0x47b3e3(0x23a)+'er']=LicenseManager),typeof window!==_0x334b7a[_0x47b3e3(0x209)+'i']&&(window[_0x47b3e3(_0x44cba6._0x537ca8)+_0x47b3e3(_0x44cba6._0x15a47b)+_0x47b3e3(0x23a)+'er']=LicenseManager),typeof exports!==_0x47b3e3(_0x44cba6._0x43dfd6)+_0x2e3d02(_0x44cba6._0x2558b4)+'d'&&(typeof module!==_0x47b3e3(0x255)+_0x2e3d02(_0x44cba6._0x19661d)+'d'&&module[_0x47b3e3(_0x44cba6._0x173482)+_0x47b3e3(_0x44cba6._0x2f58dd)]&&(module[_0x47b3e3(0x2f2)+_0x2e3d02(0x2f1)]=LicenseManager),exports[_0x47b3e3(_0x44cba6._0xdb38fe)+_0x2e3d02(_0x44cba6._0x15a47b)+_0x47b3e3(_0x44cba6._0x333659)+'er']=LicenseManager);}(typeof globalThis!==_0x221d4e(0x255)+_0x221d4e(0x240)+'d'?globalThis:typeof window!==_0x598653(0x255)+_0x221d4e(0x240)+'d'?window:this));
|
|
1
|
+
(function(global) {
|
|
2
|
+
// ── START LICENSE CRYPTO ──
|
|
3
|
+
const PUBLIC_KEY_N = BigInt("21317979104050344678233452423803986868842680501941538057759536089609908024281729760556922188810565541201321990374637212776148857190553192389608364990754937991254608109727112734447704854882786946805547031142530865504430968628760311494129154950865158735816268612258108296781892583171421605668998979064782378729322077179022581884976242706169323540456286526420742434868559866211716347133681429395477256705746276962607312574959642065929462114149296066812527505837608212730874704915352119747022918247963886630350365119206627670591400728523813746184290857872958847087691236909900501703203494160206941648263514117706558791691");
|
|
4
|
+
const PUBLIC_KEY_E = 65537n;
|
|
5
|
+
|
|
6
|
+
function modPow(base, exp, mod) {
|
|
7
|
+
let res = 1n;
|
|
8
|
+
base = base % mod;
|
|
9
|
+
while (exp > 0n) {
|
|
10
|
+
if (exp % 2n === 1n) res = (res * base) % mod;
|
|
11
|
+
exp = exp / 2n;
|
|
12
|
+
base = (base * base) % mod;
|
|
13
|
+
}
|
|
14
|
+
return res;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function bigIntToString(bi) {
|
|
18
|
+
let hex = bi.toString(16);
|
|
19
|
+
if (hex.length % 2 !== 0) hex = '0' + hex;
|
|
20
|
+
let str = '';
|
|
21
|
+
for (let i = 0; i < hex.length; i += 2) {
|
|
22
|
+
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
|
|
23
|
+
}
|
|
24
|
+
return str;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function stringToBigInt(str) {
|
|
28
|
+
let hex = '';
|
|
29
|
+
for (let i = 0; i < str.length; i++) {
|
|
30
|
+
hex += str.charCodeAt(i).toString(16).padStart(2, '0');
|
|
31
|
+
}
|
|
32
|
+
return BigInt('0x' + hex);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function sha256(ascii) {
|
|
36
|
+
function rightRotate(value, amount) { return (value>>>amount) | (value<<(32 - amount)); }
|
|
37
|
+
var mathPow = Math.pow; var maxWord = mathPow(2, 32);
|
|
38
|
+
var lengthProperty = 'length'; var i, j;
|
|
39
|
+
var result = ''; var words = []; var asciiBitLength = ascii[lengthProperty]*8;
|
|
40
|
+
var hash = sha256.h = sha256.h || [];
|
|
41
|
+
var k = sha256.k = sha256.k || [];
|
|
42
|
+
var primeCounter = k[lengthProperty];
|
|
43
|
+
var isComposite = {};
|
|
44
|
+
for (var candidate = 2; primeCounter < 64; candidate++) {
|
|
45
|
+
if (!isComposite[candidate]) {
|
|
46
|
+
for (i = 0; i < 313; i += candidate) { isComposite[i] = candidate; }
|
|
47
|
+
hash[primeCounter] = (mathPow(candidate, .5)*maxWord)|0;
|
|
48
|
+
k[primeCounter++] = (mathPow(candidate, 1/3)*maxWord)|0;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
ascii += '\x80';
|
|
52
|
+
while (ascii[lengthProperty]%64 - 56) ascii += '\x00';
|
|
53
|
+
for (i = 0; i < ascii[lengthProperty]; i++) {
|
|
54
|
+
j = ascii.charCodeAt(i);
|
|
55
|
+
if (j>>8) return;
|
|
56
|
+
words[i>>2] |= j << ((3 - i)%4)*8;
|
|
57
|
+
}
|
|
58
|
+
words[words[lengthProperty]] = ((asciiBitLength/maxWord)|0);
|
|
59
|
+
words[words[lengthProperty]] = (asciiBitLength)
|
|
60
|
+
for (j = 0; j < words[lengthProperty];) {
|
|
61
|
+
var w = words.slice(j, j += 16);
|
|
62
|
+
var oldHash = hash;
|
|
63
|
+
hash = hash.slice(0, 8);
|
|
64
|
+
for (i = 0; i < 64; i++) {
|
|
65
|
+
var w15 = w[i - 15], w2 = w[i - 2];
|
|
66
|
+
var a = hash[0], e = hash[4];
|
|
67
|
+
var temp1 = hash[7] + (rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25)) + ((e&hash[5])^((~e)&hash[6])) + k[i] + (w[i] = (i < 16) ? w[i] : (w[i - 16] + (rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15>>>3)) + w[i - 7] + (rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2>>>10)))|0);
|
|
68
|
+
var temp2 = (rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22)) + ((a&hash[1])^(a&hash[2])^(hash[1]&hash[2]));
|
|
69
|
+
hash = [(temp1 + temp2)|0].concat(hash);
|
|
70
|
+
hash[4] = (hash[4] + temp1)|0;
|
|
71
|
+
}
|
|
72
|
+
for (i = 0; i < 8; i++) { hash[i] = (hash[i] + oldHash[i])|0; }
|
|
73
|
+
}
|
|
74
|
+
for (i = 0; i < 8; i++) {
|
|
75
|
+
for (j = 3; j + 1; j--) {
|
|
76
|
+
var b = (hash[i]>>(j*8))&255;
|
|
77
|
+
result += ((b < 16) ? 0 : '') + b.toString(16);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
// ── END LICENSE CRYPTO ──
|
|
83
|
+
|
|
84
|
+
class LicenseManager {
|
|
85
|
+
/**
|
|
86
|
+
* Validates a license key universally across all environments.
|
|
87
|
+
* @param {string} key - The license key.
|
|
88
|
+
* @param {object} options - Options mapping to environment specifics.
|
|
89
|
+
* @returns {object} { valid: boolean, tier: string|null, reason?: string, expires?: number }
|
|
90
|
+
*/
|
|
91
|
+
static validate(key, options = {}) {
|
|
92
|
+
if (!key) return { valid: false, tier: null, reason: "No key provided" };
|
|
93
|
+
const rawKey = key.trim();
|
|
94
|
+
const k = rawKey.toUpperCase();
|
|
95
|
+
const parts = k.split('-');
|
|
96
|
+
|
|
97
|
+
const now = options.mockTime !== undefined && options.mockTime !== null ? options.mockTime : Date.now();
|
|
98
|
+
let lastSeen = 0;
|
|
99
|
+
|
|
100
|
+
if (options.storage) {
|
|
101
|
+
lastSeen = parseInt(options.storage.getItem('ps_last_seen_time') || '0', 10);
|
|
102
|
+
if (options.mockTime === undefined || options.mockTime === null) {
|
|
103
|
+
options.storage.setItem('ps_last_seen_time', now.toString());
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Clock rollback guard
|
|
108
|
+
if ((options.mockTime === undefined || options.mockTime === null) && now < lastSeen) {
|
|
109
|
+
if (options.onAnomaly) options.onAnomaly();
|
|
110
|
+
return { valid: false, tier: null, reason: "Clock rollback anomaly detected" };
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const _atob = typeof atob !== 'undefined' ? atob : (str) => Buffer.from(str, 'base64').toString('binary');
|
|
114
|
+
|
|
115
|
+
// 1. Process Pilot Keys (RSA-1024 Encrypted Timestamps)
|
|
116
|
+
if (k.startsWith('PS-PILOT-')) {
|
|
117
|
+
try {
|
|
118
|
+
const payload = rawKey.substring(9);
|
|
119
|
+
const binary = _atob(payload);
|
|
120
|
+
const bytes = new Uint8Array(binary.length);
|
|
121
|
+
for (let i = 0; i < binary.length; i++) {
|
|
122
|
+
bytes[i] = binary.charCodeAt(i);
|
|
123
|
+
}
|
|
124
|
+
let hex = '';
|
|
125
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
126
|
+
hex += bytes[i].toString(16).padStart(2, '0');
|
|
127
|
+
}
|
|
128
|
+
const S = BigInt('0x' + hex);
|
|
129
|
+
|
|
130
|
+
const M = modPow(S, PUBLIC_KEY_E, PUBLIC_KEY_N);
|
|
131
|
+
const decryptedStr = bigIntToString(M);
|
|
132
|
+
|
|
133
|
+
if (decryptedStr.startsWith('ZTDS-PILOT-')) {
|
|
134
|
+
const expDate = parseInt(decryptedStr.substring(11), 10);
|
|
135
|
+
if (!isNaN(expDate)) {
|
|
136
|
+
if (now < expDate) return { valid: true, tier: 'TEAMS', expires: expDate };
|
|
137
|
+
|
|
138
|
+
if (options.onExpired) options.onExpired('Pilot');
|
|
139
|
+
return { valid: false, tier: null, reason: "Pilot expired" };
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
} catch(e) {
|
|
143
|
+
return { valid: false, tier: null, reason: "Pilot decryption failed" };
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// 1.5. Process RSA Signed Keys (PS-RSA-...)
|
|
148
|
+
if (k.startsWith('PS-RSA-')) {
|
|
149
|
+
try {
|
|
150
|
+
const payload = rawKey.substring(7);
|
|
151
|
+
const binary = _atob(payload);
|
|
152
|
+
const bytes = new Uint8Array(binary.length);
|
|
153
|
+
for (let i = 0; i < binary.length; i++) {
|
|
154
|
+
bytes[i] = binary.charCodeAt(i);
|
|
155
|
+
}
|
|
156
|
+
let hex = '';
|
|
157
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
158
|
+
hex += bytes[i].toString(16).padStart(2, '0');
|
|
159
|
+
}
|
|
160
|
+
const S = BigInt('0x' + hex);
|
|
161
|
+
|
|
162
|
+
const M = modPow(S, PUBLIC_KEY_E, PUBLIC_KEY_N);
|
|
163
|
+
const decryptedStr = bigIntToString(M);
|
|
164
|
+
|
|
165
|
+
if (decryptedStr.startsWith('ZTDS-LIC-')) {
|
|
166
|
+
const pieces = decryptedStr.split('-');
|
|
167
|
+
if (pieces.length >= 5) {
|
|
168
|
+
const tier = pieces[2];
|
|
169
|
+
const expires = parseInt(pieces[4], 10);
|
|
170
|
+
if (!isNaN(expires)) {
|
|
171
|
+
if (now < expires) return { valid: true, tier: tier, expires: expires };
|
|
172
|
+
|
|
173
|
+
if (options.onExpired) options.onExpired('RSA');
|
|
174
|
+
return { valid: false, tier: null, reason: "RSA key expired" };
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
} catch(e) {
|
|
179
|
+
return { valid: false, tier: null, reason: "RSA decryption failed" };
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// 2. Process Modern Prefixed Keys (v1.4.2+ Salted Checksum)
|
|
184
|
+
if (parts.length === 4 && parts[0] === 'PS' && ['PRO', 'TEAMS', 'SDK', 'OEM', 'ENTERPRISE'].includes(parts[1])) {
|
|
185
|
+
const tier = parts[1];
|
|
186
|
+
const core = parts[2];
|
|
187
|
+
const checksum = parts[3];
|
|
188
|
+
const salt = "ZTDS_SALT_2026_!@#";
|
|
189
|
+
const input = core + salt + tier;
|
|
190
|
+
let sum = 0;
|
|
191
|
+
for (let i = 0; i < input.length; i++) {
|
|
192
|
+
sum += input.charCodeAt(i) * (i + 1);
|
|
193
|
+
}
|
|
194
|
+
const expectedChecksum = (sum % 9999).toString().padStart(4, '0');
|
|
195
|
+
if (checksum === expectedChecksum) {
|
|
196
|
+
return { valid: true, tier: tier };
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// 3. Process Standard RS256 JWTs (eyJ...)
|
|
201
|
+
if (rawKey.startsWith('eyJ') && rawKey.split('.').length === 3) {
|
|
202
|
+
try {
|
|
203
|
+
const [b64Header, b64Payload, b64Signature] = rawKey.split('.');
|
|
204
|
+
|
|
205
|
+
let sigStr = b64Signature.replace(/-/g, '+').replace(/_/g, '/');
|
|
206
|
+
while (sigStr.length % 4) sigStr += '=';
|
|
207
|
+
const binarySig = _atob(sigStr);
|
|
208
|
+
let hexSig = '';
|
|
209
|
+
for (let i = 0; i < binarySig.length; i++) {
|
|
210
|
+
hexSig += binarySig.charCodeAt(i).toString(16).padStart(2, '0');
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
const S = BigInt('0x' + hexSig);
|
|
214
|
+
const M = modPow(S, PUBLIC_KEY_E, PUBLIC_KEY_N);
|
|
215
|
+
|
|
216
|
+
let mHex = M.toString(16);
|
|
217
|
+
if (mHex.length % 2 !== 0) mHex = '0' + mHex;
|
|
218
|
+
|
|
219
|
+
const expectedHash = sha256(b64Header + '.' + b64Payload);
|
|
220
|
+
|
|
221
|
+
if (mHex.endsWith(expectedHash)) {
|
|
222
|
+
const payloadJson = _atob(b64Payload.replace(/-/g, '+').replace(/_/g, '/'));
|
|
223
|
+
const payload = JSON.parse(payloadJson);
|
|
224
|
+
|
|
225
|
+
if (payload.exp && (now / 1000) < payload.exp) {
|
|
226
|
+
return { valid: true, tier: payload.tier || 'PRO', expires: payload.exp * 1000 };
|
|
227
|
+
} else {
|
|
228
|
+
if (options.onExpired) options.onExpired('JWT');
|
|
229
|
+
return { valid: false, tier: null, reason: "JWT expired" };
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
} catch(e) {
|
|
233
|
+
return { valid: false, tier: null, reason: "JWT validation failed" };
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
return { valid: false, tier: null, reason: "Invalid format" };
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
LicenseManager.PUBLIC_KEY_N = PUBLIC_KEY_N;
|
|
242
|
+
LicenseManager.PUBLIC_KEY_E = PUBLIC_KEY_E;
|
|
243
|
+
LicenseManager.OFFLINE_KEY_SALT = "ZTDS_SALT_2026_!@#";
|
|
244
|
+
|
|
245
|
+
// Export module for ES modules, CommonJS, and Browser Global
|
|
246
|
+
if (typeof globalThis !== 'undefined') {
|
|
247
|
+
globalThis.LicenseManager = LicenseManager;
|
|
248
|
+
}
|
|
249
|
+
if (typeof global !== 'undefined') {
|
|
250
|
+
global.LicenseManager = LicenseManager;
|
|
251
|
+
}
|
|
252
|
+
if (typeof window !== 'undefined') {
|
|
253
|
+
window.LicenseManager = LicenseManager;
|
|
254
|
+
}
|
|
255
|
+
if (typeof exports !== 'undefined') {
|
|
256
|
+
if (typeof module !== 'undefined' && module.exports) {
|
|
257
|
+
module.exports = LicenseManager;
|
|
258
|
+
}
|
|
259
|
+
exports.LicenseManager = LicenseManager;
|
|
260
|
+
}
|
|
261
|
+
})(typeof globalThis !== 'undefined' ? globalThis : (typeof window !== 'undefined' ? window : this));
|