@magield/collectors 0.6.1 → 0.8.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/dist/behavior/recorder.d.ts +33 -0
- package/dist/behavior/recorder.js +303 -1
- package/dist/hash.d.ts +15 -0
- package/dist/hash.js +27 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -1
- package/dist/native.d.ts +39 -0
- package/dist/native.js +142 -1
- package/dist/registry.d.ts +57 -0
- package/dist/registry.js +108 -1
- package/dist/run.d.ts +10 -0
- package/dist/run.js +128 -1
- package/dist/signals/adblock.d.ts +2 -0
- package/dist/signals/adblock.js +135 -1
- package/dist/signals/apps.d.ts +2 -0
- package/dist/signals/apps.js +191 -1
- package/dist/signals/audio.d.ts +16 -0
- package/dist/signals/audio.js +63 -1
- package/dist/signals/automation.d.ts +2 -0
- package/dist/signals/automation.js +346 -1
- package/dist/signals/behavior.d.ts +17 -0
- package/dist/signals/behavior.js +31 -1
- package/dist/signals/capabilities.d.ts +2 -0
- package/dist/signals/capabilities.js +235 -1
- package/dist/signals/devices.d.ts +2 -0
- package/dist/signals/devices.js +119 -1
- package/dist/signals/display.d.ts +2 -0
- package/dist/signals/display.js +101 -1
- package/dist/signals/errors.d.ts +2 -0
- package/dist/signals/errors.js +84 -1
- package/dist/signals/features.d.ts +2 -0
- package/dist/signals/features.js +951 -1
- package/dist/signals/fonts.d.ts +2 -0
- package/dist/signals/fonts.js +128 -1
- package/dist/signals/integrity.d.ts +2 -0
- package/dist/signals/integrity.js +216 -1
- package/dist/signals/math.d.ts +2 -0
- package/dist/signals/math.js +43 -1
- package/dist/signals/navigator.d.ts +10 -0
- package/dist/signals/navigator.js +81 -1
- package/dist/signals/pointer.d.ts +2 -0
- package/dist/signals/pointer.js +93 -1
- package/dist/signals/render.d.ts +12 -0
- package/dist/signals/render.js +214 -1
- package/dist/signals/screen.d.ts +9 -0
- package/dist/signals/screen.js +80 -1
- package/dist/signals/storage.d.ts +33 -0
- package/dist/signals/storage.js +100 -1
- package/dist/signals/timezone.d.ts +9 -0
- package/dist/signals/timezone.js +63 -1
- package/dist/signals/webrtc.d.ts +2 -0
- package/dist/signals/webrtc.js +168 -1
- package/dist/stable-core.d.ts +128 -0
- package/dist/stable-core.js +187 -1
- package/dist/types.d.ts +54 -0
- package/dist/types.js +15 -1
- package/package.json +2 -1
|
@@ -1 +1,346 @@
|
|
|
1
|
-
function x(T,O,E,z,p){const Cp={T:0x7b};return b(p-Cp.T,z);}(function(T,O){const CG={T:0x366,O:0x39c,E:0x3af,z:'RgSZ',p:0x39b,v:0x40c,K:0x4e7,Y:0x359,A:'%1aD',X:0x3fe,G:0x5a,r:0xb4,Cr:0xc1,Cn:'4ws5',Cg:0x36,Cq:0xd4,Ck:'M2Xy',Ce:0x34,Cy:0x70,Cs:0x3c,CM:0x212,Cm:0x2f1,CB:0x1c3,Cj:'kMmv',Cx:0x290,Cd:0x201,CQ:0x295,Co:0x151,Cf:'YyFw',Ct:0x1d2,CV:0x5d5,CW:0x50e,Cl:0x4de,CJ:0x526,CH:')irW',CL:0x4d0,CS:0x538,Cc:0x4e8,Cw:0x50e,CP:'ATFl',CN:0x163,Ca:0xb7,D0:0x15e,D1:'QPCl',D2:0x102,D3:0x125,D4:'Sa!q',D5:0xa3,D6:0xae,D7:0xe4,D8:0x8a,D9:0x1c,DC:0x5c,DD:'(Dj6',DF:0xe},CX={T:0x1ac},CA={T:0x124},CY={T:0x144},CK={T:0x24d},Cv={T:0x2c};function g(T,O,E,z,p){return b(T- -Cv.T,z);}function e(T,O,E,z,p){return b(z-CK.T,p);}const E=T();function n(T,O,E,z,p){return b(T-CY.T,z);}function k(T,O,E,z,p){return b(E- -CA.T,O);}function q(T,O,E,z,p){return b(O- -CX.T,z);}while(!![]){try{const z=parseInt(n(CG.T,CG.O,CG.E,CG.z,CG.p))/(-0x1d5b+0x11*-0x19+0x1f05)*(parseInt(n(CG.v,CG.K,CG.Y,CG.A,CG.X))/(-0x853*0x1+0x11a0+-0x94b))+parseInt(q(CG.G,CG.r,CG.Cr,CG.Cn,CG.Cg))/(0x1*0x9e4+0x147+0xe*-0xcc)+-parseInt(k(CG.Cq,CG.Ck,CG.Ce,-CG.Cy,-CG.Cs))/(-0x9f2*0x3+-0xe27*-0x2+0x24*0xb)*(-parseInt(g(CG.CM,CG.Cm,CG.CB,CG.Cj,CG.Cx))/(0x4*-0x431+0xedb*0x1+0x1*0x1ee))+parseInt(g(CG.Cd,CG.CQ,CG.Co,CG.Cf,CG.Ct))/(0x1*-0x647+0x3c*-0x87+-0x1*-0x25f1)+parseInt(e(CG.CV,CG.CW,CG.Cl,CG.CJ,CG.CH))/(0x401+0x8*-0x263+-0xf1e*-0x1)*(parseInt(e(CG.CL,CG.CS,CG.Cc,CG.Cw,CG.CP))/(0x1*-0x697+0x37f*0x2+0x1*-0x5f))+parseInt(q(CG.CN,CG.Ca,CG.D0,CG.D1,CG.D2))/(0x76*0x7+-0x86*-0x42+-0x25bd)*(parseInt(k(CG.D3,CG.D4,CG.D5,CG.D6,CG.D7))/(-0x1529+-0x48*0x2+0x15c3))+-parseInt(q(CG.D8,CG.D9,CG.DC,CG.DD,CG.DF))/(-0x1094+0x1*-0x1223+-0x3*-0xb96);if(z===O)break;else E['push'](E['shift']());}catch(p){E['push'](E['shift']());}}}(F,-0x34654+0x1*0x499c3+0x4*0x14f1f));const D=(function(){let T=!![];return function(O,E){const Cn={T:0xff,O:'Sa!q',E:0x1fb,z:0x1bb,p:0x1a3},z=T?function(){const Cr={T:0x18};function y(T,O,E,z,p){return b(z- -Cr.T,O);}if(E){const p=E[y(Cn.T,Cn.O,Cn.E,Cn.z,Cn.p)](O,arguments);return E=null,p;}}:function(){};return T=![],z;};}()),C=D(this,function(){const Cj={T:0x238,O:0x1bb,E:0x1b9,z:'hVZm',p:0x135,v:0x2bb,K:0x27a,Y:0x2a4,A:'mwd]',X:0x1e8,G:0x290,r:0x284,Cx:0x267,Cd:'mkIF',CQ:0x331,Co:0x3a3,Cf:0x31c,Ct:0x32a,CV:0x276,CW:']y32',Cl:0x205,CJ:'mJ)t',CH:0x214,CL:0x286,CS:0x167,Cc:0x2f5,Cw:'FlO2',CP:0x27a,CN:0x2f6,Ca:0x217,D0:0x30b,D1:'kMmv',D2:0x2e4,D3:0x37f,D4:0x259,D5:0x359,D6:0x2cd,D7:0x21f,D8:'HXYK',D9:0x23e,DC:0x26d,DD:0x2c4,DF:0x27b,Db:0x366,DT:'RgSZ',DU:0x242,Dh:0x2e8,Du:0x37d,DI:'B21o',Di:0x2ad,DR:0x36d,DZ:0x1f4,DO:0x29d,DE:'74Yt',Dz:0x267,Dp:0x175,Dv:'mwd]',DK:0x1a3,DY:0x1c9,DA:0x108,DX:0x374,DG:0x36f,Dr:'Sa!q',Dn:0x44c,Dg:0x388,Dq:0x261,Dk:0x2b3,De:'bo1V',Dy:0x369,Ds:0x100,DM:'mJ)t',Dm:0x13e,DB:0x118,Dj:0x232,Dx:0x244,Dd:0x26b,DQ:0x235,Do:0x2ab,Df:0x35d,Dt:0x3a1,DV:0x433,DW:'*CiO',Dl:0x393,DJ:0x369,DH:0x304,DL:0x42f,DS:'y8sG',Dc:0x1b6,Dw:0x269,DP:0x258,DN:'G$AM',Da:0x1d2},CB={T:0x8b},Cm={T:0x2},CM={T:0x12a},Cy={T:0x115},Ce={T:0x5a};function B(T,O,E,z,p){return b(E-Ce.T,O);}function M(T,O,E,z,p){return b(O-Cy.T,p);}const O={};O[s(Cj.T,Cj.O,Cj.E,Cj.z,Cj.p)]=function(z,p){return z!==p;};function m(T,O,E,z,p){return b(E-CM.T,z);}O[s(Cj.v,Cj.K,Cj.Y,Cj.A,Cj.X)]=s(Cj.G,Cj.r,Cj.Cx,Cj.Cd,Cj.CQ)+M(Cj.Co,Cj.Cf,Cj.Ct,Cj.CV,Cj.CW)+'+$';function j(T,O,E,z,p){return b(E- -Cm.T,O);}const E=O;function s(T,O,E,z,p){return b(O-CB.T,z);}if(E[j(Cj.Cl,Cj.CJ,Cj.CH,Cj.CL,Cj.CS)](C[B(Cj.Cc,Cj.Cw,Cj.CP,Cj.CN,Cj.Ca)]()[j(Cj.D0,Cj.D1,Cj.D2,Cj.D3,Cj.D4)+s(Cj.D5,Cj.D6,Cj.D7,Cj.D8,Cj.D9)]()[M(Cj.DC,Cj.DD,Cj.DF,Cj.Db,Cj.DT)+'Of']('\x0a'),-(-0x12*0x1f6+-0x2095+-0x2*-0x21f1)))return;return C[s(Cj.DU,Cj.Dh,Cj.Du,Cj.DI,Cj.Di)+m(Cj.DR,Cj.DZ,Cj.DO,Cj.DE,Cj.Dz)]()[j(Cj.Dp,Cj.Dv,Cj.DK,Cj.DY,Cj.DA)+'h'](E[m(Cj.DX,Cj.D0,Cj.DG,Cj.Dr,Cj.Dn)])[m(Cj.Dg,Cj.Dq,Cj.Dk,Cj.De,Cj.Dy)+j(Cj.Ds,Cj.DM,Cj.Dm,Cj.O,Cj.DB)]()[m(Cj.Dj,Cj.Dx,Cj.Dd,Cj.De,Cj.DQ)+M(Cj.Do,Cj.Df,Cj.Dt,Cj.DV,Cj.DW)+'r'](C)[M(Cj.Dl,Cj.DJ,Cj.DH,Cj.DL,Cj.DS)+'h'](E[m(Cj.Dc,Cj.Dw,Cj.DP,Cj.DN,Cj.Da)]);});C();import{hash}from'../hash.js';import{applyTrapIsObservable,interposesApplyTrap,isNativeSource}from'../native.js';const DRIVER_GLOBALS=[x(0x29a,0x342,0x359,'RpJB',0x2f2)+d(-0x1e4,-0x14f,-0xf6,'Sa!q',-0x1bc)+x(0x245,0x2b2,0x2e0,'bp2%',0x2e9)+x(0x2cc,0x2fc,0x353,'RLnP',0x292),f(-0x26a,-0x24b,-0x2a9,-0x21a,'v01E')+x(0x2fb,0x2dd,0x276,'M2Xy',0x2d1)+x(0x249,0x3ee,0x3c0,'$7]t',0x326)+x(0x29b,0x3da,0x3fc,'cg)l',0x365),x(0x2df,0x27f,0x3e8,'Sa!q',0x35f)+x(0x396,0x28e,0x2de,'dH#u',0x321)+x(0x274,0x2ac,0x1c3,'v01E',0x24c)+Q(0x5b8,0x50b,0x611,'bo1V',0x50c)+Q(0x53a,0x517,0x491,'hVZm',0x5ff)+'on',x(0x315,0x1ec,0x26a,'74Yt',0x28d)+x(0x162,0x170,0x1bf,'mJ)t',0x21b)+Q(0x5eb,0x556,0x60a,'PFg2',0x600)+o(0x6f,0xe3,0x166,0xba,'Sa!q')+o(0x1fc,0x162,0x115,0x106,')irW'),f(-0x229,-0x202,-0x1c0,-0x218,'mwd]')+f(-0xfb,-0x11,-0xfd,-0xa2,'RpJB')+f(-0x1c5,-0xf5,-0x1ed,-0x149,'PFg2')+d(0x2d,-0x97,-0xf2,'v01E',-0x90)+'n',Q(0x5e8,0x552,0x614,'hVZm',0x560)+x(0x20b,0x1b5,0x1b0,'3WU7',0x1af)+x(0x125,0x297,0x11f,'B21o',0x1bd)+f(-0x156,-0x2b5,-0x19e,-0x21d,'uT87'),f(-0xc3,-0x6f,-0x10e,-0xab,'cer*')+f(-0xcb,-0xed,0x1b,-0xa5,'cer*')+f(-0x241,-0x1da,-0x2cb,-0x1f1,'v01E')+o(0xc6,0xa9,0x48,0xdb,'R$GK'),x(0x1db,0x26c,0x254,'QPCl',0x1d7)+d(-0x9,-0x47,0x4,'74Yt',-0x6c)+d(-0x1a,0x44,0xa2,'bp2%',-0x2d)+o(0x195,0x192,0xce,0x221,'y8sG')+'d',f(-0x1b0,-0x14d,-0x1bc,-0x203,'v01E')+Q(0x523,0x4cf,0x466,'kMmv',0x443)+x(0x20c,0x2c6,0x36b,'G$AM',0x2ec)+'te',d(-0x15d,-0x174,-0x180,'R$GK',-0x18b)+Q(0x593,0x532,0x4f9,'B21o',0x641)+f(-0x179,-0x33,-0x12b,-0xe8,'B21o')+d(0x10,-0x92,-0x6e,'4ws5',-0xa5),Q(0x5aa,0x5b8,0x602,'RLnP',0x5e8)+d(-0x16,0x17,-0xef,'uT87',-0xc8)+o(0x11e,0x1aa,0x1fb,0x16d,'Sa!q')+d(-0x1b9,-0x16a,-0x188,'cer*',-0xe1),d(-0x179,-0x1fa,-0x110,'L$FQ',-0x187)+Q(0x5c0,0x57c,0x501,'#E]W',0x691),f(-0xd3,-0x19,-0xf9,-0xf3,'$7]t')+d(-0x17c,-0x136,-0x256,'mwd]',-0x19c)+'e',d(-0x108,-0x1f3,-0x111,'uT87',-0x127)+f(-0x140,-0x22f,-0x271,-0x1f7,'uT87')+'m',d(-0x14b,-0x22,-0x92,'mJ)t',-0x98)+f(-0x19b,-0x1aa,-0x29d,-0x1ed,'X6YR'),x(0x2d9,0x313,0x2f0,'G$AM',0x312)+Q(0x563,0x60c,0x555,']y32',0x4c6)+f(-0x185,-0x15f,-0x1a6,-0x17e,'G$AM'),x(0x2ee,0x270,0x22b,'mJ)t',0x25e)+x(0x272,0x30a,0x2e0,'74Yt',0x327)+o(0x1dc,0x137,0xb4,0x12a,'G$AM')+x(0x27e,0x1ed,0x201,'*CiO',0x289)+Q(0x5a5,0x54f,0x4dc,'uT87',0x65e)+o(0x123,0x13c,0xc6,0x111,'dH#u'),o(0x133,0xa1,-0xc,0x80,'bo1V')+f(-0x90,-0x165,-0x124,-0xcd,'RpJB')+d(-0xaf,-0xe7,0x0,'#E]W',-0xbb)+o(0x16c,0x97,0xbb,0xdb,'cer*')+d(0x9,0x38,0x8d,'RgSZ',-0xc),Q(0x582,0x5ae,0x5e3,'mwd]',0x517)+d(-0xd5,0x96,0x60,'oH8F',-0x44)+x(0x1ef,0x202,0x391,'cg)l',0x2b6)+d(-0x6b,-0xba,-0x8d,'*CiO',-0xeb)+x(0x1b3,0x354,0x344,'y8sG',0x280),d(-0x1e8,-0x12b,-0x13f,'J1ER',-0x113)+o(0x116,0xfb,0x19b,0x1c5,'hVZm')+o(0x14d,0xd2,0x72,0x147,'YyFw')+'t',f(-0x2dc,-0x180,-0x19e,-0x23f,')irW')+x(0x1fe,0x2c6,0x1b8,'HXYK',0x251)+Q(0x5d7,0x57b,0x6ae,'v01E',0x663)+d(0x44,-0xc1,-0x12f,'^gsu',-0x6d)+'_',o(0x230,0x19e,0x1e5,0x227,'^gsu')+Q(0x554,0x484,0x5a4,')irW',0x5de)+'l',Q(0x620,0x622,0x5f4,'Sa!q',0x5d0)+x(0x24a,0x20a,0x301,'kMmv',0x298)+Q(0x4ff,0x425,0x59a,'hVZm',0x501)+f(-0x14d,-0x72,-0x41,-0xaf,'^gsu')+o(0x276,0x216,0x29c,0x27b,'jfvY')+f(-0x64,-0x19c,-0x124,-0xfd,'cer*')+'_'];export const automationCollector={'id':d(-0x1b4,-0xb7,-0xa9,'RLnP',-0x11c),'wave':x(0x22e,0x1b8,0x142,'RpJB',0x21c)+'nt','collect'({window:T,document:O,navigator:E}){const D0={T:0x1b8,O:0x225,E:0x189,z:0x224,p:'^gsu',v:'y8sG',K:0xa7,Y:0x68,A:0xb5,X:0x24,G:'RLnP',r:0x51,D1:0x107,D2:0x2d,D3:0x52,D4:0x1b5,D5:0x2bd,D6:0x29d,D7:0x224,D8:'^gsu',D9:0xb4,DC:0x123,DD:0x39,DF:0x92,Db:'mJ)t',DT:0x3ef,DU:0x319,Dh:0x441,Du:'RpJB',DI:0x421,Di:0x54e,DR:'4ws5',DZ:0x5c5,DO:0x607,DE:0x49c,Dz:0x1ee,Dp:0x68,Dv:0x190,DK:0x117,DY:0x765,DA:'*CiO',DX:0x68c,DG:0x71c,Dr:0x68e,Dn:0x8,Dg:0x174,Dq:0x2b,Dk:0xab,De:')irW',Dy:0x5a9,Ds:'m(lg',DM:0x53e,Dm:0x559,DB:0x5e0,Dj:0x675,Dx:'RLnP',Dd:0x64f,DQ:0x552,Do:0x612,Df:0x604,Dt:'%1aD',DV:0x537,DW:0x64e,Dl:0x56f,DJ:0x522,DH:0x515,DL:0x576,DS:'YyFw',Dc:0x464,Dw:0x466,DP:0x4db,DN:0x3ec,Da:'G$AM',F0:0x422,F1:0x51f,F2:'3WU7',F3:0x551,F4:0x49f,F5:0x57f,F6:'HXYK',F7:0x175,F8:0xc0,F9:0x4b1,FC:'ATFl',FD:0x4a2,FF:0x57e,Fb:0x4c1,FT:0x66f,FU:'mwd]',Fh:0x5fd,Fu:0x598,FI:0x63a,Fi:0x51e,FR:0x463,FZ:0x54b,FO:'M2Xy',FE:0x5b4,Fz:0x116,Fp:0x1a6,Fv:0x106,FK:0x139,FY:'hVZm',FA:0x62a,FX:'hVZm',FG:0x682,Fr:0x58f,Fn:0x613,Fg:0x279,Fq:0x23f,Fk:0x157,Fe:0x229,Fy:0x4e1,Fs:0x471,FM:0x53c,Fm:0x495,FB:0x509,Fj:'UL#z',Fx:0x4bc,Fd:0x53e,FQ:0x5a1,Fo:0x601,Ff:0x6b6,Ft:0x5ab,FV:0x5f2,FW:0x220,Fl:0x171,FJ:0x244,FH:0x179,FL:'R$GK',FS:0x392,Fc:0x36b,Fw:0x40e,FP:'B21o',FN:0x3d9,Fa:0x50c,b0:'bp2%',b1:0x5c7,b2:0x4d4,b3:0x5a8,b4:0x3f1,b5:0x430,b6:0x376,b7:'bo1V',b8:0x5b0,b9:'#E]W',bC:0x68d,bD:0x606,bF:0x50e,bb:0x694,bT:'L$FQ',bU:0x58c,bh:0x6bf,bu:0x63b,bI:0x42d,bi:0x49a,bR:0x43e,bZ:'*CiO',bO:0x396,bE:'3WU7',bz:0xfb,bp:0xda,bv:0xf9,bK:0x7,bY:0x6e,bA:0x57,bX:0x6d,bG:0x4d4,br:'X6YR',bn:0x404,bg:0x563,bq:0x3f7,bk:0x55a,be:'J1ER',by:0x528,bs:0x5b9,bM:0x5bd,bm:0x3a0,bB:0x383,bj:0x2ec,bx:'bo1V',bd:0x413,bQ:0x48e,bo:'74Yt',bf:0x4ff,bt:0x4da,bV:0x417,bW:0x5d5,bl:0x5af,bJ:0x69e,bH:0x666,bL:0x4be,bS:0x4dd,bc:0x562,bw:0x412,bP:0x18a,bN:0x10,ba:'$7]t',T0:0x742,T1:0x60a,T2:0x5fa,T3:0x68a,T4:0xcd,T5:0x1a5,T6:0x1d4,T7:0x128,T8:0x4d6,T9:0x4af,TC:0x4a6,TD:'oH8F',TF:0x40f,Tb:0x62c,TT:'FlO2',TU:0x591,Th:0x6f9,Tu:0x632,TI:0x174,Ti:0xac,TR:0xce,TZ:0xbb,TO:0x457,TE:0x3fd,Tz:0x3a3,Tp:'dH#u',Tv:0x37f,TK:0x59c,TY:0x593,TA:0x4e5,TX:0x545,TG:0x3f8,Tr:0x369,Tn:0x3a8,Tg:0x3af,Tq:'mkIF',Tk:0x50b,Te:0x4e3,Ty:0x489,Ts:0x547,TM:0x5f1,Tm:0x540,TB:'dH#u',Tj:0x4bd,Tx:0x5d9,Td:'HXYK',TQ:0x633,To:0x540,Tf:0x5f7,Tt:0x66f,TV:0x5d4,TW:0x5a4,Tl:0x663,TJ:'J1ER',TH:0x9c,TL:0xa,TS:0xe5,Tc:0xc1,Tw:0x45e,TP:0x4ae,TN:0x381,Ta:0x4b7,U0:0x7c,U1:0xb,U2:0x149,U3:0xad,U4:'cer*',U5:0x593,U6:'(Dj6',U7:0x5b9,U8:0x652,U9:0x580,UC:0x4cd,UD:0x4f9,UF:0x564,Ub:'M*sn',UT:0x463,UU:'cer*',Uh:0xda,Uu:0x6b,UI:0x161,Ui:0x87,UR:'bo1V',UZ:0xab,UO:0xa8,UE:0x20,Uz:0x632,Up:0x6bb,Uv:0x6e4,UK:0x63e,UY:0x550,UA:0x5b7,UX:0xdd,UG:0xfc,Ur:0x160,Un:'FlO2',Ug:0x4d2,Uq:0x586,Uk:0x4b4,Ue:'jfvY',Uy:0x44a,Us:0x48,UM:0x47,Um:0x44,UB:0x35,Uj:'QPCl',Ux:0xe,Ud:0x52,UQ:0x4fa,Uo:0x43c,Uf:0x5b7,Ut:0x4ef,UV:0x573,UW:0x5f8,Ul:0x4fb,UJ:0x577,UH:0x432,UL:0x503,US:0x368,Uc:0x476,Uw:0xf1,UP:0x7f,UN:0xa7,Ua:0x3a4,h0:0x2fa,h1:0x2d9,h2:0x2e7,h3:0x4e9,h4:0x523,h5:0x585,h6:'4ws5',h7:0x480,h8:0x3f,h9:0x82,hC:0xc6,hD:0x3b,hF:0x22d,hb:0xc3,hT:0x14b,hU:0x14e,hh:'RgSZ',hu:0x472,hI:0x5db,hi:0x529,hR:0x509,hZ:0x580,hO:'%1aD',hE:0x4b0,hz:0x662,hp:0x5eb,hv:'P4(r',hK:0x556,hY:0x62d,hA:0x569,hX:0x27,hG:0x3,hr:0xbc,hn:0x4e4,hg:0x5fb,hq:0x4d5,hk:0x4af,he:'RpJB',hy:0x567,hs:0x51b,hM:0x50e,hm:0x527,hB:0x536,hj:'RGN$',hx:0x479,hd:0x3e0,hQ:0x373,ho:0x48f,hf:0x344,ht:0x3a6,hV:'dH#u',hW:0x199,hl:0x26e,hJ:0x2bf,hH:0x1e1,hL:0x3fb,hS:0x35c,hc:0x386,hw:0x3b5,hP:0x5ef,hN:'cer*',ha:0x749,u0:0x73b,u1:0x690,u2:0x5f0,u3:'HXYK',u4:0x5fc,u5:0x599,u6:0x1e5,u7:0x121,u8:0x14b,u9:0x1f5,uC:'RGN$',uD:0x62a,uF:'HXYK',ub:0x622,uT:0x54d,uU:0x6f5,uh:'R$GK',uu:0x515,uI:0x524,ui:0x461,uR:0x46a,uZ:']y32',uO:0x3e2,uE:0x634,uz:0x5f5,up:0x5b2},Ca={T:0x6,O:0x87,E:0xe3,z:0x14e},CN={T:0x479,O:0x17d,E:0x159,z:0xe0},CP={T:0x7b,O:0x2e,E:0x1f4,z:0x99},Cw={T:0x646,O:0x4f,E:0x3f,z:0xb6},Cc={T:0x15f,O:'P4(r',E:0x73,z:0x2b,p:0x84,v:0x3e9,K:0x343,Y:'RLnP',A:0x39e,X:0x3bb},CL={T:0x17,O:0x42,E:0x58,z:0x39c},Cx={T:0x164,O:0x168,E:0x1d9,z:0x7b};function W(T,O,E,z,p){return Q(T- -Cx.T,O-Cx.O,E-Cx.E,z,p-Cx.z);}const z={'BngVp':function(X,G){return X in G;},'KEHev':function(X,G){return X in G;},'jgXkM':t(D0.T,D0.O,D0.E,D0.z,D0.p)+V(D0.v,-D0.K,D0.Y,-D0.A,D0.X)+V(D0.G,D0.r,-D0.D1,D0.D2,-D0.D3)+'ls','ndGux':t(D0.D4,D0.D5,D0.D6,D0.D7,D0.D8)+t(D0.D9,D0.DC,D0.DD,D0.DF,D0.Db)+W(D0.DT,D0.DU,D0.Dh,D0.Du,D0.DI),'vtpCb':l(D0.Di,D0.DR,D0.DZ,D0.DO,D0.DE)+V(D0.v,-D0.Dz,-D0.Dp,-D0.Dv,-D0.DK)+J(D0.DY,D0.DA,D0.DX,D0.DG,D0.Dr)+t(D0.Dn,D0.Dg,D0.Dq,D0.Dk,D0.De)+'es','CvDcB':function(X,G){return X(G);},'zrXzi':l(D0.Dy,D0.Ds,D0.DM,D0.Dm,D0.DB)+J(D0.Dj,D0.Dx,D0.Dd,D0.DQ,D0.Do)+l(D0.Df,D0.Dt,D0.DV,D0.DW,D0.Dl)+W(D0.DJ,D0.DH,D0.DL,D0.DS,D0.Dc),'FYPgj':function(X,G){return X!==G;},'iHonf':W(D0.Dw,D0.DP,D0.DN,D0.Da,D0.F0)+l(D0.F1,D0.F2,D0.F3,D0.F4,D0.F5)+V(D0.F6,-D0.DK,-D0.F7,-D0.DK,-D0.F8),'bVqRQ':function(X,G){return X===G;},'zKKGq':l(D0.F9,D0.FC,D0.FD,D0.FF,D0.Fb)+J(D0.FT,D0.FU,D0.Fh,D0.Fu,D0.FI)+W(D0.Fi,D0.FR,D0.FZ,D0.FO,D0.FE)+t(D0.Fz,D0.Fp,D0.Fv,D0.FK,D0.FY),'SGRJv':function(X,G,r){return X(G,r);},'RdxbB':J(D0.FA,D0.FX,D0.FG,D0.Fr,D0.Fn)+t(D0.Fg,D0.Fq,D0.Fk,D0.Fe,D0.DR)+W(D0.Fy,D0.Fs,D0.FM,D0.FO,D0.Fm)+l(D0.FB,D0.Fj,D0.Fx,D0.Fd,D0.FQ),'CVrnK':l(D0.Fo,D0.F6,D0.Ff,D0.Ft,D0.FV)+t(D0.FW,D0.Fl,D0.FJ,D0.FH,D0.FL)+W(D0.FS,D0.Fc,D0.Fw,D0.FP,D0.FN),'nxgDA':l(D0.Fa,D0.b0,D0.b1,D0.b2,D0.b3)+W(D0.b4,D0.b5,D0.b6,D0.b7,D0.DI)+l(D0.b8,D0.b9,D0.bC,D0.bD,D0.bF),'ncbma':function(X,G){return X===G;},'PNRwY':function(X,G){return X(G);},'zOehj':J(D0.bb,D0.bT,D0.bU,D0.bh,D0.bu)+W(D0.bI,D0.bi,D0.bR,D0.bZ,D0.bO)+V(D0.bE,-D0.bz,-D0.DC,-D0.bp,-D0.bv)+V(D0.DS,D0.bK,-D0.bY,D0.bA,-D0.bX)+l(D0.bG,D0.br,D0.bn,D0.bg,D0.bq)+'n','WkCDV':function(X,G){return X(G);},'LKtro':l(D0.bk,D0.be,D0.by,D0.bs,D0.bM)+W(D0.bm,D0.bB,D0.bj,D0.bx,D0.bd)+l(D0.bQ,D0.bo,D0.bf,D0.bt,D0.bV),'bYaUa':J(D0.bW,D0.FU,D0.bl,D0.bJ,D0.bH)+l(D0.bL,D0.br,D0.bS,D0.bc,D0.bw)+t(D0.r,D0.bP,D0.bN,D0.A,D0.ba)+J(D0.T0,D0.FP,D0.T1,D0.T2,D0.T3),'yWKxv':V(D0.b0,-D0.T4,-D0.T5,-D0.T6,-D0.T7)+W(D0.T8,D0.T9,D0.TC,D0.TD,D0.TF)+J(D0.Tb,D0.TT,D0.TU,D0.Th,D0.Tu)+'il','JUglL':V(D0.DS,-D0.TI,-D0.Ti,-D0.TR,-D0.TZ)+W(D0.TO,D0.TE,D0.Tz,D0.Tp,D0.Tv)+J(D0.TK,D0.DR,D0.TY,D0.TA,D0.TX)+W(D0.TG,D0.Tr,D0.Tn,D0.Fj,D0.Tg),'NIGqa':function(X,G){return X===G;}},p={},v=DRIVER_GLOBALS[l(D0.bg,D0.Tq,D0.Tk,D0.Te,D0.Ty)+'r'](X=>{const CS={T:0xaf,O:0x106,E:0xb4,z:0xe8};function L(T,O,E,z,p){return V(E,O-CL.T,E-CL.O,z-CL.E,p-CL.z);}function H(T,O,E,z,p){return V(O,O-CS.T,E-CS.O,z-CS.E,p-CS.z);}try{return z[H(Cc.T,Cc.O,Cc.E,Cc.z,Cc.p)](X,T)||z[L(Cc.v,Cc.K,Cc.Y,Cc.A,Cc.X)](X,O);}catch{return![];}});p[z[W(D0.Ts,D0.TM,D0.Tm,D0.TB,D0.Tj)]]=v[J(D0.Tx,D0.Td,D0.TQ,D0.To,D0.Tf)+'h'],p[z[J(D0.Tt,D0.bZ,D0.TV,D0.TW,D0.Tl)]]=v[V(D0.TJ,-D0.TH,D0.TL,-D0.TS,-D0.Tc)](',')||null;function V(T,O,E,z,p){return Q(p- -Cw.T,O-Cw.O,E-Cw.E,T,p-Cw.z);}p[z[W(D0.Tw,D0.TP,D0.TN,D0.FL,D0.Ta)]]=z[t(D0.U0,-D0.U1,D0.U2,D0.U3,D0.U4)](attributeMarkers,O);const K=T[J(D0.U5,D0.U6,D0.U7,D0.U8,D0.U9)+'e'];function l(T,O,E,z,p){return Q(T- -CP.T,O-CP.O,E-CP.E,O,p-CP.z);}p[z[W(D0.UC,D0.UD,D0.UF,D0.Ub,D0.UT)]]=z[V(D0.UU,-D0.Uh,-D0.Uu,-D0.UI,-D0.Ui)](K,undefined);function t(T,O,E,z,p){return Q(z- -CN.T,O-CN.O,E-CN.E,p,p-CN.z);}p[z[V(D0.UR,-D0.UZ,D0.UO,D0.bA,D0.UE)]]=z[J(D0.Uz,D0.b0,D0.Up,D0.Uv,D0.UK)](K,undefined)?null:Object[W(D0.UY,D0.UA,D0.b8,D0.Du,D0.FZ)](K)[t(D0.UX,D0.UG,D0.Ur,D0.UI,D0.Un)]()[W(D0.Ug,D0.Uq,D0.Uk,D0.Ue,D0.Uy)](',');function J(T,O,E,z,p){return Q(p-Ca.T,O-Ca.O,E-Ca.E,O,p-Ca.z);}p[z[V(D0.b9,D0.Us,-D0.UM,-D0.Um,-D0.UB)]]=z[V(D0.Uj,D0.A,D0.UB,-D0.Ux,D0.Ud)](countPatched,T,E);const Y=z[W(D0.UQ,D0.Uo,D0.Uf,D0.FX,D0.Ut)](describeAnomalies,T,E);p[z[l(D0.UV,D0.F6,D0.UW,D0.Ul,D0.UJ)]]=Y[W(D0.UH,D0.UL,D0.US,D0.b9,D0.Uc)+'h'],p[z[V(D0.De,-D0.A,-D0.Uw,-D0.UP,-D0.UN)]]=Y[W(D0.Ua,D0.h0,D0.h1,D0.Ds,D0.h2)](',')||null,p[z[W(D0.h3,D0.h4,D0.h5,D0.h6,D0.h7)]]=z[V(D0.Dx,D0.h8,D0.h9,D0.hC,D0.hD)](Y[t(D0.hF,D0.hb,D0.hT,D0.hU,D0.hh)+'h'],0x14c7+-0x28+0x149f*-0x1)?null:z[J(D0.hu,D0.FC,D0.hI,D0.hi,D0.hR)](hash,Y[l(D0.hZ,D0.hO,D0.hE,D0.hz,D0.hp)](',')),p[z[l(D0.TQ,D0.hv,D0.hK,D0.hY,D0.hA)]]=z[V(D0.FU,-D0.Uw,-D0.hX,-D0.hG,-D0.hr)](read,()=>T[W(0x49e,0x564,0x4ae,'M2Xy',0x3e8)+l(0x610,'RGN$',0x534,0x5f6,0x660)+'on']?.[J(0x567,'bp2%',0x58e,0x4e0,0x589)+J(0x5fd,'X6YR',0x64c,0x70b,0x65a)]);const A=z[l(D0.bU,D0.hh,D0.hn,D0.hg,D0.hq)](countProxied,T);return p[z[l(D0.hk,D0.he,D0.hy,D0.hs,D0.hM)]]=A[W(D0.Ul,D0.hm,D0.hB,D0.hj,D0.hx)+'s'],p[z[W(D0.hd,D0.hQ,D0.ho,D0.hj,D0.hf)]]=A[W(D0.bw,D0.ht,D0.hu,D0.hV,D0.b5)][t(D0.hW,D0.hl,D0.hJ,D0.hH,D0.br)+'h'],p[z[W(D0.hL,D0.hS,D0.hc,D0.D8,D0.hw)]]=A[J(D0.hP,D0.hN,D0.ha,D0.u0,D0.u1)][l(D0.u2,D0.u3,D0.u4,D0.DB,D0.u5)](',')||null,p[z[t(D0.u6,D0.u7,D0.u8,D0.u9,D0.uC)]]=z[l(D0.uD,D0.uF,D0.ub,D0.uT,D0.uU)](E[l(D0.UA,D0.uh,D0.uu,D0.uI,D0.UK)+W(D0.ui,D0.Ty,D0.uR,D0.uZ,D0.uO)]?.[l(D0.uE,D0.Un,D0.uz,D0.u1,D0.up)+'h']??-0x2cf*0xd+0x186d+0xc17,0x5c*0x33+-0xa*0x1d7+0x12),p;}};function attributeMarkers(O){const D8={T:0x38b,O:0x2bd,E:0x2ff,z:0x303,p:'HXYK',v:0x395,K:0x3d0,Y:0x354,A:0x3a5,X:'G$AM',G:0x3bc,r:0x439,D9:0x477,DC:0x428,DD:')irW',DF:0x66f,Db:0x5e2,DT:'ATFl',DU:0x630,Dh:0x5af,Du:0x3c4,DI:'B21o',Di:0x455,DR:0x425,DZ:0x31a,DO:'A7@4',DE:0x449,Dz:0x396,Dp:0x3d2,Dv:0x3f5,DK:0x47d,DY:0x479,DA:'*CiO',DX:0x411,DG:0x4f8,Dr:0x3a8,Dn:0x530,Dg:'FlO2',Dq:0x46e,Dk:0x309,De:0x377,Dy:'PFg2',Ds:0x3d6,DM:0x401,Dm:0x2be,DB:0x325,Dj:'3Bww',Dx:0x33e,Dd:0x3b9,DQ:0x34e,Do:0x3ba,Df:'UL#z',Dt:0x550,DV:0x507,DW:0x52c,Dl:'FlO2',DJ:0x4b7,DH:0x49a,DL:0x463,DS:'cer*',Dc:0x4f1,Dw:0x459},D7={T:0x87,O:0x64,E:0x48,z:0x182},D5={T:0x1ca,O:0xc,E:0x62,z:0x2d1},D3={T:0x16d,O:0x157,E:0xfa,z:0x15a},D2={T:0x16b,O:0x186,E:0x7d,z:0x11e},D1={T:0x111,O:0x26,E:0xa2,z:0x2e3};function w(T,O,E,z,p){return x(T-D1.T,O-D1.O,E-D1.E,E,z-D1.z);}const E={};function c(T,O,E,z,p){return x(T-D2.T,O-D2.O,E-D2.E,O,p-D2.z);}function N(T,O,E,z,p){return x(T-D3.T,O-D3.O,E-D3.E,z,p-D3.z);}E[S(D8.T,D8.O,D8.E,D8.z,D8.p)]=function(p,v){return p===v;};function P(T,O,E,z,p){return x(T-D5.T,O-D5.O,E-D5.E,p,z-D5.z);}E[S(D8.v,D8.K,D8.Y,D8.A,D8.X)]=function(p,v){return p>v;};const z=E;function S(T,O,E,z,p){return x(T-D7.T,O-D7.O,E-D7.E,p,T-D7.z);}try{const p=O[S(D8.G,D8.r,D8.D9,D8.DC,D8.DD)+w(D8.DF,D8.Db,D8.DT,D8.DU,D8.Dh)+c(D8.Du,D8.DI,D8.v,D8.Di,D8.DR)];if(z[c(D8.DZ,D8.DO,D8.DE,D8.Dz,D8.Dp)](p,null))return null;const v=p[N(D8.Dv,D8.DK,D8.DY,D8.DA,D8.DX)+N(D8.DG,D8.Dr,D8.Dn,D8.Dg,D8.D9)+N(D8.Dq,D8.Dk,D8.De,D8.Dy,D8.Ds)+'es']()[N(D8.DM,D8.Dm,D8.DB,D8.Dj,D8.Dx)+'r'](K=>K[S(0x3cd,0x31f,0x379,0x3c0,'M2Xy')+N(0x28e,0x33d,0x262,'#E]W',0x323)](c(0x497,'A7@4',0x45e,0x4ea,0x44c)+S(0x408,0x49d,0x334,0x3a2,'y8sG'))||K[w(0x555,0x5cc,'YyFw',0x58f,0x633)+w(0x5dd,0x5ab,'v01E',0x61d,0x59b)](S(0x4d9,0x554,0x53d,0x526,'FlO2')+N(0x4a1,0x3c5,0x537,'G$AM',0x471))||K[N(0x296,0x379,0x2dc,'jfvY',0x353)+S(0x45f,0x3a9,0x421,0x3f1,'bp2%')](w(0x53d,0x601,'R$GK',0x595,0x644)+'r'));return z[S(D8.Dd,D8.DQ,D8.Do,D8.Y,D8.Df)](v[N(D8.Dt,D8.DV,D8.DW,D8.Dl,D8.DJ)+'h'],0x403*-0x6+0x1740+0x69*0x2)?v[w(D8.DH,D8.DL,D8.DS,D8.Dc,D8.Dw)](','):null;}catch{return null;}}const NAVIGATOR_ACCESSORS=[o(0x191,0x1f2,0x1cd,0x268,'m(lg')+Q(0x54a,0x480,0x5c3,'RLnP',0x512),o(0x1dd,0x1c1,0x287,0x23e,'*CiO')+'ns',x(0x230,0x292,0x2d1,'3WU7',0x29a)+f(-0x207,-0x1d3,-0x26b,-0x1f3,'m(lg')];function describeAnomalies(O,E){const Dh={T:0x54b,O:0x4bb,E:'FlO2',z:0x489,p:0x42c,v:0x417,K:0x3d1,Y:'M*sn',A:0x426,X:0x3d0,G:0x3a2,r:0x307,Du:'uT87',DI:0x3d2,Di:0x330,DR:0x516,DZ:0x3cd,DO:'^gsu',DE:0x46f,Dz:0x3f3,Dp:0x117,Dv:0x15f,DK:'L$FQ',DY:0x232,DA:0xb1,DX:0x5c3,DG:0x51b,Dr:'X6YR',Dn:0x508,Dg:0x569,Dq:0x2a1,Dk:0x38f,De:0x336,Dy:0x341,Ds:'4ws5',DM:0x49,Dm:0xf7,DB:0x2,Dj:0x10e,Dx:'cg)l',Dd:0x2d8,DQ:'bo1V',Do:0x217,Df:0x212,Dt:0x2ef,DV:0x3f7,DW:0x3f4,Dl:'R$GK',DJ:0x3cf,DH:0x378,DL:0x13,DS:0x89,Dc:0x1a,Dw:0x9f,DP:'PFg2',DN:0x437,Da:0x480,F0:'G$AM',F1:0x3e3,F2:0x3fd,F3:0x271,F4:0x359,F5:0x3bd,F6:0x2ff,F7:'#E]W',F8:0x2b7,F9:'(Dj6',FC:0x332,FD:0x2b4,FF:0x2c1,Fb:0x14f,FT:0x10d,FU:0x13e,Fh:'%1aD',Fu:0x1e8,FI:0x17d,Fi:'oH8F',FR:0x169,FZ:0x16a,FO:0x133,FE:0x1d0,Fz:0x241,Fp:'RgSZ',Fv:0x4e4,FK:0x414,FY:'74Yt',FA:0x473,FX:0x434,FG:0x51a,Fr:0x4cb,Fn:'$7]t',Fg:0x4a4,Fq:0x56e,Fk:0x70,Fe:0xfb,Fy:'R$GK',Fs:0xe6,FM:0x56,Fm:0xd4,FB:0x37,Fj:0x111,Fx:0x8,Fd:')irW',FQ:0x4fa,Fo:0x3e7,Ff:'jfvY',Ft:0x43b,FV:0x40f,FW:0x477,Fl:0x546,FJ:'%1aD',FH:0x487,FL:0x3c9,FS:0x331,Fc:0x433,Fw:'bp2%',FP:0x38f,FN:0x456,Fa:0xb8,b0:'mkIF',b1:0x192,b2:0x178,b3:0x1fa,b4:0x4d,b5:0x45,b6:0xbc,b7:0xdd,b8:0x192,b9:0x21d,bC:'74Yt',bD:0x27c,bF:0x1f6,bb:0x471,bT:0x397,bU:0x391,bh:0x3d3},DU={T:0x114,O:0x1ca,E:0x1a1,z:0xc2},DT={T:0x81,O:0x308,E:0x41,z:0x5e},Db={T:0x138,O:0x44,E:0x19f,z:0x11c},DF={T:0x51,O:0xec,E:0x164,z:0xa4},D9={T:0x132,O:0x1e3,E:0x97,z:0x17b};function C3(T,O,E,z,p){return o(T-D9.T,T- -D9.O,E-D9.E,z-D9.z,p);}const z={};z[a(Dh.T,Dh.O,Dh.E,Dh.z,Dh.p)]=function(Y,A){return Y===A;},z[a(Dh.v,Dh.K,Dh.Y,Dh.A,Dh.X)]=function(Y,A){return Y===A;};function C2(T,O,E,z,p){return o(T-DF.T,z-DF.O,E-DF.E,z-DF.z,O);}const p=z;function C1(T,O,E,z,p){return o(T-Db.T,O-Db.O,E-Db.E,z-Db.z,E);}const v=O,K=[];function a(T,O,E,z,p){return o(T-DT.T,z-DT.O,E-DT.E,z-DT.z,E);}function C0(T,O,E,z,p){return o(T-DU.T,z-DU.O,E-DU.E,z-DU.z,p);}for(const Y of NAVIGATOR_ACCESSORS){try{if(Object[a(Dh.G,Dh.r,Dh.Du,Dh.DI,Dh.Di)+a(Dh.DR,Dh.DZ,Dh.DO,Dh.DE,Dh.Dz)][C1(Dh.Dp,Dh.Dv,Dh.DK,Dh.DY,Dh.DA)+a(Dh.DX,Dh.DG,Dh.Dr,Dh.Dn,Dh.Dg)+C0(Dh.Dq,Dh.Dk,Dh.De,Dh.Dy,Dh.Ds)][C3(Dh.DM,Dh.Dm,Dh.DB,Dh.Dj,Dh.Dx)](E,Y)){K[C2(Dh.Dd,Dh.DQ,Dh.Do,Dh.Df,Dh.Dt)](a(Dh.DV,Dh.DW,Dh.Dl,Dh.DJ,Dh.DH)+Y);continue;}const A=v[C3(Dh.DL,-Dh.DS,Dh.Dc,-Dh.Dw,Dh.DP)+a(Dh.DN,Dh.Da,Dh.F0,Dh.F1,Dh.F2)]?.[C0(Dh.F3,Dh.F4,Dh.F5,Dh.F6,Dh.F7)+C2(Dh.F8,Dh.F9,Dh.FC,Dh.FD,Dh.FF)];if(p[C3(-Dh.Fb,-Dh.Dw,-Dh.FT,-Dh.FU,Dh.Fh)](A,undefined))continue;const X=Object[C1(Dh.Fu,Dh.FI,Dh.Fi,Dh.Fu,Dh.FR)+C3(-Dh.FZ,-Dh.FO,-Dh.FE,-Dh.Fz,Dh.Fp)+a(Dh.Fv,Dh.FK,Dh.FY,Dh.FA,Dh.FX)+a(Dh.FG,Dh.Fr,Dh.Fn,Dh.Fg,Dh.Fq)+C1(Dh.Fk,Dh.Fe,Dh.Fy,Dh.Fs,Dh.FM)](A,Y);if(p[C3(-Dh.Fm,-Dh.FB,-Dh.Fj,-Dh.Fx,Dh.Fd)](X,undefined)){K[a(Dh.FQ,Dh.Fo,Dh.Ff,Dh.Ft,Dh.FV)](a(Dh.FW,Dh.Fl,Dh.FJ,Dh.FH,Dh.FL)+a(Dh.FS,Dh.Fc,Dh.Fw,Dh.FP,Dh.FN)+Y);continue;}if(p[C2(Dh.Fa,Dh.b0,Dh.b1,Dh.b2,Dh.b3)](X[C3(-Dh.b4,Dh.b5,-Dh.b6,-Dh.b7,Dh.Du)],undefined))K[C1(Dh.b8,Dh.b9,Dh.bC,Dh.bD,Dh.bF)](a(Dh.bb,Dh.bT,Dh.Dr,Dh.bU,Dh.bh)+Y);}catch{continue;}}return K;}function countPatched(T,O){const Dz={T:0x300,O:0x2c9,E:0x378,z:0x363,p:'74Yt',v:0x1e1,K:0x265,Y:0x1c0,A:0x25a,X:'kMmv',G:0x320,r:0x308,Dp:0x1a7,Dv:0x265,DK:'mwd]',DY:0x386,DA:0x301,DX:0x30b,DG:0x35c,Dr:0xdf,Dn:0xff,Dg:0x40,Dq:'J1ER',Dk:0x3f,De:0x45c,Dy:0x596,Ds:0x4ce,DM:'3WU7',Dm:0x438,DB:0xca,Dj:0xb3,Dx:0x230,Dd:0x167,DQ:'X6YR',Do:0x41,Df:0x74,Dt:0x4b,DV:0x3a,DW:'uT87',Dl:0x303,DJ:0x4ae,DH:0x3d8,DL:'cg)l',DS:0x386,Dc:0x7e,Dw:0xd3,DP:0x63,DN:'kMmv',Da:0xa4,F0:0x3a4,F1:0x3e5,F2:0x373,F3:'QPCl',F4:0xf5,F5:0xab,F6:0xa1,F7:'RgSZ',F8:0xe,F9:0x1b7,FC:0x90,FD:0xe8,FF:'bo1V',Fb:0x123,FT:0x643,FU:'HXYK',Fh:0x5ec,Fu:0x5f1,FI:0x62e,Fi:0x173,FR:0x48,FZ:0x105,FO:'RGN$',FE:0x117,Fz:0x49f,Fp:0x569,Fv:0x512,FK:'RLnP',FY:0x46b,FA:0x177,FX:0x138,FG:0xa6,Fr:'hVZm',Fn:0x1e,Fg:0x384,Fq:0x338,Fk:0x25d,Fe:0x2b6,Fy:'YyFw',Fs:0x5a6,FM:'J1ER',Fm:0x68f,FB:0x5d5,Fj:0x5dc,Fx:0xad,Fd:0x8,FQ:0x7,Fo:'M*sn',Ff:0x15,Ft:0x195,FV:0xc0,FW:0xcc,Fl:'jfvY',FJ:0x181,FH:0x1e9,FL:0x219,FS:0x1fe,Fc:'oH8F',Fw:0x5e4,FP:0x56b,FN:0x551,Fa:'3WU7',b0:0x481,b1:0x11a,b2:0x10,b3:0xa0,b4:'(Dj6',b5:0x11,b6:0x598,b7:'M*sn',b8:0x4e7,b9:0x64c,bC:0x5c0,bD:0xce,bF:0xdd,bb:0x7c,bT:0x14b,bU:'m(lg',bh:0x3a7,bu:0x3d2,bI:0x3ee,bi:'ATFl',bR:0x413,bZ:0x4cf,bO:'y8sG',bE:0x5a5,bz:0x552,bp:0x4cd,bv:0x83,bK:0xef,bY:0x4a,bA:'3Bww',bX:0x11f,bG:0x4ac,br:0x3b1,bn:0x3eb,bg:'G$AM',bq:0x499,bk:0x476,be:0x3dd,by:0x423,bs:0x4c5,bM:0x277,bm:0x29a,bB:0x316,bj:0x335,bx:'RpJB',bd:0x3b6,bQ:0x4e4,bo:0x417,bf:'RpJB',bt:0x4cb,bV:0x600,bW:'*CiO',bl:0x555,bJ:0x577,bH:0x5ea,bL:0x442,bS:'A7@4',bc:0x41a,bw:0x21c,bP:0x172,bN:0x1f8,ba:0x157,T0:0x599,T1:0x631,T2:0x5f3,T3:0x59e,T4:0x3db,T5:0x2e0,T6:0x2b3,T7:0x35d,T8:0x16c,T9:0x97,TC:0x76,TD:0x126,TF:0x86,Tb:0x55,TT:0xaa,TU:0x1f,Th:'4ws5',Tu:0x477,TI:0x44b,Ti:'3WU7',TR:0x3c0,TZ:0x280,TO:0x30f,TE:0x2e7,Tz:0x266,Tp:0x78,Tv:0x3f,TK:0xd5,TY:0x2a6,TA:0x31f,TX:0x2d2,TG:0x257,Tr:'M*sn',Tn:0xbb,Tg:0x95,Tq:0xa5,Tk:'cer*',Te:0x6,Ty:0x556,Ts:0x531,TM:0x486,Tm:'RgSZ',TB:0x469,Tj:0x3a,Tx:0xda,Td:0x17d,TQ:0xe3,To:'mkIF',Tf:0x387,Tt:0x37a,TV:0x349,TW:'*CiO',Tl:0x651,TJ:0x67b,TH:0x52e,TL:0x59f,TS:0x113,Tc:0x32,Tw:0x4f,TP:0x39,TN:0x33f,Ta:0x304,U0:0x25e,U1:'hVZm'},DE={T:0x103,O:0x178,E:0x50,z:0x41a},DO={T:0x2c,O:0x144,E:0x15e,z:0x136},DZ={T:0x1d8,O:0x1ec,E:0x16b,z:0x5e4},DR={T:0x6c,O:0x7b,E:0x5e,z:0x204},Du={T:0x12f,O:0xd2,E:0x13f,z:0x6bb};function C6(T,O,E,z,p){return f(T-Du.T,O-Du.O,E-Du.E,p-Du.z,O);}const E={'oTubS':C4(Dz.T,Dz.O,Dz.E,Dz.z,Dz.p)+C4(Dz.v,Dz.K,Dz.Y,Dz.A,Dz.X),'wjQQN':C4(Dz.G,Dz.r,Dz.Dp,Dz.Dv,Dz.DK)+C4(Dz.DY,Dz.DA,Dz.DX,Dz.DG,Dz.X),'wbqFU':C5(-Dz.Dr,-Dz.Dn,-Dz.Dg,Dz.Dq,-Dz.Dk)+C7(Dz.De,Dz.Dy,Dz.Ds,Dz.DM,Dz.Dm)+C8(Dz.DB,Dz.Dj,Dz.Dx,Dz.Dd,Dz.DQ)+'nt','DdpVt':C8(Dz.Do,-Dz.Df,Dz.Dt,Dz.DV,Dz.DW)+C7(Dz.Dl,Dz.DJ,Dz.DH,Dz.DL,Dz.DS),'oxCyC':C5(Dz.Dc,Dz.Dw,Dz.DP,Dz.DN,Dz.Da)+C4(Dz.F0,Dz.O,Dz.F1,Dz.F2,Dz.F3),'FedDL':C5(-Dz.F4,-Dz.F5,-Dz.F6,Dz.F7,Dz.F8)+C5(-Dz.F9,-Dz.FC,-Dz.FD,Dz.FF,-Dz.Fb)+C6(Dz.FT,Dz.FU,Dz.Fh,Dz.Fu,Dz.FI)+C5(-Dz.Fi,-Dz.FR,-Dz.FZ,Dz.FO,-Dz.FE)+'t','CgivD':C7(Dz.Fz,Dz.Fp,Dz.Fv,Dz.FK,Dz.FY)+C5(-Dz.FA,-Dz.FX,-Dz.FG,Dz.Fr,-Dz.Fn)+'er','SEEMS':function(K,Y){return K!==Y;},'CfndR':C4(Dz.Fg,Dz.Fq,Dz.Fk,Dz.Fe,Dz.Fy)+C6(Dz.Fs,Dz.FM,Dz.Fm,Dz.FB,Dz.Fj),'bMfTP':function(K,Y){return K(Y);}};function C8(T,O,E,z,p){return f(T-DR.T,O-DR.O,E-DR.E,z-DR.z,p);}function C7(T,O,E,z,p){return f(T-DZ.T,O-DZ.O,E-DZ.E,E-DZ.z,z);}function C5(T,O,E,z,p){return f(T-DO.T,O-DO.O,E-DO.E,E-DO.z,z);}function C4(T,O,E,z,p){return f(T-DE.T,O-DE.O,E-DE.E,z-DE.z,p);}const z=T,p=[z[E[C5(Dz.Fx,Dz.Fd,-Dz.FQ,Dz.Fo,Dz.Ff)]]?.[C5(-Dz.Ft,-Dz.FV,-Dz.FW,Dz.Fl,-Dz.Dd)+C4(Dz.FJ,Dz.FH,Dz.FL,Dz.FS,Dz.Fc)]?.[E[C7(Dz.Fw,Dz.FP,Dz.FN,Dz.Fa,Dz.b0)]],O[C5(Dz.b1,Dz.b2,Dz.b3,Dz.b4,-Dz.b5)+C6(Dz.b6,Dz.b7,Dz.b8,Dz.b9,Dz.bC)+'s']?.[C8(Dz.bD,Dz.bF,Dz.bb,Dz.bT,Dz.bU)],O[C7(Dz.bh,Dz.bu,Dz.bI,Dz.bi,Dz.bR)+C6(Dz.bZ,Dz.bO,Dz.bE,Dz.bz,Dz.bp)+'es']?.[C5(-Dz.bv,-Dz.bK,-Dz.bY,Dz.bA,-Dz.bX)+C7(Dz.bG,Dz.br,Dz.bn,Dz.bg,Dz.bq)+C7(Dz.bk,Dz.be,Dz.by,Dz.bg,Dz.bs)+'s'],z[E[C4(Dz.bM,Dz.bm,Dz.bB,Dz.bj,Dz.bx)]]?.[C7(Dz.bd,Dz.bQ,Dz.bo,Dz.bf,Dz.bt)+C6(Dz.bV,Dz.bW,Dz.bl,Dz.bJ,Dz.bH)]?.[E[C7(Dz.bo,Dz.bL,Dz.bp,Dz.bS,Dz.bc)]],z[E[C8(Dz.bw,Dz.bP,Dz.bN,Dz.ba,Dz.DL)]]?.[C6(Dz.T0,Dz.Fr,Dz.T1,Dz.T2,Dz.T3)+C4(Dz.T4,Dz.T5,Dz.T6,Dz.T7,Dz.Fy)]?.[E[C8(Dz.T8,Dz.T9,Dz.TC,Dz.TD,Dz.FM)]],z[E[C8(-Dz.TF,-Dz.Tb,Dz.TT,-Dz.TU,Dz.Th)]]?.[C7(Dz.bL,Dz.Tu,Dz.TI,Dz.Ti,Dz.TR)+C4(Dz.TZ,Dz.TO,Dz.TE,Dz.Tz,Dz.bS)]?.[E[C5(-Dz.TF,Dz.Tp,Dz.Tv,Dz.Fc,Dz.TK)]]];let v=-0x66a*0x5+0x61*-0x10+0x3*0xcb6;for(const K of p){if(E[C4(Dz.TY,Dz.TA,Dz.TX,Dz.TG,Dz.Tr)](typeof K,E[C5(Dz.Tn,Dz.Tg,Dz.Tq,Dz.Tk,Dz.Te)]))continue;try{if(!E[C7(Dz.Ty,Dz.Ts,Dz.TM,Dz.Tm,Dz.TB)](isNativeSource,Function[C8(Dz.Tj,Dz.Tx,Dz.Td,Dz.TQ,Dz.To)+C4(Dz.Fq,Dz.Tf,Dz.Tt,Dz.TV,Dz.TW)][C6(Dz.Tl,Dz.FU,Dz.TJ,Dz.TH,Dz.TL)+C8(Dz.TS,Dz.Tc,-Dz.Tw,Dz.TP,Dz.bW)][C4(Dz.TN,Dz.Ta,Dz.U0,Dz.T6,Dz.U1)](K)))v++;}catch{v++;}}return v;}function read(T){const DA={T:0x367,O:0x2e6,E:'G$AM',z:0x2bd,p:0x212,v:'v01E',K:0x657,Y:0x52b,A:0x60a,X:0x606},DY={T:0xb9,O:0xa3,E:0xbd,z:0x6a6},Dp={T:0x1ec,O:0x1da,E:0x68,z:0x361};function C9(T,O,E,z,p){return d(T-Dp.T,O-Dp.O,E-Dp.E,E,O-Dp.z);}const O={'QIYPP':function(E){return E();},'pAlOT':function(E,z){return E===z;}};function CC(T,O,E,z,p){return d(T-DY.T,O-DY.O,E-DY.E,T,z-DY.z);}try{const E=O[C9(DA.T,DA.O,DA.E,DA.z,DA.p)](T);return O[CC(DA.v,DA.K,DA.Y,DA.A,DA.X)](E,undefined)?null:E;}catch{return null;}}const U={};function f(T,O,E,z,p){const DX={T:0x367};return b(z- -DX.T,p);}U[Q(0x562,0x584,0x575,'oH8F',0x56f)]=o(0xd9,0x182,0x17b,0x214,'m(lg')+Q(0x648,0x688,0x6fd,'Sa!q',0x61a)+x(0x1fb,0xce,0x19c,'QPCl',0x1a6)+'ng',U[Q(0x650,0x635,0x643,'mwd]',0x629)]=[o(0x121,0x1ff,0x2dd,0x1f9,'74Yt')+f(-0x285,-0x147,-0x26a,-0x220,'RGN$'),d(-0x14b,-0x201,-0x17c,'Sa!q',-0x141)+Q(0x683,0x645,0x70d,'HXYK',0x5a5),d(-0x26,-0x54,0x1a,'J1ER',-0x73)+d(-0x1e1,-0x24d,-0x1b2,'YyFw',-0x191)];function Q(T,O,E,z,p){const DG={T:0x3cd};return b(T-DG.T,z);}const h={};h[d(0x4f,-0x66,0x9a,'dH#u',-0x11)]=f(-0x187,-0x1e2,-0x240,-0x18b,'m(lg')+Q(0x506,0x5a6,0x51a,'QPCl',0x59e)+d(-0x8d,-0x1e6,-0x12c,'jfvY',-0x117)+o(0xc6,0x169,0x222,0x161,'y8sG'),h[f(-0x14f,0x3d,-0x10e,-0x88,'m(lg')]=[f(-0x252,-0x239,-0x1bb,-0x1d7,'RgSZ')+Q(0x642,0x5f6,0x5ab,'mwd]',0x569)+o(0x7a,0x130,0x6c,0x20b,'RgSZ')+Q(0x50c,0x494,0x48f,'G$AM',0x509)+'t',o(0xb6,0x12e,0x4f,0xd4,'(Dj6')+x(0x282,0x2ba,0x291,'bo1V',0x1ea),o(0x2fc,0x222,0x29f,0x269,'FlO2')+d(-0x7a,-0x9b,-0x18f,'mkIF',-0x14e)+'er'];const u={};function F(){const DN=['WQNcO8oc','WOyPySkW','rs7cO8ozfa','qmk8WOhdHeK','W73dTd97WOC','jKpdLcK','WQdcIvLamG','WOFdJw9c','WQOlW4f4WPa','CJNcUCo9','qSk6ymoW','W4hdKCo6phu','W5VcM8o0W47cNq','wCo5WQPaWPW','W5FdLmoCwSk4','WOddL2Lgmq','uNHOq8o0','evRcJSkx','W5VcIN1kkG','WRpcISkLWOBcRq','lSkkkG0C','h8keWPZdV2i','g8keWQddRvG','Fr49WQ3cT3SK','sJldKSoOWOa','W73cJCo4W5u','B2Cgna','amkEtmkWWOu','W61Tba','WPvHWOtdUmom','sSoUxCkm','W6aJWQ7cH8kD','WOGvW5Oi','ySoYm8kFiG','Ch4FoG','WPLOud8H','W4HzW7pdOSoS','W6xcGCovW4JcIW','rCoHrSkisq','WO3cMCkNWPFcSq','W6OhWOZcKmkf','W7VdLSoE','WQ4wW6PTWOS','nSkqW5ZcIW','WQfOW61AWPq','c8ktW4fCW6C','WPtcHCk7WPFcVW','WQeBWOnpWPq','s2hdMr/cIG','sd9kfSod','BZ3cTCoQja','W7NcJ8o+W4tcIa','sSo3W4u','CvtdUtBcVq','bmkbWPxdUmkZ','j8kWW73cRW','gf7cL8kIW6u','tatdNSo5WP0','B24yn2y','WOpdG1n7na','WQTQWOldMSo4','E8oWkmk0kW','ygmhpwu','AdFcH8oSnq','wmoCk3C','sGRcQmoEWQ8','qWFdSmoViG','WPLzW5j7WR4','W6nTba','WPHdA8kq','d8kpxSkn','WOTtW5q4WQq','utZdKq','W7nWnwdcOW','xY7cKmo7bq','qLzWcmoJ','j8kejW0q','d8kyiHas','aCkkWP7dVfK','zSoZfmkrfG','WPn5umkY','W73dJmoquCk0','zwPwoNq','sfbYa1O','p8kYbSkvbtZdTtq','pZ5zyd0Io8kMW4lcOGFcPIGq','WPCxWPldJCkq','WRKyW4jGWQ8','W7BdVsXKWO4','f1RcKmk9W7m','uSoQWRfeWPy','sSoQWRfDWPW','FWTRlCo0','uSo7WQTfW5C','xmkuWOddHKS','amk9nHy2','ASoYn8kSpq','yCoJvCkexW','sCkJCq','pCkDvCkxWOK','h8kEWOddSq','WRKJW6jHWPW','dK7cHSkaW70','W5pdL8o6i2q','bCkkW4hcL8oZ','WRaRzCkecq','Dmkty8o6yG','WQ1ZBSkFwW','Fhqflgq','sLTVnvG','WRbTWOJdMmod','xshdLSoJWPm','s8kcW4XjW50','W4ldKmoOjG','tJBdJa','WOSaWPpdNSkl','W6OwWPDmWQe','W7dcMmoKW5lcMq','W7lcKmoIW4O','ExOgedC','bSkBWOFdHKW','xCo7WRvDiG','dmkmWQC','b8kqWOZdPmkm','uJRcJCooiG','WRPgWQxdLCoT','WRP4t8kYAW','WQqJW6mbpa','WO8DWPe','WRS9rtZdTeGpW73cU8oqlCkxWQ4','p0ddILdcKW','W5ZdHmo2k3i','yfT/h1y','WPXCuca','esJcNftdLq','WQ5HWOJdMmo0','AmkTA8o0zW','WRRcLSomwN4','W77cLSoJWONcJG','WRjLWPldLW','m8kzkWWs','wZldK8oH','pGKQWQRcIq','W5FdGCoYl0q','rKXQrCoY','WQFcJufFma','WOFcMvTgiW','W7ZdM8o8t8k4','W5qqhhHT','WPbdDSoqwa','WQbjWOddQ8oq','rSk/WQZdKvG','WO3cMKPB','tMLHvmoR','BCo7WQLD','W73dImoFx8kR','d8kuWP3dRW','WOmkW4mdmG','x2NdMa7cMW','WP/cKSosDaO','nSkfjW','W64bWRzyWRq','zSoHv8k/sG','gSkQW5PzW4W','r8k5zmo2yW','W60nWPxcMG','wmk/BmoTAa','WPdcIv0','zWZdMCo1WPa','WQxcV8orAcW','u8o9W59qWO8','odmxWQJcLG','vSo5WRboWOy','Fmo9WRvn','fSkox8kCWQW','W7mYW5/cI8kWoCkZWOBcRGZdSCo1','WPtcNKbDpG','kmkpsCkzWPO','o1VdJNZcTq','gwlcQCkKW4C','BmkGASoGzW','WR3cI8omdq','WQGqW5HPWO0','Dc56oCod','rCoknq','WOqpW50fiG','eW49hSkWWO3dUCoOxmoAWO10WP4','W7vtW7JdIW','WPXvqZi3','W7jvW6ldLSoj','u01LvmoY','uSoNWR1bka','WQe7ACkGmq','smk+WP3dHK0','B8oGWR5EW4u','WOiCWP/dUCkh','luBdK2xcLa','WRvVEb8j','AmormfZdRq','WPvVWQxdU8ow','W7ldTCo6W5JdQG','W7xdNConDSkP','WO1AqtS','eSkOW6jtWQFdL8kwzG','sSk/rSoQDa','wJZdI8kJWOq','sSkIC8oJDq','lCkeqa','WPBcJv9zna','WOe5WRFdRCkv','rCoGhSkwiq','sxldMW7cKq','WR0CW5O','W6ddJCoAq8kY','bSkfWPq','schdKmo5WPS','mmkfDmkkWPW','WRNcICoiex4','wbVcRCoUWR8','W7XwWOveWRa','W4yRWPxcImk0','Amobk0tdSG','w8o2WQHiWOa','n8oeu8krWQO','vmoDn8k1na','WPFcIu5BmG','xSkkWP/dQM0','rmoHWQncW44','WOuHC8oTlq','j1xdL3y','mmksW41gW6C','vmo5WRnm','vmo3kCk3nG','kSkeW5BcT8oV','wvfiaKu','WPObWPq','ESoqWR5DjG','W6NdJmkkrYTEpCktW5lcMxPCca','r8k7WOFdUL8','WPPRW4LIWR8','D8osWPFdLmkMW5C9EIZdQ8kFg8k+','yqHxiCo5','jvxdLhtcHa','wuDReW','FsZcT8oWiG','hvtcL8oCW6O','W5JdISoYia','WPatW4mscq','WOTQW5feWOy','AaLMnmo+','BhaknIu','WPTJW4vGWRy','WO9AwdyW','xxGBkqq','W6RcMmo7W5lcJa','W6ldLmomumk0','umo2qmkm','yJFcOmo1WRe','tJ3cUSo8iG','W43cSmooW7FcVq','WQlcTmk/WOBcVa','t8oGWQDwW48','Eh8Apq','WP1fW5bZ','ySoTkCoUma','vfzar8oY','FYGBlw4','WOzduCkkwG','CKT1auu','WRBcGCoFmfS','FSkUWOhdIfa','WORcICk5WQxcIW','BdNcOmoW','W6StWOdcI8k0','WQtcV8omzW0','WOWBW54d','WPRdL3nama','WPTdBa','WP1uqCkhAW','WRdcUmowEq','W6ldISowvCk4','sfn+gem','WOxdGxrikG','ha5sehRcTCkWWRK','AwxdHHFcLW','W7ZdNmo+qSkL','AXtdRCohWOi','W6/dNZfmWOm','FJFcOmk2nW','rmo9W592WOu','tmkPCCoszW','W6BdGCojuG','W7/cMmo7W4VcIa','ymkjtCoNCa','bSkJWPZdT0W','WPdcJSkxWOlcRq','WPm3D8kM','W7xcJmo6','WPBcHvLmiW','lSkftSkq','oH4lWR/cIW','eSk2W78aWPBcOmoqc8kuWQNdISoPkq','W5xdUdLcWQO','ASoMWRjlmG','WPaRzCkNnW','WQ7cQ8oYW4NcIq','W5ZcNwnCnCk1W4K','dSksWPhdQ8kL','ba0sWQlcGW','W7xdH8o4j3e','sSo2W4W','veb0qW','yG3cUmo9WRO','WQhcVSobEW4','FhSanJy','WPy7ySkXpa','jSkfu8oqWP4','WOBcUmolCHW','WOFdTgHalG','W7brW7tdQSoc','w8oaoxBdTa','rCkVz8oVzW','rCobWQTdW4O','mmktv8kB','w1TO','W7ubWOtcI8kc','sLXNuG','W6ddPCokW63dHG','W7ZdJmo4q8kP','WR0LW5CupW','WOWBW54djq','W7BdJJ9AWO8','xCkCWPRdKve','kmkrW4RcM8oI','WQtcLtZdUsSJW5/cJSodW7bnWR99','WPqFW4e5iW','xSoxWPeEWRjNgG97DN0I','WPTJW5v4WQa','WPNcMCkHWPxcUW','W7BcJmogW4JcTq','W53dI8oepwi','WQDnW53dKmoei3S','WQJcMmomha','WQZdIh9coW','fCkIW73cQCoG','WPC8AmkHia','W5GlWPGHW6FcVCoiW5LBW71DwmoK','kSkKWPP8bHxdRdO','FgZdKrFcMW','W7SBWPhdKCkp','Fgmynwi','W7ldGN3cI3i','ECoXWQ95jG','tCoYWO94WR0','WQRcLSomg1S','WQeCW50cba','zJxcKCo6cG','cSkJymkpWO8','Dmkzhr4UWRbr','nSkdsCkzWQ0','W4yDWOvSWPe','BCoXWRDmkq','W7tdPSoxW4C','amkhWQddTSkn','WPCVC8kR','bmkbWPxdUa','xSoavCkbua','CSoXWRvomW','mSkkW7ZcL8oK','vmoDmmkLjG','WQXIWOK','v8o3W7HbWPG','WPBcJSkXWPa','wCoyW4VcPCo2WOX7wSozWOL+W6iqnG','WRiBW4ehoW','W6ldPSopW44','hmk0nbqC','seP6h1S','WQXuWPtdKmoW','kCk2W5VcKCo/','W7ddGYPlWP4','j8krW47cTSoe','W5lcM8ooW7hcIa','w8k+ASo2Aq','trJdJCo+WRO','Bmk8DCoLuq','sGZdMSo7WPu','Da3cQCorWOm','smoXWQHmWOe','B8oWlSk2iq','W4FdOLVcUuC','hCkeWOVdOhO','WODBWPO','AmkcW4RcL8og','WO3dHw5oza','WO0HBSkT','WRlcOSohDbS','xxhdKaZcMG','hCkiW55pW7a','W7pcL8oJW4lcLq','bSkpW48','dmkeWP3dQL4','CLTTf1S','WQfLWOJdR8oS','WP7cNmoCmfy','W5npW7FdJCop','WPLDW5r+','W7BdGJa','WPatW4mshW','pCkoWP3dVu8','WQ8yW5PP','AMycoG','omkeW4PTW44','CCkuWOddGfu','WOGLWPxdNSkm','qWFcO8o9jq','W5r5pSo7C341aHBcNmkgv8kk','WOTtW5q4WQC','s8kiWPVdQ0u','W7lcJCoYW5/cMq','W77dV8oQF8ki','DcZcUCo5nq','vCo9W5LQWO8','mCkcjG0j','emk5W7GdWPtcQ8oAfmkmWPhdGmoolq','WQemW7Cffa','ovhdNG','W7BdKSoPW6C','gCk6W5JcHSo0','WRhcOmk8WPhcSq','kSkIW7ZcQ8od','W7xdG33dOg4','svDJ','wsBcR8oOWR8','WOVcJ1Pena','oG0qWQm','CCkuWPFdL1a','W4ldL8o0oM4','fMVdIxBcNq','WOpcK8kPEJBdTd7cVmkrW5NcK8okW6q','ouddLwe','W6KrWO5vWQe','ieVcI8ktW6O','W78zWPzj','WPVdI2jgoW','tt3dNmo5WP0','W67cMmoJW4lcQq','g8ksWOpdVa','WRiyW4b4WPa','W7RdIw3cP38','WRNcL8oFaxS'];F=function(){return DN;};return F();}u[Q(0x549,0x5ed,0x536,'mwd]',0x51e)]=Q(0x519,0x4dd,0x5f9,'mJ)t',0x547)+f(-0x1ca,-0x22e,-0x25d,-0x1e2,'X6YR')+o(0x25b,0x238,0x228,0x177,'cer*')+Q(0x5dc,0x526,0x5e0,'dH#u',0x5f2),u[x(0x20f,0x2a7,0x203,']y32',0x2b8)]=[Q(0x564,0x5ca,0x4ce,'%1aD',0x553)+Q(0x671,0x5a2,0x630,'G$AM',0x63e)+d(-0x43,-0x55,-0x145,'hVZm',-0x10f)+f(-0xbb,-0x208,-0xeb,-0x18c,'QPCl')+'xt',Q(0x617,0x67f,0x6b6,'hVZm',0x581)+x(0x30c,0x3fe,0x26d,'HXYK',0x331),o(0x14c,0xfa,0xad,0x1ce,'L$FQ')+Q(0x63c,0x6c3,0x5a3,']y32',0x564)+'er'];const I={};I[o(0x1ec,0x1a7,0x27e,0x13d,'R$GK')]=o(0x164,0x14a,0x159,0x106,'RLnP')+o(0x259,0x1a1,0x1de,0x218,'HXYK')+f(-0x2d6,-0x2e7,-0x2ae,-0x23a,'QPCl')+'L',I[x(0x25d,0x180,0x28b,'PFg2',0x1de)]=[o(0x174,0xf7,0x1b1,0x1bb,'mkIF')+Q(0x5fc,0x59f,0x550,']y32',0x567)+d(-0x1e8,-0xfa,-0xaa,'*CiO',-0x170)+'nt',x(0x263,0x255,0x236,')irW',0x27a)+f(-0xe8,-0xe1,-0x152,-0xed,'bp2%'),Q(0x649,0x674,0x57d,'YyFw',0x707)+f(-0x187,-0x177,-0x1c5,-0x1bd,'QPCl')];function d(T,O,E,z,p){const Dr={T:0x2f1};return b(p- -Dr.T,z);}const i={};i[x(0x20b,0x2b2,0x2e8,'P4(r',0x20c)]=f(-0x1cd,-0x9a,-0x201,-0x163,'y8sG')+f(-0x1c3,-0xbb,-0x8e,-0x119,'3Bww')+Q(0x5b9,0x4da,0x582,'FlO2',0x553)+'xt',i[Q(0x538,0x536,0x466,'3Bww',0x4b4)]=[f(-0xe9,-0x1a8,-0x10a,-0x1a2,'B21o')+o(0x9,0xe8,0x68,0x1c4,'P4(r')+Q(0x5a1,0x4ec,0x62a,'P4(r',0x4f9)+'nt',f(-0xc1,-0x125,-0x1ca,-0x121,'mkIF')+x(0x337,0x32e,0x253,'B21o',0x2e1),d(-0x1e3,-0x171,-0x10e,'B21o',-0x111)+d(-0x18f,-0x11e,-0x1fa,'G$AM',-0x19e)];const R={};R[Q(0x627,0x6bd,0x6b6,'3WU7',0x659)]=o(0x199,0x146,0x180,0x106,'B21o')+x(0x2fa,0x1da,0x1a5,'3Bww',0x21d)+d(-0x96,-0xc5,-0x16e,'QPCl',-0x95)+'pe',R[f(-0xe0,-0x206,-0x1cb,-0x169,'RgSZ')]=[Q(0x605,0x6c4,0x640,']y32',0x621)+x(0x26f,0x1b6,0x256,'jfvY',0x27d)+f(-0x197,-0x22a,-0x103,-0x1b6,'(Dj6')+'t',d(-0x111,-0x237,-0x145,'RLnP',-0x1c2)+o(0x17c,0x1c2,0x109,0x159,'P4(r'),f(-0x22c,-0x146,-0x2a5,-0x224,'RgSZ')+f(-0x172,-0xa4,-0x18d,-0x153,'3Bww')+'e'];function o(T,O,E,z,p){const Dn={T:0xb1};return b(O- -Dn.T,p);}const Z={};Z[Q(0x653,0x696,0x6e8,'cer*',0x6a6)]=Q(0x64e,0x620,0x608,'v01E',0x66d)+Q(0x5e6,0x6c2,0x57b,'RLnP',0x5e4)+f(-0x179,-0x124,-0x56,-0xea,'(Dj6')+'ry',Z[f(-0x2cf,-0x154,-0x1b9,-0x221,'bp2%')]=[d(-0x59,-0x3a,-0x27,'mkIF',-0x62)+f(-0x1f9,-0x149,-0x23a,-0x1cc,'^gsu')+'s',x(0x211,0x17e,0x295,'Sa!q',0x22b)+o(0x28b,0x1e5,0x281,0x136,'*CiO'),d(-0xeb,-0xcf,-0x83,'L$FQ',-0x118)];const PROXY_PROBES=[U,h,u,I,i,R,Z];function b(C,D){C=C-(-0x5fc+-0x239d+-0x1*-0x2ac1);const T=F();let U=T[C];if(b['wjHwMz']===undefined){var h=function(R){const Z='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let O='',E='',z=O+h,p=(''+function(){return-0x1e64+-0x1010+0x3*0xf7c;})['indexOf']('\x0a')!==-(-0x15cf+0xb5*-0x2b+0x3437);for(let v=0x8e1+0x149b+-0x1d7c,K,Y,A=0x1da5+0x191*0x14+-0x3*0x1453;Y=R['charAt'](A++);~Y&&(K=v%(0x1*-0x268a+-0xdeb+0x3479)?K*(0x1468+-0x1b63+-0x1*-0x73b)+Y:Y,v++%(-0x21*-0xd4+-0x7fd+-0x1*0x1353))?O+=p||z['charCodeAt'](A+(0x85e+0x559+-0xdad))-(0x5*0x5f7+0x1954+-0x371d)!==0x1499*0x1+-0x2420+0xf87?String['fromCharCode'](0x290+-0x2aa*0x8+0x13bf&K>>(-(0x1fbe+0x1f5*-0x5+-0x3*0x751)*v&-0x2*-0xa39+-0x9c1+-0x1*0xaab)):v:0x7*-0x536+-0x22c3*-0x1+0x1b7){Y=Z['indexOf'](Y);}for(let X=0x8d*-0x45+-0xad*-0x1f+0x110e,G=O['length'];X<G;X++){E+='%'+('00'+O['charCodeAt'](X)['toString'](-0x2327*-0x1+-0x15*0x119+-0xc0a))['slice'](-(0xa49+-0x1*0x827+-0x220));}return decodeURIComponent(E);};const i=function(R,Z){let O=[],E=-0x1*-0xbfb+-0xf99+0x39e,z,p='';R=h(R);let v;for(v=0x1*0x373+-0x1*0x2429+-0x20b6*-0x1;v<0x267+0xa3d+-0xba4;v++){O[v]=v;}for(v=0x22f1+-0xc0+0x1*-0x2231;v<0x2495+0x1794+-0xbd5*0x5;v++){E=(E+O[v]+Z['charCodeAt'](v%Z['length']))%(-0x19e5+0xacb+0x101a),z=O[v],O[v]=O[E],O[E]=z;}v=0xf55+-0x10*0x219+0x167*0xd,E=-0xfcb+-0x173c*-0x1+-0x771;for(let K=0xf*0x16f+-0x2*0x3b+-0x150b;K<R['length'];K++){v=(v+(0x869*-0x1+-0x8*-0x364+-0x12b6))%(-0x277*0x2+-0x11e6*-0x2+-0x1dde),E=(E+O[v])%(0x1*-0x24b7+0xea*0x3+0x22f9),z=O[v],O[v]=O[E],O[E]=z,p+=String['fromCharCode'](R['charCodeAt'](K)^O[(O[v]+O[E])%(-0x1303+0x103d+0x3c6)]);}return p;};b['gfpgkv']=i,b['PMSyBm']={},b['wjHwMz']=!![];}const u=T[-0xcee+-0x9c4+0x16b2];b['VLfXYr']!==u&&(b['PMSyBm']={},b['VLfXYr']=u);const I=b['PMSyBm'][C];if(I===undefined){if(b['hPHTbm']===undefined){const R=function(Z){this['AjEkXy']=Z,this['fNeISn']=[-0x7c*0x3d+-0x1*-0x517+0x1876,-0x256b+-0x13db+0x3946,0xb7b*0x1+-0x4*-0x35c+-0x1*0x18eb],this['fFLrnU']=function(){return'newState';},this['uGGYdG']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['ISYBLH']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};R['prototype']['TjubOB']=function(){const Z=new RegExp(this['uGGYdG']+this['ISYBLH']),O=Z['test'](this['fFLrnU']['toString']())?--this['fNeISn'][-0x1*0x5a9+-0x2ee*0x5+0x1450]:--this['fNeISn'][-0x1837+0x14ca+0x36d*0x1];return this['rwNujO'](O);},R['prototype']['rwNujO']=function(Z){if(!Boolean(~Z))return Z;return this['fmoecI'](this['AjEkXy']);},R['prototype']['fmoecI']=function(Z){for(let O=0x1*0x222d+-0x1*0x179c+-0xa91,E=this['fNeISn']['length'];O<E;O++){this['fNeISn']['push'](Math['round'](Math['random']())),E=this['fNeISn']['length'];}return Z(this['fNeISn'][0x1132+0xfd1+-0x2103]);},(''+function(){return 0xf00+-0x1ba1*-0x1+-0x2aa1*0x1;})['indexOf']('\x0a')===-(-0x15f0+0x1*-0x240b+0x39fc)&&new R(b)['TjubOB'](),b['hPHTbm']=!![];}U=b['gfpgkv'](U,D),b['PMSyBm'][C]=U;}else U=I;return U;}function applyTrapIsVisible(T){const Dm={T:0x2f3,O:0x308,E:0x1b1,z:0x273,p:'bp2%',v:0x5ea,K:'RLnP',Y:0x536,A:0x5d2,X:0x5f8,G:0x318,r:0x389,DB:0x397,Dj:0x3a3,Dx:'mkIF',Dd:0x236,DQ:0x2e9,Do:'uT87',Df:0x214,Dt:0x3a1,DV:0x209,DW:'J1ER',Dl:0x155,DJ:0xde,DH:0xfd,DL:0x5d1,DS:'cer*',Dc:0x599,Dw:0x5bd,DP:0x4db,DN:0x5c0,Da:'hVZm',F0:0x54e,F1:0x54c,F2:0x60b,F3:0xfc,F4:'X6YR',F5:0x140,F6:0x1d6,F7:0x13b,F8:0x385,F9:0x36f,FC:'y8sG',FD:0x41a,FF:0x42d,Fb:0x202,FT:'P4(r',FU:0x205,Fh:0x215,Fu:0x149,FI:0x2b9,Fi:0x455,FR:0x3c7,FZ:0x39a,FO:'G$AM',FE:0x505,Fz:'L$FQ',Fp:0x53b,Fv:0x5b7,FK:0x677,FY:0x1f9,FA:0x192,FX:0x106,FG:0x158,Fr:'Sa!q',Fn:0x549,Fg:'RgSZ',Fq:0x50d,Fk:0x581},DM={T:0x112,O:0x75,E:0x13c,z:0x2fd},Ds={T:0x15,O:0x10b,E:0x1af,z:0x2f9},Dk={T:0x186,O:0x18d,E:0x131,z:0x4b3},Dq={T:0x138,O:0x199,E:0x14e,z:0x6f8},Dg={T:0x17,O:0x60,E:0xc6,z:0x43b};function CD(T,O,E,z,p){return f(T-Dg.T,O-Dg.O,E-Dg.E,z-Dg.z,p);}function CF(T,O,E,z,p){return f(T-Dq.T,O-Dq.O,E-Dq.E,z-Dq.z,O);}function CT(T,O,E,z,p){return f(T-Dk.T,O-Dk.O,E-Dk.E,O-Dk.z,E);}const O={'jgITj':CD(Dm.T,Dm.O,Dm.E,Dm.z,Dm.p)+CF(Dm.v,Dm.K,Dm.Y,Dm.A,Dm.X)+CD(Dm.G,Dm.r,Dm.DB,Dm.Dj,Dm.Dx)+'nt','juQoX':CT(Dm.Dd,Dm.DQ,Dm.Do,Dm.Df,Dm.Dt)+CU(Dm.DV,Dm.DW,Dm.Dl,Dm.DJ,Dm.DH),'fYJVC':function(p,v){return p!==v;},'mqSQR':CF(Dm.DL,Dm.DS,Dm.Dc,Dm.Dw,Dm.DP)+CF(Dm.DN,Dm.Da,Dm.F0,Dm.F1,Dm.F2),'xBCjm':function(p,v){return p(v);}},E=T,z=E[O[CU(Dm.F3,Dm.F4,Dm.F5,Dm.F6,Dm.F7)]]?.[CT(Dm.F8,Dm.F9,Dm.FC,Dm.FD,Dm.FF)+CU(Dm.Fb,Dm.FT,Dm.FU,Dm.Fh,Dm.Fu)]?.[O[CD(Dm.FI,Dm.Fi,Dm.FR,Dm.FZ,Dm.FO)]];if(O[CF(Dm.FE,Dm.Fz,Dm.Fp,Dm.Fv,Dm.FK)](typeof z,O[Cb(Dm.FY,Dm.FA,Dm.FX,Dm.FG,Dm.Fr)]))return![];function CU(T,O,E,z,p){return f(T-Ds.T,O-Ds.O,E-Ds.E,E-Ds.z,O);}function Cb(T,O,E,z,p){return f(T-DM.T,O-DM.O,E-DM.E,z-DM.z,p);}return O[CF(Dm.Fn,Dm.Fg,Dm.Fq,Dm.Fk,Dm.Y)](applyTrapIsObservable,z);}function countProxied(E){const Dl={T:'v01E',O:0x30c,E:0x3e2,z:0x3e6,p:0x2e1,v:'A7@4',K:0x303,Y:0x223,A:0x254,X:0x308,G:'*CiO',r:0x363,DJ:0x3a5,DH:0x430,DL:0x409,DS:0x244,Dc:0x238,Dw:0xe2,DP:0x18f,DN:'jfvY',Da:0x2e8,F0:0x208,F1:0x1aa,F2:0x241,F3:'jfvY',F4:'mwd]',F5:0x24d,F6:0x2eb,F7:0x322,F8:0x179,F9:0x42b,FC:0x43f,FD:0x420,FF:0x4b0,Fb:'4ws5',FT:0x571,FU:0x4a7,Fh:'$7]t',Fu:0x584,FI:0x3f5,Fi:0x11e,FR:0xb1,FZ:0x10c,FO:0xc4,FE:'RLnP',Fz:0x401,Fp:0x42f,Fv:0x4dc,FK:0x34c,FY:'PFg2',FA:0x585,FX:0x58e,FG:'m(lg',Fr:0x56e,Fn:0x646,Fg:0x2d4,Fq:0x356,Fk:0x290,Fe:0x27c,Fy:'QPCl',Fs:0x199,FM:0x251,Fm:0x1a8,FB:0x1e2,Fj:'bo1V',Fx:0x2ef,Fd:0x33d,FQ:0x2f2,Fo:0x2c9,Ff:'(Dj6',Ft:0xf1,FV:0xbb,FW:0x1f8,Fl:0x118,FJ:'G$AM',FH:0x1e9,FL:0xa1,FS:0x164,Fc:'RGN$',Fw:0x439,FP:0x440,FN:0x475,Fa:'QPCl',b0:0x276,b1:0x280,b2:0x343,b3:0x19d,b4:0x554,b5:0x477,b6:'L$FQ',b7:0x539,b8:0x4e3,b9:0x3a4,bC:0x3c2,bD:0x397,bF:0x458,bb:0x323,bT:0x302,bU:0x2c3,bh:'bo1V'},DW={T:0xe5,O:0x13e,E:0x3a,z:0x300},DV={T:0x31,O:0x1b5,E:0x13f,z:0x4c9},Dt={T:0x137,O:0x10d,E:0x149,z:0x43f},Df={T:0xc0,O:0x143,E:0x6f,z:0x2e7},Do={T:0x174,O:0x45,E:0x1e8,z:0x65a},z={'Gbcip':function(A,X){return A(X);},'YvwAS':function(A,X,G){return A(X,G);},'wbfBy':function(A,X){return A!==X;},'GppgW':Ch(Dl.T,Dl.O,Dl.E,Dl.z,Dl.p)+Ch(Dl.v,Dl.K,Dl.Y,Dl.A,Dl.X),'iPrJh':function(A,X){return A(X);},'zmEbM':function(A,X){return A===X;}};function CR(T,O,E,z,p){return f(T-Do.T,O-Do.O,E-Do.E,O-Do.z,E);}const p={};function Cu(T,O,E,z,p){return f(T-Df.T,O-Df.O,E-Df.E,O-Df.z,p);}p[Ch(Dl.G,Dl.r,Dl.DJ,Dl.DH,Dl.DL)+'s']=0x0,p[CI(Dl.DS,Dl.Dc,Dl.Dw,Dl.DP,Dl.DN)]=[];function Ch(T,O,E,z,p){return f(T-Dt.T,O-Dt.O,E-Dt.E,O-Dt.z,T);}if(!z[CI(Dl.Da,Dl.F0,Dl.F1,Dl.F2,Dl.F3)](applyTrapIsVisible,E))return p;function Ci(T,O,E,z,p){return f(T-DV.T,O-DV.O,E-DV.E,T-DV.z,p);}const v=[];function CI(T,O,E,z,p){return f(T-DW.T,O-DW.O,E-DW.E,z-DW.z,p);}let K=-0x109e+-0x1aab+-0x1*-0x2b49;for(const A of PROXY_PROBES){const X=z[Ch(Dl.F4,Dl.F5,Dl.F6,Dl.F7,Dl.F8)](resolvePath,E,A[Ci(Dl.F9,Dl.FC,Dl.FD,Dl.FF,Dl.Fb)]);if(z[CR(Dl.FT,Dl.FU,Dl.Fh,Dl.Fu,Dl.FI)](typeof X,z[Cu(Dl.Fi,Dl.FR,Dl.FZ,Dl.FO,Dl.FE)]))continue;let G;try{G=Function[Ci(Dl.Fz,Dl.Fp,Dl.Fv,Dl.FK,Dl.FY)+CR(Dl.FA,Dl.FX,Dl.FG,Dl.Fr,Dl.Fn)][CI(Dl.Fg,Dl.Fq,Dl.Fk,Dl.Fe,Dl.Fy)+CI(Dl.Fs,Dl.FM,Dl.Fm,Dl.FB,Dl.Fj)][Ci(Dl.Fx,Dl.Fd,Dl.FQ,Dl.Fo,Dl.Ff)](X);}catch{continue;}if(!z[CI(Dl.Ft,Dl.FV,Dl.FW,Dl.Fl,Dl.FJ)](isNativeSource,G))continue;const r=z[CI(Dl.DS,Dl.FH,Dl.FL,Dl.FS,Dl.Fc)](interposesApplyTrap,X);if(z[Ci(Dl.Fw,Dl.FU,Dl.FP,Dl.FN,Dl.F4)](r,undefined))continue;K++;if(r)v[Ch(Dl.Fa,Dl.b0,Dl.b1,Dl.b2,Dl.b3)](A[CR(Dl.b4,Dl.b5,Dl.b6,Dl.b7,Dl.b8)]);}const Y={};return Y[Ch(Dl.FG,Dl.b9,Dl.bC,Dl.bD,Dl.bF)+'s']=K,Y[Ci(Dl.bb,Dl.DS,Dl.bT,Dl.bU,Dl.bh)]=v,Y;}function resolvePath(O,E){const DP={T:0x368,O:'$7]t',E:0x253,z:0x2e3,p:0x333,v:0x3b7,K:0x39c,Y:'*CiO',A:0x438,X:0x45a,G:0x5e4,r:0x559,DN:'3Bww',Da:0x5bf,F0:0x4f3,F1:0x486,F2:0x39c,F3:'QPCl',F4:0x442,F5:0x3f6},DS={T:0x4f,O:0x1ef,E:0x128,z:0xc3},DL={T:0x105,O:0x3,E:0x128,z:0x1ca},DH={T:0xff,O:0x395,E:0x1a6,z:0x1b2},DJ={T:0x1f2,O:0x261,E:0x76,z:0xfb};function CZ(T,O,E,z,p){return o(T-DJ.T,z-DJ.O,E-DJ.E,z-DJ.z,O);}function CO(T,O,E,z,p){return o(T-DH.T,z-DH.O,E-DH.E,z-DH.z,E);}const z={};function Cz(T,O,E,z,p){return o(T-DL.T,O-DL.O,E-DL.E,z-DL.z,p);}function CE(T,O,E,z,p){return o(T-DS.T,E-DS.O,E-DS.E,z-DS.z,T);}z[CZ(DP.T,DP.O,DP.E,DP.z,DP.p)]=function(K,Y){return K===Y;},z[CO(DP.v,DP.K,DP.Y,DP.A,DP.X)]=function(K,Y){return K===Y;};const p=z;let v=O;for(const K of E){if(p[CO(DP.G,DP.r,DP.DN,DP.Da,DP.F0)](v,null)||p[CO(DP.F1,DP.F2,DP.F3,DP.F4,DP.F5)](v,undefined))return undefined;try{v=v[K];}catch{return undefined;}}return v;}
|
|
1
|
+
import { hash } from '../hash.js';
|
|
2
|
+
import { applyTrapIsObservable, interposesApplyTrap, isNativeSource } from '../native.js';
|
|
3
|
+
/**
|
|
4
|
+
* Traces left by automation frameworks and the plugins that hide them.
|
|
5
|
+
*
|
|
6
|
+
* None of these is conclusive alone and all of them are defeatable — that is
|
|
7
|
+
* assumed, not a flaw. Their value is cumulative and, more importantly,
|
|
8
|
+
* *contradictory*: a stealth plugin that deletes `navigator.webdriver` usually
|
|
9
|
+
* leaves a patched `Function.prototype.toString` behind, and patching that
|
|
10
|
+
* leaves something else. The goal is to make a clean pass expensive.
|
|
11
|
+
*/
|
|
12
|
+
const DRIVER_GLOBALS = [
|
|
13
|
+
'__webdriver_evaluate',
|
|
14
|
+
'__selenium_evaluate',
|
|
15
|
+
'__webdriver_script_function',
|
|
16
|
+
'__webdriver_script_func',
|
|
17
|
+
'__webdriver_script_fn',
|
|
18
|
+
'__fxdriver_evaluate',
|
|
19
|
+
'__driver_unwrapped',
|
|
20
|
+
'__webdriver_unwrapped',
|
|
21
|
+
'__driver_evaluate',
|
|
22
|
+
'__selenium_unwrapped',
|
|
23
|
+
'__fxdriver_unwrapped',
|
|
24
|
+
'_phantom',
|
|
25
|
+
'__nightmare',
|
|
26
|
+
'callPhantom',
|
|
27
|
+
'_selenium',
|
|
28
|
+
'calledSelenium',
|
|
29
|
+
'$cdc_asdjflasutopfhvcZLmcfl_',
|
|
30
|
+
'$chrome_asyncScriptInfo',
|
|
31
|
+
'__$webdriverAsyncExecutor',
|
|
32
|
+
'__lastWatirAlert',
|
|
33
|
+
'__playwright_target__',
|
|
34
|
+
'__pw_manual',
|
|
35
|
+
'__puppeteer_evaluation_script__',
|
|
36
|
+
];
|
|
37
|
+
export const automationCollector = {
|
|
38
|
+
id: 'bot',
|
|
39
|
+
wave: 'instant',
|
|
40
|
+
collect({ window, document, navigator }) {
|
|
41
|
+
const out = {};
|
|
42
|
+
const found = DRIVER_GLOBALS.filter((name) => {
|
|
43
|
+
try {
|
|
44
|
+
return name in window || name in document;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
out['bot.driverGlobals'] = found.length;
|
|
51
|
+
// The names matter for triage: knowing it was Playwright rather than
|
|
52
|
+
// Selenium changes what a tenant does about it.
|
|
53
|
+
out['bot.driverNames'] = found.join(',') || null;
|
|
54
|
+
// Selenium and some drivers mark the document element.
|
|
55
|
+
out['bot.documentAttributes'] = attributeMarkers(document);
|
|
56
|
+
// Chrome exposes window.chrome to every page. Headless Chrome historically
|
|
57
|
+
// did not, and stealth plugins add a hollow stand-in whose shape is wrong.
|
|
58
|
+
const chrome = window.chrome;
|
|
59
|
+
out['bot.hasChromeObject'] = chrome !== undefined;
|
|
60
|
+
out['bot.chromeKeys'] = chrome === undefined ? null : Object.keys(chrome).sort().join(',');
|
|
61
|
+
// Native functions stringify to "[native code]". A patched one does not,
|
|
62
|
+
// which is how a stealth plugin gives itself away while hiding something else.
|
|
63
|
+
//
|
|
64
|
+
// Circular on its own, and deliberately kept anyway. The test below runs
|
|
65
|
+
// `Function.prototype.toString`, which is itself the first thing a serious
|
|
66
|
+
// stealth plugin replaces — after which every probe here reads clean. It
|
|
67
|
+
// still catches the plugins that do not bother, which is most of them.
|
|
68
|
+
// `integrity.ts` is what sees through the ones that do.
|
|
69
|
+
out['bot.patchedNatives'] = countPatched(window, navigator);
|
|
70
|
+
// Where the patch is, rather than whether it stringifies. A replaced getter
|
|
71
|
+
// is invisible above — `countPatched` only looks at functions — and
|
|
72
|
+
// replacing a getter is how `navigator.webdriver` is actually hidden.
|
|
73
|
+
const proto = describeAnomalies(window, navigator);
|
|
74
|
+
out['bot.protoAnomalies'] = proto.length;
|
|
75
|
+
out['bot.protoDetail'] = proto.join(',') || null;
|
|
76
|
+
// How it hides, as an identifier.
|
|
77
|
+
//
|
|
78
|
+
// A tool that conceals itself has to patch a particular set of properties
|
|
79
|
+
// in a particular way, and it does the same thing every session. So the
|
|
80
|
+
// shape of the concealment is a fingerprint of the tool — and unlike a
|
|
81
|
+
// device id, the attacker cannot rotate it without rebuilding their
|
|
82
|
+
// tooling. Rotating device ids per attempt defeats the fanout panel; it
|
|
83
|
+
// does not defeat this.
|
|
84
|
+
//
|
|
85
|
+
// Null when nothing was tampered with, so an ordinary browser contributes
|
|
86
|
+
// no identifier at all rather than a shared "clean" bucket that would be
|
|
87
|
+
// the largest cluster in the system.
|
|
88
|
+
out['bot.spoofHash'] = proto.length === 0 ? null : hash(proto.join(','));
|
|
89
|
+
// A spoofed permissions state and the real Notification state disagree —
|
|
90
|
+
// the classic headless tell that survived years of patching.
|
|
91
|
+
out['bot.notificationPermission'] = read(() => window.Notification?.permission);
|
|
92
|
+
// A `Proxy` around a native, which is the one thing a stealth plugin cannot
|
|
93
|
+
// hide by rewriting what it reports. See PROXY_PROBES for the measurement
|
|
94
|
+
// that made this necessary.
|
|
95
|
+
const proxied = countProxied(window);
|
|
96
|
+
out['bot.proxyProbes'] = proxied.probes;
|
|
97
|
+
out['bot.proxiedNatives'] = proxied.names.length;
|
|
98
|
+
out['bot.proxiedDetail'] = proxied.names.join(',') || null;
|
|
99
|
+
// Languages present but empty is not a configuration a real browser reaches.
|
|
100
|
+
out['bot.emptyLanguages'] = (navigator.languages?.length ?? 1) === 0;
|
|
101
|
+
return out;
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
function attributeMarkers(document) {
|
|
105
|
+
try {
|
|
106
|
+
const element = document.documentElement;
|
|
107
|
+
if (element === null)
|
|
108
|
+
return null;
|
|
109
|
+
const markers = element
|
|
110
|
+
.getAttributeNames()
|
|
111
|
+
.filter((name) => name.startsWith('webdriver') || name.startsWith('selenium') || name.startsWith('driver'));
|
|
112
|
+
return markers.length > 0 ? markers.join(',') : null;
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Properties a stock browser defines as accessors on `Navigator.prototype`.
|
|
120
|
+
*
|
|
121
|
+
* All three are spoofed by automation, and spoofing them leaves a shape the
|
|
122
|
+
* real browser never has. `navigator.webdriver` reading `false` proves nothing
|
|
123
|
+
* on its own — that is what it reads on a real browser too — but `false`
|
|
124
|
+
* arriving from an own data property on the instance means someone wrote it
|
|
125
|
+
* there, because Chrome puts it on the prototype behind a getter.
|
|
126
|
+
*/
|
|
127
|
+
const NAVIGATOR_ACCESSORS = ['webdriver', 'plugins', 'languages'];
|
|
128
|
+
/**
|
|
129
|
+
* Descriptor shapes that disagree with a stock browser.
|
|
130
|
+
*
|
|
131
|
+
* Reads only: `getOwnPropertyDescriptor` and `hasOwnProperty` invoke nothing,
|
|
132
|
+
* so a getter that throws when read cannot be triggered from here.
|
|
133
|
+
*
|
|
134
|
+
* Returns the names rather than a bare count, for the same reason
|
|
135
|
+
* `bot.driverNames` exists — knowing it was `plugins` rather than `webdriver`
|
|
136
|
+
* changes what a tenant concludes, and an extension that spoofs the plugin list
|
|
137
|
+
* is a different animal from one hiding a driver flag.
|
|
138
|
+
*/
|
|
139
|
+
function describeAnomalies(window, navigator) {
|
|
140
|
+
const realm = window;
|
|
141
|
+
const found = [];
|
|
142
|
+
for (const name of NAVIGATOR_ACCESSORS) {
|
|
143
|
+
try {
|
|
144
|
+
// An own property on the instance shadows the prototype's getter. No
|
|
145
|
+
// stock browser ships one, and `defineProperty(navigator, ...)` is the
|
|
146
|
+
// single most common way these values are spoofed.
|
|
147
|
+
if (Object.prototype.hasOwnProperty.call(navigator, name)) {
|
|
148
|
+
found.push(`own:${name}`);
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
const prototype = realm.Navigator?.prototype;
|
|
152
|
+
if (prototype === undefined)
|
|
153
|
+
continue;
|
|
154
|
+
const descriptor = Object.getOwnPropertyDescriptor(prototype, name);
|
|
155
|
+
if (descriptor === undefined) {
|
|
156
|
+
// Deleted outright. puppeteer-extra's webdriver evasion does exactly
|
|
157
|
+
// this, and it leaves `navigator.webdriver` reading `undefined` rather
|
|
158
|
+
// than the `false` a real browser reports.
|
|
159
|
+
found.push(`missing:${name}`);
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
// Redefined as a value rather than a getter. A real browser has neither
|
|
163
|
+
// a `value` nor a writable data property here.
|
|
164
|
+
if (descriptor.get === undefined)
|
|
165
|
+
found.push(`data:${name}`);
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
// Hardened or exotic environments throw on property access. Unknown is
|
|
169
|
+
// not an anomaly — saying otherwise would accuse a browser for being
|
|
170
|
+
// unusual rather than for lying.
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return found;
|
|
175
|
+
}
|
|
176
|
+
function countPatched(window, navigator) {
|
|
177
|
+
// Reached through the window rather than the ambient globals: a collector
|
|
178
|
+
// must inspect the page's realm, not the one this module was compiled into.
|
|
179
|
+
const realm = window;
|
|
180
|
+
const candidates = [
|
|
181
|
+
realm['Function']?.prototype?.['toString'],
|
|
182
|
+
navigator.permissions?.query,
|
|
183
|
+
navigator.mediaDevices?.enumerateDevices,
|
|
184
|
+
realm['HTMLCanvasElement']?.prototype?.['toDataURL'],
|
|
185
|
+
realm['HTMLCanvasElement']?.prototype?.['getContext'],
|
|
186
|
+
realm['WebGLRenderingContext']?.prototype?.['getParameter'],
|
|
187
|
+
];
|
|
188
|
+
let patched = 0;
|
|
189
|
+
for (const candidate of candidates) {
|
|
190
|
+
if (typeof candidate !== 'function')
|
|
191
|
+
continue;
|
|
192
|
+
try {
|
|
193
|
+
if (!isNativeSource(Function.prototype.toString.call(candidate)))
|
|
194
|
+
patched++;
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
patched++;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return patched;
|
|
201
|
+
}
|
|
202
|
+
function read(fn) {
|
|
203
|
+
try {
|
|
204
|
+
const value = fn();
|
|
205
|
+
return value === undefined ? null : value;
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Natives wrapped in a `Proxy`, found from the stack instead of by asking.
|
|
213
|
+
*
|
|
214
|
+
* This is the only probe in the package that catches
|
|
215
|
+
* `puppeteer-extra-plugin-stealth`, and it exists because everything else here
|
|
216
|
+
* was measured failing against it.
|
|
217
|
+
*
|
|
218
|
+
* The plugin wraps `WebGLRenderingContext.prototype.getParameter` in a `Proxy`
|
|
219
|
+
* to spoof the GPU strings. Measured against the real plugin on Chrome 141,
|
|
220
|
+
* that wrapper is invisible to every claim-based test — source, name, length,
|
|
221
|
+
* own keys and property descriptor are byte-identical to the untouched
|
|
222
|
+
* function, because V8 hands back a native stub for any callable proxy and the
|
|
223
|
+
* proxy forwards the rest:
|
|
224
|
+
*
|
|
225
|
+
* getParameter, main-realm toString function getParameter() { [native code] }
|
|
226
|
+
* getParameter, iframe-borrowed toString function getParameter() { [native code] }
|
|
227
|
+
* webgl.renderer, real Chrome ANGLE (Apple, ANGLE Metal Renderer: Apple M2 Max)
|
|
228
|
+
* webgl.renderer, through the proxy Intel Iris OpenGL Engine
|
|
229
|
+
*
|
|
230
|
+
* `integrity.ts` does not see it either, and the reason is worth writing down:
|
|
231
|
+
* the plugin installs itself through CDP `addScriptToEvaluateOnNewDocument`,
|
|
232
|
+
* which runs in *every* new document — including the same-origin iframe that
|
|
233
|
+
* collector creates to borrow a clean realm. Measured: the iframe reports the
|
|
234
|
+
* same spoofed renderer as the page. There is no clean realm to borrow.
|
|
235
|
+
*
|
|
236
|
+
* What the plugin cannot reach is the stack, because the engine builds it at
|
|
237
|
+
* throw time from frames that no longer exist. Provoking a `TypeError` through
|
|
238
|
+
* each candidate, measured three ways on the same page:
|
|
239
|
+
*
|
|
240
|
+
* untouched native no trap frame — see TRAP_WINDOW in native.ts for why
|
|
241
|
+
* this is not the same as "no frame at all"
|
|
242
|
+
* plain function a frame named after the function — and its source no
|
|
243
|
+
* longer claims to be native, so `countPatched` has it
|
|
244
|
+
* Proxy a frame naming the `apply` trap, and the source still
|
|
245
|
+
* claims to be native
|
|
246
|
+
*
|
|
247
|
+
* Only the third case is counted, and that conjunction is the whole
|
|
248
|
+
* false-positive argument. A privacy extension that replaces canvas readback
|
|
249
|
+
* installs an ordinary function: it interposes a frame but stops claiming to be
|
|
250
|
+
* native, so it lands in `bot.patchedNatives` where its benign notes already
|
|
251
|
+
* live. Counting something here requires a wrapper that interposes *and* lies
|
|
252
|
+
* about being native, and nothing legitimate needs to do both.
|
|
253
|
+
*
|
|
254
|
+
* **Cost, measured rather than assumed**, because seven thrown exceptions in the
|
|
255
|
+
* instant wave is exactly the kind of thing that turns out to be expensive: 200
|
|
256
|
+
* runs on Chrome 141, median under 0.1 ms and p95 0.2 ms for the whole set. The
|
|
257
|
+
* instant wave budgets 5 ms across seven collectors, so this stays in it.
|
|
258
|
+
*/
|
|
259
|
+
const PROXY_PROBES = [
|
|
260
|
+
{ name: 'Function.toString', path: ['Function', 'prototype', 'toString'] },
|
|
261
|
+
{ name: 'WebGL.getParameter', path: ['WebGLRenderingContext', 'prototype', 'getParameter'] },
|
|
262
|
+
{ name: 'WebGL2.getParameter', path: ['WebGL2RenderingContext', 'prototype', 'getParameter'] },
|
|
263
|
+
{ name: 'Canvas.toDataURL', path: ['HTMLCanvasElement', 'prototype', 'toDataURL'] },
|
|
264
|
+
{ name: 'Canvas.getContext', path: ['HTMLCanvasElement', 'prototype', 'getContext'] },
|
|
265
|
+
{ name: 'Media.canPlayType', path: ['HTMLMediaElement', 'prototype', 'canPlayType'] },
|
|
266
|
+
// Listed and, on Chrome, never reached: `query` rejects a promise rather than
|
|
267
|
+
// throwing on a bad receiver, so the probe cannot provoke it and abstains.
|
|
268
|
+
// That is why a healthy Chrome reports 6 probes from 7 candidates, and it is
|
|
269
|
+
// left in because an engine that does throw here would be measured for free.
|
|
270
|
+
{ name: 'Permissions.query', path: ['Permissions', 'prototype', 'query'] },
|
|
271
|
+
];
|
|
272
|
+
/**
|
|
273
|
+
* Does this engine print proxy traps on the stack at all?
|
|
274
|
+
*
|
|
275
|
+
* A positive control, run on a proxy this function builds itself, so the answer
|
|
276
|
+
* is measured in the visitor's browser rather than assumed from V8's behaviour
|
|
277
|
+
* on the developer's. Firefox and Safari format stacks differently and may not
|
|
278
|
+
* name the trap; if this control fails, the technique does not work here and
|
|
279
|
+
* every probe abstains rather than reporting a clean bill of health nobody
|
|
280
|
+
* earned.
|
|
281
|
+
*
|
|
282
|
+
* The control proxies a function that is never installed anywhere, so no page
|
|
283
|
+
* behaviour changes and nothing else can observe it. `toDataURL` is the subject
|
|
284
|
+
* because it throws on an illegal receiver in every engine that has a canvas.
|
|
285
|
+
*/
|
|
286
|
+
function applyTrapIsVisible(window) {
|
|
287
|
+
const realm = window;
|
|
288
|
+
const native = realm['HTMLCanvasElement']?.prototype?.['toDataURL'];
|
|
289
|
+
if (typeof native !== 'function')
|
|
290
|
+
return false;
|
|
291
|
+
return applyTrapIsObservable(native);
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* The probe, as counts rather than a verdict.
|
|
295
|
+
*
|
|
296
|
+
* Reports how many candidates could be tested alongside how many were wrapped,
|
|
297
|
+
* following `bot.realmProbes` — a consistency check cannot tell "nothing is
|
|
298
|
+
* wrapped" from "nothing could be measured" unless the collector says which.
|
|
299
|
+
*/
|
|
300
|
+
function countProxied(window) {
|
|
301
|
+
if (!applyTrapIsVisible(window))
|
|
302
|
+
return { probes: 0, names: [] };
|
|
303
|
+
const names = [];
|
|
304
|
+
let probes = 0;
|
|
305
|
+
for (const probe of PROXY_PROBES) {
|
|
306
|
+
const target = resolvePath(window, probe.path);
|
|
307
|
+
if (typeof target !== 'function')
|
|
308
|
+
continue;
|
|
309
|
+
let source;
|
|
310
|
+
try {
|
|
311
|
+
source = Function.prototype.toString.call(target);
|
|
312
|
+
}
|
|
313
|
+
catch {
|
|
314
|
+
// A target that will not stringify is already an anomaly, and one that
|
|
315
|
+
// `countPatched` records. Not this probe's finding.
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
// The conjunction. A wrapper that admits to being a wrapper belongs to
|
|
319
|
+
// `bot.patchedNatives`, whose benign notes cover privacy extensions; this
|
|
320
|
+
// probe is only for the ones whose source still claims to be native.
|
|
321
|
+
if (!isNativeSource(source))
|
|
322
|
+
continue;
|
|
323
|
+
const interposed = interposesApplyTrap(target);
|
|
324
|
+
if (interposed === undefined)
|
|
325
|
+
continue;
|
|
326
|
+
probes++;
|
|
327
|
+
if (interposed)
|
|
328
|
+
names.push(probe.name);
|
|
329
|
+
}
|
|
330
|
+
return { probes, names };
|
|
331
|
+
}
|
|
332
|
+
/** Walks a dotted path without invoking anything, as integrity.ts does. */
|
|
333
|
+
function resolvePath(window, path) {
|
|
334
|
+
let current = window;
|
|
335
|
+
for (const key of path) {
|
|
336
|
+
if (current === null || current === undefined)
|
|
337
|
+
return undefined;
|
|
338
|
+
try {
|
|
339
|
+
current = current[key];
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
342
|
+
return undefined;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return current;
|
|
346
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BehaviorRecorder } from '../behavior/recorder.js';
|
|
2
|
+
import type { Collector } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Reads whatever the recorder has accumulated.
|
|
5
|
+
*
|
|
6
|
+
* A collector rather than a direct call so behavioural signals travel the same
|
|
7
|
+
* path as every other signal — same wave budget, same disable switch, same
|
|
8
|
+
* skipped-and-reported handling when something throws.
|
|
9
|
+
*
|
|
10
|
+
* `instant`, because reading folded statistics is a few field accesses. The
|
|
11
|
+
* work happened as the user moved and typed; none of it is on the submit path.
|
|
12
|
+
*
|
|
13
|
+
* Optional, because an integrator who never calls `observe()` is not broken —
|
|
14
|
+
* they get no behavioural evidence, which the engine treats as unobserved
|
|
15
|
+
* rather than suspicious.
|
|
16
|
+
*/
|
|
17
|
+
export declare function behaviorCollector(recorder: () => BehaviorRecorder | undefined): Collector;
|
package/dist/signals/behavior.js
CHANGED
|
@@ -1 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Reads whatever the recorder has accumulated.
|
|
3
|
+
*
|
|
4
|
+
* A collector rather than a direct call so behavioural signals travel the same
|
|
5
|
+
* path as every other signal — same wave budget, same disable switch, same
|
|
6
|
+
* skipped-and-reported handling when something throws.
|
|
7
|
+
*
|
|
8
|
+
* `instant`, because reading folded statistics is a few field accesses. The
|
|
9
|
+
* work happened as the user moved and typed; none of it is on the submit path.
|
|
10
|
+
*
|
|
11
|
+
* Optional, because an integrator who never calls `observe()` is not broken —
|
|
12
|
+
* they get no behavioural evidence, which the engine treats as unobserved
|
|
13
|
+
* rather than suspicious.
|
|
14
|
+
*/
|
|
15
|
+
export function behaviorCollector(recorder) {
|
|
16
|
+
return {
|
|
17
|
+
id: 'behavior',
|
|
18
|
+
wave: 'instant',
|
|
19
|
+
optional: true,
|
|
20
|
+
collect() {
|
|
21
|
+
const active = recorder();
|
|
22
|
+
// Nothing observing is not the same as observing nothing. The first is
|
|
23
|
+
// an integration that did not opt in; the second is a form submitted
|
|
24
|
+
// without a single input event, which is worth knowing about. Emitting
|
|
25
|
+
// no keys at all keeps them distinguishable downstream.
|
|
26
|
+
if (active === undefined)
|
|
27
|
+
return {};
|
|
28
|
+
return { ...active.summary() };
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|