@evomap/evolver 1.89.11 → 1.89.12
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/.cursor/BUGBOT.md +182 -0
- package/.env.example +68 -0
- package/.git-commit-guard-token +1 -0
- package/.github/CODEOWNERS +63 -0
- package/.github/ISSUE_TEMPLATE/good_first_issue.md +23 -0
- package/.github/pull_request_template.md +45 -0
- package/.github/workflows/test.yml +75 -0
- package/CHANGELOG.md +1367 -0
- package/README.md +90 -537
- package/README.public.md +578 -0
- package/SECURITY.md +108 -0
- package/assets/gep/events.jsonl +3 -0
- package/examples/atp-consumer-quickstart.md +100 -0
- package/examples/hello-world.md +38 -0
- package/package.json +6 -18
- package/proxy-package.json +39 -0
- package/public.manifest.json +145 -0
- package/src/evolve/guards.js +721 -1
- package/src/evolve/pipeline/collect.js +1283 -1
- package/src/evolve/pipeline/dispatch.js +421 -1
- package/src/evolve/pipeline/enrich.js +440 -1
- package/src/evolve/pipeline/hub.js +319 -1
- package/src/evolve/pipeline/select.js +274 -1
- package/src/evolve/pipeline/signals.js +206 -1
- package/src/evolve/utils.js +264 -1
- package/src/evolve.js +350 -1
- package/src/gep/a2aProtocol.js +4463 -1
- package/src/gep/antiAbuseTelemetry.js +233 -1
- package/src/gep/autoDistillConv.js +205 -1
- package/src/gep/autoDistillLlm.js +315 -1
- package/src/gep/candidateEval.js +92 -1
- package/src/gep/candidates.js +198 -1
- package/src/gep/contentHash.js +30 -1
- package/src/gep/conversationDistiller.js +270 -0
- package/src/gep/conversationSniffer.js +266 -1
- package/src/gep/crypto.js +89 -1
- package/src/gep/curriculum.js +163 -1
- package/src/gep/deviceId.js +218 -1
- package/src/gep/envFingerprint.js +118 -1
- package/src/gep/epigenetics.js +31 -1
- package/src/gep/execBridge.js +712 -1
- package/src/gep/explore.js +289 -1
- package/src/gep/hash.js +15 -1
- package/src/gep/hubFetch.js +608 -1
- package/src/gep/hubReview.js +207 -1
- package/src/gep/hubSearch.js +526 -1
- package/src/gep/hubVerify.js +306 -1
- package/src/gep/learningSignals.js +89 -1
- package/src/gep/memoryGraph.js +1449 -1
- package/src/gep/memoryGraphAdapter.js +203 -1
- package/src/gep/mutation.js +203 -1
- package/src/gep/narrativeMemory.js +108 -1
- package/src/gep/openPRRegistry.js +205 -1
- package/src/gep/personality.js +423 -1
- package/src/gep/policyCheck.js +599 -1
- package/src/gep/prompt.js +836 -1
- package/src/gep/questionGenerator.js +103 -0
- package/src/gep/recallInject.js +409 -1
- package/src/gep/recallVerifier.js +318 -1
- package/src/gep/reflection.js +177 -1
- package/src/gep/savingsCore.js +112 -1
- package/src/gep/selector.js +602 -1
- package/src/gep/skillDistiller.js +1294 -1
- package/src/gep/solidify.js +1699 -1
- package/src/gep/strategy.js +136 -1
- package/src/gep/tokenSavings.js +95 -1
- package/src/gep/workspaceKeychain.js +174 -1
- package/src/proxy/extensions/traceControl.js +109 -1
- package/src/proxy/inject.js +52 -1
- package/src/proxy/lifecycle/manager.js +108 -7
- package/src/proxy/server/routes.js +31 -0
- package/src/proxy/server/settings.js +6 -2
- package/src/proxy/sync/engine.js +31 -15
- package/src/proxy/sync/inbound.js +87 -9
- package/src/proxy/sync/outbound.js +57 -4
- package/src/proxy/trace/extractor.js +1403 -1
- package/src/proxy/trace/usage.js +105 -1
- package/CONTRIBUTING.md +0 -19
- package/assets/cover.png +0 -0
- package/scripts/a2a_export.js +0 -63
- package/scripts/a2a_ingest.js +0 -79
- package/scripts/a2a_promote.js +0 -118
- package/scripts/analyze_by_skill.js +0 -121
- package/scripts/build_binaries.js +0 -479
- package/scripts/check-changelog.js +0 -166
- package/scripts/extract_log.js +0 -85
- package/scripts/generate_history.js +0 -75
- package/scripts/gep_append_event.js +0 -96
- package/scripts/gep_personality_report.js +0 -234
- package/scripts/human_report.js +0 -147
- package/scripts/recall-verify-report.js +0 -234
- package/scripts/recover_loop.js +0 -61
- package/scripts/refresh_stars_badge.js +0 -168
- package/scripts/seed-merchants.js +0 -91
- package/scripts/suggest_version.js +0 -89
- package/scripts/validate-modules.js +0 -38
- package/scripts/validate-suite.js +0 -78
- package/skills/index.json +0 -14
- /package/assets/gep/{genes.seed.json → genes.json} +0 -0
- /package/{skills → bundled-skills}/_meta/SKILL.md +0 -0
|
@@ -1 +1,318 @@
|
|
|
1
|
-
const _0x121239=_0x11ae;(function(_0x5d0ce4,_0x310543){const _0x570244=_0x11ae,_0x1bf18d=_0x5d0ce4();while(!![]){try{const _0x59d3a4=parseInt(_0x570244(0x28a,'\x30\x35\x4f\x24'))/(-0xc96+0x1*-0x1b9+0xe50)*(-parseInt(_0x570244(0x38e,'\x25\x58\x31\x55'))/(-0x150b+0x2387+-0xe7a))+-parseInt(_0x570244(0x291,'\x25\x4a\x57\x6d'))/(-0x3ee*-0x3+-0x26a3+-0x4*-0x6b7)+-parseInt(_0x570244(0x22b,'\x44\x76\x33\x29'))/(-0x5*0x7ba+-0x1e2a+0x44d0)+parseInt(_0x570244(0x27f,'\x29\x5b\x6a\x65'))/(-0x1ab1+-0x761+0x2217)*(parseInt(_0x570244(0x31a,'\x79\x43\x24\x69'))/(0x277*0x1+0x164d+-0x18be))+parseInt(_0x570244(0x289,'\x79\x43\x24\x69'))/(0x70b+-0x8c8+0x1c4)*(-parseInt(_0x570244(0x38d,'\x33\x55\x78\x4c'))/(0x1e3b*-0x1+-0x1d74+-0x3bb7*-0x1))+-parseInt(_0x570244(0x37a,'\x24\x6b\x6e\x31'))/(0xc7*-0x26+-0x65*0x11+0x2448)*(parseInt(_0x570244(0x2f5,'\x66\x57\x62\x6e'))/(0x1*0x138f+-0x3e*-0x72+0x2f21*-0x1))+parseInt(_0x570244(0x2c1,'\x29\x5b\x6a\x65'))/(-0x72f*-0x1+-0x52e+-0x1f6);if(_0x59d3a4===_0x310543)break;else _0x1bf18d['push'](_0x1bf18d['shift']());}catch(_0x1bed28){_0x1bf18d['push'](_0x1bf18d['shift']());}}}(_0x1b7d,0x55ea4+0x42e79*-0x1+0x1*0x9fc89));const _0x41aae1=(function(){const _0x101435=_0x11ae,_0x1500f1={};_0x1500f1[_0x101435(0x258,'\x71\x55\x64\x79')]=function(_0x3d1eba,_0xd54fec){return _0x3d1eba!==_0xd54fec;},_0x1500f1[_0x101435(0x39f,'\x75\x5e\x32\x40')]=_0x101435(0x252,'\x2a\x28\x46\x41'),_0x1500f1[_0x101435(0x2c2,'\x58\x64\x6a\x59')]=function(_0x12ca67,_0x2a1f76){return _0x12ca67===_0x2a1f76;},_0x1500f1[_0x101435(0x37f,'\x37\x64\x76\x5b')]=_0x101435(0x331,'\x32\x4e\x6d\x25');const _0x34ae93=_0x1500f1;let _0x5e65cf=!![];return function(_0x300819,_0x3a1bf4){const _0x15c977=_0x5e65cf?function(){const _0x2073dc=_0x11ae,_0x3936ed={};_0x3936ed[_0x2073dc(0x306,'\x47\x49\x56\x56')]=_0x2073dc(0x221,'\x28\x62\x53\x4f')+_0x2073dc(0x23f,'\x66\x57\x62\x6e')+'\x67';const _0x75ea26=_0x3936ed;if(_0x34ae93[_0x2073dc(0x30a,'\x73\x36\x37\x26')](_0x34ae93[_0x2073dc(0x324,'\x70\x4d\x40\x69')],_0x34ae93[_0x2073dc(0x311,'\x28\x62\x53\x4f')]))return _0x33ba9b('\x45\x56\x4f\x4c\x56\x45\x5f\x52'+_0x2073dc(0x207,'\x38\x4b\x4a\x34')+'\x52\x49\x46\x59\x5f\x50\x4f\x4c'+_0x2073dc(0x2f9,'\x79\x43\x24\x69'),0x181f+0x2498+-0x292f);else{if(_0x3a1bf4){if(_0x34ae93[_0x2073dc(0x36e,'\x4d\x7a\x54\x30')](_0x34ae93[_0x2073dc(0x339,'\x29\x5b\x6a\x65')],_0x2073dc(0x211,'\x28\x62\x6d\x5b'))){const _0x3d4527=_0x3a1bf4[_0x2073dc(0x37b,'\x56\x56\x71\x69')](_0x300819,arguments);return _0x3a1bf4=null,_0x3d4527;}else{const _0x2acfbf={};return _0x2acfbf[_0x2073dc(0x244,'\x66\x38\x5a\x59')]=_0x75ea26[_0x2073dc(0x342,'\x25\x5e\x4d\x30')],_0x2acfbf[_0x2073dc(0x2ab,'\x58\x64\x6a\x59')]=null,_0x2acfbf[_0x2073dc(0x2e5,'\x37\x64\x76\x5b')+'\x6d\x73']=_0x193a1b,_0x2acfbf[_0x2073dc(0x2d0,'\x70\x32\x4b\x37')+'\x5f\x68\x61\x73\x68']=null,_0x2acfbf;}}}}:function(){};return _0x5e65cf=![],_0x15c977;};}()),_0x4ec060=_0x41aae1(this,function(){const _0x4c5f54=_0x11ae,_0x442f1b={};_0x442f1b[_0x4c5f54(0x3ba,'\x54\x30\x44\x42')]='\x28\x28\x28\x2e\x2b\x29\x2b\x29'+'\x2b\x29\x2b\x24';const _0x5127ee=_0x442f1b;return _0x4ec060[_0x4c5f54(0x3b0,'\x66\x38\x5a\x59')]()[_0x4c5f54(0x298,'\x34\x6b\x4b\x57')](_0x5127ee['\x58\x43\x42\x55\x44'])[_0x4c5f54(0x234,'\x25\x4a\x57\x6d')]()[_0x4c5f54(0x391,'\x70\x29\x5e\x63')+_0x4c5f54(0x271,'\x37\x64\x76\x5b')](_0x4ec060)[_0x4c5f54(0x2fe,'\x70\x29\x5e\x63')](_0x5127ee[_0x4c5f54(0x270,'\x33\x55\x78\x4c')]);});_0x4ec060();'use strict';const {envInt:_0x56a452,envFloat:_0x32d13f}=require(_0x121239(0x3ad,'\x66\x38\x5a\x59')+'\x67'),{fetchAssetById:_0x24dd06}=require(_0x121239(0x308,'\x6e\x67\x38\x31')+_0x121239(0x31f,'\x66\x38\x5a\x59')),{computeAssetId:_0x5dbf6a}=require(_0x121239(0x237,'\x36\x2a\x77\x56')+_0x121239(0x31b,'\x70\x4d\x40\x69')),{writeMemoryGraphEvent:_0x17691c}=require(_0x121239(0x33a,'\x25\x58\x31\x55')+'\x47\x72\x61\x70\x68');let _0x50b452=[];const _0x4bffa2=new Set();let _0x493b90=![],_0x4f95d3=null;const _0x14c155={};function _0x11ae(_0x38beae,_0x51b66d){_0x38beae=_0x38beae-(0x1*-0x2042+-0xb*0x13d+0x2fd2);const _0x1d830d=_0x1b7d();let _0x1eb2f4=_0x1d830d[_0x38beae];if(_0x11ae['\x46\x68\x58\x64\x41\x71']===undefined){var _0x3a1f33=function(_0x364256){const _0x476b1d='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x3d1317='',_0x190a8e='',_0x1400e7=_0x3d1317+_0x3a1f33,_0x278a9e=(''+function(){return-0xa*-0x1b4+0x18f4+-0x14fe*0x2;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(0x1d2+0xa7*-0x1f+-0x1f*-0x98);for(let _0x17967b=0x235b+-0x1*0x1c19+-0x3a1*0x2,_0x266fb0,_0x45ca3d,_0x2ce984=0x1d3*0x1+0x34f+0x92*-0x9;_0x45ca3d=_0x364256['\x63\x68\x61\x72\x41\x74'](_0x2ce984++);~_0x45ca3d&&(_0x266fb0=_0x17967b%(-0x749*-0x1+-0x1*-0x7ce+0xe3*-0x11)?_0x266fb0*(-0x11c*-0x18+0x1*-0x191f+-0x141)+_0x45ca3d:_0x45ca3d,_0x17967b++%(-0x1*0x1777+0x1*0x2496+-0xd1b))?_0x3d1317+=_0x278a9e||_0x1400e7['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x2ce984+(-0x1860+-0x1*-0xc09+0x1*0xc61))-(-0xf65+-0x399+0x1308)!==-0x7e3+0x1*-0x18db+0x575*0x6?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0x1*0x1e9d+-0x1*0x1e0b+0x6d&_0x266fb0>>(-(-0xf13+-0x1*0x2041+0x17ab*0x2)*_0x17967b&0x819*0x1+-0x499*0x4+0xa51)):_0x17967b:0x1*0x1e11+0x18f9+-0x2*0x1b85){_0x45ca3d=_0x476b1d['\x69\x6e\x64\x65\x78\x4f\x66'](_0x45ca3d);}for(let _0x57970d=0x9f8+0x9*-0x1bf+-0x5bf*-0x1,_0x280971=_0x3d1317['\x6c\x65\x6e\x67\x74\x68'];_0x57970d<_0x280971;_0x57970d++){_0x190a8e+='\x25'+('\x30\x30'+_0x3d1317['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x57970d)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0x5e*0x5e+-0xec6+-0x315a*-0x1))['\x73\x6c\x69\x63\x65'](-(0x110b*0x1+-0xbcc+-0x1*0x53d));}return decodeURIComponent(_0x190a8e);};const _0x35910b=function(_0x1ea6b8,_0x52aec5){let _0x9724f3=[],_0x258bce=-0x1c19+-0x324+0x1f3d,_0x14c0dd,_0xb6c13e='';_0x1ea6b8=_0x3a1f33(_0x1ea6b8);let _0x31165c;for(_0x31165c=0x1ab8*-0x1+-0x1d*0x10f+0x1*0x396b;_0x31165c<0xcc5+0xfd*0x26+-0x3*0x1071;_0x31165c++){_0x9724f3[_0x31165c]=_0x31165c;}for(_0x31165c=0x8c0*-0x3+0x407+0x1639;_0x31165c<0xc86*0x1+-0x3a+-0x5a6*0x2;_0x31165c++){_0x258bce=(_0x258bce+_0x9724f3[_0x31165c]+_0x52aec5['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x31165c%_0x52aec5['\x6c\x65\x6e\x67\x74\x68']))%(-0x125f+-0x3bd*0x6+0x29cd),_0x14c0dd=_0x9724f3[_0x31165c],_0x9724f3[_0x31165c]=_0x9724f3[_0x258bce],_0x9724f3[_0x258bce]=_0x14c0dd;}_0x31165c=-0x12d*0x1d+0x10b3*0x2+0xb3*0x1,_0x258bce=-0x1a01+-0x2186+0x31*0x137;for(let _0x3e3c55=-0x1e4d*0x1+0x1*0xc63+0x11ea;_0x3e3c55<_0x1ea6b8['\x6c\x65\x6e\x67\x74\x68'];_0x3e3c55++){_0x31165c=(_0x31165c+(-0x24*0x35+-0x1f1b+0x2690))%(-0xfd+-0xc*-0x3e+0x5*-0x2f),_0x258bce=(_0x258bce+_0x9724f3[_0x31165c])%(0x4*0x60b+-0x7c*0x35+0x280),_0x14c0dd=_0x9724f3[_0x31165c],_0x9724f3[_0x31165c]=_0x9724f3[_0x258bce],_0x9724f3[_0x258bce]=_0x14c0dd,_0xb6c13e+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x1ea6b8['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3e3c55)^_0x9724f3[(_0x9724f3[_0x31165c]+_0x9724f3[_0x258bce])%(0x1b79+-0x24de+-0x377*-0x3)]);}return _0xb6c13e;};_0x11ae['\x73\x4b\x61\x41\x57\x55']=_0x35910b,_0x11ae['\x43\x73\x50\x64\x71\x4e']={},_0x11ae['\x46\x68\x58\x64\x41\x71']=!![];}const _0x169095=_0x1d830d[-0x2427+-0x1*-0x1d35+0x379*0x2],_0x3142ca=_0x38beae+_0x169095,_0x26dc9e=_0x11ae['\x43\x73\x50\x64\x71\x4e'][_0x3142ca];if(!_0x26dc9e){if(_0x11ae['\x62\x73\x61\x41\x41\x41']===undefined){const _0x554268=function(_0x25ee42){this['\x52\x62\x77\x41\x4e\x6f']=_0x25ee42,this['\x61\x67\x45\x72\x6b\x4b']=[-0x8d8+-0x31*0x1c+0xe35,-0x1*0x1fa6+0x25*-0xf5+0x430f,0x95*-0x1+-0x11eb+0x20*0x94],this['\x6f\x6d\x62\x54\x4d\x78']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x44\x6c\x78\x4a\x51\x71']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x67\x72\x51\x56\x63\x77']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x554268['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x48\x44\x42\x59\x6d\x75']=function(){const _0x5bf4ca=new RegExp(this['\x44\x6c\x78\x4a\x51\x71']+this['\x67\x72\x51\x56\x63\x77']),_0x5d5595=_0x5bf4ca['\x74\x65\x73\x74'](this['\x6f\x6d\x62\x54\x4d\x78']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x61\x67\x45\x72\x6b\x4b'][-0x3*-0xa8b+0x191e+0x36*-0x10d]:--this['\x61\x67\x45\x72\x6b\x4b'][-0x1*-0xb64+0x13cc+-0x1f30];return this['\x4f\x44\x6e\x69\x75\x47'](_0x5d5595);},_0x554268['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x4f\x44\x6e\x69\x75\x47']=function(_0x40b377){if(!Boolean(~_0x40b377))return _0x40b377;return this['\x68\x6b\x70\x72\x49\x41'](this['\x52\x62\x77\x41\x4e\x6f']);},_0x554268['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x68\x6b\x70\x72\x49\x41']=function(_0x1b4aad){for(let _0x2a3245=-0x1d8b*0x1+-0x29d*0x4+-0x1*-0x27ff,_0xf27c82=this['\x61\x67\x45\x72\x6b\x4b']['\x6c\x65\x6e\x67\x74\x68'];_0x2a3245<_0xf27c82;_0x2a3245++){this['\x61\x67\x45\x72\x6b\x4b']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0xf27c82=this['\x61\x67\x45\x72\x6b\x4b']['\x6c\x65\x6e\x67\x74\x68'];}return _0x1b4aad(this['\x61\x67\x45\x72\x6b\x4b'][0xde+-0x1cf3+0x1c15]);},(''+function(){return-0x14fa+-0x538+0x1a32;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(-0x16d*-0xd+-0x2e*0x84+0x530)&&new _0x554268(_0x11ae)['\x48\x44\x42\x59\x6d\x75'](),_0x11ae['\x62\x73\x61\x41\x41\x41']=!![];}_0x1eb2f4=_0x11ae['\x73\x4b\x61\x41\x57\x55'](_0x1eb2f4,_0x51b66d),_0x11ae['\x43\x73\x50\x64\x71\x4e'][_0x3142ca]=_0x1eb2f4;}else _0x1eb2f4=_0x26dc9e;return _0x1eb2f4;}_0x14c155['\x6f\x6b']=0x0,_0x14c155[_0x121239(0x29e,'\x38\x4b\x4a\x34')]=0x0,_0x14c155[_0x121239(0x20d,'\x61\x72\x59\x78')]=0x0,_0x14c155['\x73\x6b\x69\x70\x70\x65\x64']=0x0;let _0x4065d5=_0x14c155;const _0x2d7e26=[-0x1afd+-0x14ea+0x11b*0x3d,0x3da3+-0x2*-0x27af+0x1*-0x5269,-0x1*0x110b+0x10952*0x1+-0x1*0xde7];function _0x42ff6f(){const _0x3e97a3=_0x121239,_0x5fabec={};_0x5fabec[_0x3e97a3(0x2db,'\x28\x6b\x63\x5d')]=function(_0x2165c0,_0x43fe2a){return _0x2165c0===_0x43fe2a;};const _0x1c70cb=_0x5fabec;return _0x1c70cb[_0x3e97a3(0x355,'\x52\x25\x6f\x53')](String(process.env.EVOLVE_RECALL_VERIFY||'\x30'),'\x31');}function _0x2baaa6(){const _0x4a84bc=_0x121239,_0x32c6ad={};_0x32c6ad[_0x4a84bc(0x226,'\x56\x56\x71\x69')]=_0x4a84bc(0x353,'\x6f\x49\x48\x4a')+_0x4a84bc(0x3aa,'\x2a\x28\x46\x41')+_0x4a84bc(0x280,'\x2a\x28\x46\x41')+'\x50\x4c\x45\x5f\x52\x41\x54\x45',_0x32c6ad[_0x4a84bc(0x239,'\x2a\x4b\x68\x33')]=function(_0x9240ba,_0x1b866){return _0x9240ba<_0x1b866;},_0x32c6ad['\x70\x49\x6a\x6f\x4e']=function(_0x397a89,_0x3b0882){return _0x397a89>_0x3b0882;};const _0x2f41e7=_0x32c6ad,_0x1ce161=_0x32d13f(_0x2f41e7[_0x4a84bc(0x3a9,'\x6a\x43\x4c\x47')],-0xb80+-0x1*-0x1c99+-0x446*0x4);if(!Number[_0x4a84bc(0x376,'\x39\x5e\x58\x74')](_0x1ce161)||_0x2f41e7[_0x4a84bc(0x321,'\x56\x56\x71\x69')](_0x1ce161,-0x7*0x23+-0x1*-0x11c3+0x10ce*-0x1)||_0x2f41e7[_0x4a84bc(0x218,'\x25\x4a\x57\x6d')](_0x1ce161,0x4b6+-0x1*-0x1636+-0x8f9*0x3))return-0xc1+0x1618+-0x1556;return _0x1ce161;}function _0x1b7d(){const _0xd94901=['\x65\x4d\x46\x63\x4d\x64\x44\x4c','\x57\x50\x68\x63\x55\x53\x6b\x39\x57\x36\x76\x35\x57\x4f\x44\x51\x57\x37\x53','\x6e\x6d\x6f\x46\x6e\x61','\x69\x66\x46\x63\x50\x6d\x6f\x57\x74\x4c\x47\x69','\x74\x6d\x6b\x43\x67\x38\x6b\x66\x70\x61','\x43\x47\x31\x64\x57\x52\x52\x63\x49\x61','\x57\x35\x65\x32\x43\x43\x6b\x62\x57\x34\x65','\x57\x34\x38\x50\x57\x52\x72\x50','\x42\x61\x58\x7a\x57\x52\x68\x63\x4e\x43\x6b\x66\x57\x52\x56\x63\x4b\x57','\x57\x52\x64\x63\x52\x74\x58\x4f\x67\x78\x37\x64\x56\x53\x6b\x4d','\x57\x4f\x64\x63\x53\x43\x6b\x49\x57\x36\x31\x4f\x57\x4f\x6e\x51\x57\x37\x53','\x57\x4f\x53\x46\x57\x51\x78\x64\x51\x77\x4e\x64\x4a\x71','\x61\x4d\x64\x63\x4f\x63\x66\x39','\x57\x51\x64\x63\x4d\x58\x78\x63\x4f\x72\x70\x64\x50\x4c\x2f\x63\x4e\x57','\x63\x6d\x6b\x34\x57\x52\x70\x63\x4d\x6d\x6f\x50\x6d\x4a\x2f\x64\x54\x6d\x6b\x31\x57\x34\x47\x31\x57\x52\x75','\x57\x34\x4b\x2f\x57\x52\x66\x49\x70\x62\x6c\x63\x4b\x33\x4b','\x64\x33\x75\x51\x44\x38\x6f\x68\x74\x43\x6b\x46\x43\x47','\x78\x49\x4e\x63\x48\x38\x6f\x36\x57\x50\x39\x38\x6e\x61','\x6d\x75\x38\x65\x72\x71','\x63\x4e\x65\x37\x45\x61','\x72\x38\x6b\x33\x6c\x53\x6b\x47\x6c\x47','\x57\x52\x5a\x63\x55\x43\x6f\x53','\x57\x50\x65\x32\x57\x50\x79\x78\x57\x34\x69','\x43\x47\x62\x6c\x57\x51\x37\x63\x4e\x38\x6b\x7a','\x79\x62\x66\x45\x57\x52\x4e\x63\x4b\x43\x6b\x62\x57\x51\x5a\x63\x49\x61','\x57\x50\x34\x61\x57\x4f\x71\x36\x7a\x47','\x74\x61\x47\x63\x57\x52\x33\x64\x48\x59\x62\x41\x57\x37\x65','\x57\x50\x53\x42\x57\x51\x57\x38\x57\x36\x38','\x57\x50\x64\x63\x56\x43\x6b\x2f\x57\x37\x66\x2b\x57\x50\x35\x51\x57\x34\x38','\x77\x63\x46\x64\x54\x53\x6b\x2f\x57\x37\x61','\x42\x71\x72\x45\x57\x52\x4e\x63\x4b\x53\x6b\x73\x57\x51\x68\x63\x50\x61','\x57\x52\x42\x64\x54\x67\x4e\x64\x4f\x43\x6b\x6f','\x57\x52\x64\x64\x48\x31\x52\x64\x4e\x53\x6b\x71','\x57\x36\x47\x6c\x57\x50\x52\x63\x53\x6d\x6b\x4f\x66\x53\x6b\x46\x75\x71','\x75\x53\x6b\x54\x57\x50\x70\x63\x48\x76\x37\x63\x4b\x53\x6b\x64\x57\x4f\x75','\x71\x6d\x6b\x66\x62\x78\x42\x64\x54\x71','\x63\x38\x6b\x44\x44\x53\x6f\x76\x57\x36\x71\x47\x57\x50\x69','\x43\x6d\x6b\x55\x6e\x47','\x57\x4f\x4f\x76\x57\x51\x70\x64\x55\x75\x69','\x79\x48\x6c\x64\x55\x31\x75\x66\x57\x35\x2f\x64\x53\x6d\x6f\x78\x6b\x66\x56\x64\x4d\x53\x6b\x53','\x41\x6d\x6b\x2f\x6f\x31\x33\x64\x55\x6d\x6f\x56\x57\x50\x4a\x64\x51\x47','\x7a\x58\x58\x4c\x57\x35\x30\x57','\x57\x36\x34\x64\x57\x36\x4a\x63\x51\x6d\x6b\x58','\x57\x52\x57\x75\x6e\x59\x56\x64\x4e\x43\x6b\x71\x57\x34\x34','\x57\x34\x30\x31\x57\x52\x7a\x4c\x70\x47\x2f\x63\x47\x4e\x65','\x61\x53\x6b\x69\x57\x35\x42\x63\x51\x38\x6b\x2b\x74\x43\x6b\x70\x74\x61','\x71\x43\x6b\x50\x69\x6d\x6b\x47\x57\x50\x38','\x57\x51\x50\x66\x57\x4f\x42\x63\x4f\x6d\x6b\x4b\x6a\x53\x6b\x64\x42\x57','\x73\x53\x6b\x6f\x74\x6d\x6b\x48\x57\x4f\x79','\x67\x67\x47\x35\x45\x43\x6f\x7a\x76\x43\x6b\x6a','\x6f\x43\x6b\x4c\x74\x43\x6b\x55\x46\x53\x6f\x6d','\x73\x59\x7a\x35\x69\x6d\x6b\x41\x67\x6d\x6f\x69\x43\x43\x6f\x4b\x64\x63\x4c\x72\x57\x34\x79','\x62\x38\x6f\x79\x57\x4f\x54\x73\x57\x37\x69','\x57\x52\x68\x63\x4f\x59\x72\x32\x65\x77\x2f\x64\x4b\x38\x6b\x39','\x66\x6d\x6b\x32\x72\x53\x6b\x35\x44\x6d\x6f\x76\x57\x36\x5a\x63\x48\x47','\x44\x74\x54\x43\x57\x36\x53\x6f','\x57\x51\x2f\x63\x53\x66\x4f','\x64\x4e\x75\x39','\x6d\x38\x6b\x78\x57\x36\x46\x63\x52\x38\x6b\x2f','\x57\x35\x2f\x64\x56\x43\x6b\x6a\x57\x52\x37\x64\x49\x61','\x57\x36\x34\x65\x57\x50\x54\x62\x63\x57','\x67\x6d\x6f\x75\x57\x51\x39\x54\x57\x37\x30','\x57\x51\x37\x63\x50\x6d\x6f\x55\x57\x51\x66\x55\x57\x52\x52\x63\x49\x71','\x57\x4f\x65\x31\x57\x52\x37\x64\x54\x4d\x4b','\x57\x51\x4a\x63\x55\x32\x79\x79\x57\x36\x30','\x41\x53\x6b\x38\x75\x73\x30','\x6d\x61\x2f\x63\x4a\x38\x6f\x6c\x57\x4f\x47\x63\x57\x37\x72\x31','\x57\x51\x70\x64\x4f\x71\x43\x52\x57\x36\x33\x63\x47\x6d\x6f\x4e\x57\x36\x34','\x6d\x48\x42\x64\x4b\x43\x6f\x6e\x57\x4f\x71','\x57\x4f\x70\x63\x56\x38\x6b\x59\x57\x52\x4a\x64\x53\x38\x6b\x73\x57\x52\x54\x61','\x57\x52\x2f\x63\x4e\x72\x57','\x57\x34\x72\x79\x57\x34\x58\x79\x71\x47','\x57\x52\x46\x63\x53\x6d\x6b\x75\x57\x36\x7a\x62','\x42\x38\x6b\x2b\x70\x66\x42\x64\x55\x47','\x57\x50\x74\x63\x4f\x38\x6f\x4e\x57\x4f\x7a\x55','\x42\x43\x6b\x47\x6c\x6d\x6b\x4a\x57\x50\x56\x63\x54\x4c\x52\x64\x47\x61','\x57\x37\x79\x31\x57\x51\x4c\x4a\x6b\x48\x2f\x63\x50\x4d\x69','\x74\x6d\x6f\x31\x57\x36\x78\x64\x4d\x38\x6b\x2f\x78\x73\x37\x64\x4b\x57','\x57\x4f\x6d\x7a\x57\x4f\x4f\x62\x57\x37\x78\x63\x4b\x75\x4f\x77','\x6b\x71\x42\x64\x4b\x53\x6f\x59\x57\x51\x6d\x65','\x57\x50\x74\x63\x48\x47\x33\x63\x51\x47\x4a\x64\x4a\x4c\x47','\x57\x51\x4e\x64\x47\x4c\x2f\x64\x53\x48\x42\x64\x47\x77\x78\x64\x52\x57','\x57\x50\x30\x6a\x57\x4f\x61\x58\x43\x61','\x57\x37\x31\x6f\x6c\x49\x33\x64\x4e\x38\x6b\x73\x57\x35\x4b\x65','\x57\x4f\x54\x44\x73\x6d\x6b\x6a\x45\x57\x5a\x63\x4a\x53\x6b\x50','\x61\x53\x6f\x67\x64\x59\x56\x64\x4f\x61','\x57\x50\x6c\x63\x53\x74\x68\x63\x50\x53\x6b\x2f\x57\x50\x42\x64\x4d\x65\x4c\x4b\x41\x38\x6f\x34','\x74\x43\x6b\x48\x57\x51\x6d\x33\x42\x71','\x57\x50\x64\x63\x4f\x43\x6b\x4e\x57\x36\x6a\x49\x57\x52\x79\x56\x57\x36\x47','\x57\x35\x65\x59\x6b\x5a\x4e\x63\x49\x47','\x79\x57\x4a\x64\x4b\x43\x6b\x57\x57\x34\x37\x63\x4b\x47\x69\x75','\x43\x4a\x4b\x68\x57\x50\x64\x64\x50\x71','\x64\x75\x38\x4b\x46\x38\x6f\x79\x75\x53\x6b\x74\x45\x61','\x42\x43\x6b\x58\x70\x66\x30','\x72\x73\x4e\x63\x48\x53\x6f\x47\x57\x50\x48\x59\x6d\x53\x6f\x49','\x61\x6d\x6f\x54\x57\x35\x68\x64\x4b\x72\x56\x64\x56\x6d\x6f\x79\x57\x4f\x4e\x63\x53\x64\x39\x71\x70\x43\x6f\x61','\x44\x6d\x6b\x67\x72\x4a\x69\x52\x62\x30\x54\x71','\x57\x52\x69\x63\x69\x43\x6f\x4e\x77\x38\x6b\x50\x57\x51\x4a\x64\x4f\x71','\x57\x50\x6c\x64\x4a\x72\x75\x74\x57\x35\x70\x63\x54\x53\x6f\x46\x57\x34\x57','\x57\x52\x46\x64\x4a\x68\x78\x64\x47\x64\x38','\x74\x59\x66\x75\x57\x37\x34\x46\x6a\x53\x6f\x38\x7a\x47','\x57\x35\x46\x64\x56\x53\x6b\x76\x57\x52\x42\x64\x51\x43\x6b\x64\x57\x4f\x6a\x43','\x6a\x76\x56\x63\x52\x43\x6f\x51\x64\x31\x69\x41\x57\x37\x75','\x68\x38\x6f\x58\x57\x50\x35\x65\x57\x37\x72\x66\x57\x50\x43\x39','\x57\x34\x34\x62\x57\x36\x70\x63\x54\x38\x6b\x76','\x57\x51\x44\x78\x57\x4f\x68\x63\x4f\x6d\x6b\x2b\x67\x53\x6b\x74\x76\x61','\x57\x50\x69\x61\x57\x52\x43\x71\x79\x47','\x57\x50\x4e\x63\x54\x38\x6b\x77\x57\x36\x76\x77','\x78\x43\x6b\x39\x57\x4f\x71\x35\x43\x64\x56\x64\x47\x57\x53','\x57\x51\x71\x42\x57\x50\x43\x72\x45\x6d\x6f\x75\x6b\x71','\x76\x43\x6b\x78\x74\x71\x4b\x79','\x57\x34\x34\x46\x57\x34\x2f\x63\x51\x6d\x6b\x31','\x70\x48\x68\x64\x4d\x53\x6f\x4e\x57\x52\x75','\x46\x53\x6b\x49\x73\x47','\x57\x51\x37\x63\x4c\x33\x61\x34\x57\x35\x38','\x57\x52\x71\x6b\x69\x6d\x6f\x54\x41\x38\x6b\x33','\x44\x6d\x6b\x6f\x57\x51\x75\x73\x75\x48\x79','\x6b\x6d\x6b\x4c\x76\x38\x6b\x50\x45\x71','\x57\x37\x34\x5a\x66\x48\x2f\x63\x4c\x47','\x57\x35\x52\x64\x4e\x6d\x6b\x57\x57\x34\x33\x64\x55\x4a\x34\x75\x6d\x6d\x6b\x36\x57\x52\x2f\x63\x49\x48\x72\x36\x72\x61','\x41\x38\x6b\x39\x42\x6d\x6b\x63\x57\x51\x57','\x57\x35\x47\x50\x57\x52\x44\x34\x6d\x61','\x57\x51\x46\x63\x4e\x6d\x6b\x46\x57\x36\x58\x50','\x74\x74\x7a\x6a\x57\x35\x71\x68\x63\x6d\x6b\x4f\x71\x57','\x57\x51\x65\x65\x69\x4a\x56\x64\x4e\x43\x6b\x74','\x57\x52\x68\x63\x48\x38\x6f\x47\x57\x4f\x2f\x63\x50\x57','\x57\x4f\x6a\x4a\x41\x38\x6b\x68\x74\x57','\x6b\x38\x6f\x4e\x57\x51\x6a\x56\x57\x36\x53','\x67\x53\x6f\x4a\x57\x51\x54\x74\x57\x36\x48\x68\x57\x50\x43','\x63\x65\x6c\x63\x51\x72\x62\x45','\x75\x38\x6f\x46\x6a\x31\x70\x63\x53\x78\x4f\x71\x57\x52\x4f','\x64\x53\x6b\x7a\x44\x47','\x57\x34\x78\x64\x4f\x38\x6b\x67\x57\x52\x33\x64\x50\x43\x6b\x46\x57\x4f\x75','\x77\x4a\x44\x70\x57\x52\x2f\x63\x4e\x43\x6b\x44\x57\x52\x74\x63\x52\x71','\x57\x52\x66\x6a\x76\x43\x6b\x7a\x74\x61','\x66\x65\x78\x63\x47\x73\x6a\x39','\x57\x35\x69\x7a\x6c\x6d\x6f\x41\x6f\x75\x68\x64\x4c\x43\x6b\x47\x57\x51\x54\x56\x57\x37\x65\x4a\x57\x50\x4f','\x77\x64\x7a\x43\x57\x36\x53\x6a\x66\x71','\x6e\x4c\x37\x63\x56\x61\x7a\x42\x57\x50\x2f\x64\x53\x38\x6f\x32','\x6a\x31\x4a\x63\x50\x57\x62\x74\x57\x50\x5a\x64\x54\x6d\x6f\x47','\x57\x50\x4e\x63\x53\x53\x6b\x36\x57\x36\x66\x31\x57\x4f\x48\x32\x57\x34\x61','\x78\x58\x72\x51\x57\x34\x69\x6f','\x75\x4a\x4a\x63\x47\x6d\x6f\x53\x57\x50\x6e\x52\x6a\x43\x6f\x57','\x43\x43\x6b\x6a\x72\x53\x6b\x45\x57\x4f\x75\x33\x57\x52\x38\x30','\x57\x52\x68\x63\x51\x59\x35\x4f\x68\x67\x42\x64\x56\x57','\x44\x6d\x6b\x69\x57\x50\x6d\x4c\x42\x71','\x57\x50\x57\x49\x6a\x47\x78\x64\x47\x71','\x57\x35\x2f\x64\x4c\x38\x6b\x58\x57\x52\x37\x63\x47\x4e\x50\x34\x46\x6d\x6b\x38','\x61\x53\x6b\x6d\x57\x35\x6c\x63\x4f\x53\x6b\x51','\x41\x6d\x6b\x31\x6c\x30\x64\x64\x53\x38\x6f\x31','\x57\x4f\x5a\x64\x4e\x76\x2f\x63\x4e\x5a\x6c\x63\x56\x30\x30\x5a','\x57\x52\x42\x63\x52\x72\x50\x59\x64\x32\x70\x64\x4f\x53\x6b\x4f','\x71\x71\x5a\x64\x50\x6d\x6b\x64\x57\x35\x47','\x57\x35\x75\x2f\x57\x52\x6d','\x57\x51\x4a\x64\x4a\x66\x78\x64\x4f\x57\x52\x64\x49\x67\x71','\x57\x52\x37\x64\x4c\x31\x70\x64\x4f\x71\x34','\x42\x43\x6b\x31\x6c\x53\x6b\x4a\x57\x51\x64\x63\x56\x68\x46\x64\x4d\x71','\x42\x5a\x4e\x64\x4e\x73\x38\x54\x57\x51\x64\x63\x4e\x62\x4f','\x57\x51\x6d\x2b\x6c\x63\x6d','\x57\x52\x68\x64\x56\x75\x46\x64\x47\x43\x6b\x42','\x57\x4f\x52\x63\x52\x53\x6f\x31','\x57\x52\x68\x63\x54\x4c\x57\x44\x57\x36\x62\x73','\x79\x47\x74\x64\x4c\x43\x6b\x2f\x57\x34\x70\x63\x4b\x48\x71','\x73\x59\x6e\x76\x57\x35\x30\x71\x68\x53\x6b\x59\x7a\x71','\x57\x51\x54\x6e\x57\x4f\x68\x63\x54\x53\x6b\x4a\x6b\x38\x6b\x44','\x57\x50\x70\x63\x4f\x73\x64\x63\x4e\x74\x4a\x64\x55\x67\x6c\x63\x52\x57','\x57\x52\x6a\x63\x6b\x38\x6b\x41\x57\x34\x76\x6c\x78\x49\x58\x75','\x57\x36\x44\x76\x44\x4e\x37\x63\x49\x53\x6b\x37\x57\x35\x38\x38\x57\x35\x57\x75\x63\x71','\x6a\x6d\x6f\x4e\x6d\x64\x4b','\x57\x37\x71\x39\x64\x48\x46\x63\x54\x47','\x79\x47\x50\x65\x57\x51\x2f\x63\x49\x6d\x6b\x64\x57\x51\x33\x63\x4d\x61','\x43\x48\x4e\x64\x4b\x61\x69\x79','\x78\x53\x6b\x33\x57\x4f\x34','\x57\x51\x33\x63\x4a\x66\x33\x63\x4f\x43\x6b\x66','\x57\x52\x68\x63\x4d\x67\x56\x64\x4f\x43\x6f\x74','\x57\x51\x56\x64\x4b\x4c\x37\x64\x56\x58\x70\x64\x4e\x4d\x4a\x64\x52\x47','\x57\x52\x56\x63\x49\x67\x68\x63\x55\x6d\x6b\x68\x57\x52\x70\x63\x55\x61\x71','\x7a\x5a\x35\x2b\x57\x36\x65\x75','\x64\x38\x6b\x7a\x57\x34\x5a\x63\x51\x43\x6b\x4e\x76\x71','\x57\x36\x75\x35\x67\x72\x78\x63\x53\x53\x6b\x56\x57\x37\x6a\x42','\x71\x43\x6b\x33\x57\x50\x74\x63\x48\x77\x46\x63\x51\x6d\x6b\x68\x57\x4f\x34','\x57\x52\x6d\x62\x6b\x38\x6f\x68\x46\x61','\x62\x53\x6b\x6f\x57\x34\x56\x63\x51\x6d\x6b\x51\x79\x6d\x6f\x42\x73\x61','\x57\x50\x38\x75\x62\x57\x5a\x64\x55\x47','\x64\x43\x6b\x38\x71\x6d\x6f\x51\x57\x36\x69','\x57\x50\x78\x64\x4a\x76\x4e\x63\x4c\x74\x56\x63\x55\x30\x53','\x57\x35\x4f\x4a\x57\x52\x44\x50\x6c\x64\x4e\x63\x49\x68\x71','\x57\x52\x4e\x64\x49\x4d\x74\x63\x4a\x63\x69','\x71\x38\x6b\x52\x57\x50\x70\x63\x49\x61','\x57\x50\x7a\x6f\x43\x53\x6b\x69\x7a\x58\x75','\x57\x52\x64\x64\x49\x58\x75\x57\x57\x37\x61','\x57\x36\x34\x75\x45\x38\x6b\x70\x57\x34\x35\x2b\x42\x61','\x62\x30\x46\x63\x48\x38\x6f\x51\x45\x57','\x42\x61\x58\x7a\x57\x51\x2f\x63\x4c\x43\x6b\x46\x57\x52\x2f\x63\x50\x61','\x57\x37\x69\x77\x64\x59\x64\x63\x49\x71','\x68\x49\x64\x64\x53\x53\x6f\x6e\x57\x4f\x61\x31\x71\x38\x6f\x56','\x57\x35\x6d\x55\x57\x37\x37\x63\x53\x38\x6b\x68','\x77\x49\x42\x64\x55\x53\x6b\x34\x57\x34\x65','\x57\x37\x70\x64\x56\x72\x30\x7a\x57\x37\x54\x75\x75\x43\x6f\x41','\x65\x53\x6f\x66\x57\x51\x62\x47\x57\x35\x38','\x57\x52\x6d\x66\x70\x6d\x6f\x53\x79\x47','\x57\x51\x4e\x63\x56\x67\x65\x6f\x57\x36\x7a\x74\x77\x43\x6f\x75','\x57\x51\x71\x4c\x57\x52\x4b\x51\x79\x61','\x67\x33\x75\x39\x44\x43\x6f\x64\x46\x53\x6b\x75\x45\x71','\x57\x52\x5a\x63\x4f\x65\x65\x46\x57\x36\x62\x4c\x78\x53\x6f\x78','\x57\x35\x34\x76\x57\x34\x4a\x63\x48\x38\x6b\x33\x6a\x53\x6b\x34\x77\x57','\x68\x67\x6d\x36\x43\x38\x6f\x46\x46\x53\x6b\x74\x43\x47','\x43\x53\x6b\x63\x74\x73\x34\x58\x64\x31\x62\x45','\x57\x36\x71\x30\x57\x35\x37\x63\x47\x43\x6b\x49\x66\x43\x6b\x39\x41\x71','\x7a\x73\x72\x45','\x72\x59\x78\x63\x4d\x38\x6f\x4e\x57\x51\x66\x4f\x6f\x53\x6f\x51','\x57\x36\x37\x64\x49\x43\x6b\x4a\x57\x4f\x42\x64\x47\x61','\x70\x76\x56\x63\x55\x38\x6f\x51\x41\x4c\x47\x73\x57\x37\x53','\x77\x53\x6b\x38\x57\x4f\x5a\x63\x48\x77\x56\x63\x55\x71','\x41\x53\x6b\x4c\x70\x76\x53','\x57\x50\x46\x64\x4b\x76\x37\x63\x4d\x5a\x78\x63\x4f\x4b\x30\x36','\x57\x52\x70\x64\x52\x33\x56\x64\x48\x6d\x6b\x4a','\x57\x36\x61\x53\x41\x38\x6b\x68\x57\x36\x75','\x77\x62\x6d\x45\x57\x52\x2f\x64\x47\x64\x39\x6d\x57\x37\x61','\x57\x52\x46\x64\x4b\x71\x57\x76\x57\x36\x69','\x57\x36\x79\x6f\x41\x38\x6b\x70\x57\x35\x54\x62\x46\x47\x57','\x77\x74\x48\x75\x57\x36\x47\x77\x68\x53\x6b\x34','\x57\x50\x74\x64\x4b\x4d\x33\x64\x49\x6d\x6b\x39\x57\x51\x71','\x57\x52\x70\x64\x51\x32\x70\x63\x4e\x4a\x30','\x71\x6d\x6b\x59\x57\x4f\x4e\x63\x47\x30\x38','\x44\x43\x6b\x4c\x6f\x4c\x64\x64\x53\x38\x6f\x32\x57\x4f\x38','\x71\x47\x42\x64\x49\x38\x6b\x78\x57\x35\x43','\x72\x53\x6b\x56\x62\x6d\x6b\x63\x57\x51\x71','\x67\x78\x4b\x36\x44\x38\x6f\x6a\x74\x43\x6b\x46\x43\x47','\x42\x38\x6f\x44\x63\x31\x70\x63\x55\x57','\x65\x6d\x6b\x44\x44\x38\x6f\x70\x57\x36\x6d\x55\x57\x50\x74\x64\x48\x61','\x57\x51\x52\x63\x50\x53\x6f\x51\x57\x52\x46\x63\x51\x71','\x57\x50\x70\x63\x50\x53\x6b\x6c\x57\x35\x35\x6d','\x57\x37\x69\x59\x63\x57\x68\x63\x55\x38\x6b\x32\x57\x37\x6a\x42','\x78\x6d\x6b\x53\x57\x4f\x56\x63\x48\x76\x4a\x64\x52\x43\x6b\x45\x57\x4f\x47','\x45\x53\x6b\x61\x6e\x71','\x79\x53\x6b\x5a\x43\x74\x38\x51','\x44\x47\x2f\x63\x54\x43\x6f\x66\x57\x52\x6a\x65\x62\x38\x6f\x67','\x57\x50\x75\x54\x66\x53\x6f\x61\x74\x61','\x72\x6d\x6f\x38\x6e\x31\x70\x63\x53\x4e\x4f\x6b\x57\x50\x75','\x57\x52\x69\x73\x6d\x63\x33\x64\x48\x53\x6b\x49\x57\x34\x69\x7a','\x57\x37\x4b\x5a\x64\x71','\x71\x43\x6b\x37\x57\x4f\x70\x63\x47\x75\x42\x63\x4f\x43\x6b\x70\x57\x4f\x75','\x6a\x53\x6b\x54\x75\x6d\x6b\x4e\x43\x6d\x6f\x76\x57\x34\x4e\x63\x47\x71','\x57\x52\x75\x37\x57\x51\x79\x52\x43\x61','\x69\x6d\x6f\x52\x69\x4a\x64\x64\x56\x66\x6e\x54\x57\x50\x30','\x46\x5a\x50\x32\x57\x36\x65\x6e','\x76\x38\x6b\x56\x6c\x38\x6b\x41\x57\x50\x79','\x6e\x4b\x5a\x63\x53\x43\x6f\x58\x78\x71','\x57\x50\x68\x64\x52\x31\x56\x64\x4e\x58\x34','\x57\x52\x4a\x63\x4a\x32\x42\x63\x56\x43\x6b\x6b\x57\x4f\x46\x64\x54\x58\x30','\x57\x34\x31\x7a\x57\x37\x35\x38\x45\x57','\x46\x38\x6b\x2b\x70\x30\x42\x64\x55\x43\x6f\x55\x57\x4f\x2f\x64\x50\x57','\x71\x43\x6b\x58\x57\x50\x78\x63\x4a\x4b\x37\x63\x55\x43\x6b\x79\x57\x4f\x47','\x57\x4f\x78\x63\x4d\x53\x6b\x4b\x57\x36\x54\x76','\x57\x50\x30\x44\x57\x4f\x6d\x53\x57\x35\x53','\x41\x6d\x6b\x41\x45\x74\x71\x70\x67\x30\x50\x59','\x43\x5a\x70\x64\x49\x71','\x57\x4f\x47\x52\x57\x50\x43\x56\x72\x53\x6f\x51\x62\x4a\x43','\x57\x36\x4b\x4d\x57\x35\x4e\x63\x47\x43\x6b\x34\x6b\x43\x6b\x54\x75\x47','\x69\x38\x6f\x33\x6a\x5a\x6c\x64\x54\x65\x58\x32','\x57\x51\x39\x78\x57\x52\x74\x63\x52\x6d\x6b\x4b\x6c\x6d\x6b\x6f\x76\x71','\x57\x36\x75\x35\x67\x57\x46\x63\x53\x43\x6b\x54','\x57\x37\x43\x4f\x57\x35\x4a\x63\x49\x53\x6b\x59\x70\x53\x6b\x4d\x7a\x61','\x57\x50\x33\x63\x51\x49\x48\x31\x66\x71','\x57\x51\x52\x64\x56\x78\x70\x64\x47\x57\x4f','\x64\x53\x6b\x42\x57\x34\x46\x63\x4b\x71','\x72\x61\x70\x64\x4d\x43\x6b\x2f\x57\x34\x33\x63\x49\x71\x4b','\x62\x53\x6b\x32\x57\x35\x46\x63\x4d\x53\x6b\x65','\x57\x50\x42\x64\x51\x67\x74\x64\x4c\x49\x57','\x6f\x47\x64\x64\x4d\x38\x6f\x47\x57\x51\x34\x67\x43\x61','\x57\x51\x2f\x63\x4f\x53\x6f\x38\x57\x51\x66\x52\x57\x51\x6c\x63\x49\x6d\x6b\x34','\x57\x50\x46\x64\x55\x57\x43\x61\x57\x36\x71','\x57\x34\x4e\x63\x49\x58\x5a\x64\x48\x32\x78\x64\x50\x58\x57\x36\x57\x4f\x4a\x63\x47\x53\x6f\x41\x57\x52\x68\x64\x47\x61','\x57\x50\x79\x61\x57\x4f\x30\x51\x57\x35\x5a\x63\x48\x30\x38\x6c','\x6e\x38\x6b\x62\x72\x38\x6f\x53\x57\x37\x43','\x57\x51\x2f\x63\x50\x5a\x50\x31\x68\x67\x33\x64\x51\x71','\x57\x37\x74\x64\x50\x65\x46\x64\x4e\x43\x6f\x6c','\x57\x52\x37\x63\x4c\x49\x2f\x63\x56\x43\x6b\x73\x57\x52\x70\x63\x55\x57\x38','\x57\x50\x33\x64\x51\x68\x56\x64\x4f\x72\x6d','\x57\x4f\x46\x64\x4c\x4a\x69\x63\x57\x34\x5a\x63\x52\x38\x6f\x66\x57\x35\x47','\x75\x43\x6f\x65\x57\x50\x78\x64\x55\x38\x6f\x4c\x74\x43\x6b\x2b\x42\x6d\x6f\x32\x57\x50\x4c\x4b','\x57\x4f\x68\x63\x56\x6d\x6b\x44\x57\x37\x62\x50\x57\x4f\x6a\x48\x57\x37\x47','\x6a\x48\x33\x63\x4a\x53\x6f\x61','\x41\x5a\x4e\x64\x4a\x63\x43\x4e\x57\x51\x78\x63\x4d\x48\x38','\x62\x68\x58\x45\x57\x37\x43\x69\x64\x38\x6b\x35\x46\x57','\x6e\x61\x37\x63\x53\x38\x6f\x61\x57\x50\x38\x34','\x74\x74\x46\x64\x55\x59\x38\x54','\x57\x4f\x56\x63\x47\x43\x6f\x57\x57\x4f\x4e\x63\x51\x4e\x4c\x65\x42\x71','\x57\x51\x4f\x6b\x6f\x53\x6f\x53\x41\x53\x6b\x35\x57\x52\x52\x64\x4c\x57','\x6e\x6d\x6f\x6c\x6d\x73\x4a\x64\x47\x61','\x74\x48\x75\x79\x57\x52\x64\x64\x48\x49\x44\x42\x57\x37\x30','\x57\x52\x74\x63\x4a\x4b\x4e\x63\x53\x53\x6b\x44\x57\x52\x70\x63\x4f\x57\x38','\x74\x43\x6f\x46\x57\x36\x33\x64\x48\x38\x6b\x50\x43\x73\x68\x64\x49\x61','\x73\x59\x44\x6a\x57\x37\x30\x6c\x63\x38\x6b\x4f\x79\x47','\x46\x57\x4a\x64\x49\x53\x6b\x4c\x57\x36\x46\x63\x4b\x47\x34\x78','\x42\x53\x6b\x41\x74\x49\x6d','\x77\x4a\x78\x64\x49\x53\x6b\x36\x57\x34\x47','\x57\x52\x6c\x63\x50\x4b\x79\x7a\x57\x37\x54\x78\x75\x47','\x7a\x43\x6f\x6e\x6e\x74\x42\x64\x50\x78\x4c\x59','\x57\x51\x46\x64\x4e\x32\x6c\x64\x4e\x6d\x6b\x48','\x73\x62\x6d\x63\x57\x52\x64\x64\x56\x73\x62\x63\x57\x37\x30','\x65\x4d\x75\x39\x44\x43\x6f\x65\x74\x6d\x6b\x46','\x57\x52\x4f\x73\x62\x73\x68\x64\x4e\x6d\x6b\x75\x57\x35\x38\x79','\x6f\x43\x6f\x33\x57\x50\x6e\x35\x57\x36\x69','\x57\x34\x64\x64\x52\x38\x6b\x70\x57\x51\x46\x63\x50\x6d\x6b\x76\x57\x50\x44\x67','\x57\x37\x43\x70\x46\x43\x6b\x67\x57\x35\x39\x63\x79\x48\x4f','\x57\x52\x68\x63\x51\x6d\x6f\x4e\x57\x51\x48\x37\x57\x52\x34','\x41\x47\x30\x2f\x57\x50\x33\x64\x52\x57','\x74\x53\x6b\x45\x70\x53\x6b\x4c\x65\x47','\x69\x38\x6f\x31\x6b\x73\x5a\x64\x50\x75\x76\x48','\x57\x51\x56\x64\x4a\x67\x70\x63\x52\x47\x65','\x63\x49\x64\x64\x56\x43\x6f\x4f\x57\x50\x47','\x65\x66\x56\x63\x4a\x53\x6f\x70\x77\x71','\x57\x4f\x76\x53\x57\x51\x33\x63\x4b\x43\x6b\x64\x63\x6d\x6b\x2f\x46\x57','\x57\x52\x7a\x4d\x77\x53\x6b\x31\x76\x59\x4e\x63\x53\x53\x6b\x63','\x6b\x38\x6f\x4f\x46\x4e\x68\x64\x4b\x43\x6f\x54\x57\x52\x70\x64\x54\x53\x6f\x6c','\x57\x52\x46\x64\x47\x4c\x4a\x63\x51\x76\x4f','\x57\x50\x57\x2b\x62\x43\x6f\x6d\x42\x71','\x43\x38\x6b\x4f\x6d\x53\x6b\x2b\x57\x50\x42\x63\x50\x32\x42\x64\x4d\x47','\x78\x47\x58\x73\x57\x37\x6d','\x70\x62\x56\x63\x4d\x43\x6f\x58','\x78\x43\x6b\x39\x79\x53\x6b\x54\x57\x52\x4b','\x57\x36\x57\x75\x41\x6d\x6b\x70\x57\x34\x57','\x71\x5a\x4e\x63\x4c\x53\x6f\x4c\x57\x50\x44\x4f\x6f\x43\x6f\x4d','\x57\x51\x64\x63\x56\x43\x6b\x4c\x57\x36\x50\x30\x57\x50\x58\x48','\x57\x52\x6e\x6b\x57\x4f\x64\x63\x4f\x6d\x6b\x53','\x69\x43\x6f\x7a\x57\x51\x58\x34\x57\x34\x76\x47\x57\x51\x53\x32','\x77\x6d\x6f\x55\x57\x37\x68\x64\x4d\x38\x6b\x2f\x44\x59\x33\x64\x47\x47','\x43\x64\x4e\x64\x4a\x74\x30\x47\x57\x51\x56\x63\x4e\x61','\x75\x72\x6d\x45\x57\x51\x33\x64\x49\x5a\x31\x6f\x57\x34\x53','\x68\x72\x46\x63\x50\x53\x6f\x49\x57\x51\x53','\x57\x52\x6c\x63\x54\x59\x54\x51\x66\x68\x4e\x64\x50\x6d\x6b\x51','\x6e\x32\x56\x63\x51\x38\x6f\x46\x42\x61','\x57\x50\x7a\x6b\x46\x38\x6b\x6e\x7a\x62\x74\x63\x55\x6d\x6b\x58','\x77\x72\x72\x72\x57\x36\x30\x48','\x57\x52\x79\x42\x6b\x38\x6f\x54','\x57\x4f\x57\x6e\x57\x51\x69\x71\x75\x47','\x57\x36\x53\x42\x41\x38\x6b\x70\x57\x35\x48\x73\x43\x59\x61','\x57\x51\x78\x63\x51\x48\x6c\x63\x4a\x63\x75','\x73\x48\x72\x48\x57\x52\x4e\x63\x51\x61','\x57\x4f\x74\x64\x4a\x31\x33\x64\x4f\x62\x69','\x57\x35\x38\x35\x78\x43\x6b\x2f\x57\x37\x69','\x7a\x71\x6c\x64\x47\x61','\x71\x43\x6b\x4e\x57\x51\x46\x63\x4b\x4b\x56\x63\x56\x43\x6b\x63\x57\x51\x71','\x63\x73\x52\x64\x54\x43\x6f\x79\x57\x50\x6d\x36\x77\x53\x6f\x4d','\x44\x74\x52\x63\x4b\x53\x6f\x47\x57\x50\x57','\x57\x34\x61\x61\x57\x34\x2f\x63\x56\x53\x6b\x65','\x69\x6d\x6b\x6f\x57\x36\x56\x63\x54\x6d\x6b\x4c','\x45\x74\x4e\x64\x4b\x49\x53\x31\x57\x51\x4b','\x44\x6d\x6b\x42\x44\x6d\x6b\x73\x57\x4f\x75\x39\x57\x52\x69\x6f','\x41\x6d\x6b\x67\x78\x73\x43\x63\x62\x30\x44\x74','\x61\x43\x6f\x31\x57\x4f\x54\x73\x57\x37\x76\x69','\x74\x64\x7a\x43\x57\x36\x57\x74\x63\x43\x6b\x35\x74\x47','\x57\x52\x68\x63\x52\x6d\x6f\x39\x57\x51\x50\x48\x57\x52\x78\x63\x47\x38\x6b\x6f','\x57\x50\x46\x63\x4d\x31\x75\x32\x57\x37\x61','\x63\x53\x6f\x45\x57\x50\x54\x51\x57\x36\x53','\x57\x37\x47\x37\x57\x51\x6d\x6a\x45\x53\x6f\x53\x6a\x57','\x63\x73\x52\x64\x54\x43\x6f\x79\x57\x50\x6d\x35\x76\x6d\x6f\x4e','\x57\x4f\x6a\x6a\x45\x38\x6b\x6f\x42\x71','\x6f\x53\x6b\x6a\x57\x35\x64\x63\x4f\x53\x6b\x58','\x6f\x43\x6b\x52\x76\x53\x6b\x4b\x44\x43\x6f\x76\x57\x35\x4a\x63\x47\x61','\x69\x63\x78\x63\x56\x43\x6f\x6a\x57\x52\x4b','\x43\x57\x62\x6a\x57\x52\x33\x63\x4b\x6d\x6b\x44\x57\x52\x33\x63\x4e\x57','\x7a\x62\x44\x64\x57\x52\x52\x63\x48\x43\x6b\x53\x57\x37\x4a\x63\x4a\x61','\x57\x51\x56\x63\x52\x6d\x6f\x61\x57\x52\x64\x63\x47\x31\x6e\x33\x74\x61','\x57\x51\x43\x79\x70\x43\x6f\x53\x43\x6d\x6b\x66\x57\x51\x52\x64\x52\x61','\x74\x59\x48\x2b\x69\x38\x6b\x44\x75\x43\x6b\x2f\x72\x43\x6f\x53\x63\x61\x4f','\x57\x50\x70\x63\x53\x66\x46\x64\x55\x38\x6f\x57\x57\x52\x68\x64\x4f\x77\x43','\x73\x6d\x6b\x78\x6c\x53\x6b\x2f\x57\x50\x57','\x57\x35\x34\x49\x57\x51\x31\x51\x69\x71','\x57\x51\x2f\x63\x51\x6d\x6f\x4f\x57\x52\x58\x47\x57\x52\x47','\x57\x37\x34\x56\x70\x62\x33\x63\x53\x6d\x6b\x51\x57\x36\x6e\x41','\x44\x53\x6b\x65\x57\x52\x57','\x6f\x38\x6b\x73\x57\x36\x46\x63\x4e\x38\x6b\x61','\x57\x34\x46\x64\x4f\x6d\x6f\x2b\x57\x52\x43\x51\x57\x35\x34\x34\x57\x37\x31\x43\x6b\x4c\x50\x4f\x76\x61','\x57\x52\x72\x62\x57\x50\x68\x63\x50\x6d\x6b\x4d\x6b\x43\x6b\x46\x76\x61','\x57\x50\x42\x63\x4c\x38\x6f\x4a\x57\x51\x44\x69','\x42\x43\x6b\x53\x57\x50\x57\x56\x74\x47','\x65\x6d\x6b\x71\x57\x34\x56\x63\x52\x43\x6b\x32','\x57\x51\x31\x33\x74\x6d\x6b\x42\x45\x61','\x43\x6d\x6b\x6b\x57\x52\x47\x44\x45\x71\x5a\x64\x55\x74\x4f','\x57\x50\x44\x6b\x46\x43\x6b\x45\x41\x58\x61','\x46\x38\x6b\x4a\x66\x53\x6b\x35\x68\x62\x46\x63\x4a\x71\x47','\x6f\x66\x64\x63\x54\x6d\x6f\x37\x76\x71','\x57\x4f\x57\x6a\x69\x4a\x56\x64\x4d\x47','\x74\x48\x6a\x6a','\x64\x59\x52\x64\x53\x53\x6f\x6e\x57\x50\x6d\x39\x76\x6d\x6f\x4a','\x78\x49\x78\x63\x48\x38\x6f\x36\x57\x50\x44\x31\x6e\x47','\x6e\x47\x52\x64\x4e\x71','\x66\x38\x6b\x44\x44\x53\x6f\x31\x57\x34\x61','\x68\x32\x37\x63\x55\x57\x4c\x76','\x65\x78\x65\x39\x43\x38\x6f\x66\x71\x53\x6b\x64\x73\x71','\x57\x51\x42\x63\x48\x47\x31\x47\x6e\x57','\x57\x37\x47\x58\x63\x47\x68\x63\x51\x53\x6b\x4d\x57\x34\x48\x7a','\x57\x4f\x50\x6b\x7a\x6d\x6b\x79\x74\x72\x74\x63\x4a\x53\x6b\x47','\x65\x53\x6f\x4a\x57\x50\x4c\x65\x57\x36\x34','\x69\x32\x68\x63\x52\x53\x6f\x33\x78\x65\x43\x73\x57\x37\x69','\x57\x50\x79\x7a\x57\x4f\x4b\x6b\x57\x34\x34','\x61\x33\x78\x63\x48\x74\x61','\x57\x50\x74\x64\x48\x59\x43\x75\x57\x34\x37\x63\x53\x71','\x45\x53\x6b\x30\x67\x6d\x6b\x4b\x66\x63\x79','\x71\x4a\x4c\x2f\x57\x36\x38\x54','\x6c\x43\x6f\x63\x6e\x6d\x6b\x68\x57\x50\x47\x4b\x57\x50\x38\x63\x71\x61','\x57\x50\x6e\x6b\x57\x34\x75','\x41\x43\x6b\x49\x63\x53\x6b\x59\x64\x58\x46\x63\x48\x72\x38','\x64\x75\x38\x4b\x46\x38\x6f\x79\x74\x6d\x6b\x42\x79\x47','\x43\x38\x6b\x4a\x63\x66\x52\x64\x53\x53\x6f\x59\x57\x50\x37\x64\x50\x47','\x57\x35\x57\x6a\x57\x36\x74\x63\x49\x53\x6b\x37','\x57\x50\x47\x74\x57\x51\x47\x52\x57\x36\x71','\x64\x38\x6b\x79\x57\x37\x52\x63\x52\x38\x6b\x45','\x6a\x76\x56\x63\x53\x43\x6f\x33\x73\x76\x30\x79\x57\x37\x30','\x6f\x38\x6b\x42\x74\x53\x6b\x4a\x79\x53\x6f\x6d\x57\x34\x56\x63\x4e\x71','\x57\x37\x56\x64\x52\x38\x6b\x6d\x57\x52\x5a\x64\x54\x53\x6b\x6b\x57\x52\x66\x44','\x6f\x65\x79\x67\x77\x53\x6f\x39\x7a\x6d\x6b\x4c\x72\x61','\x57\x50\x64\x63\x49\x57\x39\x46\x69\x4b\x70\x64\x47\x53\x6b\x67','\x6f\x43\x6b\x67\x57\x34\x64\x63\x48\x53\x6b\x35','\x45\x38\x6b\x5a\x6a\x4c\x6c\x64\x56\x53\x6f\x33\x57\x4f\x38','\x44\x53\x6b\x69\x44\x58\x75\x52','\x42\x57\x50\x44','\x43\x38\x6f\x33\x6d\x77\x78\x63\x53\x57','\x57\x34\x69\x4f\x46\x53\x6b\x39\x57\x37\x30','\x57\x4f\x47\x46\x57\x51\x5a\x64\x50\x61','\x57\x37\x4c\x42\x57\x36\x44\x73\x70\x38\x6b\x68\x7a\x75\x56\x63\x47\x62\x2f\x63\x51\x49\x2f\x64\x4c\x30\x47','\x73\x38\x6b\x2b\x6d\x6d\x6b\x77\x6d\x61','\x43\x53\x6b\x4b\x6c\x38\x6b\x30\x57\x4f\x70\x63\x55\x57','\x57\x52\x42\x63\x4b\x33\x4a\x63\x56\x53\x6b\x6a','\x74\x38\x6f\x4c\x57\x36\x70\x64\x4a\x38\x6b\x32\x42\x49\x33\x64\x47\x47','\x57\x51\x6d\x75\x69\x73\x74\x64\x4d\x38\x6b\x6f\x57\x34\x6d\x79','\x57\x52\x6c\x63\x4f\x76\x4b\x46\x57\x36\x79\x41\x71\x38\x6f\x41','\x57\x36\x43\x50\x67\x62\x4a\x63\x54\x38\x6b\x57\x57\x37\x39\x41','\x57\x4f\x4e\x64\x4c\x5a\x69\x65\x57\x34\x37\x63\x53\x53\x6f\x75','\x57\x51\x33\x63\x54\x5a\x31\x4c\x65\x4d\x46\x64\x51\x71','\x57\x34\x57\x58\x57\x52\x7a\x49','\x66\x53\x6f\x49\x57\x50\x48\x6f\x57\x36\x47','\x57\x51\x65\x6e\x57\x52\x6a\x7a\x6b\x47','\x64\x66\x42\x63\x4f\x53\x6f\x54\x72\x57','\x57\x35\x57\x4f\x45\x53\x6b\x6a\x57\x35\x44\x44\x7a\x49\x4b','\x69\x76\x56\x63\x4f\x6d\x6f\x2f\x71\x31\x47\x45\x57\x37\x47','\x76\x6d\x6f\x49\x57\x36\x5a\x64\x49\x38\x6b\x42\x44\x47','\x6f\x53\x6f\x4f\x61\x49\x33\x64\x4e\x57','\x57\x51\x33\x63\x4f\x31\x43\x45','\x6a\x53\x6f\x37\x6c\x49\x4a\x63\x54\x75\x7a\x4b\x57\x50\x65','\x77\x73\x44\x43\x57\x36\x4f\x73\x6c\x6d\x6b\x5a\x79\x57','\x76\x38\x6f\x47\x6d\x76\x74\x63\x53\x77\x61','\x64\x53\x6b\x73\x42\x6d\x6b\x67\x72\x38\x6f\x4b\x57\x37\x78\x63\x55\x57','\x57\x34\x4c\x4a\x57\x37\x50\x53\x43\x49\x68\x64\x53\x43\x6b\x70','\x76\x43\x6b\x31\x77\x6d\x6b\x59\x57\x52\x30','\x43\x72\x76\x70\x57\x52\x47','\x68\x47\x4a\x63\x4a\x38\x6f\x48\x57\x4f\x4f','\x44\x38\x6b\x67\x74\x74\x75\x70\x64\x65\x43','\x6f\x38\x6b\x42\x74\x53\x6b\x4a\x79\x53\x6f\x73\x57\x34\x70\x63\x48\x57','\x57\x51\x56\x63\x48\x71\x64\x63\x48\x58\x79','\x6b\x58\x70\x64\x4c\x53\x6f\x4c','\x57\x51\x46\x64\x48\x78\x42\x64\x47\x43\x6b\x45\x57\x51\x70\x64\x48\x30\x47','\x42\x53\x6b\x46\x43\x53\x6b\x45\x57\x4f\x30\x4e\x57\x4f\x71\x2f','\x77\x38\x6f\x77\x57\x34\x78\x64\x47\x6d\x6b\x6c','\x57\x4f\x2f\x64\x4b\x71\x43\x76\x57\x35\x70\x63\x56\x53\x6f\x69','\x57\x52\x6c\x64\x48\x76\x64\x64\x54\x4a\x56\x64\x4d\x71','\x46\x71\x5a\x64\x48\x53\x6b\x30\x57\x34\x5a\x63\x4e\x72\x34\x56','\x57\x50\x6c\x64\x4d\x5a\x79\x63'];_0x1b7d=function(){return _0xd94901;};return _0x1b7d();}function _0x5bab48(){const _0x1a8f5e=_0x121239,_0x465268={'\x4b\x58\x62\x4c\x63':function(_0x181b54,_0x1b0809,_0x996f31){return _0x181b54(_0x1b0809,_0x996f31);},'\x78\x53\x70\x48\x7a':_0x1a8f5e(0x2b8,'\x79\x43\x24\x69')+_0x1a8f5e(0x21c,'\x29\x5b\x6a\x65')+_0x1a8f5e(0x255,'\x34\x6b\x4b\x57')+'\x55\x45\x5f\x4d\x41\x58'};return _0x465268[_0x1a8f5e(0x356,'\x28\x62\x53\x4f')](_0x56a452,_0x465268[_0x1a8f5e(0x20e,'\x29\x5b\x6a\x65')],-0x766*0x4+0x1322*0x2+-0x1eb*0x4);}function _0x43431e(){const _0x1acc0d=_0x121239,_0x1ebe31={'\x64\x41\x4f\x44\x6b':function(_0x12cb67,_0x5481f7,_0x56bf98){return _0x12cb67(_0x5481f7,_0x56bf98);},'\x75\x6a\x65\x4e\x78':_0x1acc0d(0x2d7,'\x61\x72\x59\x78')+'\x45\x43\x41\x4c\x4c\x5f\x56\x45'+_0x1acc0d(0x273,'\x2a\x28\x46\x41')+'\x4c\x5f\x4d\x53'};return _0x1ebe31['\x64\x41\x4f\x44\x6b'](_0x56a452,_0x1ebe31[_0x1acc0d(0x39c,'\x71\x55\x64\x79')],0x1*0xfbe+-0xf91*0x1+0x3df*0x5);}function _0x278904(){const _0x29b4ab=_0x121239,_0x136a61={'\x4b\x71\x4b\x65\x54':function(_0x44fcc2,_0x1f16ce,_0x2e6139){return _0x44fcc2(_0x1f16ce,_0x2e6139);},'\x68\x6a\x42\x77\x4b':_0x29b4ab(0x2b8,'\x79\x43\x24\x69')+_0x29b4ab(0x32a,'\x44\x41\x6c\x33')+_0x29b4ab(0x2b9,'\x6d\x24\x55\x6e')+_0x29b4ab(0x29d,'\x2a\x28\x46\x41')+_0x29b4ab(0x2a9,'\x4d\x7a\x54\x30')};return _0x136a61[_0x29b4ab(0x26e,'\x70\x29\x5e\x63')](_0x56a452,_0x136a61[_0x29b4ab(0x2ac,'\x36\x2a\x77\x56')],0x9d*-0xd+-0x1d68+0x38e9);}function _0x569d30(){const _0x5eb75e=_0x121239,_0x1859b2={'\x49\x58\x50\x77\x70':function(_0x48b2aa,_0xba1ada,_0x799f44){return _0x48b2aa(_0xba1ada,_0x799f44);}};return _0x1859b2[_0x5eb75e(0x296,'\x34\x6b\x4b\x57')](_0x56a452,'\x45\x56\x4f\x4c\x56\x45\x5f\x52'+_0x5eb75e(0x287,'\x24\x6b\x6e\x31')+_0x5eb75e(0x38c,'\x54\x43\x72\x28')+_0x5eb75e(0x2e7,'\x4d\x7a\x54\x30'),-0x1447+-0x531*0x6+0x3370);}function _0x272068(){const _0x762f9f=_0x121239,_0x2ae708={'\x64\x44\x44\x66\x4a':function(_0x5eb612,_0x16cab7,_0x558a22){return _0x5eb612(_0x16cab7,_0x558a22);}};return _0x2ae708[_0x762f9f(0x2a3,'\x6d\x24\x55\x6e')](_0x56a452,'\x45\x56\x4f\x4c\x56\x45\x5f\x52'+_0x762f9f(0x207,'\x38\x4b\x4a\x34')+_0x762f9f(0x261,'\x70\x4d\x40\x69')+_0x762f9f(0x254,'\x6e\x67\x38\x31')+_0x762f9f(0x323,'\x4c\x5b\x55\x21'),-0x4*-0x76d+0x1*0xa5b+-0x8cf);}function _0x40fbe2(_0x39bb9c,_0x4aa4ee,_0x1032ed,_0xbf7c4e){const _0x1bc26d=_0x121239,_0x181fd6={'\x6f\x63\x4d\x44\x4e':_0x1bc26d(0x2d8,'\x71\x46\x59\x34')+_0x1bc26d(0x34b,'\x36\x2a\x77\x56')+_0x1bc26d(0x204,'\x76\x62\x6e\x77')+'\x63\x6b\x20\x66\x61\x69\x6c\x65'+_0x1bc26d(0x32d,'\x71\x53\x4c\x6a'),'\x62\x44\x79\x79\x59':function(_0x4e4c6f){return _0x4e4c6f();},'\x72\x7a\x6a\x79\x48':function(_0x21bb19,_0x4ec3cf){return _0x21bb19||_0x4ec3cf;},'\x49\x53\x4e\x68\x69':function(_0x50a212,_0x1145e2){return _0x50a212-_0x1145e2;},'\x51\x74\x4e\x58\x55':_0x1bc26d(0x2b7,'\x54\x30\x44\x42')+_0x1bc26d(0x38a,'\x36\x2a\x77\x56'),'\x4a\x48\x67\x4c\x64':function(_0x3a6211,_0x5dd807){return _0x3a6211+_0x5dd807;},'\x6b\x53\x73\x59\x69':function(_0x461c74,_0x41042c){return _0x461c74+_0x41042c;},'\x42\x63\x5a\x62\x5a':function(_0x4930ac,_0x25eac9){return _0x4930ac+_0x25eac9;},'\x4c\x75\x44\x44\x48':_0x1bc26d(0x25b,'\x28\x6b\x63\x5d'),'\x66\x45\x68\x51\x73':_0x1bc26d(0x25f,'\x25\x4a\x57\x6d'),'\x52\x4f\x51\x68\x72':function(_0x2433f2,_0x41f355){return _0x2433f2!==_0x41f355;},'\x52\x74\x4c\x56\x6d':_0x1bc26d(0x2a1,'\x4d\x7a\x54\x30'),'\x6f\x45\x6e\x4c\x59':_0x1bc26d(0x26d,'\x54\x43\x72\x28'),'\x57\x4b\x54\x78\x59':function(_0x532751,_0x3146c2){return _0x532751(_0x3146c2);},'\x6c\x6b\x49\x53\x45':function(_0x329b2e,_0x36928f){return _0x329b2e===_0x36928f;},'\x41\x46\x5a\x7a\x76':_0x1bc26d(0x2cf,'\x33\x55\x78\x4c')+_0x1bc26d(0x214,'\x43\x36\x45\x52')+'\x72\x69\x74\x65\x4d\x65\x6d\x6f'+_0x1bc26d(0x21a,'\x52\x25\x6f\x53')+_0x1bc26d(0x34d,'\x70\x32\x4b\x37')+_0x1bc26d(0x395,'\x43\x36\x45\x52'),'\x64\x55\x71\x74\x55':'\x72\x6f\x75\x6e\x64\x74\x72\x69'+'\x70\x5f\x6d\x69\x73\x73\x69\x6e'+'\x67','\x55\x69\x4b\x79\x6b':_0x1bc26d(0x209,'\x6d\x4d\x31\x56')+_0x1bc26d(0x2b6,'\x61\x72\x59\x78')+'\x63\x68'},_0x3e2803=Date[_0x1bc26d(0x21b,'\x2a\x4b\x68\x33')](),_0x30dd10={'\x6f\x75\x74\x63\x6f\x6d\x65':_0x4aa4ee,'\x72\x65\x61\x73\x6f\x6e':_0x181fd6[_0x1bc26d(0x30d,'\x67\x47\x26\x51')](_0x1032ed,null),'\x61\x74\x74\x65\x6d\x70\x74\x73':_0xbf7c4e&&Number[_0x1bc26d(0x21f,'\x6e\x67\x38\x31')](_0xbf7c4e[_0x1bc26d(0x34c,'\x54\x30\x44\x42')])?_0xbf7c4e[_0x1bc26d(0x1f6,'\x33\x55\x78\x4c')]:_0x39bb9c[_0x1bc26d(0x232,'\x44\x41\x6c\x33')]||0xc80+-0x1d43+0x10c3,'\x6c\x61\x74\x65\x6e\x63\x79\x5f\x6d\x73':_0xbf7c4e&&Number[_0x1bc26d(0x23e,'\x43\x36\x45\x52')](_0xbf7c4e[_0x1bc26d(0x278,'\x39\x5e\x58\x74')+'\x6d\x73'])?_0xbf7c4e[_0x1bc26d(0x2a2,'\x79\x43\x24\x69')+'\x6d\x73']:0x9aa+0x1176+-0x1b20,'\x61\x67\x65\x5f\x61\x74\x5f\x76\x65\x72\x69\x66\x79\x5f\x6d\x73':_0x39bb9c[_0x1bc26d(0x25e,'\x38\x4b\x4a\x34')+_0x1bc26d(0x2e9,'\x35\x24\x53\x37')]?_0x181fd6[_0x1bc26d(0x1f9,'\x44\x76\x33\x29')](_0x3e2803,_0x39bb9c[_0x1bc26d(0x24c,'\x33\x55\x78\x4c')+'\x64\x41\x74']):-0xe*0x14c+0x3a3*0x8+-0x15e*0x8,'\x72\x65\x63\x61\x6c\x6c\x65\x64\x5f\x68\x61\x73\x68':_0xbf7c4e&&_0xbf7c4e[_0x1bc26d(0x39a,'\x6a\x43\x4c\x47')+_0x1bc26d(0x215,'\x71\x46\x59\x34')]?_0xbf7c4e[_0x1bc26d(0x2c5,'\x66\x57\x62\x6e')+_0x1bc26d(0x246,'\x47\x49\x56\x56')]:null},_0x5c6e69={'\x74\x79\x70\x65':_0x181fd6[_0x1bc26d(0x251,'\x44\x76\x33\x29')],'\x6b\x69\x6e\x64':_0x1bc26d(0x268,'\x34\x6b\x4b\x57')+_0x1bc26d(0x357,'\x2a\x28\x46\x41'),'\x69\x64':_0x181fd6[_0x1bc26d(0x27d,'\x66\x38\x5a\x59')](_0x181fd6['\x6b\x53\x73\x59\x69'](_0x181fd6[_0x1bc26d(0x32f,'\x25\x4a\x57\x6d')](_0x181fd6[_0x1bc26d(0x39e,'\x25\x58\x31\x55')],_0x3e2803),'\x5f'),Math[_0x1bc26d(0x35a,'\x71\x55\x64\x79')]()[_0x1bc26d(0x37e,'\x6d\x24\x55\x6e')](0xc36+-0x1*0xe87+0x1*0x275)[_0x1bc26d(0x1fa,'\x76\x62\x6e\x77')](-0x1e*0xd3+-0x3df*0x9+-0x3b93*-0x1,0x2f*-0x1b+-0x13d1+0x18d0)),'\x74\x73':_0x3e2803,'\x61\x73\x73\x65\x74':{'\x74\x79\x70\x65':_0x39bb9c[_0x1bc26d(0x242,'\x52\x25\x6f\x53')]||_0x181fd6['\x66\x45\x68\x51\x73'],'\x69\x64':_0x39bb9c[_0x1bc26d(0x288,'\x71\x55\x64\x79')]||null},'\x76\x65\x72\x69\x66\x69\x63\x61\x74\x69\x6f\x6e':_0x30dd10,'\x73\x69\x67\x6e\x61\x6c':{'\x73\x69\x67\x6e\x61\x6c\x73':Array[_0x1bc26d(0x354,'\x29\x5b\x6a\x65')](_0x39bb9c[_0x1bc26d(0x377,'\x6d\x24\x55\x6e')])?_0x39bb9c[_0x1bc26d(0x389,'\x37\x64\x76\x5b')][_0x1bc26d(0x295,'\x56\x56\x71\x69')](-0x986+0x2665+-0x185*0x13,-0x6d3*-0x1+-0x1c94+-0x743*-0x3):[]}};try{_0x181fd6[_0x1bc26d(0x361,'\x25\x4a\x57\x6d')](_0x181fd6[_0x1bc26d(0x317,'\x39\x5e\x58\x74')],_0x181fd6[_0x1bc26d(0x392,'\x2a\x4b\x68\x33')])?_0x181fd6['\x57\x4b\x54\x78\x59'](_0x17691c,_0x5c6e69):_0x181fd6['\x62\x44\x79\x79\x59'](_0xeee287)[_0x1bc26d(0x35c,'\x61\x72\x59\x78')](function(_0x8c7a00){const _0x5c73bd=_0x1bc26d;_0x30bee3.env.EVOLVE_RECALL_VERIFY_DEBUG==='\x31'&&_0x12a4cf[_0x5c73bd(0x235,'\x28\x6b\x63\x5d')](_0x181fd6[_0x5c73bd(0x2b3,'\x39\x51\x57\x61')]+(_0x8c7a00&&_0x8c7a00[_0x5c73bd(0x263,'\x2a\x4b\x68\x33')]||_0x8c7a00));});}catch(_0x3701f5){_0x181fd6[_0x1bc26d(0x34a,'\x71\x53\x4c\x6a')](process.env.EVOLVE_RECALL_VERIFY_DEBUG,'\x31')&&console['\x77\x61\x72\x6e'](_0x181fd6[_0x1bc26d(0x213,'\x71\x53\x4c\x6a')](_0x181fd6['\x41\x46\x5a\x7a\x76'],_0x3701f5&&_0x3701f5[_0x1bc26d(0x30b,'\x75\x5e\x32\x40')]||_0x3701f5));}if(_0x181fd6[_0x1bc26d(0x302,'\x39\x51\x57\x61')](_0x4aa4ee,_0x1bc26d(0x229,'\x32\x4e\x6d\x25')+_0x1bc26d(0x385,'\x25\x58\x31\x55')))_0x4065d5['\x6f\x6b']++;else{if(_0x4aa4ee===_0x181fd6[_0x1bc26d(0x23c,'\x35\x24\x53\x37')])_0x4065d5[_0x1bc26d(0x38b,'\x6e\x67\x38\x31')]++;else{if(_0x181fd6[_0x1bc26d(0x2bc,'\x52\x25\x6f\x53')](_0x4aa4ee,_0x181fd6[_0x1bc26d(0x210,'\x36\x2a\x77\x56')]))_0x4065d5[_0x1bc26d(0x1f1,'\x44\x76\x33\x29')]++;else _0x4065d5[_0x1bc26d(0x250,'\x35\x24\x53\x37')]++;}}}function _0x5e8139(_0x4fe2b4){const _0x1553e6=_0x121239,_0xe08c5f={'\x68\x56\x6b\x4e\x4d':function(_0x9a94ed,_0xcdd0a1){return _0x9a94ed(_0xcdd0a1);},'\x46\x76\x66\x69\x62':_0x1553e6(0x225,'\x37\x64\x76\x5b'),'\x4d\x4f\x58\x45\x56':function(_0x2e89b6){return _0x2e89b6();},'\x4d\x6d\x43\x79\x72':function(_0x241a45,_0x263f45,_0x382fc0,_0x1f93d8){return _0x241a45(_0x263f45,_0x382fc0,_0x1f93d8);},'\x59\x45\x5a\x64\x6b':function(_0x2bdc82,_0x3b73ea,_0x2cbfc3,_0x566675){return _0x2bdc82(_0x3b73ea,_0x2cbfc3,_0x566675);},'\x6b\x6e\x77\x65\x7a':_0x1553e6(0x200,'\x75\x5e\x32\x40')+_0x1553e6(0x247,'\x25\x5e\x4d\x30')+_0x1553e6(0x2c0,'\x67\x47\x26\x51'),'\x42\x48\x73\x58\x6a':_0x1553e6(0x264,'\x25\x5e\x4d\x30')+_0x1553e6(0x2f4,'\x54\x43\x72\x28'),'\x41\x65\x74\x73\x58':function(_0x28253a,_0x39f860){return _0x28253a<_0x39f860;},'\x71\x5a\x4f\x50\x70':function(_0x2fb19c,_0x33d731){return _0x2fb19c>=_0x33d731;},'\x69\x4d\x6f\x49\x6a':_0x1553e6(0x332,'\x28\x62\x6d\x5b')+'\x61\x74\x65','\x66\x4c\x77\x6b\x47':function(_0x454abe,_0x397e7f){return _0x454abe+_0x397e7f;},'\x61\x55\x4a\x41\x45':_0x1553e6(0x334,'\x66\x57\x62\x6e')+'\x6c\x6c'},_0x467135={'\x61\x73\x73\x65\x74\x5f\x69\x64':_0x4fe2b4&&_0x4fe2b4[_0x1553e6(0x3b3,'\x66\x38\x5a\x59')]?String(_0x4fe2b4[_0x1553e6(0x20a,'\x25\x58\x31\x55')]):null,'\x74\x79\x70\x65':_0x4fe2b4&&_0x4fe2b4[_0x1553e6(0x2e6,'\x44\x41\x6c\x33')]?_0xe08c5f['\x68\x56\x6b\x4e\x4d'](String,_0x4fe2b4[_0x1553e6(0x2ee,'\x4c\x5b\x55\x21')]):_0xe08c5f[_0x1553e6(0x274,'\x38\x4b\x4a\x34')],'\x73\x69\x67\x6e\x61\x6c\x73':Array[_0x1553e6(0x367,'\x70\x4d\x40\x69')](_0x4fe2b4&&_0x4fe2b4[_0x1553e6(0x325,'\x32\x4e\x6d\x25')])?_0x4fe2b4[_0x1553e6(0x36b,'\x54\x30\x44\x42')]:[],'\x70\x75\x62\x6c\x69\x73\x68\x65\x64\x41\x74':_0x4fe2b4&&Number[_0x1553e6(0x28e,'\x6a\x43\x4c\x47')](_0x4fe2b4[_0x1553e6(0x2c8,'\x6a\x43\x4c\x47')+_0x1553e6(0x205,'\x28\x62\x6d\x5b')])?_0x4fe2b4[_0x1553e6(0x266,'\x6d\x24\x55\x6e')+_0x1553e6(0x358,'\x52\x25\x6f\x53')]:Date[_0x1553e6(0x20b,'\x6a\x43\x4c\x47')](),'\x61\x74\x74\x65\x6d\x70\x74\x73':0x0,'\x6e\x65\x78\x74\x45\x6c\x69\x67\x69\x62\x6c\x65\x41\x74':0x0};if(!_0xe08c5f[_0x1553e6(0x310,'\x36\x2a\x77\x56')](_0x42ff6f)){_0xe08c5f['\x4d\x6d\x43\x79\x72'](_0x40fbe2,_0x467135,_0x1553e6(0x313,'\x4c\x5b\x55\x21')+_0x1553e6(0x348,'\x71\x55\x64\x79')+_0x1553e6(0x2df,'\x2a\x28\x46\x41'),_0x1553e6(0x27b,'\x36\x2a\x77\x56')+_0x1553e6(0x1fe,'\x79\x43\x24\x69'));const _0x22a044={};return _0x22a044['\x65\x6e\x71\x75\x65\x75\x65\x64']=![],_0x22a044[_0x1553e6(0x336,'\x2a\x28\x46\x41')]='\x66\x65\x61\x74\x75\x72\x65\x5f'+_0x1553e6(0x2e8,'\x25\x4a\x57\x6d'),_0x22a044;}if(!_0x467135[_0x1553e6(0x329,'\x28\x6b\x63\x5d')]){_0xe08c5f['\x59\x45\x5a\x64\x6b'](_0x40fbe2,_0x467135,_0xe08c5f[_0x1553e6(0x29a,'\x70\x32\x4b\x37')],_0x1553e6(0x3a8,'\x70\x29\x5e\x63')+_0x1553e6(0x3a1,'\x4c\x5b\x55\x21'));const _0x21d0de={};return _0x21d0de[_0x1553e6(0x216,'\x73\x36\x37\x26')]=![],_0x21d0de['\x72\x65\x61\x73\x6f\x6e']=_0xe08c5f['\x42\x48\x73\x58\x6a'],_0x21d0de;}const _0xca1bce=_0xe08c5f[_0x1553e6(0x2d9,'\x39\x5e\x58\x74')](_0x2baaa6);if(_0xe08c5f[_0x1553e6(0x26b,'\x29\x5b\x6a\x65')](_0xca1bce,-0x23e3+0x1a88+0x95c)&&_0xe08c5f[_0x1553e6(0x223,'\x71\x53\x4c\x6a')](Math[_0x1553e6(0x3a4,'\x34\x6b\x4b\x57')](),_0xca1bce)){_0x40fbe2(_0x467135,_0xe08c5f[_0x1553e6(0x2c4,'\x43\x36\x45\x52')],_0xe08c5f[_0x1553e6(0x3b1,'\x29\x5b\x6a\x65')]);const _0x255bdb={};return _0x255bdb[_0x1553e6(0x203,'\x6a\x43\x4c\x47')]=![],_0x255bdb[_0x1553e6(0x363,'\x25\x58\x31\x55')]=_0x1553e6(0x31c,'\x6d\x24\x55\x6e')+_0x1553e6(0x2fc,'\x32\x4e\x6d\x25'),_0x255bdb;}_0x467135[_0x1553e6(0x3bb,'\x70\x32\x4b\x37')+'\x69\x62\x6c\x65\x41\x74']=_0xe08c5f[_0x1553e6(0x365,'\x34\x6b\x4b\x57')](_0x467135[_0x1553e6(0x20f,'\x35\x24\x53\x37')+_0x1553e6(0x387,'\x24\x6b\x6e\x31')],_0x278904());const _0x3c795f=_0xe08c5f[_0x1553e6(0x227,'\x71\x53\x4c\x6a')](_0x5bab48);while(_0xe08c5f['\x71\x5a\x4f\x50\x70'](_0x50b452[_0x1553e6(0x2c3,'\x28\x62\x6d\x5b')],_0x3c795f)){const _0x355ba4=_0x50b452[_0x1553e6(0x2ec,'\x70\x29\x5e\x63')]();_0xe08c5f[_0x1553e6(0x398,'\x36\x2a\x77\x56')](_0x40fbe2,_0x355ba4,_0xe08c5f[_0x1553e6(0x25d,'\x33\x55\x78\x4c')],_0xe08c5f[_0x1553e6(0x3ae,'\x70\x4d\x40\x69')]);}_0x50b452[_0x1553e6(0x3bd,'\x73\x36\x37\x26')](_0x467135);const _0x51eeec={};return _0x51eeec[_0x1553e6(0x262,'\x66\x57\x62\x6e')]=!![],_0x51eeec;}async function _0x4a39e7(_0x36e3a1,_0x9f6c4b){const _0x4a6392=_0x121239,_0x19debe={'\x64\x55\x68\x41\x43':_0x4a6392(0x3b4,'\x28\x62\x53\x4f')+_0x4a6392(0x39d,'\x56\x56\x71\x69')+_0x4a6392(0x39b,'\x76\x62\x6e\x77')+'\x72\x79\x47\x72\x61\x70\x68\x45'+_0x4a6392(0x24b,'\x54\x30\x44\x42')+_0x4a6392(0x257,'\x71\x53\x4c\x6a'),'\x75\x47\x57\x5a\x68':_0x4a6392(0x30f,'\x73\x36\x37\x26')+'\x70\x5f\x6d\x69\x73\x6d\x61\x74'+'\x63\x68','\x63\x79\x73\x74\x68':_0x4a6392(0x3b6,'\x52\x25\x6f\x53')+'\x66\x74','\x47\x4c\x6f\x5a\x43':function(_0x45c051,_0x3706db){return _0x45c051-_0x3706db;},'\x6a\x6d\x66\x43\x71':function(_0x47457b,_0x57e283){return _0x47457b-_0x57e283;},'\x59\x4e\x49\x6e\x6d':function(_0x1efddb,_0x37e4c4){return _0x1efddb+_0x37e4c4;},'\x53\x6b\x79\x46\x75':function(_0x3c2e21,_0xa83172){return _0x3c2e21-_0xa83172;},'\x56\x77\x52\x43\x4d':_0x4a6392(0x224,'\x56\x56\x71\x69'),'\x46\x59\x52\x61\x6b':_0x4a6392(0x337,'\x54\x43\x72\x28'),'\x56\x69\x53\x57\x51':function(_0x4b708b,_0x4c471c){return _0x4b708b===_0x4c471c;},'\x75\x68\x54\x62\x79':function(_0x337982,_0x5e6519){return _0x337982+_0x5e6519;},'\x49\x52\x75\x49\x61':function(_0x26029d,_0x113521){return _0x26029d===_0x113521;},'\x71\x65\x73\x53\x45':_0x4a6392(0x2f6,'\x4c\x5b\x55\x21')+_0x4a6392(0x328,'\x52\x25\x6f\x53'),'\x45\x47\x62\x5a\x52':_0x4a6392(0x283,'\x61\x72\x59\x78')+_0x4a6392(0x2dd,'\x61\x72\x59\x78')+'\x67','\x69\x75\x62\x4c\x48':function(_0x348418,_0x5c2236){return _0x348418===_0x5c2236;},'\x45\x64\x73\x58\x65':_0x4a6392(0x1f5,'\x44\x41\x6c\x33'),'\x63\x47\x50\x7a\x44':_0x4a6392(0x253,'\x70\x32\x4b\x37'),'\x43\x72\x49\x7a\x76':_0x4a6392(0x359,'\x66\x38\x5a\x59'),'\x53\x46\x58\x49\x48':function(_0x3e4486){return _0x3e4486();},'\x4b\x58\x78\x6b\x6a':_0x4a6392(0x37d,'\x44\x76\x33\x29')+'\x74\x69\x6f\x6e\x5f\x73\x6b\x69'+_0x4a6392(0x2d3,'\x66\x38\x5a\x59'),'\x58\x77\x48\x4e\x71':'\x68\x75\x62\x5f\x75\x6e\x72\x65'+_0x4a6392(0x2bb,'\x73\x36\x37\x26'),'\x55\x4a\x68\x42\x4b':function(_0x47ea08,_0x1033ff){return _0x47ea08(_0x1033ff);},'\x48\x70\x59\x71\x59':_0x4a6392(0x3b2,'\x79\x43\x24\x69')+_0x4a6392(0x25a,'\x36\x2a\x77\x56'),'\x52\x58\x4f\x77\x75':function(_0x1330a6,_0xb60930){return _0x1330a6!==_0xb60930;},'\x4b\x46\x4e\x53\x43':_0x4a6392(0x394,'\x43\x36\x45\x52'),'\x56\x56\x6f\x6c\x6b':'\x6b\x54\x44\x6e\x41','\x71\x59\x41\x67\x45':function(_0x3a7854,_0x2abe6e){return _0x3a7854!==_0x2abe6e;},'\x66\x56\x45\x6e\x51':_0x4a6392(0x299,'\x58\x64\x6a\x59')+_0x4a6392(0x320,'\x79\x43\x24\x69'),'\x44\x4d\x62\x52\x47':_0x4a6392(0x297,'\x6f\x49\x48\x4a')+_0x4a6392(0x2a4,'\x6a\x43\x4c\x47')+_0x4a6392(0x2a8,'\x39\x51\x57\x61'),'\x63\x61\x53\x76\x42':function(_0x1f88b7,_0x53b941){return _0x1f88b7!==_0x53b941;},'\x46\x4f\x47\x72\x69':_0x4a6392(0x322,'\x54\x30\x44\x42')},_0x36e637=Date[_0x4a6392(0x28f,'\x6f\x49\x48\x4a')]();if(!_0x36e3a1){if(_0x19debe['\x49\x52\x75\x49\x61'](_0x19debe[_0x4a6392(0x2be,'\x6d\x4d\x31\x56')],_0x19debe['\x63\x47\x50\x7a\x44']))_0x34ff61[_0x4a6392(0x2fa,'\x79\x43\x24\x69')](NVNBTb[_0x4a6392(0x267,'\x70\x32\x4b\x37')]+(_0x205fad&&_0x54a5f4[_0x4a6392(0x2dc,'\x52\x25\x6f\x53')]||_0x37b8a1));else{const _0x1ce26c={};return _0x1ce26c[_0x4a6392(0x248,'\x79\x43\x24\x69')]=_0x4a6392(0x236,'\x2a\x4b\x68\x33')+_0x4a6392(0x335,'\x39\x51\x57\x61')+_0x4a6392(0x2da,'\x70\x29\x5e\x63'),_0x1ce26c[_0x4a6392(0x336,'\x2a\x28\x46\x41')]='\x6d\x69\x73\x73\x69\x6e\x67\x5f'+_0x4a6392(0x350,'\x6e\x67\x38\x31'),_0x1ce26c[_0x4a6392(0x373,'\x25\x4a\x57\x6d')+'\x6d\x73']=0x0,_0x1ce26c[_0x4a6392(0x341,'\x37\x64\x76\x5b')+_0x4a6392(0x351,'\x29\x5b\x6a\x65')]=null,_0x1ce26c;}}let _0x512357;try{if(_0x19debe[_0x4a6392(0x32e,'\x71\x46\x59\x34')](_0x19debe[_0x4a6392(0x276,'\x56\x56\x71\x69')],_0x19debe[_0x4a6392(0x3a2,'\x44\x76\x33\x29')]))_0x512357=await _0x24dd06(_0x36e3a1,{'\x74\x69\x6d\x65\x6f\x75\x74\x4d\x73':_0x19debe[_0x4a6392(0x208,'\x71\x55\x64\x79')](_0x272068),'\x62\x79\x70\x61\x73\x73\x43\x61\x63\x68\x65':!![]});else{const _0x30b0a3={};return _0x30b0a3['\x6f\x75\x74\x63\x6f\x6d\x65']=_0x19debe[_0x4a6392(0x374,'\x36\x2a\x77\x56')],_0x30b0a3['\x72\x65\x61\x73\x6f\x6e']=_0x19debe[_0x4a6392(0x360,'\x4c\x5b\x55\x21')],_0x30b0a3[_0x4a6392(0x34e,'\x70\x4d\x40\x69')+'\x6d\x73']=_0x4179a0,_0x30b0a3[_0x4a6392(0x285,'\x70\x29\x5e\x63')+_0x4a6392(0x2ce,'\x70\x32\x4b\x37')]=_0x4d3106,_0x30b0a3;}}catch(_0x652e12){return{'\x6f\x75\x74\x63\x6f\x6d\x65':_0x19debe[_0x4a6392(0x243,'\x37\x64\x76\x5b')],'\x72\x65\x61\x73\x6f\x6e':_0x19debe['\x58\x77\x48\x4e\x71'],'\x6c\x61\x74\x65\x6e\x63\x79\x5f\x6d\x73':_0x19debe[_0x4a6392(0x2de,'\x54\x43\x72\x28')](Date[_0x4a6392(0x2bd,'\x70\x29\x5e\x63')](),_0x36e637),'\x72\x65\x63\x61\x6c\x6c\x65\x64\x5f\x68\x61\x73\x68':null,'\x65\x72\x72\x6f\x72':_0x652e12&&_0x652e12['\x6d\x65\x73\x73\x61\x67\x65']||_0x19debe[_0x4a6392(0x33e,'\x6f\x49\x48\x4a')](String,_0x652e12)};}const _0x54861b=Date[_0x4a6392(0x30c,'\x28\x62\x6d\x5b')]()-_0x36e637;if(!_0x512357||!_0x512357['\x6f\x6b']){const _0x1febd0={};return _0x1febd0[_0x4a6392(0x312,'\x25\x58\x31\x55')]=_0x19debe[_0x4a6392(0x1f2,'\x47\x49\x56\x56')],_0x1febd0[_0x4a6392(0x27a,'\x70\x4d\x40\x69')]=_0x19debe[_0x4a6392(0x366,'\x70\x4d\x40\x69')],_0x1febd0[_0x4a6392(0x23b,'\x71\x55\x64\x79')+'\x6d\x73']=_0x54861b,_0x1febd0[_0x4a6392(0x384,'\x2a\x4b\x68\x33')+_0x4a6392(0x364,'\x24\x6b\x6e\x31')]=null,_0x1febd0[_0x4a6392(0x212,'\x70\x32\x4b\x37')]=_0x512357&&_0x512357[_0x4a6392(0x2cc,'\x70\x4d\x40\x69')]||_0x19debe[_0x4a6392(0x307,'\x47\x49\x56\x56')],_0x1febd0;}if(!_0x512357[_0x4a6392(0x2a6,'\x70\x4d\x40\x69')]){if(_0x19debe[_0x4a6392(0x33c,'\x35\x24\x53\x37')](_0x19debe[_0x4a6392(0x34f,'\x28\x62\x53\x4f')],_0x19debe[_0x4a6392(0x28b,'\x28\x62\x6d\x5b')])){const _0x2029a5={};return _0x2029a5[_0x4a6392(0x1fb,'\x73\x36\x37\x26')]=_0x4a6392(0x217,'\x76\x62\x6e\x77')+_0x4a6392(0x343,'\x79\x43\x24\x69')+'\x67',_0x2029a5['\x72\x65\x61\x73\x6f\x6e']=null,_0x2029a5[_0x4a6392(0x2a2,'\x79\x43\x24\x69')+'\x6d\x73']=_0x54861b,_0x2029a5[_0x4a6392(0x338,'\x71\x53\x4c\x6a')+_0x4a6392(0x31e,'\x36\x2a\x77\x56')]=null,_0x2029a5;}else{const _0x108652=_0x5af670[_0x4a6392(0x29f,'\x2a\x28\x46\x41')](_0x19debe['\x47\x4c\x6f\x5a\x43'](_0x140f37[_0x4a6392(0x240,'\x36\x2a\x77\x56')],0x5*0x608+0x79a*0x1+0x1*-0x25c1),_0x19debe[_0x4a6392(0x219,'\x39\x51\x57\x61')](_0x270231['\x6c\x65\x6e\x67\x74\x68'],-0x21*-0x6f+-0x1*-0xacd+-0x191b));_0x90f324[_0x4a6392(0x2a5,'\x34\x6b\x4b\x57')+_0x4a6392(0x2e4,'\x71\x53\x4c\x6a')]=_0x19debe[_0x4a6392(0x2b2,'\x28\x62\x53\x4f')](_0x478345[_0x4a6392(0x2bd,'\x70\x29\x5e\x63')](),_0x3157be[_0x108652]);}}const _0x16f865=_0x512357['\x61\x73\x73\x65\x74'];if(_0x19debe[_0x4a6392(0x284,'\x28\x6b\x63\x5d')](_0x16f865[_0x4a6392(0x309,'\x76\x62\x6e\x77')],_0x36e3a1)){const _0x510a83={};return _0x510a83[_0x4a6392(0x2c9,'\x44\x41\x6c\x33')]=_0x19debe[_0x4a6392(0x25c,'\x39\x5e\x58\x74')],_0x510a83[_0x4a6392(0x2aa,'\x44\x41\x6c\x33')]=_0x19debe[_0x4a6392(0x2e2,'\x66\x57\x62\x6e')],_0x510a83[_0x4a6392(0x305,'\x70\x29\x5e\x63')+'\x6d\x73']=_0x54861b,_0x510a83[_0x4a6392(0x292,'\x6e\x67\x38\x31')+_0x4a6392(0x315,'\x28\x62\x6d\x5b')]=_0x16f865[_0x4a6392(0x2af,'\x58\x64\x6a\x59')]||null,_0x510a83;}let _0x480eec;try{_0x480eec=_0x5dbf6a(_0x16f865);}catch(_0x594e5c){return{'\x6f\x75\x74\x63\x6f\x6d\x65':_0x4a6392(0x345,'\x38\x4b\x4a\x34')+_0x4a6392(0x3b9,'\x38\x4b\x4a\x34')+_0x4a6392(0x26a,'\x71\x55\x64\x79'),'\x72\x65\x61\x73\x6f\x6e':_0x19debe[_0x4a6392(0x2eb,'\x58\x64\x6a\x59')],'\x6c\x61\x74\x65\x6e\x63\x79\x5f\x6d\x73':_0x54861b,'\x72\x65\x63\x61\x6c\x6c\x65\x64\x5f\x68\x61\x73\x68':null,'\x65\x72\x72\x6f\x72':_0x594e5c&&_0x594e5c[_0x4a6392(0x22e,'\x6d\x24\x55\x6e')]||_0x19debe[_0x4a6392(0x2f3,'\x4d\x7a\x54\x30')](String,_0x594e5c)};}if(_0x19debe[_0x4a6392(0x22a,'\x44\x41\x6c\x33')](_0x480eec,_0x16f865[_0x4a6392(0x3b7,'\x28\x62\x53\x4f')])){if(_0x19debe['\x63\x61\x53\x76\x42'](_0x19debe[_0x4a6392(0x231,'\x71\x53\x4c\x6a')],_0x19debe[_0x4a6392(0x24f,'\x58\x64\x6a\x59')])){const _0x2db5da=_0x260f7e[_0x4a6392(0x30c,'\x28\x62\x6d\x5b')](),_0x1f8c87={'\x6f\x75\x74\x63\x6f\x6d\x65':_0x115a94,'\x72\x65\x61\x73\x6f\x6e':_0x285258||null,'\x61\x74\x74\x65\x6d\x70\x74\x73':_0x55510c&&_0x317610[_0x4a6392(0x249,'\x25\x58\x31\x55')](_0x570b9c[_0x4a6392(0x314,'\x56\x56\x71\x69')])?_0x55f3af[_0x4a6392(0x2ff,'\x70\x29\x5e\x63')]:_0x550ce5[_0x4a6392(0x371,'\x4d\x7a\x54\x30')]||-0x15b*-0x4+-0x74f+-0x1*-0x1e3,'\x6c\x61\x74\x65\x6e\x63\x79\x5f\x6d\x73':_0xb05020&&_0x55b3e8[_0x4a6392(0x2b1,'\x73\x36\x37\x26')](_0x342cab[_0x4a6392(0x316,'\x6e\x67\x38\x31')+'\x6d\x73'])?_0x5bb330[_0x4a6392(0x27c,'\x32\x4e\x6d\x25')+'\x6d\x73']:0x20b*-0x10+-0x356*-0x1+0x1d5a*0x1,'\x61\x67\x65\x5f\x61\x74\x5f\x76\x65\x72\x69\x66\x79\x5f\x6d\x73':_0x22f8ff[_0x4a6392(0x2c6,'\x25\x58\x31\x55')+_0x4a6392(0x29c,'\x36\x2a\x77\x56')]?NVNBTb[_0x4a6392(0x1fc,'\x37\x64\x76\x5b')](_0x2db5da,_0x477518[_0x4a6392(0x396,'\x71\x53\x4c\x6a')+_0x4a6392(0x3b8,'\x70\x29\x5e\x63')]):0x3cc*-0x2+0x5f*-0x6+0x9d2,'\x72\x65\x63\x61\x6c\x6c\x65\x64\x5f\x68\x61\x73\x68':_0x1d4a11&&_0x851eed[_0x4a6392(0x279,'\x52\x25\x6f\x53')+_0x4a6392(0x29b,'\x25\x58\x31\x55')]?_0x1bd618[_0x4a6392(0x2f7,'\x79\x43\x24\x69')+_0x4a6392(0x26f,'\x71\x53\x4c\x6a')]:null},_0x2f7321={'\x74\x79\x70\x65':_0x4a6392(0x333,'\x4c\x5b\x55\x21')+_0x4a6392(0x22c,'\x39\x51\x57\x61'),'\x6b\x69\x6e\x64':'\x72\x65\x63\x61\x6c\x6c\x5f\x76'+_0x4a6392(0x28c,'\x4c\x5b\x55\x21'),'\x69\x64':NVNBTb[_0x4a6392(0x1ff,'\x6d\x4d\x31\x56')](NVNBTb[_0x4a6392(0x24e,'\x25\x5e\x4d\x30')],_0x2db5da)+'\x5f'+_0x38b549[_0x4a6392(0x319,'\x61\x72\x59\x78')]()[_0x4a6392(0x349,'\x44\x41\x6c\x33')](-0x145+0x1*0x1c1d+-0x1ab4)['\x73\x6c\x69\x63\x65'](0x1d1+-0x1e*0x96+0xfc5,0x13f5+-0x1743+-0xd6*-0x4),'\x74\x73':_0x2db5da,'\x61\x73\x73\x65\x74':{'\x74\x79\x70\x65':_0x28eef5['\x74\x79\x70\x65']||NVNBTb['\x46\x59\x52\x61\x6b'],'\x69\x64':_0x5951a9[_0x4a6392(0x3b5,'\x79\x43\x24\x69')]||null},'\x76\x65\x72\x69\x66\x69\x63\x61\x74\x69\x6f\x6e':_0x1f8c87,'\x73\x69\x67\x6e\x61\x6c':{'\x73\x69\x67\x6e\x61\x6c\x73':_0x53ca8c[_0x4a6392(0x2e3,'\x44\x41\x6c\x33')](_0x399239[_0x4a6392(0x21e,'\x35\x24\x53\x37')])?_0x193e09[_0x4a6392(0x2ea,'\x70\x32\x4b\x37')]['\x73\x6c\x69\x63\x65'](0x59a+0x1339+-0x18d3,0x1a57*-0x1+-0x9*0x44f+-0x10d*-0x3e):[]}};try{_0x36ffdd(_0x2f7321);}catch(_0x234d2b){NVNBTb[_0x4a6392(0x3ab,'\x28\x62\x53\x4f')](_0x1c818f.env.EVOLVE_RECALL_VERIFY_DEBUG,'\x31')&&_0x4c85db[_0x4a6392(0x344,'\x73\x36\x37\x26')](NVNBTb[_0x4a6392(0x327,'\x66\x38\x5a\x59')]('\x5b\x52\x65\x63\x61\x6c\x6c\x56'+_0x4a6392(0x286,'\x70\x29\x5e\x63')+'\x72\x69\x74\x65\x4d\x65\x6d\x6f'+_0x4a6392(0x272,'\x76\x62\x6e\x77')+_0x4a6392(0x2d4,'\x35\x24\x53\x37')+_0x4a6392(0x2cd,'\x29\x5b\x6a\x65'),_0x234d2b&&_0x234d2b['\x6d\x65\x73\x73\x61\x67\x65']||_0x234d2b));}if(NVNBTb['\x49\x52\x75\x49\x61'](_0x924c4e,NVNBTb['\x71\x65\x73\x53\x45']))_0x26c909['\x6f\x6b']++;else{if(NVNBTb[_0x4a6392(0x3a5,'\x44\x41\x6c\x33')](_0x5462a0,NVNBTb[_0x4a6392(0x275,'\x28\x62\x53\x4f')]))_0x4e2b99['\x6d\x69\x73\x73\x69\x6e\x67']++;else{if(NVNBTb[_0x4a6392(0x32b,'\x2a\x28\x46\x41')](_0x5c6eb1,NVNBTb[_0x4a6392(0x294,'\x6f\x49\x48\x4a')]))_0x3254ee[_0x4a6392(0x259,'\x28\x62\x6d\x5b')]++;else _0x1b9ed6[_0x4a6392(0x1f7,'\x36\x2a\x77\x56')]++;}}}else{const _0x1d3234={};return _0x1d3234[_0x4a6392(0x3a0,'\x44\x76\x33\x29')]=_0x4a6392(0x23d,'\x25\x5e\x4d\x30')+_0x4a6392(0x2b0,'\x79\x43\x24\x69')+'\x63\x68',_0x1d3234[_0x4a6392(0x370,'\x36\x2a\x77\x56')]=_0x19debe['\x63\x79\x73\x74\x68'],_0x1d3234[_0x4a6392(0x21d,'\x28\x62\x53\x4f')+'\x6d\x73']=_0x54861b,_0x1d3234[_0x4a6392(0x338,'\x71\x53\x4c\x6a')+_0x4a6392(0x368,'\x4d\x7a\x54\x30')]=_0x480eec,_0x1d3234;}}const _0x34945b={};return _0x34945b['\x6f\x75\x74\x63\x6f\x6d\x65']=_0x19debe[_0x4a6392(0x2a0,'\x75\x5e\x32\x40')],_0x34945b[_0x4a6392(0x37c,'\x73\x36\x37\x26')]=null,_0x34945b[_0x4a6392(0x26c,'\x33\x55\x78\x4c')+'\x6d\x73']=_0x54861b,_0x34945b[_0x4a6392(0x39a,'\x6a\x43\x4c\x47')+_0x4a6392(0x351,'\x29\x5b\x6a\x65')]=_0x480eec,_0x34945b;}async function _0x5b4196(){const _0x267b16=_0x121239,_0x4b6005={'\x55\x66\x49\x75\x44':function(_0x525bd8,_0x16305a,_0x2c78c6,_0x46fb1b){return _0x525bd8(_0x16305a,_0x2c78c6,_0x46fb1b);},'\x51\x79\x42\x4a\x72':_0x267b16(0x2b5,'\x70\x32\x4b\x37')+'\x74\x69\x6f\x6e\x5f\x73\x6b\x69'+_0x267b16(0x2df,'\x2a\x28\x46\x41'),'\x6c\x64\x58\x61\x4d':'\x66\x65\x61\x74\x75\x72\x65\x5f'+_0x267b16(0x1f4,'\x25\x5e\x4d\x30'),'\x66\x66\x67\x62\x65':function(_0xdfb10d,_0x1a33e7){return _0xdfb10d<_0x1a33e7;},'\x46\x6e\x51\x4d\x54':function(_0x1b336a,_0xca3271){return _0x1b336a!==_0xca3271;},'\x49\x4a\x44\x6e\x52':_0x267b16(0x201,'\x24\x6b\x6e\x31'),'\x6a\x76\x42\x71\x4a':function(_0x322f27,_0x2f40aa){return _0x322f27<=_0x2f40aa;},'\x4c\x6b\x5a\x4c\x57':function(_0x293fa2,_0x17b6c9){return _0x293fa2===_0x17b6c9;},'\x45\x52\x61\x57\x4b':function(_0x3605dc,_0x3992ec,_0x1cdf0d){return _0x3605dc(_0x3992ec,_0x1cdf0d);},'\x6c\x63\x58\x50\x4b':function(_0x49895c,_0x5c44cb){return _0x49895c===_0x5c44cb;},'\x54\x79\x44\x74\x54':_0x267b16(0x2f0,'\x6d\x24\x55\x6e')+_0x267b16(0x2a7,'\x70\x32\x4b\x37')+'\x67','\x4a\x67\x79\x58\x78':function(_0x50389a,_0x329a53){return _0x50389a===_0x329a53;},'\x59\x75\x72\x6c\x62':'\x68\x75\x62\x5f\x75\x6e\x72\x65'+_0x267b16(0x228,'\x2a\x28\x46\x41'),'\x79\x4e\x71\x4b\x71':function(_0xdf7259,_0x3b52b1){return _0xdf7259<_0x3b52b1;},'\x5a\x7a\x62\x48\x6a':function(_0x1d8a32,_0x1683b2){return _0x1d8a32===_0x1683b2;},'\x4f\x43\x65\x4d\x73':_0x267b16(0x300,'\x29\x5b\x6a\x65'),'\x67\x56\x74\x6d\x53':_0x267b16(0x206,'\x52\x25\x6f\x53'),'\x58\x6e\x45\x51\x53':function(_0xb01d8b,_0x39eefb){return _0xb01d8b-_0x39eefb;},'\x4b\x5a\x6a\x68\x47':function(_0x225581,_0x4767fa,_0x524d04,_0x287857,_0xe209d8){return _0x225581(_0x4767fa,_0x524d04,_0x287857,_0xe209d8);}},_0x31fec9={};_0x31fec9[_0x267b16(0x372,'\x4d\x7a\x54\x30')+'\x64']=0x0;if(_0x50b452[_0x267b16(0x399,'\x56\x56\x71\x69')]===0x2*-0xe2b+0x10af+0xba7)return _0x31fec9;const _0x23a3ee=Date[_0x267b16(0x380,'\x4c\x5b\x55\x21')](),_0x117262=_0x569d30(),_0x49096b=[];for(let _0x56f589=-0x10*0xd6+-0xb9*-0x14+-0x114;_0x4b6005[_0x267b16(0x281,'\x34\x6b\x4b\x57')](_0x56f589,_0x50b452[_0x267b16(0x1f8,'\x47\x49\x56\x56')]);_0x56f589++){if(_0x4b6005[_0x267b16(0x340,'\x6a\x43\x4c\x47')](_0x4b6005[_0x267b16(0x386,'\x47\x49\x56\x56')],_0x4b6005[_0x267b16(0x304,'\x37\x64\x76\x5b')]))_0x476b1d[_0x267b16(0x330,'\x73\x36\x37\x26')]();else{const _0xa99e08=_0x50b452[_0x56f589];_0x4b6005[_0x267b16(0x2d2,'\x35\x24\x53\x37')](_0xa99e08[_0x267b16(0x241,'\x37\x64\x76\x5b')+_0x267b16(0x2d1,'\x66\x57\x62\x6e')],_0x23a3ee)&&!_0x4bffa2[_0x267b16(0x36a,'\x75\x5e\x32\x40')](_0xa99e08[_0x267b16(0x3b5,'\x79\x43\x24\x69')])&&_0x49096b[_0x267b16(0x3a3,'\x76\x62\x6e\x77')](_0xa99e08);}}const _0x8ed86={};_0x8ed86['\x70\x72\x6f\x63\x65\x73\x73\x65'+'\x64']=0x0;if(_0x4b6005[_0x267b16(0x265,'\x28\x6b\x63\x5d')](_0x49096b[_0x267b16(0x399,'\x56\x56\x71\x69')],-0x1*0x1931+0x1a39*0x1+0x6*-0x2c))return _0x8ed86;let _0x4ff397=-0x2396+0x1*-0x2441+0x47d7;for(const _0x507609 of _0x49096b){_0x4bffa2['\x61\x64\x64'](_0x507609['\x61\x73\x73\x65\x74\x5f\x69\x64']);try{_0x507609['\x61\x74\x74\x65\x6d\x70\x74\x73']+=0x1*0x815+0xa*0x81+-0xd1e;const _0x2dacd7=await _0x4b6005[_0x267b16(0x2bf,'\x33\x55\x78\x4c')](_0x4a39e7,_0x507609[_0x267b16(0x3b5,'\x79\x43\x24\x69')],_0x507609[_0x267b16(0x38f,'\x35\x24\x53\x37')]),_0x8149e4=_0x4b6005[_0x267b16(0x378,'\x6f\x49\x48\x4a')](_0x2dacd7[_0x267b16(0x2ca,'\x6d\x24\x55\x6e')],_0x4b6005[_0x267b16(0x3a7,'\x70\x32\x4b\x37')])||_0x2dacd7['\x6f\x75\x74\x63\x6f\x6d\x65']===_0x4b6005['\x51\x79\x42\x4a\x72']&&_0x4b6005[_0x267b16(0x24a,'\x70\x4d\x40\x69')](_0x2dacd7[_0x267b16(0x370,'\x36\x2a\x77\x56')],_0x4b6005[_0x267b16(0x282,'\x56\x56\x71\x69')]),_0x108681=_0x4b6005[_0x267b16(0x27e,'\x70\x4d\x40\x69')](_0x507609[_0x267b16(0x375,'\x38\x4b\x4a\x34')],_0x117262);if(_0x8149e4&&_0x108681){if(_0x4b6005[_0x267b16(0x2ba,'\x56\x56\x71\x69')](_0x4b6005[_0x267b16(0x379,'\x25\x58\x31\x55')],_0x4b6005[_0x267b16(0x1f3,'\x33\x55\x78\x4c')])){xgdRGA[_0x267b16(0x36d,'\x34\x6b\x4b\x57')](_0x179f62,_0x54be32,xgdRGA[_0x267b16(0x22d,'\x75\x5e\x32\x40')],xgdRGA[_0x267b16(0x352,'\x25\x4a\x57\x6d')]);const _0x19aaad={};return _0x19aaad[_0x267b16(0x23a,'\x24\x6b\x6e\x31')]=![],_0x19aaad[_0x267b16(0x28d,'\x32\x4e\x6d\x25')]=xgdRGA[_0x267b16(0x2b4,'\x56\x56\x71\x69')],_0x19aaad;}else{const _0x1c6cfa=Math[_0x267b16(0x393,'\x76\x62\x6e\x77')](_0x4b6005[_0x267b16(0x1fd,'\x28\x62\x6d\x5b')](_0x507609['\x61\x74\x74\x65\x6d\x70\x74\x73'],0x767*0x1+-0xb4d+-0x6f*-0x9),_0x4b6005[_0x267b16(0x290,'\x56\x56\x71\x69')](_0x2d7e26[_0x267b16(0x388,'\x66\x38\x5a\x59')],-0x3f*-0x1e+-0x2583+0x1e22));_0x507609[_0x267b16(0x347,'\x52\x25\x6f\x53')+_0x267b16(0x3bc,'\x76\x62\x6e\x77')]=Date['\x6e\x6f\x77']()+_0x2d7e26[_0x1c6cfa];}}else{_0x4b6005[_0x267b16(0x293,'\x32\x4e\x6d\x25')](_0x40fbe2,_0x507609,_0x2dacd7[_0x267b16(0x2c9,'\x44\x41\x6c\x33')],_0x2dacd7[_0x267b16(0x220,'\x6a\x43\x4c\x47')],{'\x61\x74\x74\x65\x6d\x70\x74\x73':_0x507609['\x61\x74\x74\x65\x6d\x70\x74\x73'],'\x6c\x61\x74\x65\x6e\x63\x79\x5f\x6d\x73':_0x2dacd7['\x6c\x61\x74\x65\x6e\x63\x79\x5f'+'\x6d\x73'],'\x72\x65\x63\x61\x6c\x6c\x65\x64\x5f\x68\x61\x73\x68':_0x2dacd7[_0x267b16(0x20c,'\x76\x62\x6e\x77')+_0x267b16(0x222,'\x6d\x24\x55\x6e')]});const _0x5c3ff6=_0x50b452[_0x267b16(0x3a6,'\x33\x55\x78\x4c')](_0x507609);if(_0x5c3ff6!==-(0xf5e+-0x7*0xda+-0x1d*0x53))_0x50b452[_0x267b16(0x2f2,'\x67\x47\x26\x51')](_0x5c3ff6,0x6ad+-0x91a+0x26e);}_0x4ff397+=0xba9+-0xb*-0x2ab+0x1*-0x2901;}finally{_0x4bffa2[_0x267b16(0x277,'\x2a\x4b\x68\x33')](_0x507609[_0x267b16(0x2af,'\x58\x64\x6a\x59')]);}}const _0x120947={};return _0x120947[_0x267b16(0x301,'\x25\x5e\x4d\x30')+'\x64']=_0x4ff397,_0x120947;}function _0x57373a(){const _0x38b197=_0x121239,_0x4f0a75={'\x52\x61\x43\x4d\x4c':function(_0x2f5fa7,_0x58dbdd){return _0x2f5fa7!==_0x58dbdd;},'\x66\x75\x45\x5a\x57':'\x4f\x71\x6c\x74\x42','\x56\x4c\x6e\x6b\x77':function(_0x166642,_0x13a498){return _0x166642+_0x13a498;},'\x4d\x78\x57\x4e\x66':_0x38b197(0x36c,'\x70\x29\x5e\x63')+_0x38b197(0x33f,'\x25\x4a\x57\x6d')+_0x38b197(0x2c7,'\x66\x38\x5a\x59')+_0x38b197(0x230,'\x43\x36\x45\x52')+_0x38b197(0x2ae,'\x39\x51\x57\x61'),'\x73\x47\x6c\x75\x47':function(_0x2ccc1e){return _0x2ccc1e();},'\x66\x46\x73\x78\x68':function(_0x3befe1,_0x4939f2){return _0x3befe1===_0x4939f2;},'\x4b\x4b\x48\x69\x63':_0x38b197(0x397,'\x43\x36\x45\x52')};if(_0x493b90)return;_0x493b90=!![];const _0x24c026=_0x4f0a75[_0x38b197(0x35f,'\x39\x5e\x58\x74')](_0x43431e);_0x4f95d3=setInterval(function(){const _0x12bacc=_0x38b197;_0x4f0a75[_0x12bacc(0x269,'\x36\x2a\x77\x56')](_0x5b4196)[_0x12bacc(0x390,'\x6a\x43\x4c\x47')](function(_0x4ffade){const _0x543093=_0x12bacc;if(_0x4f0a75[_0x543093(0x22f,'\x30\x35\x4f\x24')](_0x4f0a75[_0x543093(0x202,'\x25\x4a\x57\x6d')],_0x543093(0x35d,'\x6a\x43\x4c\x47')))process.env.EVOLVE_RECALL_VERIFY_DEBUG==='\x31'&&console[_0x543093(0x2cb,'\x4c\x5b\x55\x21')](_0x4f0a75[_0x543093(0x2ed,'\x33\x55\x78\x4c')](_0x4f0a75['\x4d\x78\x57\x4e\x66'],_0x4ffade&&_0x4ffade[_0x543093(0x2f8,'\x38\x4b\x4a\x34')]||_0x4ffade));else return _0x561f27[_0x543093(0x35b,'\x6f\x49\x48\x4a')];});},_0x24c026),_0x4f95d3&&_0x4f0a75[_0x38b197(0x2fd,'\x39\x51\x57\x61')](typeof _0x4f95d3[_0x38b197(0x3af,'\x71\x55\x64\x79')],_0x4f0a75[_0x38b197(0x3ac,'\x37\x64\x76\x5b')])&&_0x4f95d3[_0x38b197(0x260,'\x6e\x67\x38\x31')]();}function _0x41c331(){const _0x42c1ac=_0x121239,_0xce5573={'\x4f\x66\x57\x77\x55':function(_0x3e8135,_0x3ccacd){return _0x3e8135(_0x3ccacd);}};_0x4f95d3&&(_0xce5573[_0x42c1ac(0x2fb,'\x58\x64\x6a\x59')](clearInterval,_0x4f95d3),_0x4f95d3=null),_0x493b90=![];}function _0x517493(){const _0xf40bf3=_0x121239;return Object[_0xf40bf3(0x2d6,'\x6d\x4d\x31\x56')]({},_0x4065d5);}function _0xbcfa17(){const _0x16b507=_0x121239,_0x3af0c3={'\x79\x5a\x77\x76\x63':function(_0x3d72a4){return _0x3d72a4();}};_0x3af0c3[_0x16b507(0x326,'\x67\x47\x26\x51')](_0x41c331),_0x50b452=[],_0x4bffa2['\x63\x6c\x65\x61\x72']();const _0x12c940={};_0x12c940['\x6f\x6b']=0x0,_0x12c940[_0x16b507(0x29e,'\x38\x4b\x4a\x34')]=0x0,_0x12c940[_0x16b507(0x2ef,'\x70\x29\x5e\x63')]=0x0,_0x12c940[_0x16b507(0x381,'\x71\x53\x4c\x6a')]=0x0,_0x4065d5=_0x12c940;}function _0x58c520(){const _0x53683d=_0x121239;return _0x50b452[_0x53683d(0x24d,'\x32\x4e\x6d\x25')];}const _0x3004d5={};_0x3004d5[_0x121239(0x303,'\x25\x4a\x57\x6d')+_0x121239(0x2f1,'\x25\x4a\x57\x6d')+'\x41\x73\x73\x65\x74']=_0x5e8139,_0x3004d5[_0x121239(0x2e1,'\x39\x5e\x58\x74')+'\x63\x65']=_0x4a39e7,_0x3004d5[_0x121239(0x2d5,'\x36\x2a\x77\x56')+'\x6b\x65\x72']=_0x57373a,_0x3004d5[_0x121239(0x383,'\x28\x62\x6d\x5b')+'\x65\x72']=_0x41c331,_0x3004d5[_0x121239(0x362,'\x36\x2a\x77\x56')+_0x121239(0x382,'\x71\x53\x4c\x6a')]=_0x517493,_0x3004d5[_0x121239(0x2e0,'\x47\x49\x56\x56')+_0x121239(0x238,'\x28\x6b\x63\x5d')]=_0x5b4196,_0x3004d5[_0x121239(0x31d,'\x61\x72\x59\x78')+'\x72\x54\x65\x73\x74\x69\x6e\x67']=_0xbcfa17,_0x3004d5['\x5f\x67\x65\x74\x51\x75\x65\x75'+_0x121239(0x369,'\x6d\x4d\x31\x56')+_0x121239(0x33b,'\x34\x6b\x4b\x57')+'\x67']=_0x58c520,module[_0x121239(0x318,'\x79\x43\x24\x69')]=_0x3004d5;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// recallVerifier — confirm that assets we publish to Hub can actually be
|
|
5
|
+
// recalled later. After a successful publish (capsule bundle, anti-pattern,
|
|
6
|
+
// or skill bundle), enqueue the asset_id; a background worker uses Hub's
|
|
7
|
+
// Phase 2 deterministic lookup to verify the asset round-trips, with
|
|
8
|
+
// exponential backoff to absorb Hub indexing latency. Outcomes land as
|
|
9
|
+
// MemoryGraphEvents of kind 'recall_verify' so a report script can compute
|
|
10
|
+
// per-asset-type success rates and gate releases.
|
|
11
|
+
//
|
|
12
|
+
// Scope: only assets with a content-hash asset_id are verified. MemoryGraph
|
|
13
|
+
// events themselves go through a different transport (POST /a2a/memory/event,
|
|
14
|
+
// not the asset store) and produce no asset_id, so they cannot be subject to
|
|
15
|
+
// roundtrip verification. This naturally terminates any recursion of
|
|
16
|
+
// recall_verify events that would otherwise mirror to Hub.
|
|
17
|
+
//
|
|
18
|
+
// Graceful degradation: if fetchAssetById fails for any reason (network,
|
|
19
|
+
// auth, schema), the worker emits 'verification_skipped' rather than
|
|
20
|
+
// throwing. Verification must NEVER block the daemon cycle.
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
|
|
23
|
+
const { envInt, envFloat } = require('../config');
|
|
24
|
+
const { fetchAssetById } = require('./hubSearch');
|
|
25
|
+
const { computeAssetId } = require('./contentHash');
|
|
26
|
+
const { writeMemoryGraphEvent } = require('./memoryGraph');
|
|
27
|
+
|
|
28
|
+
// --- Module state (per-process lifetime, bounded) ---
|
|
29
|
+
|
|
30
|
+
let _queue = [];
|
|
31
|
+
const _inflightAssetIds = new Set();
|
|
32
|
+
let _workerStarted = false;
|
|
33
|
+
let _workerTimer = null;
|
|
34
|
+
let _lastReport = { ok: 0, missing: 0, mismatch: 0, skipped: 0 };
|
|
35
|
+
|
|
36
|
+
// Backoff schedule between attempts. attempt 1 fires INITIAL_WAIT_MS after
|
|
37
|
+
// publish; if it returns missing, retries fire after these intervals.
|
|
38
|
+
const BACKOFF_MS = [5000, 15000, 60000];
|
|
39
|
+
|
|
40
|
+
// --- Env getters (read at call time, never module-load) ---
|
|
41
|
+
|
|
42
|
+
function _isFeatureEnabled() {
|
|
43
|
+
// Default OFF: Hub /a2a/fetch contract is strict (unknown asset_id → empty
|
|
44
|
+
// results, 0 cost) so client-side round-trip verification is redundant as a
|
|
45
|
+
// default safety net. Operators who want end-to-end SLA observability can
|
|
46
|
+
// opt in with EVOLVE_RECALL_VERIFY=1; events still emit locally and (once
|
|
47
|
+
// Hub-side schema lands, see EvoMap/evomap-hub#670) optionally to Hub.
|
|
48
|
+
return String(process.env.EVOLVE_RECALL_VERIFY || '0') === '1';
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function _getSampleRate() {
|
|
52
|
+
// Clamp to [0, 1] to match the startup banner in index.js. A negative
|
|
53
|
+
// env value would otherwise make the gate `Math.random() >= rate`
|
|
54
|
+
// always true → every verify silently skipped, while the banner
|
|
55
|
+
// (which does its own range clamp) still shows 1.0. Operators need
|
|
56
|
+
// the implementation and the banner to agree. (Bugbot review on PR #53.)
|
|
57
|
+
const raw = envFloat('EVOLVE_RECALL_VERIFY_SAMPLE_RATE', 1.0);
|
|
58
|
+
if (!Number.isFinite(raw) || raw < 0 || raw > 1) return 1.0;
|
|
59
|
+
return raw;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function _getQueueMax() {
|
|
63
|
+
return envInt('EVOLVE_RECALL_VERIFY_QUEUE_MAX', 256);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function _getPollMs() {
|
|
67
|
+
return envInt('EVOLVE_RECALL_VERIFY_POLL_MS', 5000);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function _getInitialWaitMs() {
|
|
71
|
+
return envInt('EVOLVE_RECALL_VERIFY_INITIAL_WAIT_MS', 5000);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function _getMaxAttempts() {
|
|
75
|
+
return envInt('EVOLVE_RECALL_VERIFY_ATTEMPTS', 3);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function _getFetchTimeoutMs() {
|
|
79
|
+
return envInt('EVOLVE_RECALL_VERIFY_FETCH_TIMEOUT_MS', 8000);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// --- Event emission ---
|
|
83
|
+
|
|
84
|
+
function _emitEvent(entry, outcome, reason, extras) {
|
|
85
|
+
const ts = Date.now();
|
|
86
|
+
const verification = {
|
|
87
|
+
outcome,
|
|
88
|
+
reason: reason || null,
|
|
89
|
+
attempts: extras && Number.isFinite(extras.attempts) ? extras.attempts : (entry.attempts || 0),
|
|
90
|
+
latency_ms: extras && Number.isFinite(extras.latency_ms) ? extras.latency_ms : 0,
|
|
91
|
+
age_at_verify_ms: entry.publishedAt ? (ts - entry.publishedAt) : 0,
|
|
92
|
+
recalled_hash: extras && extras.recalled_hash ? extras.recalled_hash : null,
|
|
93
|
+
};
|
|
94
|
+
const ev = {
|
|
95
|
+
type: 'MemoryGraphEvent',
|
|
96
|
+
kind: 'recall_verify',
|
|
97
|
+
id: 'mge_' + ts + '_' + Math.random().toString(36).slice(2, 10),
|
|
98
|
+
ts,
|
|
99
|
+
asset: {
|
|
100
|
+
type: entry.type || 'Unknown',
|
|
101
|
+
id: entry.asset_id || null,
|
|
102
|
+
},
|
|
103
|
+
verification,
|
|
104
|
+
signal: { signals: Array.isArray(entry.signals) ? entry.signals.slice(0, 8) : [] },
|
|
105
|
+
};
|
|
106
|
+
try {
|
|
107
|
+
writeMemoryGraphEvent(ev);
|
|
108
|
+
} catch (writeErr) {
|
|
109
|
+
if (process.env.EVOLVE_RECALL_VERIFY_DEBUG === '1') {
|
|
110
|
+
console.warn('[RecallVerify] writeMemoryGraphEvent failed: ' + (writeErr && writeErr.message || writeErr));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (outcome === 'roundtrip_ok') _lastReport.ok++;
|
|
114
|
+
else if (outcome === 'roundtrip_missing') _lastReport.missing++;
|
|
115
|
+
else if (outcome === 'roundtrip_mismatch') _lastReport.mismatch++;
|
|
116
|
+
else _lastReport.skipped++;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// --- Public API ---
|
|
120
|
+
|
|
121
|
+
function enqueuePublishedAsset(input) {
|
|
122
|
+
const entry = {
|
|
123
|
+
asset_id: input && input.asset_id ? String(input.asset_id) : null,
|
|
124
|
+
type: input && input.type ? String(input.type) : 'Unknown',
|
|
125
|
+
signals: Array.isArray(input && input.signals) ? input.signals : [],
|
|
126
|
+
publishedAt: input && Number.isFinite(input.publishedAt) ? input.publishedAt : Date.now(),
|
|
127
|
+
attempts: 0,
|
|
128
|
+
nextEligibleAt: 0,
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
if (!_isFeatureEnabled()) {
|
|
132
|
+
_emitEvent(entry, 'verification_skipped', 'feature_disabled');
|
|
133
|
+
return { enqueued: false, reason: 'feature_disabled' };
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (!entry.asset_id) {
|
|
137
|
+
_emitEvent(entry, 'verification_skipped', 'missing_asset_id');
|
|
138
|
+
return { enqueued: false, reason: 'missing_asset_id' };
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const sampleRate = _getSampleRate();
|
|
142
|
+
if (sampleRate < 1.0 && Math.random() >= sampleRate) {
|
|
143
|
+
_emitEvent(entry, 'verification_skipped', 'sample_rate');
|
|
144
|
+
return { enqueued: false, reason: 'sample_rate' };
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
entry.nextEligibleAt = entry.publishedAt + _getInitialWaitMs();
|
|
148
|
+
|
|
149
|
+
const queueMax = _getQueueMax();
|
|
150
|
+
while (_queue.length >= queueMax) {
|
|
151
|
+
const dropped = _queue.shift();
|
|
152
|
+
_emitEvent(dropped, 'verification_skipped', 'queue_full');
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
_queue.push(entry);
|
|
156
|
+
return { enqueued: true };
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// Single-asset verification. Returns one of the four outcomes.
|
|
160
|
+
// outcome ∈ { roundtrip_ok | roundtrip_missing | roundtrip_mismatch | verification_skipped }
|
|
161
|
+
async function verifyOnce(assetId, assetType) {
|
|
162
|
+
const t0 = Date.now();
|
|
163
|
+
if (!assetId) {
|
|
164
|
+
return { outcome: 'verification_skipped', reason: 'missing_asset_id', latency_ms: 0, recalled_hash: null };
|
|
165
|
+
}
|
|
166
|
+
let result;
|
|
167
|
+
try {
|
|
168
|
+
result = await fetchAssetById(assetId, { timeoutMs: _getFetchTimeoutMs(), bypassCache: true });
|
|
169
|
+
} catch (err) {
|
|
170
|
+
return {
|
|
171
|
+
outcome: 'verification_skipped',
|
|
172
|
+
reason: 'hub_unreachable',
|
|
173
|
+
latency_ms: Date.now() - t0,
|
|
174
|
+
recalled_hash: null,
|
|
175
|
+
error: err && err.message || String(err),
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
const latency = Date.now() - t0;
|
|
180
|
+
|
|
181
|
+
if (!result || !result.ok) {
|
|
182
|
+
return {
|
|
183
|
+
outcome: 'verification_skipped',
|
|
184
|
+
reason: 'hub_unreachable',
|
|
185
|
+
latency_ms: latency,
|
|
186
|
+
recalled_hash: null,
|
|
187
|
+
error: (result && result.error) || 'fetch_not_ok',
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (!result.asset) {
|
|
192
|
+
return { outcome: 'roundtrip_missing', reason: null, latency_ms: latency, recalled_hash: null };
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const recalled = result.asset;
|
|
196
|
+
if (recalled.asset_id !== assetId) {
|
|
197
|
+
return { outcome: 'roundtrip_missing', reason: 'wrong_asset', latency_ms: latency, recalled_hash: recalled.asset_id || null };
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// Recompute the asset_id from the recalled body. If it doesn't match what
|
|
201
|
+
// the recalled asset claims its asset_id is, the Hub re-encoded or
|
|
202
|
+
// corrupted the asset between publish and fetch.
|
|
203
|
+
let recomputed;
|
|
204
|
+
try {
|
|
205
|
+
recomputed = computeAssetId(recalled);
|
|
206
|
+
} catch (hashErr) {
|
|
207
|
+
return {
|
|
208
|
+
outcome: 'verification_skipped',
|
|
209
|
+
reason: 'hash_recompute_failed',
|
|
210
|
+
latency_ms: latency,
|
|
211
|
+
recalled_hash: null,
|
|
212
|
+
error: hashErr && hashErr.message || String(hashErr),
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
if (recomputed !== recalled.asset_id) {
|
|
217
|
+
return { outcome: 'roundtrip_mismatch', reason: 'hash_drift', latency_ms: latency, recalled_hash: recomputed };
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
return { outcome: 'roundtrip_ok', reason: null, latency_ms: latency, recalled_hash: recomputed };
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// Drain the queue once. Public + idempotent so tests can drive it
|
|
224
|
+
// synchronously without waiting on setInterval.
|
|
225
|
+
async function _runWorkerOnce() {
|
|
226
|
+
if (_queue.length === 0) return { processed: 0 };
|
|
227
|
+
const now = Date.now();
|
|
228
|
+
const maxAttempts = _getMaxAttempts();
|
|
229
|
+
const ready = [];
|
|
230
|
+
for (let i = 0; i < _queue.length; i++) {
|
|
231
|
+
const entry = _queue[i];
|
|
232
|
+
if (entry.nextEligibleAt <= now && !_inflightAssetIds.has(entry.asset_id)) {
|
|
233
|
+
ready.push(entry);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (ready.length === 0) return { processed: 0 };
|
|
237
|
+
|
|
238
|
+
let processed = 0;
|
|
239
|
+
for (const entry of ready) {
|
|
240
|
+
_inflightAssetIds.add(entry.asset_id);
|
|
241
|
+
try {
|
|
242
|
+
entry.attempts += 1;
|
|
243
|
+
const verifyResult = await verifyOnce(entry.asset_id, entry.type);
|
|
244
|
+
|
|
245
|
+
const isRetryable = (verifyResult.outcome === 'roundtrip_missing' ||
|
|
246
|
+
(verifyResult.outcome === 'verification_skipped' && verifyResult.reason === 'hub_unreachable'));
|
|
247
|
+
const hasAttemptsLeft = entry.attempts < maxAttempts;
|
|
248
|
+
|
|
249
|
+
if (isRetryable && hasAttemptsLeft) {
|
|
250
|
+
const backoffIdx = Math.min(entry.attempts - 1, BACKOFF_MS.length - 1);
|
|
251
|
+
entry.nextEligibleAt = Date.now() + BACKOFF_MS[backoffIdx];
|
|
252
|
+
} else {
|
|
253
|
+
_emitEvent(entry, verifyResult.outcome, verifyResult.reason, {
|
|
254
|
+
attempts: entry.attempts,
|
|
255
|
+
latency_ms: verifyResult.latency_ms,
|
|
256
|
+
recalled_hash: verifyResult.recalled_hash,
|
|
257
|
+
});
|
|
258
|
+
const idx = _queue.indexOf(entry);
|
|
259
|
+
if (idx !== -1) _queue.splice(idx, 1);
|
|
260
|
+
}
|
|
261
|
+
processed += 1;
|
|
262
|
+
} finally {
|
|
263
|
+
// Always release inflight (including on retry) — next poll re-adds.
|
|
264
|
+
_inflightAssetIds.delete(entry.asset_id);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return { processed };
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
function startWorker() {
|
|
271
|
+
if (_workerStarted) return;
|
|
272
|
+
_workerStarted = true;
|
|
273
|
+
const pollMs = _getPollMs();
|
|
274
|
+
_workerTimer = setInterval(function () {
|
|
275
|
+
_runWorkerOnce().catch(function (err) {
|
|
276
|
+
if (process.env.EVOLVE_RECALL_VERIFY_DEBUG === '1') {
|
|
277
|
+
console.warn('[RecallVerify] worker tick failed: ' + (err && err.message || err));
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
}, pollMs);
|
|
281
|
+
if (_workerTimer && typeof _workerTimer.unref === 'function') {
|
|
282
|
+
_workerTimer.unref();
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
function stopWorker() {
|
|
287
|
+
if (_workerTimer) {
|
|
288
|
+
clearInterval(_workerTimer);
|
|
289
|
+
_workerTimer = null;
|
|
290
|
+
}
|
|
291
|
+
_workerStarted = false;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
function getLastReport() {
|
|
295
|
+
return Object.assign({}, _lastReport);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
function _resetForTesting() {
|
|
299
|
+
stopWorker();
|
|
300
|
+
_queue = [];
|
|
301
|
+
_inflightAssetIds.clear();
|
|
302
|
+
_lastReport = { ok: 0, missing: 0, mismatch: 0, skipped: 0 };
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
function _getQueueLengthForTesting() {
|
|
306
|
+
return _queue.length;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
module.exports = {
|
|
310
|
+
enqueuePublishedAsset,
|
|
311
|
+
verifyOnce,
|
|
312
|
+
startWorker,
|
|
313
|
+
stopWorker,
|
|
314
|
+
getLastReport,
|
|
315
|
+
_runWorkerOnce,
|
|
316
|
+
_resetForTesting,
|
|
317
|
+
_getQueueLengthForTesting,
|
|
318
|
+
};
|