@evomap/evolver 1.88.3 → 1.89.0
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 +1123 -0
- package/README.md +86 -543
- package/README.public.md +594 -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/index.js +30 -1
- package/package.json +5 -15
- package/proxy-package.json +39 -0
- package/public.manifest.json +141 -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 +434 -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 +4395 -1
- package/src/gep/assetCallLog.js +30 -2
- 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/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 +711 -1
- package/src/gep/explore.js +289 -1
- package/src/gep/hash.js +15 -1
- package/src/gep/hubFetch.js +359 -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 +1374 -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/oauthLogin.js +143 -0
- 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/recallInject.js +409 -1
- package/src/gep/recallVerifier.js +318 -1
- package/src/gep/reflection.js +177 -1
- package/src/gep/schemas/capsule.js +26 -0
- 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 +88 -0
- package/src/gep/workspaceKeychain.js +174 -1
- package/src/proxy/extensions/traceControl.js +99 -1
- package/src/proxy/index.js +36 -6
- package/src/proxy/inject.js +52 -1
- package/src/proxy/trace/extractor.js +534 -1
- package/src/proxy/trace/usage.js +105 -0
- package/CONTRIBUTING.md +0 -11
- 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/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
package/src/gep/recallInject.js
CHANGED
|
@@ -1 +1,409 @@
|
|
|
1
|
-
const _0x2fa995=_0x200a;(function(_0x489fbe,_0x1819a6){const _0x3ff22e=_0x200a,_0x4a39f7=_0x489fbe();while(!![]){try{const _0x4932c2=-parseInt(_0x3ff22e(0x25a,'\x62\x74\x79\x68'))/(0x2440+0x24c3+-0x4902)*(parseInt(_0x3ff22e(0x18a,'\x47\x65\x43\x51'))/(0x2534+0x629+-0x2b5b))+-parseInt(_0x3ff22e(0x232,'\x72\x32\x62\x5b'))/(0x1af7+0x7*0x1c1+-0x273b)+-parseInt(_0x3ff22e(0x146,'\x62\x52\x52\x4c'))/(0xba2+-0x919+-0x285)+parseInt(_0x3ff22e(0x285,'\x31\x72\x6b\x4c'))/(-0x2*0xba3+0xb*-0x149+-0x1*-0x256e)+-parseInt(_0x3ff22e(0x276,'\x34\x64\x4c\x58'))/(-0x57*0x3+-0x2277+-0x2*-0x11c1)+parseInt(_0x3ff22e(0x2a4,'\x39\x75\x57\x55'))/(-0x2f2*-0xa+0x2413+0x80*-0x83)*(-parseInt(_0x3ff22e(0x25c,'\x62\x28\x23\x34'))/(0x2*-0x127f+-0x575+-0x4b*-0x91))+parseInt(_0x3ff22e(0x264,'\x68\x24\x53\x68'))/(-0x1548+-0x7fa*-0x2+0x55d);if(_0x4932c2===_0x1819a6)break;else _0x4a39f7['push'](_0x4a39f7['shift']());}catch(_0x45e9fb){_0x4a39f7['push'](_0x4a39f7['shift']());}}}(_0x4572,-0x225fe+-0x248c*-0x20+0x1528c));const _0x16aa3f=(function(){let _0x3ff267=!![];return function(_0x36c04e,_0x2dac41){const _0x425a05=_0x3ff267?function(){const _0x435133=_0x200a;if(_0x2dac41){const _0x290765=_0x2dac41[_0x435133(0x22b,'\x55\x62\x4d\x76')](_0x36c04e,arguments);return _0x2dac41=null,_0x290765;}}:function(){};return _0x3ff267=![],_0x425a05;};}()),_0x33d7bf=_0x16aa3f(this,function(){const _0x54b1bb=_0x200a,_0x33d232={};_0x33d232[_0x54b1bb(0x1d5,'\x74\x59\x74\x50')]=_0x54b1bb(0x1ad,'\x62\x28\x23\x34')+_0x54b1bb(0x155,'\x39\x62\x38\x41');const _0x4bce15=_0x33d232;return _0x33d7bf[_0x54b1bb(0x2f5,'\x74\x59\x74\x50')]()[_0x54b1bb(0x31f,'\x73\x34\x76\x71')](_0x4bce15[_0x54b1bb(0x27f,'\x5b\x5d\x35\x54')])[_0x54b1bb(0x200,'\x31\x72\x6b\x4c')]()[_0x54b1bb(0x2b9,'\x34\x64\x4c\x58')+_0x54b1bb(0x2ed,'\x61\x41\x28\x40')](_0x33d7bf)[_0x54b1bb(0x31b,'\x43\x32\x66\x26')](_0x54b1bb(0x217,'\x25\x58\x45\x70')+_0x54b1bb(0x199,'\x56\x76\x23\x73'));});_0x33d7bf();const _0x3aa37e=require(_0x2fa995(0x243,'\x25\x28\x70\x45'));function _0x84a0df(){const _0x1e1dbd=_0x2fa995,_0x1a2d0f={'\x76\x4f\x49\x54\x50':function(_0x328c59,_0x3af73b){return _0x328c59(_0x3af73b);},'\x4a\x4a\x42\x48\x53':function(_0x223e77,_0x2b05a3){return _0x223e77===_0x2b05a3;},'\x77\x55\x4c\x57\x4e':'\x73\x68\x61\x64\x6f\x77','\x57\x4f\x42\x55\x46':_0x1e1dbd(0x322,'\x55\x28\x50\x5d'),'\x6c\x66\x49\x71\x57':_0x1e1dbd(0x2df,'\x25\x58\x45\x70')},_0x41e03a=_0x1a2d0f[_0x1e1dbd(0x26d,'\x29\x6f\x35\x4a')](String,process.env.EVOLVER_RECALL_MODE||'')[_0x1e1dbd(0x2e3,'\x44\x36\x51\x6e')+_0x1e1dbd(0x2fd,'\x6b\x66\x39\x6c')]()['\x74\x72\x69\x6d']();return _0x1a2d0f[_0x1e1dbd(0x259,'\x5b\x5d\x35\x54')](_0x41e03a,_0x1a2d0f[_0x1e1dbd(0x17b,'\x31\x72\x6b\x4c')])||_0x1a2d0f[_0x1e1dbd(0x1d4,'\x49\x23\x30\x44')](_0x41e03a,_0x1a2d0f[_0x1e1dbd(0x26e,'\x4e\x4a\x6b\x41')])?_0x41e03a:_0x1a2d0f['\x6c\x66\x49\x71\x57'];}function _0x55de13(){const _0x23a9a7=_0x2fa995,_0x2f23f0={'\x55\x77\x78\x77\x6d':function(_0x2b4197,_0x168104){return _0x2b4197(_0x168104);},'\x70\x7a\x52\x74\x7a':function(_0x16dca8,_0x5af15c){return _0x16dca8>_0x5af15c;}},_0x5c0018=_0x2f23f0[_0x23a9a7(0x21a,'\x31\x72\x6b\x4c')](Number,process.env.EVOLVER_RECALL_MIN_SIM);return Number[_0x23a9a7(0x2a5,'\x56\x76\x23\x73')](_0x5c0018)&&_0x2f23f0[_0x23a9a7(0x209,'\x5a\x6f\x56\x72')](_0x5c0018,0x11fb+0x261a+0x803*-0x7)&&_0x5c0018<=0x598*0x4+-0x1aeb+0x48c?_0x5c0018:-0x13f*0x12+-0x116*0x7+-0xf04*-0x2+0.75;}function _0x10c822(){const _0x5c8308=_0x2fa995,_0x5ce093={'\x66\x49\x4e\x78\x51':function(_0x323e56,_0x4231ca,_0x41c5f7){return _0x323e56(_0x4231ca,_0x41c5f7);},'\x6e\x67\x77\x62\x6d':function(_0xc271f3,_0x589005){return _0xc271f3>_0x589005;},'\x6e\x4a\x77\x56\x4d':function(_0x475f78,_0x2525bc){return _0x475f78<=_0x2525bc;}},_0x27d4d2=_0x5ce093['\x66\x49\x4e\x78\x51'](parseInt,process.env.EVOLVER_RECALL_MAX,-0x4f3+-0xde+0x5db);return Number[_0x5c8308(0x240,'\x62\x28\x23\x34')](_0x27d4d2)&&_0x5ce093[_0x5c8308(0x2ca,'\x31\x72\x6b\x4c')](_0x27d4d2,-0x1af3+-0x25ff+0xad3*0x6)&&_0x5ce093[_0x5c8308(0x253,'\x4c\x44\x4d\x6b')](_0x27d4d2,0x1d87*0x1+0x150c+-0x3289)?_0x27d4d2:-0x1*0x14b7+0x709*0x1+0xdaf;}const _0x3f4ecd=0x10f3+0x1*0x1857+-0x262a,_0x3dda91=-0xe5f+-0x14b3+-0x1*-0x23da;function _0x6a79c8(_0x5f56b6){const _0x4fd45c=_0x2fa995,_0x993525={'\x48\x45\x69\x6f\x55':function(_0x2fe486,_0xbf8271){return _0x2fe486(_0xbf8271);},'\x42\x66\x41\x79\x67':_0x4fd45c(0x175,'\x48\x4c\x48\x29')+'\x73'},_0x5c64e6=_0x993525[_0x4fd45c(0x1ee,'\x62\x52\x52\x4c')](String,_0x5f56b6||''),_0x31d97a=_0x5c64e6['\x74\x6f\x4c\x6f\x77\x65\x72\x43'+_0x4fd45c(0x31e,'\x43\x64\x51\x57')](),_0x2a6b17=/\b(error|exception|fail(?:ed|ure)?)\b|错误|异常|报错|失败/i[_0x4fd45c(0x29e,'\x73\x34\x76\x71')](_0x31d97a);let _0x3d50a5=[],_0x472362=[];try{const _0x5d52ff=require(_0x993525[_0x4fd45c(0x1f8,'\x29\x6f\x35\x4a')]);_0x3d50a5=_0x5d52ff[_0x4fd45c(0x2bc,'\x50\x6c\x4f\x23')+_0x4fd45c(0x231,'\x73\x34\x76\x71')](_0x5c64e6,_0x31d97a,_0x2a6b17)||[],_0x472362=_0x5d52ff[_0x4fd45c(0x21f,'\x34\x64\x4c\x58')+_0x4fd45c(0x25e,'\x61\x41\x28\x40')+_0x4fd45c(0x1c3,'\x47\x65\x43\x51')](_0x31d97a)||[];}catch(_0x98e674){return[];}const _0x103968=new Set();for(const _0x49795a of _0x3d50a5)_0x103968[_0x4fd45c(0x269,'\x62\x30\x37\x58')](_0x49795a);for(const _0x47f06c of _0x472362)_0x103968[_0x4fd45c(0x22c,'\x79\x67\x28\x72')](_0x47f06c);return _0x103968[_0x4fd45c(0x28d,'\x31\x72\x6b\x4c')](_0x4fd45c(0x24c,'\x4c\x44\x4d\x6b')+_0x4fd45c(0x2a3,'\x4b\x34\x6f\x26')+_0x4fd45c(0x216,'\x25\x28\x70\x45')),Array[_0x4fd45c(0x1fe,'\x73\x72\x78\x54')](_0x103968);}const _0x423570=-0x34c+-0xdf1*-0x2+-0x3*0x82e;function _0x578e49(_0x1f7f18){const _0x2cddf9=_0x2fa995,_0x3df2e4={'\x4c\x55\x53\x75\x44':function(_0x2c409b,_0x57885a){return _0x2c409b(_0x57885a);},'\x70\x6f\x41\x65\x71':_0x2cddf9(0x2b1,'\x53\x74\x41\x70'),'\x55\x58\x6e\x48\x6f':_0x2cddf9(0x324,'\x26\x6e\x76\x6a'),'\x6f\x6b\x55\x66\x57':'\x68\x75\x62\x5f\x73\x65\x6d\x61'+_0x2cddf9(0x303,'\x29\x6f\x35\x4a')+_0x2cddf9(0x1ae,'\x47\x65\x43\x51'),'\x67\x44\x54\x48\x42':_0x2cddf9(0x271,'\x55\x51\x78\x57')+_0x2cddf9(0x16b,'\x50\x6c\x4f\x23')+_0x2cddf9(0x151,'\x47\x65\x43\x51'),'\x72\x6b\x53\x44\x6a':_0x2cddf9(0x29a,'\x55\x62\x4d\x76')+_0x2cddf9(0x2a2,'\x29\x6f\x35\x4a'),'\x72\x66\x61\x63\x71':_0x2cddf9(0x2e6,'\x53\x32\x49\x71')+_0x2cddf9(0x2d4,'\x50\x6c\x4f\x23')+_0x2cddf9(0x181,'\x72\x35\x54\x73'),'\x72\x56\x45\x5a\x59':'\x2e\x2f\x73\x65\x6c\x65\x63\x74'+'\x6f\x72','\x4a\x65\x45\x54\x63':function(_0x105d40,_0x41c3d2){return _0x105d40(_0x41c3d2);},'\x77\x43\x42\x51\x4a':_0x2cddf9(0x1a0,'\x74\x59\x74\x50'),'\x46\x79\x58\x42\x6b':_0x2cddf9(0x188,'\x55\x62\x4d\x76')},_0x49c20a=_0x3df2e4[_0x2cddf9(0x2af,'\x51\x2a\x29\x64')](_0x6a79c8,_0x1f7f18);let _0x2b868a=[];try{const {tokenize:_0x126bb3}=require(_0x3df2e4['\x72\x56\x45\x5a\x59']),_0x3b97f0=new Set();for(const _0x1baa56 of _0x3df2e4['\x4a\x65\x45\x54\x63'](_0x126bb3,_0x1f7f18)){if(!_0x3b97f0[_0x2cddf9(0x27e,'\x73\x72\x78\x54')](_0x1baa56)){if(_0x3df2e4['\x77\x43\x42\x51\x4a']===_0x2cddf9(0x16c,'\x72\x72\x5d\x66'))_0x3b97f0[_0x2cddf9(0x279,'\x25\x58\x45\x70')](_0x1baa56),_0x2b868a[_0x2cddf9(0x19e,'\x43\x64\x51\x57')](_0x1baa56);else return[];}if(_0x2b868a[_0x2cddf9(0x218,'\x4c\x44\x4d\x6b')]>=_0x423570)break;}}catch(_0x26c684){if(_0x3df2e4[_0x2cddf9(0x222,'\x72\x72\x5d\x66')]===_0x2cddf9(0x177,'\x67\x73\x4b\x74'))try{_0x3df2e4[_0x2cddf9(0x1c0,'\x48\x4c\x48\x29')](_0x5de6c1,{'\x72\x75\x6e\x5f\x69\x64':_0x2e951d,'\x61\x63\x74\x69\x6f\x6e':_0x57011f,'\x61\x73\x73\x65\x74\x5f\x69\x64':_0x389ba6[_0x2cddf9(0x1a7,'\x75\x65\x38\x5a')]||_0x585969,'\x61\x73\x73\x65\x74\x5f\x74\x79\x70\x65':_0x3df2e4[_0x2cddf9(0x314,'\x50\x6c\x4f\x23')],'\x73\x6f\x75\x72\x63\x65\x5f\x6e\x6f\x64\x65\x5f\x69\x64':_0x32e29b[_0x2cddf9(0x140,'\x25\x28\x70\x45')+'\x6f\x64\x65\x5f\x69\x64']||_0x184dfe,'\x63\x68\x61\x69\x6e\x5f\x69\x64':_0x5900f6[_0x2cddf9(0x156,'\x73\x72\x78\x54')]||_0xf5212c,'\x73\x63\x6f\x72\x65':_0x1cf6c8[_0x2cddf9(0x229,'\x34\x64\x4c\x58')+'\x74\x79'],'\x73\x69\x67\x6e\x61\x6c\x73':_0x5d3a6d[_0x2cddf9(0x2b3,'\x53\x32\x49\x71')](-0x987+-0xb2*-0x3+0x771,-0x8ff*0x2+0x680+0xb86),'\x72\x65\x61\x73\x6f\x6e':_0x380547['\x6f\x72\x69\x67\x69\x6e']===_0x3df2e4[_0x2cddf9(0x2cb,'\x74\x59\x74\x50')]?_0x3df2e4[_0x2cddf9(0x2e2,'\x43\x32\x66\x26')]:_0x3df2e4[_0x2cddf9(0x291,'\x25\x28\x70\x45')],'\x65\x78\x74\x72\x61':{'\x76\x69\x61':_0x3df2e4[_0x2cddf9(0x319,'\x74\x59\x74\x50')],'\x61\x74\x74\x72\x69\x62\x75\x74\x69\x6f\x6e':_0x3df2e4[_0x2cddf9(0x2b5,'\x53\x49\x67\x5d')],'\x6f\x72\x69\x67\x69\x6e':_0xdb3640['\x6f\x72\x69\x67\x69\x6e']}});}catch(_0x142185){}else _0x2b868a=[];}const _0xfe682a=new Set();for(const _0x4d8f14 of _0x49c20a)_0xfe682a[_0x2cddf9(0x201,'\x44\x36\x51\x6e')](_0x4d8f14);for(const _0x2f025c of _0x2b868a)_0xfe682a[_0x2cddf9(0x265,'\x26\x6e\x76\x6a')](_0x2f025c);return Array[_0x2cddf9(0x273,'\x55\x28\x50\x5d')](_0xfe682a);}async function _0x3f9772(_0x531804,_0x2ebd8f){const _0x18d834=_0x2fa995,_0x19bef2={'\x45\x4b\x4b\x66\x67':function(_0x38935a,_0x1d5176){return _0x38935a-_0x1d5176;},'\x57\x6d\x49\x76\x41':function(_0x4d7d0e,_0x2595fc){return _0x4d7d0e(_0x2595fc);},'\x66\x78\x57\x70\x6b':function(_0xebed5d,_0x4df82c){return _0xebed5d===_0x4df82c;},'\x6a\x58\x53\x68\x52':_0x18d834(0x19b,'\x45\x32\x34\x4a'),'\x44\x50\x4b\x4e\x4d':'\x6f\x66\x66','\x70\x44\x41\x75\x48':_0x18d834(0x2ce,'\x61\x41\x28\x40'),'\x78\x44\x68\x51\x4a':'\x2e\x2f\x68\x75\x62\x53\x65\x61'+'\x72\x63\x68','\x44\x6c\x68\x42\x77':_0x18d834(0x242,'\x21\x31\x36\x67')+_0x18d834(0x30e,'\x56\x76\x23\x73'),'\x44\x6d\x66\x78\x71':function(_0x436f9d,_0x3aff16){return _0x436f9d!==_0x3aff16;},'\x45\x68\x4a\x67\x76':_0x18d834(0x2f4,'\x55\x28\x50\x5d'),'\x45\x63\x78\x79\x6f':_0x18d834(0x321,'\x62\x30\x37\x58'),'\x52\x50\x49\x44\x48':function(_0x23f5ec,_0x56e48c){return _0x23f5ec===_0x56e48c;},'\x79\x50\x4a\x5a\x51':_0x18d834(0x1fb,'\x54\x4b\x6e\x34'),'\x59\x48\x48\x61\x76':function(_0xd8340d){return _0xd8340d();},'\x77\x56\x6a\x4f\x6d':_0x18d834(0x2a8,'\x48\x4c\x48\x29'),'\x61\x79\x59\x71\x71':_0x18d834(0x1f2,'\x72\x32\x62\x5b')};let _0xd4c08c,_0x1b2591;try{if(_0x19bef2[_0x18d834(0x171,'\x55\x51\x78\x57')](_0x19bef2['\x70\x44\x41\x75\x48'],_0x19bef2[_0x18d834(0x169,'\x66\x78\x65\x33')]))_0xd4c08c=_0x19bef2[_0x18d834(0x2bd,'\x67\x73\x4b\x74')](require,_0x19bef2['\x78\x44\x68\x51\x4a']),_0x1b2591=_0x19bef2['\x57\x6d\x49\x76\x41'](require,_0x19bef2[_0x18d834(0x1aa,'\x53\x49\x67\x5d')]);else{const _0xd28371=_0x19bef2[_0x18d834(0x299,'\x72\x35\x54\x73')](_0x1b190d[_0x18d834(0x30c,'\x43\x32\x66\x26')+'\x4d\x73']-_0x55ea90[_0x18d834(0x2c3,'\x43\x64\x51\x57')](),_0x200217);_0x29026a=_0x50f214['\x6d\x69\x6e'](_0x55c00d,_0xd28371);}}catch(_0x1e4265){return[];}try{if(_0x19bef2[_0x18d834(0x29f,'\x34\x64\x4c\x58')](_0x19bef2[_0x18d834(0x2fa,'\x4c\x44\x4d\x6b')],_0x18d834(0x1fd,'\x67\x73\x4b\x74')))_0x1a4627=[];else{if(_0x19bef2[_0x18d834(0x1da,'\x55\x62\x4d\x76')](typeof _0xd4c08c[_0x18d834(0x2ee,'\x21\x31\x36\x67')+_0x18d834(0x18b,'\x5b\x5d\x35\x54')+'\x64'],_0x19bef2[_0x18d834(0x26f,'\x5b\x5d\x35\x54')])&&!_0xd4c08c[_0x18d834(0x15b,'\x73\x72\x78\x54')+_0x18d834(0x31a,'\x62\x28\x23\x34')+'\x64']())return[];}}catch(_0x414c89){}let _0x46e2e2='';try{_0x46e2e2=(typeof _0x1b2591['\x67\x65\x74\x48\x75\x62\x55\x72'+'\x6c']===_0x19bef2[_0x18d834(0x1fc,'\x26\x6e\x76\x6a')]?_0x1b2591[_0x18d834(0x2c9,'\x43\x32\x66\x26')+'\x6c']():_0xd4c08c[_0x18d834(0x193,'\x31\x72\x6b\x4c')+'\x6c']())||'',_0x46e2e2=_0x46e2e2[_0x18d834(0x1a5,'\x73\x72\x78\x54')](/\/+$/,'');}catch(_0x26f8b7){if(_0x19bef2[_0x18d834(0x283,'\x72\x72\x5d\x66')](_0x18d834(0x205,'\x31\x72\x6b\x4c'),_0x19bef2[_0x18d834(0x1e8,'\x53\x74\x41\x70')]))_0x46e2e2='';else try{if(_0x112eee[_0x18d834(0x159,'\x53\x49\x67\x5d')+_0x18d834(0x23a,'\x44\x36\x51\x6e')+_0x18d834(0x2b4,'\x5b\x5d\x35\x54')](_0x125686,_0x146f5c))_0x18d1da++;}catch(_0x252b2a){}}if(!_0x46e2e2)return[];let _0x13bc2d={};try{_0x13bc2d=_0x1b2591[_0x18d834(0x2e0,'\x61\x41\x28\x40')+_0x18d834(0x20b,'\x4c\x44\x4d\x6b')]();}catch(_0x2390ff){_0x13bc2d={};}let _0x97ff5=[];try{_0x97ff5=await _0xd4c08c[_0x18d834(0x282,'\x45\x32\x34\x4a')+_0x18d834(0x195,'\x25\x58\x45\x70')+'\x75\x6c\x74\x73'](_0x46e2e2,_0x13bc2d,_0x531804,_0x2ebd8f);}catch(_0x4932fb){return[];}if(!Array[_0x18d834(0x153,'\x62\x30\x37\x58')](_0x97ff5))return[];const _0x115022=_0x19bef2[_0x18d834(0x28a,'\x26\x6e\x76\x6a')](_0x55de13);let _0x1fa2f6='';try{_0x1fa2f6=_0x1b2591[_0x18d834(0x294,'\x50\x6c\x4f\x23')+'\x64']()||'';}catch(_0x57129d){if(_0x19bef2[_0x18d834(0x2ae,'\x45\x32\x34\x4a')](_0x19bef2[_0x18d834(0x20c,'\x44\x36\x51\x6e')],_0x18d834(0x160,'\x25\x55\x76\x43')))_0x1fa2f6='';else{const _0x13d9db=STpiVo[_0x18d834(0x1e7,'\x29\x6f\x35\x4a')](_0x5694af,_0x165c26.env.EVOLVER_RECALL_MODE||'')[_0x18d834(0x320,'\x4e\x4a\x6b\x41')+_0x18d834(0x2c7,'\x44\x36\x51\x6e')]()[_0x18d834(0x277,'\x25\x58\x45\x70')]();return _0x13d9db===_0x18d834(0x16d,'\x55\x62\x4d\x76')||STpiVo[_0x18d834(0x2e5,'\x56\x76\x23\x73')](_0x13d9db,STpiVo['\x6a\x58\x53\x68\x52'])?_0x13d9db:STpiVo[_0x18d834(0x2b2,'\x50\x6c\x4f\x23')];}}const _0x21dc77=[];for(const _0x447780 of _0x97ff5){if(!_0x447780||_0x19bef2[_0x18d834(0x2f2,'\x21\x31\x36\x67')](typeof _0x447780,_0x19bef2[_0x18d834(0x1a8,'\x48\x4c\x48\x29')]))continue;const _0x8528e9=_0x19bef2['\x57\x6d\x49\x76\x41'](Number,_0x447780[_0x18d834(0x246,'\x25\x58\x45\x70')+'\x63\x5f\x73\x69\x6d\x69\x6c\x61'+_0x18d834(0x19c,'\x53\x74\x41\x70')]);if(!Number[_0x18d834(0x240,'\x62\x28\x23\x34')](_0x8528e9)||_0x8528e9<_0x115022)continue;if(_0x1fa2f6&&_0x447780['\x73\x6f\x75\x72\x63\x65\x5f\x6e'+_0x18d834(0x1a1,'\x66\x78\x65\x33')]&&_0x447780['\x73\x6f\x75\x72\x63\x65\x5f\x6e'+'\x6f\x64\x65\x5f\x69\x64']===_0x1fa2f6)continue;const _0x4ef2c4={};_0x4ef2c4[_0x18d834(0x2cc,'\x53\x49\x67\x5d')]=_0x447780[_0x18d834(0x2e9,'\x53\x74\x41\x70')]||_0x447780[_0x18d834(0x22a,'\x67\x73\x4b\x74')]||'',_0x4ef2c4[_0x18d834(0x1b2,'\x53\x74\x41\x70')+_0x18d834(0x2fc,'\x73\x34\x76\x71')]=_0x447780[_0x18d834(0x292,'\x51\x2a\x29\x64')+_0x18d834(0x203,'\x21\x31\x36\x67')]||'',_0x4ef2c4[_0x18d834(0x311,'\x68\x24\x53\x68')]=_0x447780[_0x18d834(0x1bb,'\x26\x6e\x76\x6a')]||'',_0x4ef2c4[_0x18d834(0x2f7,'\x25\x28\x70\x45')+'\x74\x79']=_0x8528e9,_0x4ef2c4[_0x18d834(0x2dc,'\x62\x74\x79\x68')]=_0x447780['\x73\x68\x6f\x72\x74\x5f\x74\x69'+_0x18d834(0x2d0,'\x5a\x6f\x56\x72')]||_0x447780['\x6e\x6c\x5f\x74\x69\x74\x6c\x65']||_0x447780[_0x18d834(0x309,'\x34\x64\x4c\x58')]||'',_0x4ef2c4[_0x18d834(0x1af,'\x5a\x6f\x56\x72')]=_0x447780[_0x18d834(0x2d1,'\x6b\x66\x39\x6c')+'\x72\x79']||_0x447780[_0x18d834(0x15d,'\x73\x72\x78\x54')]||'',_0x4ef2c4[_0x18d834(0x208,'\x61\x41\x28\x40')]=_0x18d834(0x1e4,'\x66\x78\x65\x33'),_0x21dc77[_0x18d834(0x20a,'\x47\x65\x43\x51')](_0x4ef2c4);}return _0x21dc77;}function _0x53a4c1(_0x22edd1){const _0x2bf1cf=_0x2fa995,_0x2fcd4f={'\x75\x47\x6f\x79\x44':function(_0x41ee90,_0x11c6fc){return _0x41ee90===_0x11c6fc;},'\x64\x64\x41\x50\x67':_0x2bf1cf(0x17d,'\x49\x23\x30\x44'),'\x6a\x59\x59\x53\x7a':function(_0x33f6d6,_0x9f7986,_0xfef2fd){return _0x33f6d6(_0x9f7986,_0xfef2fd);},'\x73\x64\x66\x47\x49':function(_0x4a76ee,_0x52b0da){return _0x4a76ee>_0x52b0da;},'\x5a\x79\x61\x61\x6c':function(_0x46f5ac,_0x21da6b){return _0x46f5ac<=_0x21da6b;},'\x52\x54\x74\x71\x68':_0x2bf1cf(0x20e,'\x39\x75\x57\x55'),'\x79\x6a\x42\x4c\x7a':_0x2bf1cf(0x143,'\x72\x72\x5d\x66')+_0x2bf1cf(0x1f9,'\x5b\x5d\x35\x54')+_0x2bf1cf(0x1d7,'\x53\x74\x41\x70'),'\x63\x4a\x67\x66\x4e':_0x2bf1cf(0x271,'\x55\x51\x78\x57')+'\x6e\x65\x5f\x70\x61\x74\x74\x65'+_0x2bf1cf(0x2eb,'\x21\x31\x36\x67'),'\x76\x43\x73\x42\x55':_0x2bf1cf(0x29a,'\x55\x62\x4d\x76')+_0x2bf1cf(0x1a4,'\x72\x32\x62\x5b'),'\x69\x61\x51\x67\x50':_0x2bf1cf(0x1e2,'\x5e\x5e\x53\x67')+'\x69\x6f\x6e\x61\x6c\x5f\x6c\x6f'+_0x2bf1cf(0x1dc,'\x62\x52\x52\x4c'),'\x7a\x67\x58\x52\x6d':function(_0x23e745,_0x237c37){return _0x23e745||_0x237c37;},'\x47\x55\x4f\x5a\x4e':'\x6c\x4a\x61\x64\x57','\x58\x4b\x77\x79\x46':function(_0x6b7270,_0x1c7c09){return _0x6b7270(_0x1c7c09);},'\x59\x52\x47\x41\x52':_0x2bf1cf(0x1ca,'\x55\x51\x78\x57')+'\x6f\x72','\x47\x64\x54\x67\x58':function(_0x12f0d4,_0x49c995){return _0x12f0d4===_0x49c995;},'\x51\x42\x4a\x77\x41':_0x2bf1cf(0x183,'\x25\x28\x70\x45'),'\x69\x4b\x56\x46\x6a':function(_0x21bdce,_0x581c1e){return _0x21bdce===_0x581c1e;},'\x68\x47\x44\x47\x72':_0x2bf1cf(0x1f3,'\x44\x36\x51\x6e'),'\x4f\x6b\x76\x67\x59':function(_0x201d09,_0x5f3efb){return _0x201d09!==_0x5f3efb;},'\x46\x6e\x63\x4c\x4c':_0x2bf1cf(0x310,'\x73\x72\x78\x54'),'\x61\x4d\x6a\x51\x64':function(_0x2d1fe7,_0x2dd341){return _0x2d1fe7===_0x2dd341;},'\x4b\x53\x52\x55\x75':_0x2bf1cf(0x25f,'\x50\x6c\x4f\x23'),'\x68\x64\x72\x59\x51':_0x2bf1cf(0x23c,'\x74\x59\x74\x50'),'\x4b\x4d\x63\x4b\x68':function(_0x3ea9b4,_0x346590){return _0x3ea9b4!==_0x346590;},'\x75\x77\x66\x43\x62':_0x2bf1cf(0x227,'\x34\x64\x4c\x58'),'\x69\x66\x7a\x49\x75':_0x2bf1cf(0x1e0,'\x72\x35\x54\x73'),'\x68\x64\x62\x52\x46':_0x2bf1cf(0x18e,'\x62\x30\x37\x58'),'\x76\x4a\x72\x64\x63':function(_0x36beab,_0xee4727){return _0x36beab+_0xee4727;},'\x49\x4a\x62\x79\x4b':'\x6d\x61\x74\x63\x68\x65\x73\x3a'+'\x20','\x42\x70\x70\x41\x68':function(_0x283b35,_0xa67db6){return _0x283b35*_0xa67db6;},'\x4c\x57\x5a\x53\x73':_0x2bf1cf(0x1ac,'\x25\x58\x45\x70')};let _0x2ad57b=[],_0x1e1215;try{if(_0x2fcd4f[_0x2bf1cf(0x150,'\x43\x64\x51\x57')](_0x2fcd4f[_0x2bf1cf(0x234,'\x5a\x6f\x56\x72')],_0x2fcd4f[_0x2bf1cf(0x2ad,'\x34\x64\x4c\x58')]))_0x2ad57b=_0x2fcd4f[_0x2bf1cf(0x1c2,'\x72\x35\x54\x73')](require,_0x2bf1cf(0x30b,'\x54\x4b\x6e\x34')+'\x74\x6f\x72\x65')['\x6c\x6f\x61\x64\x47\x65\x6e\x65'+'\x73']()||[],_0x1e1215=require(_0x2fcd4f[_0x2bf1cf(0x284,'\x54\x4b\x6e\x34')]);else{if(RTYydX[_0x2bf1cf(0x2bf,'\x25\x55\x76\x43')](typeof _0x4ddf3e[_0x2bf1cf(0x2c1,'\x25\x58\x45\x70')+_0x2bf1cf(0x2d5,'\x67\x73\x4b\x74')+'\x64'],RTYydX[_0x2bf1cf(0x1f7,'\x74\x59\x74\x50')])&&!_0x130b7d[_0x2bf1cf(0x298,'\x73\x34\x76\x71')+_0x2bf1cf(0x2e1,'\x26\x6e\x76\x6a')+'\x64']())return[];}}catch(_0x371343){if(_0x2fcd4f[_0x2bf1cf(0x1ec,'\x62\x28\x23\x34')](_0x2bf1cf(0x1f5,'\x74\x59\x74\x50'),_0x2fcd4f[_0x2bf1cf(0x302,'\x72\x72\x5d\x66')])){const _0xc61ec8=RTYydX[_0x2bf1cf(0x1b9,'\x25\x28\x70\x45')](_0x3253e6,_0x4f1b75.env.EVOLVER_RECALL_MAX,0x1*-0x15b+-0x10a8+-0x120d*-0x1);return _0x4c9350[_0x2bf1cf(0x176,'\x73\x72\x78\x54')](_0xc61ec8)&&RTYydX['\x73\x64\x66\x47\x49'](_0xc61ec8,-0x607*0x2+-0xbe*0x21+0x923*0x4)&&RTYydX[_0x2bf1cf(0x275,'\x4e\x4a\x6b\x41')](_0xc61ec8,0xb7e*0x1+0x7*0x2a9+-0x1e13*0x1)?_0xc61ec8:-0x260c+-0x2e*0x15+0x29d3;}else return[];}if(!Array[_0x2bf1cf(0x2dd,'\x6b\x66\x39\x6c')](_0x2ad57b)||_0x2fcd4f[_0x2bf1cf(0x23d,'\x72\x32\x62\x5b')](_0x2ad57b[_0x2bf1cf(0x148,'\x75\x65\x38\x5a')],0x40*-0x59+-0x10f8+0x4*0x9ce)||!_0x1e1215)return[];const _0x3ad01f=[];for(const _0x10a046 of _0x2ad57b){if(_0x2fcd4f[_0x2bf1cf(0x307,'\x39\x75\x57\x55')](_0x2fcd4f[_0x2bf1cf(0x1ff,'\x25\x28\x70\x45')],_0x2bf1cf(0x16e,'\x55\x28\x50\x5d')))_0x1bbda5({'\x72\x75\x6e\x5f\x69\x64':_0x5c5512,'\x61\x63\x74\x69\x6f\x6e':_0x4f4623,'\x61\x73\x73\x65\x74\x5f\x69\x64':_0x135265[_0x2bf1cf(0x2a6,'\x66\x78\x65\x33')]||_0x2cd7fd,'\x61\x73\x73\x65\x74\x5f\x74\x79\x70\x65':_0x2bf1cf(0x1a3,'\x31\x72\x6b\x4c'),'\x73\x6f\x75\x72\x63\x65\x5f\x6e\x6f\x64\x65\x5f\x69\x64':_0xc3c850[_0x2bf1cf(0x2a7,'\x55\x28\x50\x5d')+'\x6f\x64\x65\x5f\x69\x64']||_0x1da8b7,'\x63\x68\x61\x69\x6e\x5f\x69\x64':_0xf16e95[_0x2bf1cf(0x2d3,'\x5a\x6f\x56\x72')]||_0x4f9487,'\x73\x63\x6f\x72\x65':_0x153e56[_0x2bf1cf(0x2f8,'\x62\x28\x23\x34')+'\x74\x79'],'\x73\x69\x67\x6e\x61\x6c\x73':_0x466467[_0x2bf1cf(0x1a6,'\x55\x62\x4d\x76')](-0x1adc+-0x38d+0x1e69,0x2*0xf72+0x594+0x16*-0x1a8),'\x72\x65\x61\x73\x6f\x6e':_0x93631a[_0x2bf1cf(0x1c6,'\x47\x65\x43\x51')]===_0x2fcd4f[_0x2bf1cf(0x2ba,'\x25\x28\x70\x45')]?_0x2fcd4f['\x79\x6a\x42\x4c\x7a']:_0x2fcd4f[_0x2bf1cf(0x30d,'\x61\x41\x28\x40')],'\x65\x78\x74\x72\x61':{'\x76\x69\x61':_0x2fcd4f[_0x2bf1cf(0x28c,'\x74\x59\x74\x50')],'\x61\x74\x74\x72\x69\x62\x75\x74\x69\x6f\x6e':_0x2fcd4f[_0x2bf1cf(0x14c,'\x34\x64\x4c\x58')],'\x6f\x72\x69\x67\x69\x6e':_0x33153e[_0x2bf1cf(0x26c,'\x73\x72\x78\x54')]}});else{if(!_0x10a046||_0x2fcd4f[_0x2bf1cf(0x296,'\x74\x59\x74\x50')](_0x10a046[_0x2bf1cf(0x315,'\x5a\x6f\x56\x72')],_0x2fcd4f[_0x2bf1cf(0x18f,'\x4c\x44\x4d\x6b')]))continue;const _0x335067=Array[_0x2bf1cf(0x189,'\x53\x49\x67\x5d')](_0x10a046[_0x2bf1cf(0x1ba,'\x4b\x34\x6f\x26')+_0x2bf1cf(0x248,'\x47\x65\x43\x51')])?_0x10a046[_0x2bf1cf(0x2c8,'\x6b\x66\x39\x6c')+_0x2bf1cf(0x18d,'\x72\x32\x62\x5b')]:[];let _0x552c4d=-0x1d7e+-0x117+0x1*0x1e95;for(const _0x219e8a of _0x335067){if(_0x2fcd4f[_0x2bf1cf(0x212,'\x55\x28\x50\x5d')](_0x2fcd4f[_0x2bf1cf(0x178,'\x4e\x4a\x6b\x41')],_0x2fcd4f['\x68\x64\x72\x59\x51'])){const _0x16c54b=(_0x5c8c88&&_0x1e581a[_0x2bf1cf(0x25b,'\x44\x36\x51\x6e')]?_0x8d2a35(_0x56a519[_0x2bf1cf(0x2ea,'\x61\x41\x28\x40')]):'')['\x74\x72\x69\x6d'](),_0x18ca4e=(_0xabb67f&&_0x4d5be7['\x73\x75\x6d\x6d\x61\x72\x79']?_0x4de78e(_0x314d45[_0x2bf1cf(0x2f0,'\x39\x62\x38\x41')]):'')[_0x2bf1cf(0x25d,'\x25\x28\x70\x45')]();return!!_0x2fcd4f[_0x2bf1cf(0x241,'\x62\x74\x79\x68')](_0x16c54b,_0x18ca4e);}else try{if(_0x1e1215[_0x2bf1cf(0x17a,'\x48\x4c\x48\x29')+'\x74\x65\x72\x6e\x54\x6f\x53\x69'+_0x2bf1cf(0x301,'\x47\x65\x43\x51')](_0x219e8a,_0x22edd1))_0x552c4d++;}catch(_0x4627cf){}}if(_0x552c4d<-0x9c4+-0x27b+-0x188*-0x8)continue;let _0x22a205=0x181f+-0x23ca+0x1*0xbab;try{_0x22a205=_0x1e1215[_0x2bf1cf(0x223,'\x4e\x4a\x6b\x41')+_0x2bf1cf(0x19a,'\x67\x73\x4b\x74')+'\x63'](_0x10a046,_0x22edd1)||0x947+0x1a5a+-0x23a1;}catch(_0x58bb0c){_0x2fcd4f[_0x2bf1cf(0x166,'\x21\x31\x36\x67')](_0x2fcd4f[_0x2bf1cf(0x228,'\x4e\x4a\x6b\x41')],_0x2bf1cf(0x190,'\x43\x32\x66\x26'))?_0x22a205=0x47*-0xe+0x2441+-0x205f*0x1:_0x2cb20f=_0xa565eb[_0x2bf1cf(0x1c8,'\x31\x72\x6b\x4c')+'\x64']()||'';}let _0x20fe4c=(_0x10a046['\x73\x75\x6d\x6d\x61\x72\x79']||'')[_0x2bf1cf(0x286,'\x62\x74\x79\x68')]()[_0x2bf1cf(0x28e,'\x55\x51\x78\x57')]();if(!_0x20fe4c&&_0x10a046[_0x2bf1cf(0x17f,'\x74\x59\x74\x50')]&&_0x2fcd4f[_0x2bf1cf(0x141,'\x29\x6f\x35\x4a')](typeof _0x10a046['\x73\x74\x72\x61\x74\x65\x67\x79'],_0x2fcd4f['\x69\x66\x7a\x49\x75'])){const _0x523089=[];if(Array[_0x2bf1cf(0x202,'\x62\x74\x79\x68')](_0x10a046[_0x2bf1cf(0x213,'\x43\x32\x66\x26')][_0x2bf1cf(0x1d6,'\x49\x23\x30\x44')]))_0x523089[_0x2bf1cf(0x2da,'\x25\x28\x70\x45')](_0x10a046[_0x2bf1cf(0x289,'\x5a\x6f\x56\x72')][_0x2bf1cf(0x194,'\x75\x65\x38\x5a')][_0x2bf1cf(0x287,'\x31\x72\x6b\x4c')](0x18*-0x12a+-0x436+0x2026,0x11f5+-0x97*-0x21+-0x2569)[_0x2bf1cf(0x2fe,'\x4c\x44\x4d\x6b')]('\x3b\x20'));if(typeof _0x10a046[_0x2bf1cf(0x316,'\x25\x28\x70\x45')][_0x2bf1cf(0x317,'\x72\x32\x62\x5b')]===_0x2fcd4f[_0x2bf1cf(0x1c1,'\x26\x6e\x76\x6a')])_0x523089[_0x2bf1cf(0x1b5,'\x5e\x5e\x53\x67')](_0x10a046[_0x2bf1cf(0x2c6,'\x55\x28\x50\x5d')][_0x2bf1cf(0x304,'\x62\x74\x79\x68')]);_0x20fe4c=_0x523089[_0x2bf1cf(0x15f,'\x72\x72\x5d\x66')](Boolean)[_0x2bf1cf(0x224,'\x73\x72\x78\x54')](_0x2bf1cf(0x281,'\x53\x74\x41\x70'))[_0x2bf1cf(0x14a,'\x26\x6e\x76\x6a')]();}if(!_0x20fe4c){const _0x2b78b8=_0x335067[_0x2bf1cf(0x2ec,'\x4e\x4a\x6b\x41')](_0x226094=>String(_0x226094)[_0x2bf1cf(0x1fa,'\x25\x28\x70\x45')]('\x7c')[0x1713+0x3*0x9b7+-0x3438])[_0x2bf1cf(0x226,'\x61\x41\x28\x40')](_0x48dcd1=>_0x48dcd1&&!_0x48dcd1[_0x2bf1cf(0x2b6,'\x43\x32\x66\x26')+'\x74\x68']('\x2f'))[_0x2bf1cf(0x22f,'\x72\x72\x5d\x66')](0x67d*0x2+-0x1f89+0x128f,0x1*-0x1704+-0xba8*0x2+-0x4*-0xb96);if(_0x2b78b8[_0x2bf1cf(0x2f9,'\x55\x28\x50\x5d')])_0x20fe4c=_0x2fcd4f[_0x2bf1cf(0x207,'\x75\x65\x38\x5a')](_0x2fcd4f[_0x2bf1cf(0x192,'\x53\x74\x41\x70')],_0x2b78b8[_0x2bf1cf(0x318,'\x34\x64\x4c\x58')]('\x2c\x20'));}_0x3ad01f[_0x2bf1cf(0x1b1,'\x53\x49\x67\x5d')]({'\x61\x73\x73\x65\x74\x5f\x69\x64':_0x10a046['\x61\x73\x73\x65\x74\x5f\x69\x64']||'','\x73\x6f\x75\x72\x63\x65\x5f\x6e\x6f\x64\x65\x5f\x69\x64':_0x10a046[_0x2bf1cf(0x24a,'\x26\x6e\x76\x6a')+_0x2bf1cf(0x30f,'\x72\x35\x54\x73')]||_0x10a046[_0x2bf1cf(0x1e3,'\x4b\x34\x6f\x26')+_0x2bf1cf(0x1d0,'\x5a\x6f\x56\x72')]||'','\x63\x68\x61\x69\x6e\x5f\x69\x64':_0x10a046[_0x2bf1cf(0x2b7,'\x62\x30\x37\x58')]||'','\x73\x69\x6d\x69\x6c\x61\x72\x69\x74\x79':Math[_0x2bf1cf(0x1f0,'\x55\x28\x50\x5d')](-0x112*-0x4+0x1e7*-0xb+-0x853*-0x2,0x3*-0x4cf+-0xbf6*-0x1+0x277+0.75+(-0xb41+0x1201+-0x6c0+0.05)*_0x552c4d+_0x2fcd4f[_0x2bf1cf(0x2d2,'\x45\x32\x34\x4a')](0x40f*-0x1+0x13*-0x1c9+0x25fa+0.1,_0x22a205)),'\x74\x69\x74\x6c\x65':_0x10a046['\x69\x64']||_0x10a046[_0x2bf1cf(0x24f,'\x61\x41\x28\x40')+_0x2bf1cf(0x1b7,'\x4b\x34\x6f\x26')]||'','\x73\x75\x6d\x6d\x61\x72\x79':_0x20fe4c,'\x6f\x72\x69\x67\x69\x6e':_0x2fcd4f[_0x2bf1cf(0x204,'\x79\x67\x28\x72')],'\x5f\x68\x69\x74\x73':_0x552c4d});}}return _0x3ad01f;}function _0x200a(_0x2f86e9,_0x516832){_0x2f86e9=_0x2f86e9-(-0x79f*-0x1+0x39*0x3b+-0x1383);const _0x5cacad=_0x4572();let _0x4992fc=_0x5cacad[_0x2f86e9];if(_0x200a['\x47\x44\x42\x79\x6a\x6d']===undefined){var _0x2b6876=function(_0x135bd8){const _0xc25c28='\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 _0xb9a22f='',_0x5de6c1='',_0x2e951d=_0xb9a22f+_0x2b6876,_0x57011f=(''+function(){return-0x212a+-0x1525+0x364f*0x1;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0x1d9f+-0x795*-0x2+0xe76);for(let _0x389ba6=0x1*0x1fde+-0x14c1+-0xb1d*0x1,_0x585969,_0x32e29b,_0x184dfe=0xe3b+0x417+-0x1252;_0x32e29b=_0x135bd8['\x63\x68\x61\x72\x41\x74'](_0x184dfe++);~_0x32e29b&&(_0x585969=_0x389ba6%(0x2c*-0xf+-0x1*-0x22a+0x6e)?_0x585969*(0x3fd+0x214f+0x1*-0x250c)+_0x32e29b:_0x32e29b,_0x389ba6++%(-0x3a3+0x880+0x1*-0x4d9))?_0xb9a22f+=_0x57011f||_0x2e951d['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x184dfe+(-0x6f+0xa4*0x1c+-0x1177))-(-0x1fb7+0x1d02+0x25*0x13)!==0x17ba+-0x277*0xd+0x1*0x851?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x3a4+-0xb1b+0xfbe&_0x585969>>(-(-0x10d3+-0x3*-0x5ae+-0x35)*_0x389ba6&-0x368+-0x2*0x8c6+0x14fa)):_0x389ba6:0x930+0x1a18+-0x2348){_0x32e29b=_0xc25c28['\x69\x6e\x64\x65\x78\x4f\x66'](_0x32e29b);}for(let _0x5900f6=-0xb70+0x18bb+-0xd4b,_0xf5212c=_0xb9a22f['\x6c\x65\x6e\x67\x74\x68'];_0x5900f6<_0xf5212c;_0x5900f6++){_0x5de6c1+='\x25'+('\x30\x30'+_0xb9a22f['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x5900f6)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x190d+0x51a*-0x7+-0xf*-0xb7))['\x73\x6c\x69\x63\x65'](-(0x1*0x1795+0x13*-0xb3+0x1*-0xa4a));}return decodeURIComponent(_0x5de6c1);};const _0x3d15e9=function(_0x1cf6c8,_0x5d3a6d){let _0x380547=[],_0xdb3640=0xb2*0x2+-0x1*0xfd4+0xe70,_0x3ffc34,_0x21e5d9='';_0x1cf6c8=_0x2b6876(_0x1cf6c8);let _0x241541;for(_0x241541=0xf9*0x28+-0x3*0x5a9+-0x15ed;_0x241541<0x509+0x1020*0x2+-0x2449;_0x241541++){_0x380547[_0x241541]=_0x241541;}for(_0x241541=0x1817+0x2ff*0xb+-0x390c;_0x241541<-0x180c+0x1654*-0x1+0x2f60;_0x241541++){_0xdb3640=(_0xdb3640+_0x380547[_0x241541]+_0x5d3a6d['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x241541%_0x5d3a6d['\x6c\x65\x6e\x67\x74\x68']))%(-0x1196+-0x1652+0x28e8),_0x3ffc34=_0x380547[_0x241541],_0x380547[_0x241541]=_0x380547[_0xdb3640],_0x380547[_0xdb3640]=_0x3ffc34;}_0x241541=0xeb+-0x7e2*-0x1+-0x8cd,_0xdb3640=0x39+-0x27e*-0x7+-0x1*0x11ab;for(let _0x52a00a=0x6*0x3+0x2bb*-0x1+0x3*0xe3;_0x52a00a<_0x1cf6c8['\x6c\x65\x6e\x67\x74\x68'];_0x52a00a++){_0x241541=(_0x241541+(0x257*0xb+0x1*-0x127+-0x1895))%(-0x1485*0x1+-0x117*-0x1+0x146e*0x1),_0xdb3640=(_0xdb3640+_0x380547[_0x241541])%(-0x12*-0xa4+-0x18db+0xe53*0x1),_0x3ffc34=_0x380547[_0x241541],_0x380547[_0x241541]=_0x380547[_0xdb3640],_0x380547[_0xdb3640]=_0x3ffc34,_0x21e5d9+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x1cf6c8['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x52a00a)^_0x380547[(_0x380547[_0x241541]+_0x380547[_0xdb3640])%(-0x9c8+0x24c1+-0x19f9*0x1)]);}return _0x21e5d9;};_0x200a['\x48\x51\x78\x6d\x74\x4c']=_0x3d15e9,_0x200a['\x75\x6f\x6a\x79\x52\x51']={},_0x200a['\x47\x44\x42\x79\x6a\x6d']=!![];}const _0x217433=_0x5cacad[-0x7f*-0x31+-0x18c2*-0x1+-0x3111],_0xeed9c4=_0x2f86e9+_0x217433,_0xf8fc5d=_0x200a['\x75\x6f\x6a\x79\x52\x51'][_0xeed9c4];if(!_0xf8fc5d){if(_0x200a['\x59\x73\x78\x6b\x79\x6f']===undefined){const _0x513cf3=function(_0x4226bc){this['\x6e\x49\x55\x69\x68\x64']=_0x4226bc,this['\x4d\x67\x79\x7a\x68\x6b']=[0x2211+-0x1*-0x113e+-0x334e,0x1*-0xce9+-0x2515*-0x1+-0x182c,0x16c+-0x76*0x5+0xe2],this['\x65\x69\x6f\x69\x4f\x67']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x72\x54\x56\x4a\x4c\x6d']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x53\x47\x58\x72\x5a\x78']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x513cf3['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x79\x51\x65\x77\x43\x57']=function(){const _0x4bddd6=new RegExp(this['\x72\x54\x56\x4a\x4c\x6d']+this['\x53\x47\x58\x72\x5a\x78']),_0x40976e=_0x4bddd6['\x74\x65\x73\x74'](this['\x65\x69\x6f\x69\x4f\x67']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x4d\x67\x79\x7a\x68\x6b'][-0xd*-0x249+-0x1fc*0x10+0x20c]:--this['\x4d\x67\x79\x7a\x68\x6b'][-0x78d*-0x3+0x2*0x7a6+0x43*-0x91];return this['\x43\x42\x78\x63\x47\x5a'](_0x40976e);},_0x513cf3['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x43\x42\x78\x63\x47\x5a']=function(_0x3e8771){if(!Boolean(~_0x3e8771))return _0x3e8771;return this['\x79\x71\x6c\x71\x51\x43'](this['\x6e\x49\x55\x69\x68\x64']);},_0x513cf3['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x79\x71\x6c\x71\x51\x43']=function(_0x3d49f2){for(let _0x4eed02=0x5*-0x3bd+0x243+0x106e,_0x4f1fa9=this['\x4d\x67\x79\x7a\x68\x6b']['\x6c\x65\x6e\x67\x74\x68'];_0x4eed02<_0x4f1fa9;_0x4eed02++){this['\x4d\x67\x79\x7a\x68\x6b']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x4f1fa9=this['\x4d\x67\x79\x7a\x68\x6b']['\x6c\x65\x6e\x67\x74\x68'];}return _0x3d49f2(this['\x4d\x67\x79\x7a\x68\x6b'][0x3*0x47+-0x1065*0x2+0x9*0x38d]);},(''+function(){return 0x508+0x1*0x2cd+-0x191*0x5;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x249d+0x74c*0x5+-0x4918)&&new _0x513cf3(_0x200a)['\x79\x51\x65\x77\x43\x57'](),_0x200a['\x59\x73\x78\x6b\x79\x6f']=!![];}_0x4992fc=_0x200a['\x48\x51\x78\x6d\x74\x4c'](_0x4992fc,_0x516832),_0x200a['\x75\x6f\x6a\x79\x52\x51'][_0xeed9c4]=_0x4992fc;}else _0x4992fc=_0xf8fc5d;return _0x4992fc;}function _0x5dd86f(_0x41b7c4){const _0x984832=_0x2fa995,_0x5ab00f={'\x51\x55\x48\x71\x75':function(_0x258642,_0xaa7861){return _0x258642(_0xaa7861);},'\x42\x67\x42\x6c\x53':function(_0x1aab1a,_0x39906f){return _0x1aab1a||_0x39906f;}},_0x1a6e9b=(_0x41b7c4&&_0x41b7c4[_0x984832(0x145,'\x31\x72\x6b\x4c')]?_0x5ab00f[_0x984832(0x239,'\x39\x62\x38\x41')](String,_0x41b7c4[_0x984832(0x2dc,'\x62\x74\x79\x68')]):'')[_0x984832(0x2aa,'\x72\x35\x54\x73')](),_0x29e5e1=(_0x41b7c4&&_0x41b7c4['\x73\x75\x6d\x6d\x61\x72\x79']?_0x5ab00f[_0x984832(0x2a1,'\x43\x32\x66\x26')](String,_0x41b7c4['\x73\x75\x6d\x6d\x61\x72\x79']):'')[_0x984832(0x1ed,'\x6b\x66\x39\x6c')]();return!!_0x5ab00f[_0x984832(0x23b,'\x4c\x44\x4d\x6b')](_0x1a6e9b,_0x29e5e1);}function _0x4572(){const _0x2c790e=['\x57\x36\x65\x79\x57\x37\x6c\x64\x4b\x4b\x6d\x55\x71\x71','\x57\x36\x2f\x64\x50\x38\x6f\x4f\x69\x53\x6b\x65\x42\x57','\x69\x65\x74\x63\x56\x5a\x33\x64\x54\x57','\x57\x34\x54\x65\x65\x43\x6b\x36\x44\x59\x68\x63\x56\x38\x6f\x31','\x6a\x38\x6b\x47\x6c\x4d\x68\x64\x49\x64\x4f\x6f\x46\x71','\x57\x35\x78\x64\x4b\x4b\x53','\x57\x51\x34\x50\x66\x57\x64\x63\x50\x43\x6b\x52\x57\x52\x4b','\x57\x4f\x4a\x64\x50\x73\x33\x63\x49\x67\x64\x63\x4a\x4b\x47\x57\x76\x47\x34\x5a\x71\x71','\x64\x38\x6b\x7a\x6c\x61\x4e\x64\x50\x71','\x57\x34\x53\x36\x57\x34\x48\x50\x74\x61','\x57\x34\x5a\x64\x48\x38\x6b\x7a\x66\x38\x6f\x79\x57\x52\x62\x62','\x57\x34\x52\x63\x53\x78\x52\x64\x49\x4a\x78\x64\x4b\x61','\x6c\x5a\x43\x50\x70\x43\x6b\x5a','\x74\x33\x61\x2f\x57\x35\x78\x63\x54\x47','\x57\x51\x56\x63\x53\x49\x79\x42','\x57\x34\x6c\x64\x4b\x43\x6f\x6a\x6e\x38\x6b\x6e','\x57\x51\x70\x63\x47\x4a\x71\x46\x69\x73\x42\x64\x54\x71','\x79\x66\x79\x5a','\x78\x53\x6b\x65\x57\x52\x4a\x63\x51\x38\x6b\x37\x57\x52\x4b','\x57\x50\x4e\x63\x50\x31\x46\x64\x51\x4a\x56\x64\x54\x71','\x6a\x73\x76\x34\x57\x36\x2f\x63\x49\x47','\x57\x51\x53\x49\x61\x65\x4e\x63\x53\x43\x6b\x38\x57\x52\x71\x55','\x57\x4f\x65\x47\x68\x5a\x4e\x63\x53\x47','\x44\x43\x6b\x2b\x57\x34\x33\x64\x4f\x6d\x6b\x71\x63\x59\x57\x70','\x57\x51\x34\x4f\x6e\x74\x4e\x63\x50\x47','\x67\x53\x6b\x73\x6a\x61\x42\x64\x47\x57','\x57\x50\x34\x49\x65\x4d\x74\x64\x48\x53\x6f\x70\x57\x50\x4a\x63\x50\x61','\x64\x49\x57\x71\x45\x53\x6b\x50','\x62\x73\x33\x64\x54\x65\x42\x63\x50\x61','\x57\x37\x58\x78\x57\x34\x42\x63\x51\x38\x6f\x33','\x57\x36\x68\x63\x47\x31\x4a\x64\x47\x64\x34','\x57\x35\x78\x64\x4f\x5a\x46\x64\x4a\x61','\x66\x72\x53\x34\x76\x6d\x6b\x56','\x57\x51\x6c\x64\x48\x47\x70\x64\x4d\x38\x6b\x59\x57\x35\x4c\x70\x63\x71','\x6a\x59\x58\x77','\x76\x6d\x6f\x52\x57\x52\x68\x64\x51\x43\x6b\x35\x57\x50\x78\x63\x4d\x71','\x57\x36\x33\x63\x55\x57\x52\x63\x51\x43\x6f\x62\x73\x47','\x73\x75\x75\x65\x6b\x43\x6b\x71','\x57\x51\x5a\x64\x4d\x58\x4a\x64\x54\x38\x6b\x4e','\x57\x36\x4e\x64\x49\x64\x79\x66\x6e\x49\x42\x64\x50\x74\x38','\x57\x35\x37\x64\x56\x38\x6b\x65\x61\x38\x6f\x6c','\x57\x51\x66\x5a\x6f\x49\x33\x63\x50\x6d\x6b\x6e','\x57\x50\x6a\x48\x62\x6d\x6f\x54\x64\x61','\x61\x33\x56\x64\x4d\x5a\x75','\x6b\x6d\x6b\x48\x57\x35\x70\x64\x51\x77\x4c\x52\x57\x36\x57','\x6d\x72\x35\x79\x57\x34\x52\x63\x47\x57','\x57\x34\x65\x70\x57\x36\x6e\x62\x46\x53\x6b\x64\x57\x35\x70\x63\x47\x57','\x66\x30\x68\x63\x54\x47','\x6c\x31\x42\x63\x4a\x4e\x70\x64\x54\x61','\x43\x6d\x6b\x69\x57\x34\x7a\x46\x57\x35\x47','\x57\x52\x42\x63\x54\x67\x38\x63\x57\x52\x6c\x63\x4c\x5a\x58\x4a','\x42\x68\x69\x33\x79\x53\x6f\x4e','\x68\x74\x43\x74\x6f\x38\x6b\x59\x62\x4c\x4c\x6e','\x77\x6d\x6b\x64\x57\x50\x70\x63\x52\x38\x6b\x33','\x57\x51\x38\x62\x57\x50\x61\x56\x6b\x32\x64\x64\x4a\x43\x6f\x30','\x65\x74\x30\x69\x44\x53\x6b\x38\x70\x71','\x57\x35\x46\x64\x52\x67\x4a\x64\x4e\x43\x6f\x54\x79\x53\x6b\x44\x57\x52\x65','\x64\x6d\x6b\x48\x57\x35\x5a\x64\x51\x4e\x48\x58','\x57\x51\x66\x4e\x6e\x71','\x57\x4f\x70\x64\x4e\x49\x4a\x64\x4d\x6d\x6b\x54','\x57\x35\x48\x68\x57\x34\x33\x63\x54\x38\x6f\x53\x62\x6d\x6f\x67\x57\x4f\x4f','\x62\x43\x6b\x6b\x57\x52\x64\x64\x4c\x53\x6b\x7a\x57\x35\x64\x63\x49\x53\x6f\x32','\x57\x36\x4a\x63\x55\x47\x5a\x63\x47\x47','\x42\x6d\x6b\x56\x57\x37\x68\x64\x4b\x73\x50\x64\x57\x34\x42\x63\x49\x61','\x57\x35\x53\x74\x57\x36\x5a\x64\x49\x75\x6d\x53\x72\x5a\x6d','\x57\x35\x74\x64\x54\x63\x5a\x64\x52\x6d\x6f\x31\x71\x33\x78\x64\x52\x61','\x57\x50\x64\x63\x47\x5a\x47\x7a\x57\x50\x71','\x6a\x6d\x6b\x6c\x46\x6d\x6b\x5a\x75\x61','\x6b\x58\x70\x63\x54\x62\x7a\x45\x57\x35\x44\x4c\x57\x50\x75','\x57\x35\x4e\x64\x56\x4a\x68\x64\x4a\x57','\x57\x34\x66\x65\x64\x43\x6b\x50\x46\x48\x6c\x63\x53\x53\x6f\x55','\x57\x51\x48\x4f\x70\x5a\x37\x63\x51\x6d\x6b\x72','\x57\x34\x6d\x67\x57\x34\x6c\x64\x55\x4d\x75','\x6c\x71\x46\x63\x56\x73\x44\x7a','\x57\x37\x43\x46\x57\x37\x4e\x64\x4c\x66\x30\x53\x76\x49\x34','\x57\x35\x4a\x63\x50\x32\x4a\x64\x4e\x73\x6c\x64\x53\x77\x4f','\x57\x50\x30\x2f\x57\x50\x68\x63\x51\x61\x71','\x7a\x68\x79\x36','\x70\x6d\x6b\x72\x62\x48\x42\x64\x47\x64\x70\x64\x47\x57','\x6e\x71\x6a\x61\x57\x37\x74\x63\x52\x61','\x65\x43\x6b\x45\x74\x43\x6b\x73\x78\x47','\x64\x5a\x61\x73\x70\x38\x6b\x59\x70\x66\x44\x71','\x57\x52\x54\x54\x57\x50\x53\x36\x57\x4f\x38','\x57\x34\x46\x64\x54\x71\x78\x63\x56\x67\x2f\x63\x53\x74\x7a\x4d\x75\x71\x70\x63\x4c\x68\x46\x63\x48\x71','\x61\x53\x6b\x6d\x57\x4f\x74\x64\x4a\x6d\x6b\x6b\x57\x35\x78\x63\x4c\x57','\x57\x51\x76\x6f\x67\x43\x6f\x64\x6f\x61','\x57\x52\x37\x63\x52\x63\x6d\x36\x57\x52\x78\x63\x4d\x71','\x57\x36\x75\x66\x57\x36\x46\x64\x4d\x65\x75\x73\x74\x73\x4b','\x70\x61\x6c\x63\x54\x62\x72\x6c\x57\x37\x76\x4b','\x57\x34\x56\x64\x54\x68\x4c\x6a\x57\x34\x75','\x72\x43\x6b\x42\x57\x37\x68\x63\x53\x43\x6b\x6d','\x6d\x49\x31\x61\x57\x36\x56\x63\x55\x4b\x7a\x36\x57\x36\x53','\x69\x53\x6b\x4a\x57\x37\x64\x64\x4f\x76\x38','\x57\x50\x69\x4b\x69\x64\x64\x63\x4b\x57','\x57\x52\x68\x63\x4f\x77\x4e\x64\x51\x61\x61','\x68\x73\x4f\x67\x6e\x6d\x6b\x4e\x64\x30\x30','\x57\x4f\x72\x50\x57\x4f\x47\x38\x57\x50\x39\x36\x6d\x68\x79','\x79\x77\x43\x54\x57\x35\x56\x63\x47\x65\x69\x5a\x66\x57','\x72\x38\x6f\x2f\x57\x51\x4a\x64\x49\x43\x6b\x4d','\x57\x51\x5a\x64\x53\x61\x37\x64\x48\x6d\x6f\x6a\x46\x4b\x30\x64','\x64\x74\x30\x69\x45\x57','\x57\x51\x6d\x37\x6a\x53\x6f\x52\x68\x38\x6b\x6e\x57\x50\x6c\x64\x4a\x71','\x62\x32\x68\x64\x55\x59\x4c\x66\x57\x34\x35\x6b\x57\x35\x43','\x57\x51\x64\x63\x54\x59\x78\x63\x4e\x53\x6b\x4e\x6a\x43\x6f\x63\x57\x37\x65','\x6f\x38\x6b\x43\x62\x62\x42\x64\x49\x47\x4e\x64\x4a\x4e\x79','\x68\x4d\x2f\x64\x4e\x64\x35\x46','\x79\x43\x6b\x57\x57\x36\x6c\x63\x4e\x78\x61','\x57\x34\x50\x42\x57\x34\x56\x63\x4f\x6d\x6f\x37\x70\x53\x6f\x57\x57\x4f\x61','\x77\x53\x6b\x6a\x57\x34\x58\x6c\x57\x37\x75','\x65\x38\x6b\x57\x57\x35\x70\x64\x52\x32\x62\x38\x57\x34\x64\x63\x56\x47','\x57\x52\x52\x64\x55\x49\x68\x64\x4e\x43\x6b\x63','\x78\x45\x6b\x62\x49\x66\x58\x48\x57\x52\x47\x4b\x73\x4c\x53','\x57\x52\x31\x50\x70\x64\x4a\x63\x55\x43\x6b\x38\x41\x53\x6f\x72','\x57\x35\x56\x64\x53\x38\x6b\x63\x65\x6d\x6f\x41','\x63\x74\x4b\x65\x7a\x57','\x76\x43\x6b\x4f\x57\x35\x52\x64\x4a\x32\x62\x33\x57\x36\x30','\x64\x53\x6b\x6f\x57\x34\x78\x64\x4d\x30\x65','\x57\x4f\x31\x6e\x57\x4f\x38\x66\x57\x52\x57','\x45\x38\x6b\x38\x57\x35\x64\x63\x50\x38\x6b\x71\x65\x71','\x57\x35\x53\x62\x57\x35\x2f\x64\x4d\x43\x6b\x53\x6b\x53\x6f\x7a\x57\x52\x79','\x57\x34\x64\x64\x47\x6d\x6f\x2f\x57\x37\x50\x55','\x45\x43\x6b\x31\x57\x36\x2f\x64\x4b\x74\x66\x50\x57\x35\x56\x63\x4f\x71','\x57\x52\x4f\x43\x6f\x75\x2f\x64\x49\x47','\x63\x6d\x6f\x30\x57\x50\x4a\x64\x4d\x43\x6b\x4e\x57\x50\x52\x63\x4b\x47','\x6d\x49\x66\x67\x57\x36\x4e\x63\x49\x57','\x6d\x68\x79\x38\x57\x35\x37\x63\x51\x77\x57\x77','\x63\x73\x34\x76\x46\x47','\x57\x4f\x76\x4b\x6b\x4a\x33\x63\x4f\x53\x6b\x72\x45\x53\x6f\x52','\x63\x6d\x6b\x4d\x57\x51\x37\x64\x47\x43\x6b\x43','\x44\x78\x75\x65\x6c\x6d\x6b\x4c','\x62\x4b\x46\x63\x47\x62\x64\x64\x4a\x64\x53','\x44\x5a\x2f\x64\x50\x31\x30\x4e','\x46\x4b\x4f\x57\x78\x53\x6f\x49\x43\x59\x30','\x6a\x68\x56\x63\x4b\x49\x62\x2b\x57\x51\x4c\x2b\x77\x67\x56\x63\x56\x38\x6f\x78\x57\x52\x78\x63\x4e\x61\x65','\x57\x35\x48\x71\x57\x35\x4f','\x44\x76\x47\x7a\x70\x53\x6b\x59','\x6b\x66\x6c\x63\x53\x31\x6c\x64\x53\x71','\x57\x4f\x6e\x54\x57\x50\x38\x52','\x57\x50\x70\x63\x48\x77\x75','\x57\x50\x6d\x6f\x6f\x4c\x37\x64\x49\x57','\x66\x6d\x6b\x72\x57\x35\x4e\x63\x47\x53\x6b\x6c\x57\x35\x37\x63\x47\x43\x6f\x48','\x57\x35\x5a\x64\x4f\x5a\x68\x64\x48\x53\x6f\x31\x71\x57','\x6c\x53\x6b\x37\x6c\x63\x56\x64\x54\x61','\x64\x5a\x2f\x63\x4d\x74\x66\x39','\x57\x52\x75\x31\x61\x33\x37\x64\x54\x47','\x57\x51\x78\x63\x4c\x43\x6b\x53\x57\x4f\x34\x38\x74\x53\x6f\x44\x76\x53\x6b\x42\x43\x53\x6b\x5a\x57\x4f\x74\x63\x48\x47','\x57\x34\x6d\x68\x57\x35\x68\x64\x4e\x43\x6b\x56\x61\x6d\x6f\x6b\x57\x50\x34','\x57\x35\x75\x65\x57\x36\x6e\x46\x42\x47','\x41\x30\x30\x59\x78\x47','\x57\x52\x4f\x76\x57\x50\x6c\x63\x50\x75\x53','\x61\x47\x4e\x63\x55\x47\x76\x78','\x57\x52\x7a\x66\x57\x51\x64\x63\x49\x47\x72\x39\x65\x47\x7a\x66\x57\x52\x66\x43\x76\x6d\x6b\x43','\x57\x4f\x56\x63\x54\x49\x4e\x63\x4e\x47','\x57\x52\x74\x63\x49\x5a\x34\x76\x69\x61','\x57\x50\x37\x63\x4f\x63\x71','\x57\x52\x4b\x76\x57\x4f\x6c\x63\x52\x30\x64\x63\x4f\x5a\x34','\x63\x31\x78\x63\x50\x33\x52\x63\x55\x61\x7a\x65\x57\x52\x4b','\x73\x6d\x6b\x6c\x57\x37\x48\x54','\x57\x50\x7a\x59\x6f\x38\x6f\x38\x67\x43\x6b\x78\x57\x50\x74\x63\x4f\x61','\x57\x35\x56\x64\x53\x63\x53','\x57\x4f\x79\x4d\x6c\x77\x6c\x64\x55\x61','\x57\x51\x52\x63\x52\x49\x71\x79\x57\x52\x78\x63\x49\x73\x65','\x57\x50\x6c\x49\x47\x42\x37\x63\x4f\x47','\x41\x38\x6b\x35\x57\x37\x42\x64\x4c\x5a\x7a\x70\x57\x34\x52\x63\x47\x71','\x6d\x6d\x6b\x49\x42\x43\x6b\x31\x43\x57','\x6a\x47\x33\x64\x55\x31\x2f\x63\x4b\x71','\x57\x36\x46\x63\x4d\x4d\x42\x63\x4c\x53\x6f\x59\x57\x4f\x69\x75\x69\x43\x6f\x51\x45\x63\x56\x63\x48\x38\x6f\x49','\x73\x43\x6f\x33\x57\x51\x70\x64\x52\x38\x6b\x35\x57\x50\x33\x63\x4a\x53\x6b\x68','\x57\x51\x78\x64\x48\x74\x4e\x64\x4a\x6d\x6b\x4c','\x79\x76\x61\x2b\x75\x53\x6f\x56\x78\x4a\x70\x64\x55\x57','\x57\x50\x66\x56\x6a\x6d\x6f\x34\x61\x53\x6b\x68\x57\x4f\x46\x63\x4c\x61','\x57\x36\x62\x38\x57\x37\x42\x63\x53\x38\x6f\x55','\x57\x52\x56\x64\x49\x63\x47','\x57\x52\x57\x70\x62\x59\x56\x63\x4c\x61','\x57\x52\x6c\x64\x4a\x64\x5a\x64\x49\x53\x6b\x30\x57\x35\x75','\x57\x35\x53\x41\x57\x35\x56\x64\x4b\x71','\x7a\x68\x34\x7a\x68\x38\x6b\x6e\x57\x34\x37\x63\x56\x57','\x57\x52\x4c\x73\x57\x51\x68\x63\x50\x53\x6b\x44\x71\x53\x6f\x71\x77\x61','\x67\x48\x47\x4f\x77\x38\x6b\x46','\x57\x36\x74\x64\x49\x43\x6f\x54\x57\x34\x54\x51\x67\x38\x6b\x30\x45\x71','\x57\x50\x75\x48\x57\x4f\x56\x63\x4f\x72\x37\x64\x49\x57','\x66\x53\x6b\x61\x57\x50\x46\x64\x52\x6d\x6b\x65\x57\x35\x33\x63\x47\x43\x6f\x79','\x57\x36\x37\x63\x54\x48\x56\x63\x4a\x38\x6f\x31','\x57\x4f\x75\x4e\x61\x47\x37\x63\x4d\x61','\x46\x38\x6f\x7a\x57\x52\x46\x64\x56\x53\x6b\x72','\x57\x4f\x62\x37\x57\x51\x38\x36\x57\x50\x50\x78\x6d\x77\x65','\x57\x34\x78\x64\x4a\x53\x6f\x6a\x69\x43\x6b\x61','\x57\x4f\x47\x55\x57\x50\x6c\x63\x52\x59\x6c\x64\x4a\x76\x6e\x34','\x57\x50\x56\x63\x52\x66\x6d','\x57\x50\x4b\x34\x65\x77\x6c\x64\x55\x53\x6f\x74','\x74\x4d\x56\x63\x49\x63\x42\x64\x54\x58\x4e\x64\x4f\x43\x6b\x6f\x57\x4f\x33\x64\x4d\x38\x6f\x51\x46\x6d\x6f\x41','\x57\x50\x31\x54\x57\x4f\x38\x52','\x57\x34\x61\x42\x57\x37\x6c\x64\x48\x75\x61','\x73\x38\x6b\x78\x57\x36\x58\x52\x57\x37\x56\x64\x50\x38\x6b\x38','\x70\x58\x79\x50\x6b\x38\x6b\x5a','\x6f\x43\x6b\x79\x63\x71','\x6d\x38\x6b\x32\x6f\x77\x5a\x64\x4c\x64\x53\x6f\x79\x57','\x74\x47\x64\x64\x4f\x63\x4e\x63\x4f\x48\x61\x30\x57\x52\x54\x46\x57\x50\x7a\x74\x57\x37\x57\x53','\x57\x51\x6a\x65\x57\x4f\x74\x63\x52\x53\x6b\x46\x72\x38\x6f\x49\x75\x47','\x57\x35\x5a\x64\x4c\x66\x50\x48\x57\x35\x58\x52\x69\x33\x69','\x46\x4c\x61\x4f\x71\x43\x6f\x47\x7a\x61\x56\x64\x53\x61','\x57\x51\x68\x63\x4a\x57\x61\x34\x6b\x57','\x6b\x49\x44\x72\x57\x36\x74\x63\x47\x47\x75\x6a\x57\x37\x43','\x57\x37\x74\x64\x54\x38\x6f\x52\x6b\x47','\x6a\x58\x4f\x4d\x77\x38\x6b\x32','\x61\x4b\x64\x63\x54\x5a\x33\x64\x54\x57','\x57\x34\x6d\x4a\x57\x35\x56\x64\x50\x33\x38','\x78\x38\x6b\x6d\x57\x34\x56\x64\x53\x62\x79','\x57\x35\x56\x64\x53\x38\x6f\x6c\x57\x34\x58\x6e','\x57\x36\x37\x63\x55\x47\x68\x63\x4b\x43\x6f\x43\x72\x47','\x57\x37\x75\x70\x57\x36\x58\x77','\x6e\x43\x6b\x31\x57\x51\x4a\x64\x52\x6d\x6b\x4d','\x78\x38\x6b\x67\x57\x4f\x37\x63\x4f\x6d\x6b\x33','\x57\x50\x43\x34\x67\x4d\x56\x64\x51\x47','\x67\x65\x74\x63\x4a\x58\x74\x64\x49\x71','\x68\x74\x43\x61\x6b\x6d\x6b\x59\x65\x67\x4c\x44','\x57\x50\x68\x63\x49\x77\x64\x63\x47\x4e\x44\x45\x57\x34\x6e\x76','\x57\x51\x71\x74\x57\x50\x79\x2b\x65\x73\x4a\x64\x48\x43\x6f\x4a','\x57\x36\x43\x7a\x57\x37\x52\x64\x4a\x4b\x75\x2f\x75\x73\x71','\x6c\x57\x47\x69\x79\x53\x6b\x31','\x57\x51\x6d\x39\x57\x4f\x74\x63\x53\x71\x37\x64\x4d\x48\x79\x4e','\x6c\x53\x6b\x61\x57\x50\x56\x64\x4c\x53\x6b\x7a\x57\x35\x4a\x63\x48\x38\x6f\x4c','\x57\x36\x37\x63\x55\x76\x6c\x64\x4a\x48\x43','\x78\x74\x31\x43\x79\x38\x6b\x4f\x6b\x4b\x6e\x65','\x74\x43\x6b\x35\x57\x36\x72\x38\x57\x35\x34','\x69\x53\x6b\x4e\x6e\x78\x4e\x64\x4c\x59\x30\x31','\x57\x50\x42\x63\x54\x58\x70\x63\x4c\x53\x6b\x52\x6b\x53\x6f\x79\x57\x36\x57','\x57\x37\x42\x63\x54\x47\x64\x63\x4d\x6d\x6f\x42','\x57\x51\x43\x77\x57\x4f\x57','\x79\x33\x53\x59\x64\x53\x6b\x67\x57\x35\x4b','\x57\x34\x7a\x6f\x70\x6d\x6b\x34\x43\x5a\x4e\x63\x51\x53\x6f\x4b','\x46\x4b\x53\x56\x75\x53\x6f\x33\x7a\x64\x70\x64\x50\x57','\x6a\x5a\x54\x78','\x57\x51\x5a\x63\x51\x73\x47\x79\x57\x52\x56\x63\x4b\x4a\x57\x43','\x63\x73\x79\x76\x65\x53\x6b\x5a\x61\x77\x54\x67','\x57\x52\x4a\x64\x4a\x49\x46\x64\x4a\x43\x6b\x54','\x57\x50\x38\x75\x67\x49\x68\x63\x52\x47','\x63\x31\x68\x63\x4e\x72\x6c\x64\x4a\x61\x5a\x64\x4e\x38\x6b\x2f','\x57\x51\x6d\x49\x68\x47\x5a\x63\x4f\x53\x6b\x36','\x57\x51\x7a\x31\x67\x71\x2f\x63\x49\x71','\x57\x37\x6c\x64\x52\x65\x54\x51\x57\x34\x30','\x57\x50\x7a\x33\x6d\x57','\x57\x52\x68\x63\x52\x62\x61\x66\x57\x51\x2f\x63\x4b\x59\x69\x49','\x74\x38\x6b\x53\x57\x37\x6c\x64\x54\x74\x79','\x57\x4f\x66\x5a\x6e\x38\x6f\x57\x67\x6d\x6b\x39\x57\x4f\x4e\x63\x49\x71','\x67\x6d\x6b\x6b\x57\x4f\x33\x64\x47\x38\x6b\x68\x57\x36\x42\x63\x49\x6d\x6f\x2b','\x57\x35\x64\x63\x54\x31\x37\x64\x4c\x4a\x46\x64\x4d\x4d\x69\x4b','\x44\x4e\x53\x5a\x65\x38\x6b\x70\x57\x34\x52\x63\x56\x49\x47','\x57\x36\x43\x78\x57\x52\x68\x63\x52\x53\x6b\x43\x64\x47','\x57\x51\x6c\x64\x4a\x63\x6c\x64\x47\x43\x6b\x75\x57\x35\x39\x59\x62\x57','\x76\x53\x6b\x77\x57\x34\x72\x38\x57\x35\x30','\x64\x73\x4b\x70\x45\x57','\x57\x50\x31\x45\x57\x52\x75\x68\x57\x50\x75','\x73\x43\x6f\x58\x57\x4f\x74\x64\x54\x38\x6b\x55','\x57\x52\x42\x63\x53\x57\x34\x65\x57\x51\x4a\x63\x4e\x5a\x79','\x57\x37\x74\x64\x4f\x38\x6f\x74\x6b\x38\x6b\x4b','\x57\x50\x64\x63\x4f\x49\x79','\x57\x51\x58\x30\x6f\x49\x42\x63\x51\x43\x6b\x52\x41\x38\x6f\x41','\x57\x35\x62\x78\x57\x37\x56\x63\x56\x6d\x6f\x35\x6f\x43\x6f\x64\x57\x4f\x53','\x61\x73\x47\x30\x70\x6d\x6b\x72','\x6d\x49\x44\x2b\x57\x36\x52\x63\x4d\x75\x58\x42\x57\x34\x65','\x57\x51\x46\x63\x48\x57\x42\x63\x49\x38\x6b\x63','\x57\x51\x31\x70\x57\x50\x78\x63\x54\x38\x6b\x41','\x74\x38\x6b\x66\x57\x50\x78\x63\x53\x43\x6b\x33\x57\x51\x68\x64\x48\x48\x65','\x44\x4e\x34\x33\x67\x43\x6b\x67','\x77\x6d\x6b\x79\x57\x4f\x37\x63\x52\x47','\x57\x35\x6d\x7a\x57\x37\x66\x77\x41\x43\x6b\x30\x57\x37\x6c\x63\x4b\x47','\x57\x52\x50\x4f\x6a\x59\x42\x63\x51\x61','\x57\x37\x64\x63\x53\x74\x64\x63\x4e\x53\x6f\x62\x77\x47','\x6e\x72\x68\x63\x51\x57','\x57\x52\x50\x55\x69\x71','\x57\x36\x56\x63\x52\x64\x5a\x63\x4b\x38\x6f\x66\x74\x31\x65\x79','\x57\x50\x66\x5a\x6d\x38\x6f\x39\x76\x53\x6b\x64\x57\x50\x70\x63\x4e\x47','\x7a\x38\x6b\x37\x57\x35\x74\x63\x52\x43\x6b\x79\x64\x77\x34','\x57\x4f\x76\x2b\x69\x53\x6f\x75\x66\x38\x6b\x41\x57\x51\x4e\x63\x47\x57','\x57\x34\x42\x63\x53\x47\x4e\x63\x4a\x53\x6f\x7a','\x57\x36\x75\x66\x57\x36\x46\x64\x4d\x65\x75\x73\x74\x73\x6d','\x76\x77\x47\x45\x73\x38\x6f\x52','\x57\x52\x34\x4a\x6a\x58\x33\x63\x53\x38\x6b\x4e\x57\x52\x6d\x4d','\x6b\x59\x4a\x63\x47\x64\x53\x4e\x57\x36\x54\x50\x64\x71','\x64\x4a\x75\x72\x45\x53\x6b\x58\x6b\x76\x31\x65','\x45\x33\x30\x67\x57\x35\x56\x63\x47\x4b\x4f\x31\x67\x57','\x79\x76\x4f\x5a\x76\x6d\x6f\x33\x41\x71','\x6a\x43\x6b\x53\x57\x37\x4a\x64\x51\x4e\x4f','\x57\x52\x69\x43\x57\x50\x71\x4c\x67\x67\x4e\x64\x4c\x53\x6f\x36','\x57\x4f\x7a\x53\x57\x50\x4b\x61\x57\x50\x35\x73','\x57\x52\x37\x63\x53\x59\x4f','\x63\x53\x6b\x52\x57\x35\x56\x64\x4f\x57','\x57\x34\x64\x64\x4c\x38\x6b\x56\x6c\x43\x6f\x4e','\x62\x6d\x6b\x54\x57\x34\x68\x64\x55\x77\x76\x31\x57\x37\x70\x63\x51\x61','\x66\x67\x64\x64\x49\x74\x66\x65','\x6d\x38\x6b\x57\x42\x53\x6b\x67\x45\x47','\x6e\x53\x6b\x61\x64\x62\x5a\x64\x55\x5a\x37\x64\x4a\x4e\x75','\x78\x6d\x6f\x4f\x57\x4f\x64\x64\x51\x43\x6b\x4b\x57\x50\x78\x63\x47\x38\x6b\x69','\x7a\x38\x6b\x48\x57\x34\x56\x63\x54\x61','\x57\x35\x76\x72\x57\x35\x64\x63\x54\x43\x6f\x53\x6d\x57','\x66\x4e\x2f\x63\x47\x4c\x46\x64\x56\x61','\x57\x4f\x72\x4e\x57\x50\x47\x36','\x57\x36\x4f\x78\x57\x37\x4e\x64\x4d\x61','\x57\x36\x5a\x63\x4a\x57\x6c\x63\x48\x6d\x6f\x34','\x75\x78\x64\x64\x4e\x77\x33\x63\x53\x65\x52\x63\x50\x6d\x6b\x37','\x63\x49\x79\x61\x70\x53\x6b\x51\x63\x4c\x62\x72','\x57\x51\x31\x6c\x6e\x63\x5a\x63\x47\x57','\x57\x52\x39\x79\x57\x51\x68\x63\x51\x6d\x6b\x44','\x57\x36\x2f\x64\x4f\x43\x6f\x4e\x67\x6d\x6b\x6f\x46\x57','\x57\x37\x74\x64\x54\x64\x42\x64\x48\x61','\x44\x49\x64\x64\x47\x78\x4f\x4d\x57\x34\x79\x47\x63\x71','\x63\x74\x30\x70\x45\x6d\x6b\x63\x6f\x4b\x50\x6f','\x7a\x49\x33\x64\x4b\x32\x61\x48\x57\x37\x79\x4e\x6a\x61','\x61\x43\x6b\x6b\x57\x51\x6c\x64\x48\x38\x6b\x41','\x57\x50\x7a\x49\x6a\x53\x6f\x38','\x64\x49\x47\x6f\x43\x53\x6b\x50\x6c\x75\x48\x75','\x57\x50\x46\x63\x54\x75\x33\x64\x56\x74\x46\x64\x4f\x67\x62\x47','\x57\x36\x34\x7a\x57\x37\x33\x64\x4b\x57','\x57\x52\x47\x4e\x6a\x59\x33\x63\x51\x57','\x79\x78\x43\x55\x57\x35\x5a\x63\x4a\x30\x4b\x52\x66\x57','\x68\x73\x79\x61\x6b\x6d\x6b\x4c\x63\x57','\x57\x51\x56\x63\x47\x4a\x4b\x72\x6d\x73\x53','\x57\x52\x62\x4b\x57\x50\x30\x38\x57\x51\x69','\x57\x51\x47\x6b\x57\x50\x34','\x57\x50\x50\x54\x57\x50\x30\x54\x57\x50\x72\x45','\x6c\x62\x2f\x63\x4c\x57\x54\x6d\x57\x37\x76\x59\x57\x52\x47','\x57\x50\x74\x63\x4c\x67\x2f\x63\x49\x67\x31\x4f\x57\x34\x76\x46','\x41\x66\x65\x37\x78\x6d\x6f\x58\x79\x4a\x65','\x57\x4f\x57\x50\x57\x51\x70\x63\x49\x75\x53','\x57\x35\x66\x62\x57\x35\x57','\x65\x74\x6d\x42\x77\x53\x6b\x5a\x69\x4b\x50\x6f','\x64\x4a\x6d\x6a\x79\x43\x6b\x2b\x6c\x78\x62\x64','\x6c\x43\x6b\x5a\x63\x47\x42\x64\x4f\x61','\x57\x34\x53\x6e\x57\x35\x70\x64\x4d\x6d\x6b\x56\x6e\x53\x6f\x64\x57\x50\x34','\x63\x53\x6b\x68\x72\x53\x6b\x55\x73\x62\x52\x63\x54\x6d\x6f\x78','\x57\x50\x61\x32\x57\x52\x6c\x63\x4a\x47\x71','\x57\x51\x6c\x64\x47\x63\x74\x64\x47\x38\x6b\x4c','\x57\x52\x70\x63\x52\x43\x6b\x79\x42\x38\x6f\x52\x57\x36\x44\x4f\x57\x34\x72\x55\x57\x50\x33\x63\x49\x58\x38','\x74\x53\x6b\x46\x57\x4f\x37\x63\x52\x38\x6b\x32\x57\x50\x37\x64\x4a\x47\x69','\x57\x34\x74\x64\x4b\x6d\x6b\x79\x61\x6d\x6f\x43\x57\x52\x30','\x57\x50\x2f\x63\x51\x31\x46\x64\x51\x4a\x56\x64\x54\x71','\x57\x34\x31\x67\x57\x35\x46\x63\x56\x57','\x66\x53\x6b\x61\x57\x50\x70\x64\x56\x43\x6b\x7a\x57\x35\x5a\x63\x48\x38\x6f\x57','\x57\x36\x30\x78\x57\x34\x78\x64\x4d\x4d\x65','\x57\x35\x53\x62\x57\x34\x42\x64\x4b\x6d\x6b\x4d','\x57\x35\x4f\x46\x57\x36\x62\x53\x42\x53\x6b\x6f\x57\x37\x42\x63\x4c\x57','\x57\x50\x75\x55\x64\x33\x78\x64\x55\x6d\x6f\x65\x57\x4f\x78\x63\x4b\x61','\x57\x52\x57\x2b\x57\x50\x74\x63\x56\x32\x4f','\x61\x77\x64\x64\x54\x5a\x76\x45\x57\x35\x6d','\x42\x38\x6b\x61\x57\x4f\x2f\x63\x51\x43\x6b\x76','\x57\x50\x56\x63\x4b\x4b\x64\x63\x4d\x77\x54\x47\x57\x35\x6d','\x74\x43\x6f\x54\x57\x4f\x70\x64\x53\x57','\x70\x38\x6f\x4e\x57\x50\x6c\x64\x50\x61','\x57\x35\x64\x64\x55\x74\x4e\x64\x49\x6d\x6f\x59\x43\x4b\x2f\x64\x4f\x71','\x65\x38\x6b\x2f\x64\x47\x33\x64\x48\x71','\x75\x53\x6b\x31\x57\x36\x5a\x64\x47\x64\x54\x55\x57\x34\x68\x63\x4a\x71','\x62\x30\x70\x63\x4d\x48\x74\x64\x4b\x61\x70\x64\x4c\x38\x6b\x56','\x45\x53\x6f\x39\x57\x50\x37\x64\x56\x53\x6f\x52\x57\x35\x79','\x57\x35\x52\x64\x4f\x47\x56\x64\x48\x6d\x6f\x58\x74\x65\x4a\x64\x53\x71','\x61\x38\x6b\x62\x76\x38\x6b\x75\x74\x59\x64\x63\x53\x6d\x6f\x73','\x57\x34\x64\x64\x50\x64\x78\x64\x4a\x6d\x6f\x39\x78\x31\x38','\x57\x34\x42\x64\x56\x78\x4a\x64\x48\x6d\x6f\x31\x46\x43\x6f\x6f\x57\x36\x52\x63\x4a\x48\x71\x79\x73\x61','\x62\x6d\x6b\x42\x73\x6d\x6b\x66\x78\x47\x30','\x78\x53\x6b\x77\x57\x35\x58\x6c\x57\x37\x71','\x41\x53\x6b\x35\x57\x37\x42\x64\x55\x74\x66\x34\x57\x34\x4f','\x61\x4e\x33\x63\x4a\x62\x42\x64\x4c\x4a\x43','\x57\x51\x75\x68\x57\x50\x79\x38\x62\x67\x33\x64\x47\x61','\x57\x4f\x6d\x42\x57\x50\x74\x63\x49\x78\x43','\x6b\x73\x79\x70\x70\x57','\x57\x34\x4e\x63\x4b\x47\x5a\x63\x56\x43\x6f\x61','\x74\x43\x6b\x67\x57\x4f\x53','\x57\x35\x6c\x64\x4f\x49\x56\x64\x48\x6d\x6f\x4f\x43\x4b\x2f\x64\x51\x57','\x57\x34\x33\x64\x4f\x32\x48\x58\x57\x36\x61','\x69\x4d\x33\x63\x52\x59\x78\x64\x49\x57','\x68\x38\x6b\x61\x57\x52\x5a\x64\x4b\x53\x6b\x6b\x57\x34\x33\x63\x4b\x6d\x6f\x30','\x6e\x53\x6b\x43\x44\x38\x6b\x43\x79\x71','\x57\x4f\x38\x4e\x57\x4f\x64\x63\x4f\x62\x6c\x64\x49\x61','\x7a\x4d\x75\x54\x71\x53\x6f\x70','\x57\x36\x66\x4c\x78\x30\x30','\x57\x51\x53\x6d\x57\x50\x6c\x63\x51\x4b\x52\x63\x4a\x78\x35\x48','\x57\x34\x4b\x71\x57\x36\x78\x64\x4a\x6d\x6b\x4f','\x57\x4f\x42\x63\x53\x65\x37\x64\x50\x57','\x57\x50\x68\x63\x47\x67\x30','\x67\x4c\x52\x63\x53\x4e\x37\x64\x50\x65\x76\x47','\x57\x36\x4e\x64\x49\x63\x71\x46\x69\x49\x33\x64\x53\x62\x61','\x57\x35\x52\x64\x4f\x48\x37\x64\x49\x6d\x6f\x59\x72\x66\x6c\x64\x4f\x61','\x57\x35\x64\x63\x53\x78\x68\x64\x47\x62\x47','\x65\x59\x70\x63\x49\x74\x66\x6f','\x57\x4f\x75\x68\x66\x47\x46\x63\x50\x61','\x57\x51\x52\x63\x48\x49\x6d\x76\x6c\x72\x70\x64\x53\x61\x47','\x57\x51\x68\x64\x56\x62\x5a\x64\x55\x6d\x6b\x6f','\x57\x34\x46\x64\x56\x49\x4f','\x57\x51\x43\x61\x57\x50\x43\x56\x61\x67\x68\x64\x49\x38\x6f\x39','\x57\x37\x58\x70\x69\x53\x6b\x55\x72\x71','\x57\x52\x4b\x34\x62\x47\x4a\x63\x54\x43\x6b\x52\x57\x52\x4f\x34','\x6a\x71\x53\x74\x67\x6d\x6b\x6d','\x57\x36\x70\x64\x50\x6d\x6f\x55','\x67\x43\x6b\x71\x57\x4f\x65','\x6a\x71\x53\x67\x71\x6d\x6b\x58','\x57\x52\x5a\x64\x4a\x64\x70\x64\x4d\x38\x6b\x46\x57\x34\x6e\x6a\x64\x57','\x57\x51\x6a\x61\x57\x50\x30\x78\x57\x4f\x79','\x45\x72\x56\x64\x4b\x77\x65\x6b','\x57\x37\x70\x64\x4f\x6d\x6f\x4a\x6e\x43\x6b\x65\x43\x57','\x57\x4f\x53\x4f\x57\x52\x46\x63\x52\x48\x4f','\x61\x31\x68\x63\x52\x57\x78\x64\x49\x4a\x6c\x64\x4a\x57','\x71\x4a\x2f\x63\x4e\x4d\x30\x62\x57\x50\x66\x49\x57\x34\x65\x4e\x57\x4f\x61\x2f\x57\x35\x4b','\x57\x50\x4b\x31\x70\x4d\x4e\x64\x55\x6d\x6f\x66\x57\x50\x33\x63\x50\x47','\x74\x38\x6b\x6c\x57\x34\x2f\x63\x52\x38\x6b\x76\x63\x78\x6a\x44','\x57\x50\x56\x63\x50\x65\x4e\x64\x52\x64\x61','\x57\x4f\x68\x63\x4c\x78\x70\x63\x47\x4e\x44\x4d','\x6a\x53\x6b\x51\x57\x35\x68\x64\x47\x75\x61','\x63\x63\x43\x6a\x70\x38\x6b\x31','\x79\x6d\x6b\x48\x57\x37\x2f\x63\x51\x43\x6b\x62\x67\x4e\x6d','\x57\x37\x53\x47\x57\x36\x62\x6b\x76\x47','\x57\x52\x68\x64\x4a\x63\x74\x64\x50\x38\x6b\x31\x57\x35\x6a\x30\x68\x61','\x57\x35\x56\x64\x47\x43\x6b\x74\x66\x38\x6f\x42','\x57\x50\x37\x63\x51\x4a\x74\x63\x4d\x53\x6b\x4c\x67\x43\x6f\x74\x57\x36\x53','\x57\x35\x44\x4b\x57\x35\x70\x63\x4f\x6d\x6f\x69','\x77\x53\x6f\x75\x57\x51\x4a\x64\x4e\x53\x6b\x46','\x57\x35\x31\x72\x57\x35\x2f\x63\x54\x53\x6f\x30\x6d\x53\x6f\x62\x57\x4f\x53','\x57\x36\x61\x45\x57\x36\x4e\x64\x4f\x57','\x57\x35\x5a\x63\x48\x33\x37\x64\x4c\x74\x46\x64\x4c\x4e\x4f\x4f','\x41\x6d\x6b\x59\x57\x36\x74\x64\x4d\x59\x58\x2f\x57\x34\x4f','\x57\x34\x61\x64\x57\x37\x7a\x6b','\x65\x76\x78\x63\x55\x66\x33\x64\x56\x31\x76\x58','\x57\x52\x4b\x6d\x57\x4f\x4a\x63\x52\x47','\x44\x33\x47\x6b\x57\x52\x42\x64\x4d\x72\x4b\x43\x57\x36\x58\x6d\x6d\x53\x6f\x72\x44\x43\x6f\x2b','\x57\x50\x34\x49\x6a\x57\x74\x63\x4d\x57','\x57\x35\x6c\x64\x47\x30\x58\x42\x57\x34\x66\x71','\x75\x43\x6f\x33\x57\x4f\x74\x63\x54\x64\x34\x52\x57\x51\x52\x63\x47\x49\x76\x73\x57\x34\x71\x6b\x69\x61','\x57\x50\x68\x64\x4a\x64\x37\x64\x49\x47','\x57\x50\x46\x63\x51\x76\x65','\x57\x34\x68\x64\x54\x63\x4a\x64\x4a\x43\x6f\x39\x74\x4b\x6d','\x57\x4f\x38\x4a\x57\x4f\x4a\x63\x50\x58\x47','\x57\x34\x4e\x64\x48\x53\x6b\x66\x61\x53\x6f\x43\x57\x4f\x50\x6d\x57\x34\x34','\x57\x51\x42\x63\x4e\x47\x34\x68\x6e\x61','\x64\x5a\x4b\x6d\x46\x38\x6b\x38\x6b\x30\x4f','\x6c\x4b\x37\x63\x48\x4a\x78\x64\x4a\x57','\x57\x50\x56\x63\x4b\x4b\x46\x63\x47\x4e\x44\x4f\x57\x35\x35\x75','\x57\x50\x70\x63\x51\x59\x70\x63\x4b\x53\x6b\x51','\x69\x64\x58\x64\x57\x50\x5a\x64\x48\x71\x6a\x53\x77\x57','\x67\x31\x68\x64\x49\x4a\x58\x7a\x57\x34\x6d','\x57\x50\x66\x55\x6f\x38\x6f\x30\x66\x38\x6b\x71\x57\x50\x4b','\x57\x35\x6c\x64\x4f\x49\x56\x64\x48\x6d\x6f\x4f\x43\x4b\x2f\x64\x4f\x71','\x67\x4c\x46\x63\x4e\x72\x38','\x57\x34\x65\x66\x57\x37\x44\x62\x46\x53\x6b\x6f\x57\x34\x74\x63\x4d\x61','\x57\x51\x6c\x64\x4a\x63\x4a\x64\x4d\x57','\x57\x4f\x6e\x4f\x6a\x43\x6f\x38\x61\x53\x6f\x63','\x57\x35\x48\x45\x65\x6d\x6b\x47','\x68\x73\x57\x75\x6b\x6d\x6b\x4c\x62\x4d\x66\x41','\x6d\x53\x6b\x35\x70\x57','\x57\x51\x56\x63\x50\x74\x43\x63','\x66\x57\x75\x4c\x71\x6d\x6b\x4e','\x6e\x43\x6b\x38\x70\x77\x46\x64\x48\x49\x71\x49\x74\x61','\x57\x35\x50\x43\x57\x35\x2f\x63\x55\x38\x6f\x32\x62\x6d\x6f\x67\x57\x4f\x4f','\x61\x53\x6b\x6d\x57\x4f\x37\x64\x49\x38\x6b\x68\x57\x35\x4a\x63\x4c\x53\x6f\x34','\x74\x38\x6b\x59\x57\x51\x42\x63\x4d\x53\x6b\x61','\x57\x52\x48\x42\x57\x51\x56\x63\x50\x6d\x6b\x75','\x57\x51\x75\x65\x57\x50\x79\x51\x6e\x47','\x57\x4f\x56\x63\x53\x47\x71\x64\x61\x71','\x57\x35\x66\x71\x57\x35\x5a\x63\x47\x6d\x6f\x45','\x57\x35\x4a\x64\x4a\x53\x6f\x31\x70\x53\x6b\x48','\x65\x67\x68\x64\x4d\x4a\x47','\x67\x38\x6b\x6b\x57\x4f\x52\x64\x4a\x61','\x65\x38\x6b\x54\x57\x35\x78\x64\x4f\x32\x31\x31\x57\x36\x57','\x68\x68\x5a\x64\x47\x74\x50\x45\x57\x34\x4b','\x57\x51\x4e\x63\x4b\x58\x38\x37\x57\x52\x43','\x57\x52\x68\x64\x4a\x63\x74\x64\x4f\x43\x6b\x56\x57\x35\x72\x65\x6a\x57','\x57\x35\x5a\x64\x4b\x6d\x6b\x6f\x65\x57','\x57\x4f\x66\x68\x57\x34\x68\x64\x4d\x43\x6b\x56\x6f\x53\x6f\x6f\x57\x4f\x38','\x57\x37\x4e\x64\x51\x72\x64\x64\x4b\x53\x6f\x33','\x65\x65\x42\x63\x56\x78\x42\x64\x56\x30\x47','\x57\x35\x50\x45\x64\x43\x6b\x62\x44\x47','\x57\x50\x2f\x63\x54\x4e\x56\x64\x50\x4a\x42\x64\x51\x68\x44\x54','\x57\x51\x53\x4f\x65\x61','\x57\x4f\x31\x2f\x6d\x38\x6f\x67\x68\x38\x6b\x67','\x57\x4f\x58\x57\x57\x4f\x57\x57\x57\x4f\x76\x63\x6c\x61','\x57\x36\x42\x63\x55\x47\x5a\x63\x4e\x38\x6f\x6d\x73\x31\x53','\x41\x43\x6b\x55\x57\x35\x35\x49\x57\x35\x30','\x57\x4f\x53\x2f\x57\x52\x53\x65\x6a\x57','\x57\x52\x57\x38\x69\x47\x5a\x63\x4f\x61','\x57\x52\x69\x62\x57\x50\x57\x38\x62\x57','\x57\x35\x4f\x31\x57\x36\x62\x73\x43\x38\x6b\x70','\x57\x37\x57\x63\x57\x36\x78\x64\x4c\x32\x75','\x6c\x75\x46\x63\x47\x62\x69','\x57\x50\x4f\x33\x57\x52\x42\x63\x54\x62\x79','\x57\x4f\x6d\x2f\x66\x4d\x37\x64\x54\x43\x6f\x67\x57\x4f\x70\x63\x51\x47','\x57\x36\x4e\x64\x54\x43\x6f\x6d','\x57\x35\x72\x4e\x57\x34\x4e\x64\x51\x4c\x42\x63\x4c\x48\x30\x59','\x57\x37\x6c\x64\x48\x43\x6f\x53\x57\x36\x31\x53\x62\x53\x6b\x46'];_0x4572=function(){return _0x2c790e;};return _0x4572();}function _0x2b238f(_0x1b0269){const _0xc44a4a=_0x2fa995,_0x18f82f={};_0x18f82f[_0xc44a4a(0x24d,'\x31\x72\x6b\x4c')]=_0xc44a4a(0x18c,'\x39\x62\x38\x41')+_0xc44a4a(0x24e,'\x25\x28\x70\x45')+_0xc44a4a(0x1f4,'\x74\x59\x74\x50')+'\x72\x20\x63\x61\x70\x61\x62\x69'+_0xc44a4a(0x295,'\x21\x31\x36\x67'),_0x18f82f[_0xc44a4a(0x1bd,'\x53\x32\x49\x71')]=function(_0x15b42e,_0x4247fa){return _0x15b42e!=_0x4247fa;},_0x18f82f[_0xc44a4a(0x238,'\x66\x78\x65\x33')]=_0xc44a4a(0x1d9,'\x53\x49\x67\x5d'),_0x18f82f['\x58\x43\x46\x78\x44']=function(_0x2fa736,_0x5c2bb3){return _0x2fa736+_0x5c2bb3;},_0x18f82f['\x41\x74\x48\x67\x75']=_0xc44a4a(0x244,'\x5a\x6f\x56\x72')+_0xc44a4a(0x300,'\x4c\x44\x4d\x6b')+'\x64\x20\x61\x70\x70\x72\x6f\x61'+'\x63\x68\x20\x6d\x61\x79\x20\x66'+_0xc44a4a(0x211,'\x6b\x66\x39\x6c')+_0xc44a4a(0x27b,'\x39\x75\x57\x55')+_0xc44a4a(0x1f6,'\x39\x62\x38\x41')+'\x76\x65\x72\x69\x66\x79\x20\x62'+_0xc44a4a(0x2b8,'\x49\x23\x30\x44')+_0xc44a4a(0x27a,'\x43\x64\x51\x57'),_0x18f82f[_0xc44a4a(0x16a,'\x53\x49\x67\x5d')]=function(_0x5195fe,_0x5db72e){return _0x5195fe>_0x5db72e;};const _0x53e0e0=_0x18f82f,_0x4e992f=(_0x1b0269||[])[_0xc44a4a(0x2c4,'\x79\x67\x28\x72')](_0x5dd86f);if(!_0x4e992f['\x6c\x65\x6e\x67\x74\x68'])return'';const _0x3b8df7=[_0x53e0e0[_0xc44a4a(0x186,'\x68\x24\x53\x68')]];let _0x1e7b76=![];for(const _0x19707c of _0x4e992f){const _0x214732=(_0x19707c[_0xc44a4a(0x214,'\x53\x32\x49\x71')]||'')[_0xc44a4a(0x245,'\x47\x65\x43\x51')]()[_0xc44a4a(0x278,'\x48\x4c\x48\x29')](-0x1b1*0x12+0x37+0x1e3b,-0x2408+0x253b+-0xe3),_0x16634f=(_0x19707c[_0xc44a4a(0x263,'\x55\x28\x50\x5d')]||'')['\x74\x6f\x53\x74\x72\x69\x6e\x67']()[_0xc44a4a(0x1a9,'\x25\x28\x70\x45')](/\s+/g,'\x20')[_0xc44a4a(0x2e8,'\x53\x32\x49\x71')]()[_0xc44a4a(0x274,'\x43\x64\x51\x57')](-0x239f+-0x65*-0x2+0x22d5,_0x3dda91),_0x26fba4=_0x53e0e0[_0xc44a4a(0x26a,'\x5b\x5d\x35\x54')](_0x19707c[_0xc44a4a(0x2d6,'\x79\x67\x28\x72')+'\x74\x79'],null)?_0x19707c[_0xc44a4a(0x1db,'\x5b\x5d\x35\x54')+'\x74\x79'][_0xc44a4a(0x191,'\x39\x62\x38\x41')](-0x2d*0x2b+-0x1*-0xb61+-0x3d0):'\x3f',_0x1c5752=_0x19707c[_0xc44a4a(0x15c,'\x72\x72\x5d\x66')]?_0xc44a4a(0x1b4,'\x5a\x6f\x56\x72')+_0x19707c[_0xc44a4a(0x21b,'\x26\x6e\x76\x6a')]:_0xc44a4a(0x2a9,'\x44\x36\x51\x6e')+'\x6e\x70\x75\x62\x6c\x69\x73\x68'+'\x65\x64';if(_0x19707c[_0xc44a4a(0x2f3,'\x34\x64\x4c\x58')])_0x1e7b76=!![];_0x3b8df7[_0xc44a4a(0x27c,'\x25\x55\x76\x43')]('\x2d\x20'+(_0x214732?_0xc44a4a(0x15a,'\x62\x74\x79\x68')+_0x214732+'\x22':_0x53e0e0[_0xc44a4a(0x1c7,'\x6b\x66\x39\x6c')])+'\x20\x28'+_0x1c5752+_0xc44a4a(0x2d7,'\x56\x76\x23\x73')+_0x26fba4+'\x29'+(_0x16634f?_0x53e0e0[_0xc44a4a(0x2e4,'\x25\x58\x45\x70')]('\x3a\x20',_0x16634f):''));}_0x3b8df7['\x70\x75\x73\x68'](_0x53e0e0[_0xc44a4a(0x1eb,'\x43\x32\x66\x26')]);if(_0x1e7b76)_0x3b8df7[_0xc44a4a(0x154,'\x62\x74\x79\x68')]('\x54\x6f\x20\x72\x65\x75\x73\x65'+_0xc44a4a(0x2be,'\x25\x28\x70\x45')+_0xc44a4a(0x2ef,'\x5a\x6f\x56\x72')+_0xc44a4a(0x26b,'\x50\x6c\x4f\x23')+_0xc44a4a(0x2bb,'\x55\x62\x4d\x76')+_0xc44a4a(0x1b0,'\x73\x72\x78\x54')+_0xc44a4a(0x2f6,'\x68\x24\x53\x68')+_0xc44a4a(0x14b,'\x50\x6c\x4f\x23')+_0xc44a4a(0x249,'\x45\x32\x34\x4a'));const _0x257e44=_0x3b8df7[_0xc44a4a(0x1c4,'\x50\x6c\x4f\x23')]('\x0a');return _0x53e0e0['\x48\x4f\x41\x52\x73'](_0x257e44[_0xc44a4a(0x31c,'\x48\x4c\x48\x29')],_0x3f4ecd)?_0x257e44[_0xc44a4a(0x1be,'\x56\x76\x23\x73')](0x13de*-0x1+0x2623+-0x1245,_0x3f4ecd):_0x257e44;}function _0x2c8c1c(_0x595bfc,_0xe82cda,_0x1ee42c,_0x598525){const _0x357e97=_0x2fa995,_0x28c4d6={'\x70\x4a\x47\x44\x51':_0x357e97(0x1dd,'\x55\x62\x4d\x76')+'\x2b\x29\x2b\x24','\x6e\x50\x6d\x72\x50':function(_0x2fce04,_0x2899b3){return _0x2fce04(_0x2899b3);},'\x4a\x66\x51\x4a\x4f':_0x357e97(0x206,'\x48\x4c\x48\x29')+_0x357e97(0x235,'\x6b\x66\x39\x6c'),'\x4f\x4b\x62\x6e\x65':function(_0x50783f,_0x3a2a71){return _0x50783f===_0x3a2a71;},'\x45\x50\x58\x4f\x65':'\x68\x73\x72\x50\x4e','\x74\x66\x51\x6c\x43':function(_0x53606b,_0x56374f){return _0x53606b===_0x56374f;},'\x4a\x78\x48\x73\x6b':_0x357e97(0x1df,'\x34\x64\x4c\x58'),'\x73\x4a\x72\x71\x42':function(_0x1300b4,_0x237bb9){return _0x1300b4!==_0x237bb9;},'\x70\x67\x5a\x56\x46':_0x357e97(0x2ff,'\x75\x65\x38\x5a'),'\x67\x4c\x58\x45\x54':_0x357e97(0x250,'\x75\x65\x38\x5a'),'\x42\x41\x47\x65\x5a':function(_0x1c8582,_0x57b89b){return _0x1c8582(_0x57b89b);},'\x64\x71\x6f\x66\x42':_0x357e97(0x165,'\x43\x32\x66\x26'),'\x5a\x46\x5a\x48\x6b':function(_0xb7cffd,_0x56a01c){return _0xb7cffd===_0x56a01c;},'\x64\x45\x73\x5a\x4b':_0x357e97(0x182,'\x50\x6c\x4f\x23'),'\x59\x6c\x61\x63\x55':_0x357e97(0x14e,'\x53\x74\x41\x70')+_0x357e97(0x215,'\x49\x23\x30\x44')+_0x357e97(0x162,'\x53\x49\x67\x5d'),'\x78\x74\x71\x6a\x54':_0x357e97(0x288,'\x55\x28\x50\x5d')+_0x357e97(0x2c5,'\x5e\x5e\x53\x67')+_0x357e97(0x1f1,'\x53\x32\x49\x71'),'\x48\x76\x4d\x5a\x42':_0x357e97(0x312,'\x25\x28\x70\x45')+_0x357e97(0x167,'\x53\x32\x49\x71'),'\x6f\x72\x6b\x4b\x76':_0x357e97(0x1e2,'\x5e\x5e\x53\x67')+_0x357e97(0x225,'\x5e\x5e\x53\x67')+_0x357e97(0x173,'\x62\x30\x37\x58')};let _0xbf2ad5;try{({logAssetCall:_0xbf2ad5}=_0x28c4d6[_0x357e97(0x30a,'\x21\x31\x36\x67')](require,_0x28c4d6['\x4a\x66\x51\x4a\x4f']));}catch(_0x5f4bb5){if(_0x28c4d6[_0x357e97(0x2cf,'\x66\x78\x65\x33')](_0x28c4d6[_0x357e97(0x323,'\x43\x64\x51\x57')],_0x357e97(0x152,'\x53\x32\x49\x71'))){if(_0x2bdd31['\x6d\x61\x74\x63\x68\x50\x61\x74'+_0x357e97(0x2d8,'\x31\x72\x6b\x4c')+_0x357e97(0x272,'\x53\x74\x41\x70')](_0x26d1bd,_0x504e3c))_0x30cf11++;}else return;}const _0x31ee30=_0x28c4d6[_0x357e97(0x2de,'\x72\x35\x54\x73')](_0xe82cda,_0x28c4d6[_0x357e97(0x1cb,'\x73\x72\x78\x54')])?_0x357e97(0x236,'\x34\x64\x4c\x58')+_0x357e97(0x21d,'\x21\x31\x36\x67'):_0x357e97(0x168,'\x73\x72\x78\x54')+_0x357e97(0x184,'\x31\x72\x6b\x4c')+'\x64\x6f\x77';for(const _0x518e17 of _0x595bfc){if(_0x28c4d6[_0x357e97(0x22e,'\x44\x36\x51\x6e')](_0x28c4d6[_0x357e97(0x260,'\x79\x67\x28\x72')],_0x357e97(0x2ac,'\x53\x49\x67\x5d')))return _0x21b0f8[_0x357e97(0x286,'\x62\x74\x79\x68')]()[_0x357e97(0x187,'\x72\x35\x54\x73')](kOFQpr[_0x357e97(0x266,'\x79\x67\x28\x72')])[_0x357e97(0x21c,'\x50\x6c\x4f\x23')]()[_0x357e97(0x2b9,'\x34\x64\x4c\x58')+_0x357e97(0x17c,'\x73\x72\x78\x54')](_0x55cc02)[_0x357e97(0x1ea,'\x67\x73\x4b\x74')]('\x28\x28\x28\x2e\x2b\x29\x2b\x29'+_0x357e97(0x16f,'\x74\x59\x74\x50'));else try{_0x28c4d6[_0x357e97(0x179,'\x74\x59\x74\x50')](_0x357e97(0x2db,'\x73\x34\x76\x71'),_0x28c4d6[_0x357e97(0x197,'\x62\x74\x79\x68')])?{logAssetCall:_0xaa469a}=_0x28c4d6[_0x357e97(0x196,'\x26\x6e\x76\x6a')](_0x2fff7e,_0x28c4d6[_0x357e97(0x1e1,'\x53\x49\x67\x5d')]):_0x28c4d6[_0x357e97(0x297,'\x62\x74\x79\x68')](_0xbf2ad5,{'\x72\x75\x6e\x5f\x69\x64':_0x1ee42c,'\x61\x63\x74\x69\x6f\x6e':_0x31ee30,'\x61\x73\x73\x65\x74\x5f\x69\x64':_0x518e17[_0x357e97(0x21e,'\x45\x32\x34\x4a')]||undefined,'\x61\x73\x73\x65\x74\x5f\x74\x79\x70\x65':_0x28c4d6[_0x357e97(0x1bf,'\x49\x23\x30\x44')],'\x73\x6f\x75\x72\x63\x65\x5f\x6e\x6f\x64\x65\x5f\x69\x64':_0x518e17[_0x357e97(0x1b6,'\x43\x32\x66\x26')+'\x6f\x64\x65\x5f\x69\x64']||undefined,'\x63\x68\x61\x69\x6e\x5f\x69\x64':_0x518e17[_0x357e97(0x247,'\x29\x6f\x35\x4a')]||undefined,'\x73\x63\x6f\x72\x65':_0x518e17[_0x357e97(0x1bc,'\x50\x6c\x4f\x23')+'\x74\x79'],'\x73\x69\x67\x6e\x61\x6c\x73':_0x598525[_0x357e97(0x2e7,'\x79\x67\x28\x72')](-0x10d+0xac1*0x1+-0x9b4,-0x7*0x3b5+0x2417+-0xa1c),'\x72\x65\x61\x73\x6f\x6e':_0x28c4d6[_0x357e97(0x2ab,'\x25\x28\x70\x45')](_0x518e17[_0x357e97(0x255,'\x39\x62\x38\x41')],_0x28c4d6[_0x357e97(0x254,'\x73\x34\x76\x71')])?_0x28c4d6[_0x357e97(0x31d,'\x73\x34\x76\x71')]:_0x28c4d6[_0x357e97(0x1d8,'\x34\x64\x4c\x58')],'\x65\x78\x74\x72\x61':{'\x76\x69\x61':_0x28c4d6[_0x357e97(0x210,'\x25\x55\x76\x43')],'\x61\x74\x74\x72\x69\x62\x75\x74\x69\x6f\x6e':_0x28c4d6['\x6f\x72\x6b\x4b\x76'],'\x6f\x72\x69\x67\x69\x6e':_0x518e17[_0x357e97(0x1cc,'\x39\x75\x57\x55')]}});}catch(_0x196b47){}}}async function _0x3edaeb(_0x302bd1){const _0x29de1a=_0x2fa995,_0x318ad4={'\x45\x63\x59\x6c\x6c':function(_0x29d62c,_0x1c603b){return _0x29d62c||_0x1c603b;},'\x4f\x43\x77\x6f\x4e':function(_0x16ab0e){return _0x16ab0e();},'\x57\x66\x67\x43\x67':function(_0x236794,_0x500f7c){return _0x236794===_0x500f7c;},'\x6c\x58\x70\x5a\x6e':_0x29de1a(0x219,'\x61\x41\x28\x40'),'\x50\x62\x5a\x62\x62':function(_0x75f774,_0x5c6d68){return _0x75f774>_0x5c6d68;},'\x6e\x68\x4f\x79\x47':function(_0x4788b5,_0x4bba0f){return _0x4788b5-_0x4bba0f;},'\x6c\x79\x53\x4a\x79':function(_0x3ff772,_0x10d50b){return _0x3ff772>=_0x10d50b;},'\x54\x64\x41\x66\x57':function(_0xb1943d,_0x22fb4c){return _0xb1943d===_0x22fb4c;},'\x4a\x62\x6f\x4f\x59':_0x29de1a(0x262,'\x68\x24\x53\x68'),'\x4b\x73\x4f\x62\x55':function(_0x3b14a4){return _0x3b14a4();},'\x4b\x48\x61\x48\x71':function(_0x543be4,_0x3c3244){return _0x543be4-_0x3c3244;},'\x4b\x48\x72\x42\x4a':function(_0x5e74f7,_0x823f58){return _0x5e74f7(_0x823f58);},'\x4b\x4b\x6b\x72\x61':'\x72\x65\x63\x61\x6c\x6c\x3a','\x51\x50\x55\x67\x47':_0x29de1a(0x280,'\x6b\x66\x39\x6c'),'\x62\x75\x6f\x62\x44':function(_0x1a56de,_0x3649cb,_0x4c94c4,_0x1555fb,_0x2c1b87){return _0x1a56de(_0x3649cb,_0x4c94c4,_0x1555fb,_0x2c1b87);}},_0x34d943=_0x318ad4['\x45\x63\x59\x6c\x6c'](_0x302bd1,{}),_0x5e6ad4=_0x34d943[_0x29de1a(0x308,'\x73\x34\x76\x71')]||_0x318ad4[_0x29de1a(0x221,'\x6b\x66\x39\x6c')](_0x84a0df),_0xd90a22={};_0xd90a22[_0x29de1a(0x149,'\x72\x32\x62\x5b')]=![],_0xd90a22[_0x29de1a(0x1b8,'\x6b\x66\x39\x6c')]=null,_0xd90a22[_0x29de1a(0x22d,'\x29\x6f\x35\x4a')]=[],_0xd90a22[_0x29de1a(0x163,'\x49\x23\x30\x44')]=0x0,_0xd90a22[_0x29de1a(0x23e,'\x43\x32\x66\x26')]=[];if(_0x318ad4[_0x29de1a(0x257,'\x51\x2a\x29\x64')](_0x5e6ad4,_0x318ad4['\x6c\x58\x70\x5a\x6e']))return _0xd90a22;const _0x17dad7=_0x578e49(_0x34d943['\x70\x72\x6f\x6d\x70\x74']),_0x3804fb={};_0x3804fb[_0x29de1a(0x293,'\x55\x62\x4d\x76')]=![],_0x3804fb[_0x29de1a(0x1c9,'\x75\x65\x38\x5a')]=null,_0x3804fb[_0x29de1a(0x1d2,'\x21\x31\x36\x67')]=[],_0x3804fb[_0x29de1a(0x1e9,'\x75\x65\x38\x5a')]=0x0,_0x3804fb[_0x29de1a(0x2a0,'\x25\x55\x76\x43')]=[];if(!_0x17dad7[_0x29de1a(0x218,'\x4c\x44\x4d\x6b')])return _0x3804fb;const _0x1cc20e=_0x53a4c1(_0x17dad7),_0x324c20=-0x1*-0x996+0x2c4+-0xbc4*0x1;let _0x163f8c=Number[_0x29de1a(0x1ce,'\x72\x32\x62\x5b')](_0x34d943[_0x29de1a(0x256,'\x55\x51\x78\x57')+'\x73'])&&_0x318ad4[_0x29de1a(0x20f,'\x39\x75\x57\x55')](_0x34d943[_0x29de1a(0x27d,'\x5a\x6f\x56\x72')+'\x73'],0x529*-0x3+-0x82*-0x2c+-0x6dd)?_0x34d943[_0x29de1a(0x258,'\x45\x32\x34\x4a')+'\x73']:-0x2*0xb65+-0x2c5*-0x6+0xdfc;if(Number[_0x29de1a(0x1ab,'\x62\x30\x37\x58')](_0x34d943[_0x29de1a(0x142,'\x55\x51\x78\x57')+'\x4d\x73'])){const _0x1216ef=_0x318ad4['\x6e\x68\x4f\x79\x47'](_0x34d943[_0x29de1a(0x198,'\x26\x6e\x76\x6a')+'\x4d\x73']-Date['\x6e\x6f\x77'](),_0x324c20);_0x163f8c=Math[_0x29de1a(0x29b,'\x72\x32\x62\x5b')](_0x163f8c,_0x1216ef);}const _0x3d8a45=_0x318ad4[_0x29de1a(0x144,'\x55\x62\x4d\x76')](_0x163f8c,0x6a*-0x23+-0x15d5+-0x1*-0x257f)?await _0x3f9772(_0x17dad7,_0x163f8c):[],_0x1b2f5d=new Set(),_0x13ad5b=[];let _0x29d9b3=0x25a1+-0x320+-0x2281;for(const _0x4ec867 of[..._0x3d8a45,..._0x1cc20e]){const _0x41119c=_0x4ec867[_0x29de1a(0x230,'\x43\x32\x66\x26')]||_0x4ec867['\x6f\x72\x69\x67\x69\x6e']+'\x3a'+_0x4ec867[_0x29de1a(0x14d,'\x55\x51\x78\x57')];if(_0x41119c&&_0x1b2f5d['\x68\x61\x73'](_0x41119c)){if(_0x318ad4[_0x29de1a(0x17e,'\x5e\x5e\x53\x67')](_0x318ad4[_0x29de1a(0x164,'\x43\x64\x51\x57')],_0x29de1a(0x24b,'\x25\x55\x76\x43'))){_0x29d9b3++;continue;}else return[];}if(_0x41119c)_0x1b2f5d[_0x29de1a(0x1cf,'\x74\x59\x74\x50')](_0x41119c);_0x13ad5b[_0x29de1a(0x172,'\x72\x32\x62\x5b')](_0x4ec867);}_0x13ad5b[_0x29de1a(0x305,'\x39\x62\x38\x41')]((_0x56bc3b,_0x2522d1)=>(_0x2522d1[_0x29de1a(0x2fb,'\x49\x23\x30\x44')+'\x74\x79']||-0xf*0x71+0x7c1+-0x122)-(_0x56bc3b['\x73\x69\x6d\x69\x6c\x61\x72\x69'+'\x74\x79']||-0x35*0x99+0xf7c+-0x1*-0x1031));const _0x2f4c37=_0x13ad5b['\x73\x6c\x69\x63\x65'](-0x2*-0xaa9+-0x90f*-0x2+-0x2770,_0x318ad4['\x4b\x73\x4f\x62\x55'](_0x10c822));_0x29d9b3+=Math[_0x29de1a(0x28b,'\x31\x72\x6b\x4c')](-0x2344+-0x82*0x49+0x4856,_0x318ad4[_0x29de1a(0x2d9,'\x25\x55\x76\x43')](_0x13ad5b[_0x29de1a(0x306,'\x26\x6e\x76\x6a')],_0x2f4c37['\x6c\x65\x6e\x67\x74\x68']));const _0x4be52d=_0x2f4c37['\x66\x69\x6c\x74\x65\x72'](_0x5dd86f);_0x29d9b3+=_0x318ad4[_0x29de1a(0x185,'\x73\x34\x76\x71')](_0x2f4c37[_0x29de1a(0x2b0,'\x21\x31\x36\x67')],_0x4be52d['\x6c\x65\x6e\x67\x74\x68']);const _0x144601={};_0x144601[_0x29de1a(0x29c,'\x5b\x5d\x35\x54')]=![],_0x144601[_0x29de1a(0x1b3,'\x31\x72\x6b\x4c')]=null,_0x144601[_0x29de1a(0x1e5,'\x74\x59\x74\x50')]=[],_0x144601[_0x29de1a(0x237,'\x4e\x4a\x6b\x41')]=_0x29d9b3,_0x144601[_0x29de1a(0x233,'\x50\x6c\x4f\x23')]=_0x17dad7;if(!_0x4be52d[_0x29de1a(0x261,'\x53\x49\x67\x5d')])return _0x144601;const _0x530f8b=_0x318ad4[_0x29de1a(0x180,'\x43\x32\x66\x26')](_0x2b238f,_0x4be52d),_0x5a4975={};_0x5a4975[_0x29de1a(0x2cd,'\x74\x59\x74\x50')]=![],_0x5a4975[_0x29de1a(0x251,'\x25\x28\x70\x45')]=null,_0x5a4975[_0x29de1a(0x1ef,'\x48\x4c\x48\x29')]=[],_0x5a4975[_0x29de1a(0x2c0,'\x4b\x34\x6f\x26')]=_0x29d9b3,_0x5a4975[_0x29de1a(0x1c5,'\x4c\x44\x4d\x6b')]=_0x17dad7;if(!_0x530f8b)return _0x5a4975;const _0x37ee6b=_0x34d943[_0x29de1a(0x1cd,'\x5e\x5e\x53\x67')]||_0x318ad4[_0x29de1a(0x157,'\x29\x6f\x35\x4a')]+(_0x34d943[_0x29de1a(0x313,'\x68\x24\x53\x68')+'\x64']||_0x318ad4[_0x29de1a(0x1d3,'\x25\x55\x76\x43')]);return _0x318ad4['\x62\x75\x6f\x62\x44'](_0x2c8c1c,_0x4be52d,_0x5e6ad4,_0x37ee6b,_0x17dad7),{'\x69\x6e\x6a\x65\x63\x74':_0x318ad4[_0x29de1a(0x267,'\x39\x75\x57\x55')](_0x5e6ad4,_0x29de1a(0x174,'\x39\x75\x57\x55')),'\x74\x65\x78\x74':_0x530f8b,'\x64\x65\x63\x69\x64\x65\x64':_0x4be52d,'\x64\x72\x6f\x70\x70\x65\x64':_0x29d9b3,'\x73\x69\x67\x6e\x61\x6c\x73':_0x17dad7};}const _0x1c0885={};_0x1c0885[_0x2fa995(0x20d,'\x53\x74\x41\x70')+'\x62']=_0x3f9772,_0x1c0885[_0x2fa995(0x23f,'\x73\x34\x76\x71')+_0x2fa995(0x28f,'\x79\x67\x28\x72')]=_0x53a4c1,_0x1c0885[_0x2fa995(0x13f,'\x25\x28\x70\x45')+_0x2fa995(0x2c2,'\x21\x31\x36\x67')]=_0x2c8c1c;const _0x53244e={};_0x53244e[_0x2fa995(0x290,'\x56\x76\x23\x73')+'\x72\x54\x61\x73\x6b']=_0x3edaeb,_0x53244e[_0x2fa995(0x161,'\x45\x32\x34\x4a')]=_0x84a0df,_0x53244e[_0x2fa995(0x220,'\x73\x72\x78\x54')+'\x6d']=_0x55de13,_0x53244e[_0x2fa995(0x2f1,'\x5a\x6f\x56\x72')+_0x2fa995(0x268,'\x73\x34\x76\x71')]=_0x10c822,_0x53244e[_0x2fa995(0x14f,'\x5b\x5d\x35\x54')+'\x69\x67\x6e\x61\x6c\x73\x50\x75'+'\x72\x65']=_0x6a79c8,_0x53244e[_0x2fa995(0x147,'\x53\x32\x49\x71')+_0x2fa995(0x19d,'\x39\x75\x57\x55')]=_0x578e49,_0x53244e[_0x2fa995(0x170,'\x43\x64\x51\x57')+_0x2fa995(0x1de,'\x51\x2a\x29\x64')]=_0x2b238f,_0x53244e[_0x2fa995(0x158,'\x45\x32\x34\x4a')+'\x6c\x73']=_0x1c0885,module[_0x2fa995(0x1d1,'\x73\x34\x76\x71')]=_0x53244e;
|
|
1
|
+
// recallInject.js
|
|
2
|
+
// Harness-agnostic core for "runtime asset injection" (P4-c): when a general
|
|
3
|
+
// agent is about to work on a task, find GEP assets (Hub genes + local genes)
|
|
4
|
+
// that match the task and surface a distilled hint the agent can use.
|
|
5
|
+
//
|
|
6
|
+
// This module is PURE: no stdin/stdout, no process.exit. It is driven by the
|
|
7
|
+
// per-harness hook entrypoint (src/adapters/scripts/evolver-task-recall.js) and
|
|
8
|
+
// is unit-testable in isolation. The entrypoint owns the fail-open latch +
|
|
9
|
+
// watchdog + stdout shape; this module owns the matching/gating/logging.
|
|
10
|
+
//
|
|
11
|
+
// HARD INVARIANTS (do not regress — these are the P4-c scope contract):
|
|
12
|
+
// 1. SEARCH-ONLY. We call fetchSemanticResults (a free GET
|
|
13
|
+
// /a2a/assets/semantic-search) and NEVER hubSearch()/fetchAssetById() —
|
|
14
|
+
// Phase-2 fetch SPENDS CREDITS (hubSearch.js:379 logs "Fetch cost"). The
|
|
15
|
+
// recall path must never spend a credit, in any mode. No money surface.
|
|
16
|
+
// 2. LLM-FREE / NO CHILD PROCESS. We extract signals with ONLY the pure
|
|
17
|
+
// extractors _extractRegex + _extractKeywordScore. We must NOT call
|
|
18
|
+
// extractSignals() — it calls _extractLLM(), a SYNC execFileSync('curl',
|
|
19
|
+
// ['-m','10',...]) that (a) blocks the event loop for up to 10s so the
|
|
20
|
+
// entrypoint watchdog can't fire, and (b) ships a raw-prompt corpus to the
|
|
21
|
+
// Hub. Both are forbidden here.
|
|
22
|
+
// 3. SHADOW-FIRST. In 'shadow' we compute + log what WOULD inject but return
|
|
23
|
+
// inject:false (the entrypoint injects nothing). In 'off' the entrypoint
|
|
24
|
+
// never calls us. Only 'enforce' returns inject:true.
|
|
25
|
+
// 4. HIGH-CONFIDENCE ONLY. Hub rows must clear the similarity HIGH band
|
|
26
|
+
// (>= EVOLVER_RECALL_MIN_SIM, default 0.75). Local genes must have >=1
|
|
27
|
+
// real signal-pattern hit (not bag-of-words noise).
|
|
28
|
+
// 5. NO Hub used_asset_ids / reuse-credit reporting. Attribution is a LOCAL
|
|
29
|
+
// JSONL artifact only (assetCallLog). Promoting it to Hub credit needs a
|
|
30
|
+
// stronger usage signal AND team sign-off (it changes money).
|
|
31
|
+
|
|
32
|
+
const path = require('path');
|
|
33
|
+
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// Mode parsing: EVOLVER_RECALL_MODE ∈ off (default) | shadow | enforce.
|
|
36
|
+
// Anything unknown/absent -> off (safest). Mirrors the conv-distill/P3 cadence
|
|
37
|
+
// of a single 3-state env var.
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
function getMode() {
|
|
40
|
+
const v = String(process.env.EVOLVER_RECALL_MODE || '').toLowerCase().trim();
|
|
41
|
+
return v === 'shadow' || v === 'enforce' ? v : 'off';
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Similarity HIGH band. Ported as an in-repo literal from
|
|
45
|
+
// gep-mcp-server/src/searchEnrich.js (SIMILARITY_BAND_HIGH = 0.75) — that file
|
|
46
|
+
// is a separate ESM repo and must NOT be imported. Operator-tunable.
|
|
47
|
+
function getMinSim() {
|
|
48
|
+
const n = Number(process.env.EVOLVER_RECALL_MIN_SIM);
|
|
49
|
+
return Number.isFinite(n) && n > 0 && n <= 1 ? n : 0.75;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Max assets injected per turn. Default 1 (top hit only) to minimise context
|
|
53
|
+
// pollution; the entrypoint blocks every prompt, so we stay terse.
|
|
54
|
+
function getMaxInject() {
|
|
55
|
+
const n = parseInt(process.env.EVOLVER_RECALL_MAX, 10);
|
|
56
|
+
return Number.isFinite(n) && n > 0 && n <= 10 ? n : 1;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Hard ceiling on injected text length (defense against a giant nl_summary
|
|
60
|
+
// bloating the agent's context window).
|
|
61
|
+
const INJECT_CHAR_CEILING = 800;
|
|
62
|
+
const SUMMARY_CLIP = 200;
|
|
63
|
+
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
// LLM-free signal extraction. Uses ONLY the pure extractors. We deliberately
|
|
66
|
+
// do NOT call signals.extractSignals (curl/event-loop-block, see invariant 2)
|
|
67
|
+
// and do NOT call _mergeSignals (it console.log()s to STDOUT — which would
|
|
68
|
+
// corrupt the hook's single-JSON stdout contract; we inline a Set-merge).
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
function extractSignalsPure(prompt) {
|
|
71
|
+
const corpus = String(prompt || '');
|
|
72
|
+
const lower = corpus.toLowerCase();
|
|
73
|
+
const errorHit = /\b(error|exception|fail(?:ed|ure)?)\b|错误|异常|报错|失败/i.test(lower);
|
|
74
|
+
|
|
75
|
+
let regexSignals = [];
|
|
76
|
+
let scoreSignals = [];
|
|
77
|
+
try {
|
|
78
|
+
const sig = require('./signals');
|
|
79
|
+
regexSignals = sig._extractRegex(corpus, lower, errorHit) || [];
|
|
80
|
+
scoreSignals = sig._extractKeywordScore(lower) || [];
|
|
81
|
+
} catch (_) {
|
|
82
|
+
// signals.js unreachable — degrade to no signals (local/Hub then no-op).
|
|
83
|
+
return [];
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Inline Set-merge (do NOT use sig._mergeSignals — it writes to stdout).
|
|
87
|
+
const merged = new Set();
|
|
88
|
+
for (const s of regexSignals) merged.add(s);
|
|
89
|
+
for (const s of scoreSignals) merged.add(s);
|
|
90
|
+
// 'stable_success_plateau' is the extractor's "nothing interesting" default;
|
|
91
|
+
// it carries no task content, so drop it to avoid a noise query.
|
|
92
|
+
merged.delete('stable_success_plateau');
|
|
93
|
+
return Array.from(merged);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// The closed-vocabulary extractors above only fire on the evolver's own corpus
|
|
97
|
+
// shapes (errors, specific feature-request phrasings). A normal task prompt
|
|
98
|
+
// ("add retry with backoff to the http client") yields NO closed-vocab signal,
|
|
99
|
+
// so on its own the recall hook would almost never fire for real coding work.
|
|
100
|
+
// Embedding-based semantic search wants the actual task WORDS, so we also add a
|
|
101
|
+
// token projection of the prompt. tokenize() drops stop-words and short tokens;
|
|
102
|
+
// buildSemanticQuery (inside fetchSemanticResults) caps the outgoing query to
|
|
103
|
+
// 12 terms, so this stays a bounded token-projection — never the verbatim
|
|
104
|
+
// prompt. Capped here too as defense-in-depth.
|
|
105
|
+
const MAX_QUERY_TOKENS = 12;
|
|
106
|
+
function buildSignalList(prompt) {
|
|
107
|
+
const coreSignals = extractSignalsPure(prompt);
|
|
108
|
+
let tokens = [];
|
|
109
|
+
try {
|
|
110
|
+
const { tokenize } = require('./selector');
|
|
111
|
+
// De-dup while preserving order, then cap.
|
|
112
|
+
const seen = new Set();
|
|
113
|
+
for (const t of tokenize(prompt)) {
|
|
114
|
+
if (!seen.has(t)) { seen.add(t); tokens.push(t); }
|
|
115
|
+
if (tokens.length >= MAX_QUERY_TOKENS) break;
|
|
116
|
+
}
|
|
117
|
+
} catch (_) { tokens = []; }
|
|
118
|
+
|
|
119
|
+
const merged = new Set();
|
|
120
|
+
for (const s of coreSignals) merged.add(s);
|
|
121
|
+
for (const t of tokens) merged.add(t);
|
|
122
|
+
return Array.from(merged);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// ---------------------------------------------------------------------------
|
|
126
|
+
// Hub search — SEARCH-ONLY, credit-free. Returns the rows that clear the HIGH
|
|
127
|
+
// similarity band, best-effort self-suppressed, never spending a credit.
|
|
128
|
+
// ---------------------------------------------------------------------------
|
|
129
|
+
async function searchHub(signalList, timeoutMs) {
|
|
130
|
+
let hs, a2a;
|
|
131
|
+
try {
|
|
132
|
+
hs = require('./hubSearch');
|
|
133
|
+
a2a = require('./a2aProtocol');
|
|
134
|
+
} catch (_) {
|
|
135
|
+
return [];
|
|
136
|
+
}
|
|
137
|
+
// Honor the HUBSEARCH_SEMANTIC kill-switch the same way hubSearch() does:
|
|
138
|
+
// an operator who set it to false/0 to stop semantic Hub traffic must not
|
|
139
|
+
// have this hook keep issuing semantic GETs on every prompt (Bugbot #183
|
|
140
|
+
// medium). When disabled -> no Hub call, local genes only.
|
|
141
|
+
try { if (typeof hs.isSemanticEnabled === 'function' && !hs.isSemanticEnabled()) return []; } catch (_) {}
|
|
142
|
+
// Resolve the Hub URL via a2aProtocol.getHubUrl(), the canonical resolver
|
|
143
|
+
// that honors BOTH A2A_HUB_URL and the legacy EVOMAP_HUB_URL fallback.
|
|
144
|
+
// hubSearch.getHubUrl() reads only A2A_HUB_URL, so a node configured with the
|
|
145
|
+
// legacy var alone would silently skip recall while every other Hub feature
|
|
146
|
+
// (auth, heartbeat, memory) still worked (Bugbot #183 medium). Strip trailing
|
|
147
|
+
// slashes to match hubSearch's own normalization. Fall back to hs.getHubUrl()
|
|
148
|
+
// only if a2a is unavailable.
|
|
149
|
+
let hubUrl = '';
|
|
150
|
+
try {
|
|
151
|
+
hubUrl = (typeof a2a.getHubUrl === 'function' ? a2a.getHubUrl() : hs.getHubUrl()) || '';
|
|
152
|
+
hubUrl = hubUrl.replace(/\/+$/, '');
|
|
153
|
+
} catch (_) { hubUrl = ''; }
|
|
154
|
+
// Air-gapped / no Hub configured -> zero egress, local genes only.
|
|
155
|
+
if (!hubUrl) return [];
|
|
156
|
+
|
|
157
|
+
let headers = {};
|
|
158
|
+
try { headers = a2a.buildHubHeaders(); } catch (_) { headers = {}; }
|
|
159
|
+
|
|
160
|
+
let rows = [];
|
|
161
|
+
try {
|
|
162
|
+
// fetchSemanticResults already owns an AbortController bound to timeoutMs
|
|
163
|
+
// and returns [] on timeout/error/non-200 (hubSearch.js:160). It hits
|
|
164
|
+
// GET /a2a/assets/semantic-search?...&type=Gene -> genes only, no fetch,
|
|
165
|
+
// no credit. The query is a token-trimmed projection of the signals
|
|
166
|
+
// (buildSemanticQuery), NOT the verbatim prompt.
|
|
167
|
+
rows = await hs.fetchSemanticResults(hubUrl, headers, signalList, timeoutMs);
|
|
168
|
+
} catch (_) {
|
|
169
|
+
return [];
|
|
170
|
+
}
|
|
171
|
+
if (!Array.isArray(rows)) return [];
|
|
172
|
+
|
|
173
|
+
const minSim = getMinSim();
|
|
174
|
+
let selfId = '';
|
|
175
|
+
try { selfId = a2a.getNodeId() || ''; } catch (_) { selfId = ''; }
|
|
176
|
+
|
|
177
|
+
const out = [];
|
|
178
|
+
for (const r of rows) {
|
|
179
|
+
if (!r || typeof r !== 'object') continue;
|
|
180
|
+
const sim = Number(r._semantic_similarity);
|
|
181
|
+
if (!Number.isFinite(sim) || sim < minSim) continue; // drop drag-net matches
|
|
182
|
+
// Best-effort self-suppression: only when source_node_id is present (the
|
|
183
|
+
// semantic endpoint often omits it — do NOT treat absence as a hard gate).
|
|
184
|
+
if (selfId && r.source_node_id && r.source_node_id === selfId) continue;
|
|
185
|
+
out.push({
|
|
186
|
+
asset_id: r.asset_id || r.assetId || '',
|
|
187
|
+
source_node_id: r.source_node_id || '',
|
|
188
|
+
chain_id: r.chain_id || '',
|
|
189
|
+
similarity: sim,
|
|
190
|
+
title: r.short_title || r.nl_title || r.name || '',
|
|
191
|
+
summary: r.nl_summary || r.summary || '',
|
|
192
|
+
origin: 'hub',
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
return out;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// ---------------------------------------------------------------------------
|
|
199
|
+
// Local genes — match against on-disk genes with a real signal-pattern hit.
|
|
200
|
+
// We use the EXPORTED scorers (scoreGene is NOT exported, and selectGene uses
|
|
201
|
+
// Math.random + env I/O so it's unsuitable). Require >=1 pattern hit so we
|
|
202
|
+
// inject only genes whose signals_match actually fire for this task, not
|
|
203
|
+
// bag-of-words near-misses.
|
|
204
|
+
// ---------------------------------------------------------------------------
|
|
205
|
+
function matchLocalGenes(signalList) {
|
|
206
|
+
let genes = [];
|
|
207
|
+
let sel;
|
|
208
|
+
try {
|
|
209
|
+
genes = require('./assetStore').loadGenes() || [];
|
|
210
|
+
sel = require('./selector');
|
|
211
|
+
} catch (_) {
|
|
212
|
+
return [];
|
|
213
|
+
}
|
|
214
|
+
if (!Array.isArray(genes) || genes.length === 0 || !sel) return [];
|
|
215
|
+
|
|
216
|
+
const out = [];
|
|
217
|
+
for (const gene of genes) {
|
|
218
|
+
if (!gene || gene.type !== 'Gene') continue;
|
|
219
|
+
const patterns = Array.isArray(gene.signals_match) ? gene.signals_match : [];
|
|
220
|
+
let hits = 0;
|
|
221
|
+
for (const p of patterns) {
|
|
222
|
+
try { if (sel.matchPatternToSignals(p, signalList)) hits++; } catch (_) { /* skip */ }
|
|
223
|
+
}
|
|
224
|
+
if (hits < 1) continue; // require a real pattern hit, not noise
|
|
225
|
+
let sem = 0;
|
|
226
|
+
try { sem = sel.scoreGeneSemantic(gene, signalList) || 0; } catch (_) { sem = 0; }
|
|
227
|
+
// Many genes (incl. genesis genes) carry no `summary`. Fall back to a terse
|
|
228
|
+
// projection of the strategy/avoid text or the matched signal patterns so
|
|
229
|
+
// the injected line is actionable rather than a dangling "...: " (caught by
|
|
230
|
+
// real-gene E2E where synthetic fixtures had summaries).
|
|
231
|
+
let summary = (gene.summary || '').toString().trim();
|
|
232
|
+
if (!summary && gene.strategy && typeof gene.strategy === 'object') {
|
|
233
|
+
const pieces = [];
|
|
234
|
+
if (Array.isArray(gene.strategy.steps)) pieces.push(gene.strategy.steps.slice(0, 3).join('; '));
|
|
235
|
+
if (typeof gene.strategy.approach === 'string') pieces.push(gene.strategy.approach);
|
|
236
|
+
summary = pieces.filter(Boolean).join(' — ').trim();
|
|
237
|
+
}
|
|
238
|
+
if (!summary) {
|
|
239
|
+
const pats = patterns
|
|
240
|
+
.map(p => String(p).split('|')[0]) // first alias of each multi-lang pattern
|
|
241
|
+
.filter(p => p && !p.startsWith('/'))
|
|
242
|
+
.slice(0, 4);
|
|
243
|
+
if (pats.length) summary = 'matches: ' + pats.join(', ');
|
|
244
|
+
}
|
|
245
|
+
out.push({
|
|
246
|
+
asset_id: gene.asset_id || '',
|
|
247
|
+
source_node_id: gene.source_node_id || gene.author_node_id || '',
|
|
248
|
+
chain_id: gene.chain_id || '',
|
|
249
|
+
// Map local score into a 0..1-ish band for ranking next to Hub similarity.
|
|
250
|
+
// hits dominate; semantic cosine breaks ties.
|
|
251
|
+
similarity: Math.min(1, 0.75 + 0.05 * hits + 0.1 * sem),
|
|
252
|
+
title: gene.id || gene.short_title || '',
|
|
253
|
+
summary,
|
|
254
|
+
origin: 'local',
|
|
255
|
+
_hits: hits,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
return out;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// ---------------------------------------------------------------------------
|
|
262
|
+
// Build the injected text. Distilled hint, NOT raw JSON. Each line uses
|
|
263
|
+
// nl_summary/title (always present in list/search responses) — never
|
|
264
|
+
// payload.strategy (often empty for distilled/sybil assets). Hard char ceiling.
|
|
265
|
+
// ---------------------------------------------------------------------------
|
|
266
|
+
// A candidate is "hollow" when it has neither a title nor a summary: there is
|
|
267
|
+
// nothing actionable to render (a dangling "Gene "": " helps no one). Hollow
|
|
268
|
+
// candidates are excluded from BOTH the injected text and the attribution log,
|
|
269
|
+
// so the log can never claim an asset was injected that never appeared in the
|
|
270
|
+
// hook context (Bugbot #183 low: log/inject must agree by construction).
|
|
271
|
+
function isRenderable(d) {
|
|
272
|
+
const title = (d && d.title ? String(d.title) : '').trim();
|
|
273
|
+
const summary = (d && d.summary ? String(d.summary) : '').trim();
|
|
274
|
+
return !!(title || summary);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
function buildInjectText(decided) {
|
|
278
|
+
const renderable = (decided || []).filter(isRenderable);
|
|
279
|
+
if (!renderable.length) return '';
|
|
280
|
+
const lines = ['[Evolver — relevant prior capability]'];
|
|
281
|
+
let anyPublished = false;
|
|
282
|
+
for (const d of renderable) {
|
|
283
|
+
const title = (d.title || '').toString().slice(0, 80);
|
|
284
|
+
const summary = (d.summary || '').toString().replace(/\s+/g, ' ').trim().slice(0, SUMMARY_CLIP);
|
|
285
|
+
const sim = d.similarity != null ? d.similarity.toFixed(2) : '?';
|
|
286
|
+
const idTag = d.asset_id ? `asset ${d.asset_id}` : 'local, unpublished';
|
|
287
|
+
if (d.asset_id) anyPublished = true;
|
|
288
|
+
lines.push(`- ${title ? `Gene "${title}"` : 'Gene'} (${idTag}, sim ${sim})${summary ? ': ' + summary : ''}`);
|
|
289
|
+
}
|
|
290
|
+
lines.push('A prior distilled approach may fit this task. Adapt it; verify before applying.');
|
|
291
|
+
if (anyPublished) lines.push('To reuse a published asset: `gep_reuse <asset_id>` (or `gep_recall`).');
|
|
292
|
+
const text = lines.join('\n');
|
|
293
|
+
return text.length > INJECT_CHAR_CEILING ? text.slice(0, INJECT_CHAR_CEILING) : text;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// ---------------------------------------------------------------------------
|
|
297
|
+
// Local reuse logging. Records WHICH assets were (would be) injected, keyed by
|
|
298
|
+
// a stable run_id derived from the session, so a later Stop hook can correlate
|
|
299
|
+
// "asset injected -> session outcome" LOCALLY. This is correlational/local
|
|
300
|
+
// only — it is NOT Hub credit and must not be promoted to one without sign-off.
|
|
301
|
+
// ---------------------------------------------------------------------------
|
|
302
|
+
function logInjections(decided, mode, runId, signalList) {
|
|
303
|
+
let logAssetCall;
|
|
304
|
+
try { ({ logAssetCall } = require('./assetCallLog')); } catch (_) { return; }
|
|
305
|
+
const action = mode === 'enforce' ? 'asset_inject' : 'asset_inject_shadow';
|
|
306
|
+
for (const d of decided) {
|
|
307
|
+
try {
|
|
308
|
+
logAssetCall({
|
|
309
|
+
run_id: runId,
|
|
310
|
+
action,
|
|
311
|
+
asset_id: d.asset_id || undefined,
|
|
312
|
+
asset_type: 'Gene',
|
|
313
|
+
source_node_id: d.source_node_id || undefined,
|
|
314
|
+
chain_id: d.chain_id || undefined,
|
|
315
|
+
score: d.similarity,
|
|
316
|
+
signals: signalList.slice(0, 8),
|
|
317
|
+
reason: d.origin === 'hub' ? 'hub_semantic_high_band' : 'local_gene_pattern_hit',
|
|
318
|
+
extra: { via: 'task_recall', attribution: 'correlational_local', origin: d.origin },
|
|
319
|
+
});
|
|
320
|
+
} catch (_) { /* logging is best-effort; never block injection */ }
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
// ---------------------------------------------------------------------------
|
|
325
|
+
// Entry point of the core. Returns:
|
|
326
|
+
// { inject: bool, text: string|null, decided: [], dropped: number, signals: [] }
|
|
327
|
+
// inject is true ONLY in enforce mode with >=1 decided asset. In shadow we log
|
|
328
|
+
// but return inject:false. Throwing is acceptable — the hook entrypoint wraps
|
|
329
|
+
// this in try/.catch -> finish({}) (fail-open).
|
|
330
|
+
// ---------------------------------------------------------------------------
|
|
331
|
+
async function recallForTask(opts) {
|
|
332
|
+
const o = opts || {};
|
|
333
|
+
const mode = o.mode || getMode();
|
|
334
|
+
if (mode === 'off') return { inject: false, text: null, decided: [], dropped: 0, signals: [] };
|
|
335
|
+
|
|
336
|
+
const signalList = buildSignalList(o.prompt);
|
|
337
|
+
if (!signalList.length) return { inject: false, text: null, decided: [], dropped: 0, signals: [] };
|
|
338
|
+
|
|
339
|
+
// Do LOCAL gene work (synchronous disk I/O via loadGenes + ranking) BEFORE
|
|
340
|
+
// the Hub await, so it runs while the full budget is available — never after
|
|
341
|
+
// the Hub search has consumed most of the watchdog window (Bugbot #183
|
|
342
|
+
// medium: post-await local work could overrun the watchdog and spuriously
|
|
343
|
+
// skip injection). After the Hub await, only in-memory merge/text/log remain.
|
|
344
|
+
const localRows = matchLocalGenes(signalList);
|
|
345
|
+
|
|
346
|
+
// Bound the Hub call by the time REMAINING until the entrypoint's absolute
|
|
347
|
+
// deadline (passed as deadlineMs, ms-since-epoch), minus a safety margin for
|
|
348
|
+
// the in-memory post-processing + finish(). If too little remains, skip the
|
|
349
|
+
// Hub call (local genes still apply). Falls back to the static timeoutMs when
|
|
350
|
+
// no deadline is supplied (e.g. unit tests / non-hook callers).
|
|
351
|
+
const POST_AWAIT_SAFETY_MS = 150;
|
|
352
|
+
let hubBudget = Number.isFinite(o.timeoutMs) && o.timeoutMs > 0 ? o.timeoutMs : 2000;
|
|
353
|
+
if (Number.isFinite(o.deadlineMs)) {
|
|
354
|
+
const remaining = o.deadlineMs - Date.now() - POST_AWAIT_SAFETY_MS;
|
|
355
|
+
hubBudget = Math.min(hubBudget, remaining);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// Hub (search-only, credit-free), only if there's a usable budget left.
|
|
359
|
+
const hubRows = hubBudget >= 300 ? await searchHub(signalList, hubBudget) : [];
|
|
360
|
+
|
|
361
|
+
const seen = new Set();
|
|
362
|
+
const candidates = [];
|
|
363
|
+
let dropped = 0;
|
|
364
|
+
for (const r of [...hubRows, ...localRows]) {
|
|
365
|
+
const key = r.asset_id || `${r.origin}:${r.title}`;
|
|
366
|
+
if (key && seen.has(key)) { dropped++; continue; } // de-dup local vs hub
|
|
367
|
+
if (key) seen.add(key);
|
|
368
|
+
candidates.push(r);
|
|
369
|
+
}
|
|
370
|
+
candidates.sort((a, b) => (b.similarity || 0) - (a.similarity || 0));
|
|
371
|
+
|
|
372
|
+
const topN = candidates.slice(0, getMaxInject());
|
|
373
|
+
dropped += Math.max(0, candidates.length - topN.length);
|
|
374
|
+
|
|
375
|
+
// Filter out hollow candidates ONCE, so the injected text and the attribution
|
|
376
|
+
// log operate on the exact same set — the log can never claim an asset was
|
|
377
|
+
// injected that wasn't rendered into the hook context (Bugbot #183 low).
|
|
378
|
+
const decided = topN.filter(isRenderable);
|
|
379
|
+
dropped += topN.length - decided.length;
|
|
380
|
+
if (!decided.length) return { inject: false, text: null, decided: [], dropped, signals: signalList };
|
|
381
|
+
|
|
382
|
+
const text = buildInjectText(decided);
|
|
383
|
+
if (!text) return { inject: false, text: null, decided: [], dropped, signals: signalList };
|
|
384
|
+
|
|
385
|
+
const runId = o.runId || ('recall:' + (o.sessionId || 'unknown'));
|
|
386
|
+
logInjections(decided, mode, runId, signalList);
|
|
387
|
+
|
|
388
|
+
// SHADOW returns the computed text (for tests/inspection) but inject:false —
|
|
389
|
+
// the entrypoint only injects when inject is true (enforce).
|
|
390
|
+
return {
|
|
391
|
+
inject: mode === 'enforce',
|
|
392
|
+
text,
|
|
393
|
+
decided,
|
|
394
|
+
dropped,
|
|
395
|
+
signals: signalList,
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
module.exports = {
|
|
400
|
+
recallForTask,
|
|
401
|
+
// exported for unit tests:
|
|
402
|
+
getMode,
|
|
403
|
+
getMinSim,
|
|
404
|
+
getMaxInject,
|
|
405
|
+
extractSignalsPure,
|
|
406
|
+
buildSignalList,
|
|
407
|
+
buildInjectText,
|
|
408
|
+
_internals: { searchHub, matchLocalGenes, logInjections },
|
|
409
|
+
};
|