@evomap/evolver 1.89.11 → 1.89.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/BUGBOT.md +182 -0
- package/.env.example +68 -0
- package/.git-commit-guard-token +1 -0
- package/.github/CODEOWNERS +63 -0
- package/.github/ISSUE_TEMPLATE/good_first_issue.md +23 -0
- package/.github/pull_request_template.md +45 -0
- package/.github/workflows/test.yml +75 -0
- package/CHANGELOG.md +1367 -0
- package/README.md +90 -537
- package/README.public.md +578 -0
- package/SECURITY.md +108 -0
- package/assets/gep/events.jsonl +3 -0
- package/examples/atp-consumer-quickstart.md +100 -0
- package/examples/hello-world.md +38 -0
- package/package.json +6 -18
- package/proxy-package.json +39 -0
- package/public.manifest.json +145 -0
- package/src/evolve/guards.js +721 -1
- package/src/evolve/pipeline/collect.js +1283 -1
- package/src/evolve/pipeline/dispatch.js +421 -1
- package/src/evolve/pipeline/enrich.js +440 -1
- package/src/evolve/pipeline/hub.js +319 -1
- package/src/evolve/pipeline/select.js +274 -1
- package/src/evolve/pipeline/signals.js +206 -1
- package/src/evolve/utils.js +264 -1
- package/src/evolve.js +350 -1
- package/src/gep/a2aProtocol.js +4463 -1
- package/src/gep/antiAbuseTelemetry.js +233 -1
- package/src/gep/autoDistillConv.js +205 -1
- package/src/gep/autoDistillLlm.js +315 -1
- package/src/gep/candidateEval.js +92 -1
- package/src/gep/candidates.js +198 -1
- package/src/gep/contentHash.js +30 -1
- package/src/gep/conversationDistiller.js +270 -0
- package/src/gep/conversationSniffer.js +266 -1
- package/src/gep/crypto.js +89 -1
- package/src/gep/curriculum.js +163 -1
- package/src/gep/deviceId.js +218 -1
- package/src/gep/envFingerprint.js +118 -1
- package/src/gep/epigenetics.js +31 -1
- package/src/gep/execBridge.js +712 -1
- package/src/gep/explore.js +289 -1
- package/src/gep/hash.js +15 -1
- package/src/gep/hubFetch.js +608 -1
- package/src/gep/hubReview.js +207 -1
- package/src/gep/hubSearch.js +526 -1
- package/src/gep/hubVerify.js +306 -1
- package/src/gep/learningSignals.js +89 -1
- package/src/gep/memoryGraph.js +1449 -1
- package/src/gep/memoryGraphAdapter.js +203 -1
- package/src/gep/mutation.js +203 -1
- package/src/gep/narrativeMemory.js +108 -1
- package/src/gep/openPRRegistry.js +205 -1
- package/src/gep/personality.js +423 -1
- package/src/gep/policyCheck.js +599 -1
- package/src/gep/prompt.js +836 -1
- package/src/gep/questionGenerator.js +103 -0
- package/src/gep/recallInject.js +409 -1
- package/src/gep/recallVerifier.js +318 -1
- package/src/gep/reflection.js +177 -1
- package/src/gep/savingsCore.js +112 -1
- package/src/gep/selector.js +602 -1
- package/src/gep/skillDistiller.js +1294 -1
- package/src/gep/solidify.js +1699 -1
- package/src/gep/strategy.js +136 -1
- package/src/gep/tokenSavings.js +95 -1
- package/src/gep/workspaceKeychain.js +174 -1
- package/src/proxy/extensions/traceControl.js +109 -1
- package/src/proxy/inject.js +52 -1
- package/src/proxy/lifecycle/manager.js +108 -7
- package/src/proxy/server/routes.js +31 -0
- package/src/proxy/server/settings.js +6 -2
- package/src/proxy/sync/engine.js +31 -15
- package/src/proxy/sync/inbound.js +87 -9
- package/src/proxy/sync/outbound.js +57 -4
- package/src/proxy/trace/extractor.js +1403 -1
- package/src/proxy/trace/usage.js +105 -1
- package/CONTRIBUTING.md +0 -19
- package/assets/cover.png +0 -0
- package/scripts/a2a_export.js +0 -63
- package/scripts/a2a_ingest.js +0 -79
- package/scripts/a2a_promote.js +0 -118
- package/scripts/analyze_by_skill.js +0 -121
- package/scripts/build_binaries.js +0 -479
- package/scripts/check-changelog.js +0 -166
- package/scripts/extract_log.js +0 -85
- package/scripts/generate_history.js +0 -75
- package/scripts/gep_append_event.js +0 -96
- package/scripts/gep_personality_report.js +0 -234
- package/scripts/human_report.js +0 -147
- package/scripts/recall-verify-report.js +0 -234
- package/scripts/recover_loop.js +0 -61
- package/scripts/refresh_stars_badge.js +0 -168
- package/scripts/seed-merchants.js +0 -91
- package/scripts/suggest_version.js +0 -89
- package/scripts/validate-modules.js +0 -38
- package/scripts/validate-suite.js +0 -78
- package/skills/index.json +0 -14
- /package/assets/gep/{genes.seed.json → genes.json} +0 -0
- /package/{skills → bundled-skills}/_meta/SKILL.md +0 -0
package/src/evolve/utils.js
CHANGED
|
@@ -1 +1,264 @@
|
|
|
1
|
-
const _0x1db9c6=_0x15e9;function _0x15e9(_0x9007bf,_0x57b409){_0x9007bf=_0x9007bf-(0xe*0x3+-0x1277+0x12f6);const _0x57c119=_0x1d3e();let _0x574815=_0x57c119[_0x9007bf];if(_0x15e9['\x54\x56\x63\x6c\x4e\x6d']===undefined){var _0x816c84=function(_0x1527a0){const _0x3041a3='\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 _0x47ee75='',_0x1817a2='',_0x52f0b4=_0x47ee75+_0x816c84,_0x23531d=(''+function(){return-0x151e+0x2330*-0x1+-0x1*-0x384e;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(0x1*0x153e+-0xa7c+-0xac1);for(let _0x335036=0x439+-0x1*0xc89+0x850,_0x1bc552,_0x2c01a6,_0x455f57=0x1f35+0x2*-0x869+0x1d*-0x7f;_0x2c01a6=_0x1527a0['\x63\x68\x61\x72\x41\x74'](_0x455f57++);~_0x2c01a6&&(_0x1bc552=_0x335036%(-0x249d+0x25ed+-0x53*0x4)?_0x1bc552*(0x62*0x65+0x252e+-0x4b98*0x1)+_0x2c01a6:_0x2c01a6,_0x335036++%(0x5*-0x128+0x450+0x17c))?_0x47ee75+=_0x23531d||_0x52f0b4['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x455f57+(0x1ca4+-0x1a39+-0x261))-(-0x1e8d+0x1cd*0xd+-0x2*-0x397)!==0xb78+-0x40b+-0x76d*0x1?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x106*0x2+0x1282+-0xf77&_0x1bc552>>(-(-0x463+-0x108b+-0x50*-0x43)*_0x335036&-0x3*-0xa33+0x148b+-0x331e)):_0x335036:0x1*-0x1646+-0x9*0x202+-0x142c*-0x2){_0x2c01a6=_0x3041a3['\x69\x6e\x64\x65\x78\x4f\x66'](_0x2c01a6);}for(let _0x15b9ff=0xb89+-0x1*0x21f9+-0x59c*-0x4,_0x4e2b96=_0x47ee75['\x6c\x65\x6e\x67\x74\x68'];_0x15b9ff<_0x4e2b96;_0x15b9ff++){_0x1817a2+='\x25'+('\x30\x30'+_0x47ee75['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x15b9ff)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0xaf7*-0x2+0x993*0x1+-0x1f71))['\x73\x6c\x69\x63\x65'](-(0x1c2a+-0x186*0xb+-0xb66));}return decodeURIComponent(_0x1817a2);};const _0x3d74f5=function(_0xa9c06f,_0x5e5924){let _0x6307a2=[],_0x2fb8dc=0x22cb+0x13d7+-0x7ce*0x7,_0x57595b,_0x20c7b4='';_0xa9c06f=_0x816c84(_0xa9c06f);let _0x5c3f21;for(_0x5c3f21=-0x26af+0x1*0x914+0x1d9b;_0x5c3f21<0x7*-0x25f+-0x1*-0xe5c+0x1*0x33d;_0x5c3f21++){_0x6307a2[_0x5c3f21]=_0x5c3f21;}for(_0x5c3f21=-0x28e*0x1+-0x1e95+0x2123;_0x5c3f21<-0x1*-0x13f9+0x1*-0x1ac7+0x7ce;_0x5c3f21++){_0x2fb8dc=(_0x2fb8dc+_0x6307a2[_0x5c3f21]+_0x5e5924['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x5c3f21%_0x5e5924['\x6c\x65\x6e\x67\x74\x68']))%(0x1083+0x20b1+-0x3034),_0x57595b=_0x6307a2[_0x5c3f21],_0x6307a2[_0x5c3f21]=_0x6307a2[_0x2fb8dc],_0x6307a2[_0x2fb8dc]=_0x57595b;}_0x5c3f21=0x23*-0x32+-0xe98+-0x156e*-0x1,_0x2fb8dc=-0x1*0x17b9+-0x4*-0x5a7+0x11d;for(let _0x55cb1f=-0x1c0c+0x7*-0x467+-0x3add*-0x1;_0x55cb1f<_0xa9c06f['\x6c\x65\x6e\x67\x74\x68'];_0x55cb1f++){_0x5c3f21=(_0x5c3f21+(-0x7*0x48a+0x55b+0x1a6c))%(-0x34a*0x2+0x1001*0x1+-0x86d*0x1),_0x2fb8dc=(_0x2fb8dc+_0x6307a2[_0x5c3f21])%(0x23e3+0x28b*-0x7+0x9*-0x1e6),_0x57595b=_0x6307a2[_0x5c3f21],_0x6307a2[_0x5c3f21]=_0x6307a2[_0x2fb8dc],_0x6307a2[_0x2fb8dc]=_0x57595b,_0x20c7b4+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0xa9c06f['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x55cb1f)^_0x6307a2[(_0x6307a2[_0x5c3f21]+_0x6307a2[_0x2fb8dc])%(0x2559+0x217e+0x13*-0x3ad)]);}return _0x20c7b4;};_0x15e9['\x4a\x56\x43\x75\x52\x57']=_0x3d74f5,_0x15e9['\x6f\x71\x79\x49\x68\x76']={},_0x15e9['\x54\x56\x63\x6c\x4e\x6d']=!![];}const _0x5af9d8=_0x57c119[-0x2291*-0x1+-0x3a*0x2+-0x221d],_0x3cba13=_0x9007bf+_0x5af9d8,_0x1e68fa=_0x15e9['\x6f\x71\x79\x49\x68\x76'][_0x3cba13];if(!_0x1e68fa){if(_0x15e9['\x4b\x45\x6b\x4d\x56\x6c']===undefined){const _0x3f632b=function(_0x2777bb){this['\x6f\x48\x66\x59\x6d\x4e']=_0x2777bb,this['\x4d\x44\x6d\x54\x43\x68']=[0x217+0x261e+-0x2834,-0x110b*-0x1+0xc4d+-0xc*0x272,0x6cf*0x5+0x22ea+-0x44f5],this['\x57\x65\x59\x4e\x6b\x78']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x41\x77\x63\x55\x49\x48']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x53\x4b\x43\x68\x59\x71']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x3f632b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x4f\x49\x72\x62\x75\x61']=function(){const _0x3ab5af=new RegExp(this['\x41\x77\x63\x55\x49\x48']+this['\x53\x4b\x43\x68\x59\x71']),_0x51b8b3=_0x3ab5af['\x74\x65\x73\x74'](this['\x57\x65\x59\x4e\x6b\x78']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x4d\x44\x6d\x54\x43\x68'][0x844+0x2*0x84a+0x18d7*-0x1]:--this['\x4d\x44\x6d\x54\x43\x68'][-0x84+-0x2b*-0xbf+-0x1f91];return this['\x67\x4a\x6b\x44\x6c\x6f'](_0x51b8b3);},_0x3f632b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x67\x4a\x6b\x44\x6c\x6f']=function(_0xda594){if(!Boolean(~_0xda594))return _0xda594;return this['\x6e\x4d\x73\x73\x72\x6b'](this['\x6f\x48\x66\x59\x6d\x4e']);},_0x3f632b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x6e\x4d\x73\x73\x72\x6b']=function(_0x283b79){for(let _0xbf5e45=-0x3*0xc99+0x6a*-0x37+-0x23*-0x1bb,_0x16440f=this['\x4d\x44\x6d\x54\x43\x68']['\x6c\x65\x6e\x67\x74\x68'];_0xbf5e45<_0x16440f;_0xbf5e45++){this['\x4d\x44\x6d\x54\x43\x68']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x16440f=this['\x4d\x44\x6d\x54\x43\x68']['\x6c\x65\x6e\x67\x74\x68'];}return _0x283b79(this['\x4d\x44\x6d\x54\x43\x68'][0x10*0x8a+-0xcc5*0x1+-0x425*-0x1]);},(''+function(){return-0x8fc+-0x7*-0x25d+-0x78f;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x1cff+0x1c1c+0x1*-0x391a)&&new _0x3f632b(_0x15e9)['\x4f\x49\x72\x62\x75\x61'](),_0x15e9['\x4b\x45\x6b\x4d\x56\x6c']=!![];}_0x574815=_0x15e9['\x4a\x56\x43\x75\x52\x57'](_0x574815,_0x57b409),_0x15e9['\x6f\x71\x79\x49\x68\x76'][_0x3cba13]=_0x574815;}else _0x574815=_0x1e68fa;return _0x574815;}(function(_0x58a3f2,_0x13dcb2){const _0x2280ea=_0x15e9,_0x233893=_0x58a3f2();while(!![]){try{const _0x584b4a=parseInt(_0x2280ea(0x1ce,'\x25\x41\x5a\x70'))/(0x1*0x4c6+0x2ba*0x2+0xa39*-0x1)*(parseInt(_0x2280ea(0x119,'\x4e\x70\x4d\x53'))/(-0x1*-0x2581+0x1941+-0x3ec0))+-parseInt(_0x2280ea(0x11f,'\x37\x77\x39\x61'))/(0x1b00*-0x1+0x1959+0x1aa)*(-parseInt(_0x2280ea(0x132,'\x6f\x26\x38\x30'))/(0x1c3d+-0x143b+-0x7fe))+parseInt(_0x2280ea(0x1e3,'\x4b\x45\x34\x5b'))/(0xb4d+-0x494*-0x5+-0xf3*0x24)*(parseInt(_0x2280ea(0x152,'\x56\x70\x6e\x64'))/(-0x3*0x472+-0x39e*-0x1+0x9be))+parseInt(_0x2280ea(0x1bf,'\x52\x7a\x32\x33'))/(0x1319*-0x2+0x217c+0x4bd*0x1)+-parseInt(_0x2280ea(0x10b,'\x69\x26\x69\x39'))/(-0x8b4*0x1+-0x130b+0x223*0xd)+-parseInt(_0x2280ea(0x1c5,'\x4b\x45\x34\x5b'))/(0x1ee0+0x1cf7+-0x3bce)+parseInt(_0x2280ea(0x1df,'\x4d\x29\x34\x34'))/(-0x1935*0x1+0x1305+0x63a)*(-parseInt(_0x2280ea(0xe3,'\x6f\x26\x38\x30'))/(-0x3ce+0x189*-0xc+0x1645));if(_0x584b4a===_0x13dcb2)break;else _0x233893['push'](_0x233893['shift']());}catch(_0x40a35d){_0x233893['push'](_0x233893['shift']());}}}(_0x1d3e,-0x42a*-0x3d7+0x152121+0x184b2b*-0x1));const _0x3361a5=(function(){let _0x3875e1=!![];return function(_0x3e3ddd,_0x1636ce){const _0x5e8aec=_0x3875e1?function(){const _0x15bfa6=_0x15e9;if(_0x1636ce){const _0x16dab1=_0x1636ce[_0x15bfa6(0xb0,'\x4e\x70\x4d\x53')](_0x3e3ddd,arguments);return _0x1636ce=null,_0x16dab1;}}:function(){};return _0x3875e1=![],_0x5e8aec;};}()),_0x5c9206=_0x3361a5(this,function(){const _0xcee0bc=_0x15e9,_0x162671={};_0x162671[_0xcee0bc(0x120,'\x6f\x26\x38\x30')]=_0xcee0bc(0x11a,'\x72\x6c\x35\x34')+'\x2b\x29\x2b\x24';const _0x2b9f87=_0x162671;return _0x5c9206[_0xcee0bc(0x1a3,'\x75\x43\x21\x45')]()[_0xcee0bc(0x1d0,'\x25\x41\x5a\x70')](_0x2b9f87[_0xcee0bc(0x1cf,'\x37\x36\x57\x25')])['\x74\x6f\x53\x74\x72\x69\x6e\x67']()[_0xcee0bc(0x14d,'\x35\x25\x67\x4d')+_0xcee0bc(0x16c,'\x56\x70\x6e\x64')](_0x5c9206)[_0xcee0bc(0x13e,'\x76\x28\x25\x78')](_0x2b9f87[_0xcee0bc(0x1b6,'\x47\x50\x30\x2a')]);});_0x5c9206();function _0x1d3e(){const _0x3b4521=['\x57\x50\x4b\x57\x63\x47\x37\x63\x4e\x6d\x6b\x47\x72\x4e\x6d','\x57\x52\x69\x74\x57\x35\x70\x63\x50\x43\x6f\x6a\x74\x38\x6b\x6a\x57\x50\x61','\x57\x51\x35\x39\x6b\x75\x78\x64\x49\x57','\x44\x65\x5a\x63\x48\x53\x6b\x47\x57\x4f\x75','\x57\x4f\x65\x31\x79\x4d\x35\x47','\x57\x4f\x35\x4a\x57\x35\x74\x63\x4a\x47','\x6e\x38\x6b\x62\x57\x4f\x6e\x6a','\x7a\x53\x6b\x52\x57\x52\x4e\x63\x56\x61','\x77\x38\x6b\x5a\x57\x51\x70\x63\x54\x53\x6b\x66\x57\x4f\x30','\x71\x53\x6b\x4b\x57\x52\x71','\x57\x50\x47\x47\x67\x63\x5a\x63\x51\x71','\x57\x50\x71\x58\x57\x4f\x76\x30\x42\x71','\x65\x38\x6b\x52\x63\x38\x6f\x47\x75\x47','\x57\x35\x7a\x35\x6f\x49\x79','\x57\x37\x6e\x69\x70\x4b\x5a\x63\x4a\x61','\x57\x4f\x74\x64\x55\x31\x37\x64\x4a\x6d\x6f\x78\x57\x35\x58\x6b\x57\x37\x43','\x57\x4f\x4c\x2b\x57\x35\x42\x64\x4b\x57','\x57\x34\x2f\x63\x52\x74\x72\x5a\x57\x4f\x53','\x77\x57\x54\x4b\x69\x58\x79','\x57\x36\x78\x64\x4b\x38\x6b\x76\x57\x35\x42\x63\x4e\x38\x6b\x44\x7a\x78\x38\x71\x57\x52\x33\x63\x47\x6d\x6f\x6d\x57\x4f\x75','\x57\x52\x6d\x46\x57\x34\x4a\x63\x50\x61','\x57\x4f\x37\x63\x51\x63\x34\x32\x57\x50\x38','\x46\x53\x6f\x53\x44\x4b\x47\x74','\x71\x38\x6f\x49\x46\x4d\x53\x35\x45\x31\x78\x63\x56\x71','\x77\x43\x6f\x6d\x42\x53\x6f\x53\x57\x4f\x53','\x41\x62\x74\x63\x4a\x66\x78\x63\x50\x64\x38\x49\x57\x37\x69','\x68\x38\x6b\x6f\x73\x57\x56\x63\x50\x57','\x57\x51\x56\x64\x50\x53\x6f\x5a\x57\x51\x62\x56\x61\x31\x30\x59\x71\x61\x30\x77\x45\x65\x34','\x57\x51\x30\x67\x57\x4f\x52\x64\x53\x5a\x4f','\x77\x64\x79\x4a\x74\x43\x6b\x6c','\x57\x37\x64\x63\x53\x6d\x6b\x50\x57\x37\x4f','\x79\x74\x71\x79\x79\x53\x6b\x53','\x57\x52\x48\x37\x57\x35\x70\x64\x47\x38\x6f\x4b\x57\x50\x4b','\x57\x37\x47\x4f\x43\x75\x37\x64\x49\x71\x56\x63\x4a\x43\x6b\x77\x63\x57','\x57\x51\x52\x64\x4f\x4d\x57\x30\x57\x37\x71\x48\x6d\x43\x6f\x77','\x78\x48\x4a\x63\x48\x65\x56\x64\x55\x47','\x41\x6d\x6b\x71\x75\x53\x6b\x36\x57\x52\x34','\x62\x43\x6b\x61\x75\x62\x79','\x57\x34\x68\x63\x51\x65\x70\x64\x55\x6d\x6b\x66\x57\x51\x34\x4e\x67\x57','\x61\x77\x70\x63\x55\x4c\x50\x6d\x57\x51\x70\x64\x4f\x53\x6f\x33\x70\x38\x6f\x5a\x57\x36\x2f\x64\x4f\x67\x69','\x57\x37\x6d\x78\x57\x4f\x2f\x64\x4b\x67\x69','\x57\x34\x2f\x64\x4f\x66\x65\x69\x6c\x38\x6f\x31','\x75\x6d\x6b\x74\x63\x68\x7a\x4d\x57\x51\x4f\x6e','\x44\x49\x61\x6e\x72\x38\x6b\x51\x57\x51\x61\x74\x57\x37\x53','\x57\x35\x6e\x45\x57\x4f\x58\x54\x57\x34\x37\x64\x47\x67\x43','\x43\x5a\x61\x6c\x57\x36\x74\x63\x47\x47','\x74\x6d\x6b\x69\x76\x53\x6b\x62\x57\x52\x47','\x43\x38\x6f\x4c\x75\x4b\x75\x42','\x79\x43\x6f\x32\x57\x50\x74\x64\x48\x38\x6f\x49','\x44\x74\x65\x55\x45\x43\x6b\x76','\x57\x35\x4e\x64\x55\x31\x69\x77\x6c\x38\x6f\x4b\x57\x37\x56\x64\x55\x71','\x6f\x38\x6b\x72\x45\x74\x4e\x63\x53\x57\x31\x5a\x57\x37\x34','\x57\x50\x35\x56\x57\x35\x56\x64\x48\x43\x6f\x30\x57\x4f\x2f\x63\x47\x48\x4b','\x7a\x4a\x72\x65\x79\x6d\x6f\x71\x61\x4d\x38','\x6f\x43\x6b\x5a\x57\x51\x30\x33\x75\x61','\x76\x6d\x6f\x61\x73\x43\x6f\x5a\x57\x50\x71','\x57\x50\x30\x54\x57\x52\x66\x35\x74\x38\x6f\x69\x45\x71','\x57\x34\x75\x2f\x57\x4f\x52\x64\x51\x68\x6d','\x57\x51\x4f\x43\x57\x4f\x70\x64\x51\x76\x64\x63\x4b\x64\x69','\x67\x38\x6b\x67\x57\x4f\x34\x73\x77\x47','\x57\x4f\x30\x6b\x57\x51\x5a\x64\x48\x62\x34','\x57\x52\x62\x34\x57\x4f\x70\x64\x56\x30\x56\x63\x55\x6d\x6f\x2f','\x57\x36\x52\x64\x49\x48\x56\x64\x53\x6d\x6b\x7a\x57\x35\x56\x64\x4c\x6d\x6b\x50','\x57\x34\x50\x6f\x66\x33\x4a\x63\x47\x57','\x57\x52\x61\x36\x57\x35\x52\x63\x50\x38\x6f\x32','\x68\x38\x6b\x62\x57\x51\x79\x6e\x74\x72\x66\x58','\x77\x5a\x39\x6f\x61\x59\x71\x66\x6d\x71','\x6d\x72\x76\x68','\x57\x51\x68\x63\x47\x61\x38\x50\x57\x4f\x75','\x57\x35\x69\x76\x77\x59\x4a\x63\x51\x57','\x6f\x43\x6b\x69\x64\x6d\x6f\x4b\x75\x57\x4b','\x57\x50\x70\x64\x50\x4c\x42\x64\x4d\x38\x6f\x68\x57\x34\x7a\x52\x57\x35\x30','\x62\x38\x6f\x64\x43\x30\x4f\x58\x73\x30\x75','\x57\x50\x33\x64\x54\x47\x61\x61\x67\x57','\x57\x36\x65\x51\x57\x4f\x52\x64\x4a\x33\x37\x63\x4e\x48\x65\x69','\x6b\x38\x6b\x6a\x7a\x63\x70\x63\x55\x64\x4b','\x73\x43\x6b\x56\x57\x52\x42\x63\x54\x73\x69\x74\x63\x6d\x6b\x63','\x68\x38\x6b\x2f\x57\x35\x5a\x63\x4d\x43\x6b\x73\x70\x67\x74\x64\x54\x47','\x79\x59\x4c\x79\x61\x47','\x73\x77\x31\x41\x57\x50\x46\x64\x56\x71','\x57\x4f\x6d\x64\x57\x34\x64\x63\x53\x53\x6f\x31\x72\x61','\x78\x43\x6b\x48\x57\x50\x64\x63\x4e\x62\x4f','\x74\x33\x66\x64\x57\x50\x64\x64\x52\x61','\x66\x47\x66\x4b\x7a\x43\x6f\x35','\x73\x53\x6f\x64\x68\x5a\x71','\x42\x6d\x6b\x72\x46\x53\x6b\x2b\x57\x4f\x72\x38\x69\x72\x43','\x6f\x53\x6b\x7a\x6c\x38\x6f\x5a\x78\x61\x35\x4d\x61\x61','\x7a\x6d\x6f\x30\x46\x6d\x6f\x50\x57\x50\x75','\x57\x36\x4e\x63\x55\x53\x6b\x57','\x78\x43\x6f\x43\x64\x4b\x4e\x63\x4c\x53\x6b\x6f\x57\x35\x70\x63\x55\x66\x4a\x64\x54\x57','\x57\x37\x7a\x44\x57\x50\x42\x64\x4e\x4c\x5a\x63\x49\x6d\x6f\x2f','\x74\x53\x6f\x44\x57\x4f\x64\x64\x50\x6d\x6f\x37','\x46\x38\x6b\x4a\x57\x50\x4a\x63\x51\x6d\x6b\x6a','\x57\x52\x46\x63\x4b\x43\x6b\x70\x57\x36\x30\x59\x57\x52\x61\x75','\x72\x4d\x6a\x42\x57\x51\x68\x64\x4b\x57','\x43\x38\x6f\x62\x6d\x58\x58\x71','\x6e\x59\x71\x71\x78\x71','\x77\x49\x30\x65\x57\x35\x4a\x63\x4b\x61','\x57\x4f\x38\x4a\x64\x63\x4e\x63\x48\x47','\x6b\x53\x6b\x79\x7a\x49\x42\x63\x54\x5a\x31\x56','\x75\x38\x6b\x32\x67\x67\x48\x67\x57\x52\x30\x6d\x57\x52\x47','\x57\x35\x42\x63\x53\x47\x37\x63\x4a\x43\x6b\x71\x57\x50\x43\x53\x57\x35\x42\x63\x4b\x4a\x4c\x6d\x57\x36\x78\x63\x49\x57','\x57\x35\x61\x69\x75\x59\x6d','\x57\x35\x48\x78\x57\x51\x58\x38\x57\x36\x65','\x75\x38\x6b\x4d\x68\x4b\x31\x4d\x57\x52\x4b\x63\x57\x52\x4b','\x57\x35\x79\x69\x76\x67\x2f\x64\x49\x4d\x42\x63\x48\x63\x61','\x57\x51\x33\x63\x49\x72\x43\x4e','\x42\x73\x69\x6a\x72\x38\x6b\x6b\x57\x52\x4f\x70\x57\x37\x65','\x57\x52\x48\x5a\x72\x53\x6f\x44\x7a\x71','\x71\x53\x6f\x51\x57\x4f\x74\x64\x50\x43\x6f\x75','\x57\x52\x6c\x63\x4a\x71\x30\x31\x57\x4f\x78\x63\x49\x64\x57\x49','\x46\x6d\x6f\x56\x75\x76\x79\x58','\x75\x38\x6f\x65\x67\x72\x39\x53','\x67\x38\x6b\x42\x57\x4f\x4b','\x57\x51\x76\x2b\x6c\x65\x71','\x74\x38\x6b\x6d\x57\x52\x37\x63\x56\x72\x71\x7a','\x57\x52\x72\x32\x57\x4f\x47','\x57\x37\x74\x63\x56\x53\x6b\x54\x57\x37\x65','\x71\x43\x6b\x7a\x46\x59\x71','\x74\x53\x6b\x5a\x7a\x4a\x34\x4b','\x57\x34\x38\x69\x78\x4e\x74\x64\x4a\x47','\x57\x35\x56\x63\x4b\x38\x6b\x4a\x57\x34\x34\x45','\x57\x34\x70\x63\x52\x38\x6b\x52\x57\x34\x71\x57','\x57\x51\x39\x50\x57\x50\x2f\x64\x56\x78\x46\x63\x4f\x6d\x6f\x31\x7a\x57','\x57\x4f\x2f\x63\x4b\x53\x6f\x6f\x57\x4f\x65','\x65\x6d\x6b\x30\x57\x4f\x47\x45\x75\x61','\x68\x38\x6b\x6f\x74\x72\x61','\x76\x75\x6a\x55\x57\x4f\x78\x64\x4a\x57','\x70\x6d\x6f\x55\x74\x53\x6f\x6f\x57\x52\x74\x63\x47\x61','\x78\x48\x43\x47\x57\x34\x74\x63\x53\x61','\x57\x34\x64\x63\x51\x38\x6b\x49\x57\x35\x57\x6f','\x46\x53\x6b\x56\x7a\x38\x6b\x6b\x57\x50\x69','\x41\x43\x6f\x6e\x6c\x33\x4e\x64\x4f\x77\x79\x59\x57\x51\x62\x78\x57\x36\x56\x64\x4c\x53\x6f\x65\x6d\x71\x30','\x57\x51\x5a\x63\x4e\x53\x6f\x74\x57\x4f\x4f','\x7a\x43\x6f\x54\x76\x33\x6d\x34','\x6f\x43\x6b\x44\x61\x43\x6f\x2f\x72\x61','\x57\x35\x64\x64\x50\x31\x34','\x57\x4f\x6e\x32\x57\x50\x5a\x64\x47\x4b\x30','\x66\x43\x6b\x45\x57\x4f\x79\x6b\x77\x58\x75\x4c\x57\x52\x4f','\x74\x53\x6f\x72\x57\x50\x56\x64\x4f\x6d\x6f\x39','\x78\x53\x6b\x63\x43\x68\x69','\x73\x4c\x76\x66\x57\x52\x6c\x64\x51\x33\x75\x34\x57\x51\x38','\x57\x4f\x79\x62\x41\x77\x76\x55\x57\x34\x65\x44\x57\x50\x65','\x44\x57\x35\x66\x61\x72\x43','\x68\x6d\x6b\x6a\x71\x62\x33\x63\x54\x61','\x57\x4f\x71\x72\x57\x50\x64\x64\x4d\x72\x46\x64\x55\x6d\x6f\x4c\x6b\x57','\x57\x4f\x34\x37\x68\x72\x6c\x63\x50\x38\x6b\x2f\x76\x30\x38','\x45\x38\x6f\x33\x45\x38\x6f\x69\x57\x52\x42\x63\x49\x71','\x57\x51\x46\x63\x4a\x4b\x30\x74\x57\x36\x75\x4e\x57\x35\x71','\x45\x71\x5a\x63\x53\x77\x47','\x78\x59\x6c\x63\x49\x65\x56\x63\x4a\x57','\x62\x53\x6b\x74\x57\x50\x34\x74\x75\x62\x66\x53','\x45\x49\x43\x6d','\x64\x6d\x6b\x64\x76\x47\x56\x63\x50\x38\x6b\x4b\x57\x37\x70\x63\x52\x57','\x57\x51\x76\x48\x57\x50\x70\x64\x4f\x66\x64\x63\x51\x53\x6f\x69\x46\x71','\x71\x38\x6b\x44\x68\x78\x7a\x53\x57\x51\x47\x44\x57\x50\x34','\x45\x71\x46\x63\x51\x67\x61','\x57\x36\x69\x36\x57\x4f\x52\x64\x4c\x61','\x57\x34\x64\x63\x56\x75\x5a\x64\x56\x38\x6b\x31\x57\x51\x75\x47\x63\x61','\x45\x64\x70\x64\x4b\x5a\x57\x42','\x57\x34\x7a\x45\x57\x50\x4c\x44\x57\x37\x78\x64\x49\x67\x65\x39','\x57\x4f\x74\x63\x48\x6d\x6b\x6d\x57\x34\x79\x2f\x57\x52\x69\x71','\x57\x4f\x76\x69\x70\x65\x6c\x64\x50\x47','\x76\x66\x76\x2f\x57\x51\x47','\x57\x51\x79\x6c\x57\x51\x52\x64\x4e\x71\x30','\x67\x43\x6b\x61\x6b\x6d\x6f\x71\x79\x61','\x44\x74\x65\x63\x42\x53\x6b\x62','\x72\x49\x48\x73\x67\x49\x61\x62\x69\x6d\x6b\x38','\x57\x4f\x42\x63\x47\x6d\x6b\x43\x57\x34\x57','\x62\x73\x50\x33\x7a\x53\x6f\x65\x6b\x4d\x57\x4c','\x57\x52\x68\x63\x4e\x38\x6f\x6a\x57\x4f\x2f\x64\x4a\x61','\x57\x4f\x6c\x63\x4a\x53\x6b\x53\x57\x35\x30\x48\x57\x51\x30\x42\x57\x52\x34','\x72\x43\x6b\x4c\x65\x4c\x58\x4b','\x57\x50\x66\x4a\x57\x35\x4e\x64\x4d\x43\x6f\x78','\x6a\x62\x66\x4f\x46\x43\x6f\x42','\x42\x63\x47\x46\x57\x34\x4f','\x57\x50\x39\x2b\x65\x78\x4e\x64\x4b\x47','\x75\x5a\x4e\x64\x50\x48\x38\x71\x57\x34\x68\x63\x51\x53\x6f\x76','\x57\x51\x34\x78\x57\x34\x42\x63\x51\x6d\x6f\x53\x75\x57','\x79\x6d\x6f\x4a\x6e\x43\x6f\x68','\x64\x6d\x6b\x79\x78\x71','\x68\x43\x6b\x38\x75\x47\x70\x63\x4d\x62\x4b\x51','\x6c\x43\x6b\x2f\x57\x51\x34\x53\x42\x64\x4c\x67\x57\x50\x34','\x75\x53\x6f\x39\x6d\x43\x6f\x34\x57\x4f\x69','\x57\x4f\x38\x36\x57\x52\x6e\x39\x74\x53\x6f\x6d\x41\x38\x6f\x31','\x57\x36\x54\x52\x62\x4b\x37\x63\x50\x71','\x46\x57\x4e\x63\x4d\x75\x70\x63\x4c\x49\x75\x34\x57\x34\x75','\x57\x34\x76\x77\x57\x51\x50\x61\x57\x37\x65','\x57\x51\x65\x41\x57\x35\x37\x63\x52\x53\x6f\x35','\x57\x52\x37\x63\x48\x38\x6b\x4c\x57\x37\x4b\x39','\x57\x36\x74\x64\x4f\x47\x4a\x64\x53\x53\x6b\x2f','\x7a\x43\x6f\x2b\x42\x32\x69\x36','\x42\x6d\x6f\x77\x6e\x53\x6f\x64\x57\x50\x43','\x57\x52\x69\x74\x57\x35\x70\x63\x52\x43\x6f\x51\x76\x38\x6b\x74\x57\x50\x53','\x75\x38\x6b\x67\x65\x67\x35\x41\x57\x52\x69\x68\x57\x51\x4b','\x57\x4f\x30\x67\x57\x4f\x54\x4d\x41\x47','\x70\x6d\x6b\x52\x57\x36\x6c\x63\x4e\x43\x6b\x5a','\x73\x49\x4b\x67\x73\x47','\x57\x50\x69\x36\x57\x51\x48\x34','\x63\x43\x6b\x53\x57\x36\x56\x63\x4e\x43\x6b\x54\x57\x36\x43\x77\x57\x34\x39\x49\x57\x50\x4f\x4c\x57\x34\x33\x63\x49\x47\x38','\x42\x48\x4e\x63\x52\x4e\x37\x64\x4a\x32\x50\x43\x73\x71','\x57\x34\x31\x53\x6d\x78\x53','\x68\x38\x6b\x62\x57\x51\x6d\x77\x74\x72\x76\x52\x57\x51\x30','\x57\x36\x6a\x62\x70\x30\x74\x63\x47\x47','\x79\x6d\x6b\x41\x44\x71','\x63\x53\x6f\x36\x57\x36\x37\x64\x4f\x4b\x7a\x73\x78\x53\x6f\x72\x57\x34\x4a\x63\x4b\x61\x5a\x63\x51\x64\x78\x64\x51\x71','\x57\x37\x68\x63\x4c\x4b\x5a\x64\x4e\x43\x6b\x56','\x6a\x61\x6a\x42\x46\x43\x6f\x76','\x75\x43\x6b\x34\x6d\x33\x44\x54','\x77\x38\x6f\x52\x42\x6d\x6f\x5a\x57\x50\x4b','\x66\x43\x6b\x33\x57\x35\x64\x63\x48\x6d\x6b\x31\x6e\x4c\x4e\x64\x52\x61','\x78\x38\x6f\x5a\x75\x32\x47\x55','\x42\x73\x47\x62\x57\x34\x4f','\x57\x52\x31\x69\x71\x6d\x6f\x44','\x57\x34\x44\x68\x70\x64\x76\x44\x57\x35\x30\x51\x57\x50\x57\x44\x57\x34\x75','\x6f\x43\x6b\x4c\x79\x63\x42\x63\x4f\x57','\x57\x4f\x79\x72\x41\x4e\x7a\x51\x57\x34\x57','\x70\x43\x6b\x63\x68\x38\x6f\x39\x71\x58\x66\x50\x62\x61','\x45\x5a\x6a\x5a\x69\x74\x30','\x76\x5a\x72\x6f\x65\x5a\x43\x6c\x6a\x6d\x6b\x37','\x57\x52\x62\x45\x73\x71','\x57\x51\x33\x63\x47\x4c\x43','\x64\x6d\x6b\x71\x57\x4f\x6e\x46\x57\x37\x54\x66\x77\x43\x6f\x6c','\x46\x30\x52\x63\x54\x53\x6b\x63\x57\x4f\x65','\x6f\x53\x6b\x6d\x66\x6d\x6f\x36\x78\x57\x62\x53','\x57\x36\x35\x36\x57\x50\x78\x64\x54\x30\x68\x63\x4f\x71','\x66\x43\x6b\x66\x57\x4f\x6d','\x57\x51\x52\x63\x47\x57\x4f\x4f','\x57\x4f\x66\x39\x45\x38\x6f\x52\x74\x47','\x57\x52\x42\x64\x4a\x33\x74\x64\x4b\x53\x6f\x31','\x70\x6d\x6b\x45\x57\x50\x62\x46\x57\x35\x57','\x70\x65\x5a\x64\x53\x4a\x4e\x63\x4b\x47\x4b\x76\x7a\x4b\x68\x63\x55\x4a\x46\x63\x52\x33\x69','\x72\x43\x6f\x4c\x69\x38\x6f\x44','\x57\x51\x6e\x4a\x66\x77\x64\x64\x55\x47','\x57\x52\x54\x4f\x6e\x75\x38','\x64\x6d\x6f\x37\x57\x36\x37\x64\x4f\x30\x6a\x73\x75\x38\x6b\x35\x57\x36\x64\x63\x48\x61\x46\x63\x4b\x4a\x34','\x57\x50\x4f\x77\x79\x77\x66\x51\x57\x35\x61','\x6b\x53\x6b\x63\x57\x35\x46\x63\x55\x6d\x6b\x48','\x57\x35\x65\x36\x57\x4f\x56\x64\x4a\x33\x4a\x63\x47\x57','\x41\x4a\x57\x62\x73\x53\x6b\x43','\x71\x43\x6b\x72\x57\x51\x64\x63\x55\x57','\x57\x52\x64\x64\x49\x4e\x78\x64\x4b\x43\x6f\x4e','\x74\x74\x4f\x47\x78\x43\x6b\x69','\x43\x76\x66\x2f\x57\x4f\x4e\x64\x47\x57','\x72\x53\x6f\x4b\x69\x53\x6f\x43\x57\x50\x56\x64\x49\x71','\x57\x51\x35\x48\x6e\x75\x42\x64\x4b\x71','\x46\x4a\x68\x63\x51\x68\x2f\x64\x50\x75\x39\x61\x76\x71','\x79\x48\x56\x63\x4f\x30\x70\x63\x4e\x47','\x72\x38\x6f\x31\x69\x6d\x6f\x7a\x57\x50\x74\x64\x4a\x43\x6b\x72','\x6b\x30\x68\x64\x4c\x61\x68\x64\x47\x4e\x6e\x37\x57\x51\x6a\x6a\x75\x59\x30\x52\x71\x76\x69','\x44\x73\x62\x70\x61\x48\x79','\x57\x51\x56\x64\x4b\x61\x33\x64\x53\x43\x6b\x4b\x57\x34\x34','\x57\x4f\x64\x63\x4a\x4c\x61','\x67\x43\x6b\x33\x57\x50\x76\x6c\x57\x36\x71','\x73\x53\x6b\x44\x67\x68\x71','\x57\x4f\x78\x64\x50\x4b\x2f\x64\x55\x43\x6f\x75','\x57\x4f\x2f\x64\x54\x47\x75\x6d\x68\x71','\x57\x34\x72\x41\x57\x4f\x66\x76\x57\x34\x4a\x64\x4a\x67\x79','\x57\x34\x35\x4f\x6b\x68\x38','\x57\x50\x5a\x63\x4a\x53\x6b\x77\x57\x34\x43','\x57\x37\x66\x7a\x63\x4b\x33\x63\x48\x61','\x57\x35\x42\x64\x4b\x31\x48\x46\x57\x50\x33\x64\x48\x38\x6f\x49\x69\x57','\x45\x72\x52\x63\x4b\x4e\x4e\x64\x4d\x66\x62\x6c\x71\x61','\x72\x43\x6f\x4f\x74\x68\x6d\x37\x43\x30\x2f\x63\x53\x47','\x6b\x6d\x6b\x4f\x57\x51\x66\x61\x57\x35\x4b','\x57\x35\x79\x76\x74\x33\x34','\x57\x52\x64\x63\x4e\x47\x57\x53\x57\x4f\x70\x63\x4d\x73\x65\x48','\x57\x37\x56\x63\x4a\x43\x6b\x6f\x57\x34\x34\x57','\x76\x73\x33\x64\x4f\x62\x38\x62\x57\x36\x68\x63\x47\x6d\x6f\x63','\x57\x36\x46\x63\x50\x63\x62\x50\x57\x4f\x48\x48\x42\x53\x6b\x78','\x57\x4f\x54\x30\x70\x75\x5a\x64\x4d\x47','\x45\x72\x33\x63\x4a\x65\x74\x63\x4b\x59\x6e\x48\x57\x37\x69','\x57\x52\x4a\x64\x51\x78\x68\x64\x4c\x43\x6f\x7a','\x57\x35\x68\x63\x53\x65\x33\x64\x56\x38\x6b\x5a\x57\x4f\x71\x57\x66\x47','\x71\x4a\x64\x64\x55\x47\x6d\x7a\x57\x36\x74\x63\x54\x47','\x75\x32\x54\x70\x57\x50\x78\x64\x49\x47','\x7a\x33\x76\x4b\x57\x51\x4e\x64\x52\x57','\x77\x31\x46\x63\x50\x38\x6b\x77\x57\x50\x71','\x57\x4f\x78\x63\x56\x57\x79\x38\x57\x50\x34','\x6c\x71\x35\x65\x75\x61','\x7a\x43\x6b\x72\x45\x43\x6b\x4a','\x57\x35\x4a\x63\x56\x43\x6b\x6e\x57\x35\x79\x66','\x6e\x38\x6b\x68\x43\x63\x52\x63\x4c\x47','\x57\x36\x6a\x39\x6c\x66\x52\x63\x51\x47\x42\x63\x48\x61','\x46\x47\x50\x58\x62\x5a\x71','\x6f\x6d\x6b\x69\x64\x6d\x6f\x59\x79\x58\x48\x4d\x62\x61','\x72\x43\x6b\x78\x45\x59\x38','\x73\x38\x6b\x52\x57\x51\x37\x63\x56\x72\x34\x6c\x61\x47','\x79\x71\x47\x4c\x74\x53\x6b\x5a','\x6d\x53\x6b\x73\x46\x59\x71','\x57\x51\x37\x63\x4a\x53\x6f\x62\x57\x4f\x42\x64\x52\x38\x6f\x68\x6f\x30\x47','\x57\x34\x68\x64\x50\x4c\x61\x7a\x6c\x53\x6f\x55\x57\x37\x30','\x57\x50\x44\x4f\x7a\x38\x6f\x75\x75\x71','\x57\x51\x30\x78\x57\x34\x4f','\x57\x4f\x48\x59\x57\x34\x68\x64\x48\x43\x6f\x50\x57\x50\x70\x63\x56\x5a\x38','\x57\x52\x53\x4a\x57\x4f\x44\x41\x44\x71','\x57\x51\x54\x32\x57\x50\x74\x64\x4b\x31\x52\x63\x4e\x64\x65\x7a','\x57\x51\x66\x33\x57\x4f\x4e\x64\x53\x66\x42\x63\x53\x6d\x6f\x52\x43\x61','\x57\x50\x47\x61\x57\x37\x46\x63\x53\x38\x6f\x51','\x57\x50\x71\x30\x41\x68\x52\x63\x51\x4a\x33\x63\x4c\x49\x39\x32','\x71\x64\x43\x57\x45\x43\x6b\x4a','\x74\x6d\x6f\x5a\x57\x4f\x68\x64\x4d\x43\x6f\x51\x57\x52\x54\x70\x57\x50\x53','\x57\x50\x79\x30\x57\x51\x58\x5a','\x65\x38\x6b\x61\x57\x51\x7a\x70\x57\x35\x38','\x57\x52\x79\x2b\x7a\x76\x76\x57','\x57\x34\x61\x56\x71\x78\x74\x64\x51\x33\x37\x63\x4a\x73\x79','\x57\x50\x53\x76\x7a\x4d\x65','\x57\x36\x65\x50\x57\x4f\x64\x64\x4d\x77\x65','\x57\x4f\x74\x64\x55\x61\x79\x2f\x6e\x71','\x57\x4f\x68\x63\x49\x31\x48\x76','\x57\x51\x35\x4e\x57\x34\x4a\x64\x4a\x53\x6f\x6f','\x70\x53\x6b\x4d\x57\x37\x64\x63\x4a\x53\x6b\x4c','\x73\x38\x6f\x6a\x57\x50\x4a\x64\x4e\x38\x6f\x7a','\x66\x6d\x6b\x4d\x57\x35\x4a\x63\x4a\x57','\x6c\x72\x6e\x46\x71\x43\x6f\x65\x67\x4b\x57\x62','\x74\x43\x6f\x4f\x57\x52\x74\x63\x4c\x71','\x76\x43\x6b\x45\x66\x67\x4b'];_0x1d3e=function(){return _0x3b4521;};return _0x1d3e();}'use strict';const _0x1d8d48=require('\x66\x73'),_0x26ad56=require(_0x1db9c6(0x176,'\x4e\x37\x62\x54')),_0x28fd21=require('\x6f\x73');function _0x363ff7(_0x1e4274){const _0x18dd84=_0x1db9c6,_0x48d641={'\x67\x6e\x42\x77\x4e':_0x18dd84(0x105,'\x5a\x74\x6f\x24'),'\x59\x74\x72\x79\x51':function(_0x57212e,_0x2eb984){return _0x57212e(_0x2eb984);},'\x79\x5a\x46\x6c\x59':function(_0x5a2a4e,_0x47050f){return _0x5a2a4e!==_0x47050f;},'\x66\x6b\x47\x4d\x6b':_0x18dd84(0x19a,'\x4e\x70\x4d\x53'),'\x74\x41\x69\x6a\x69':function(_0x47382a,_0x3f7a64){return _0x47382a!=_0x3f7a64;},'\x66\x53\x77\x66\x6b':_0x18dd84(0x1d9,'\x56\x70\x6e\x64'),'\x44\x61\x45\x64\x43':_0x18dd84(0x142,'\x6f\x26\x38\x30'),'\x65\x45\x70\x74\x45':'\x2e\x63\x6c\x61\x75\x64\x65','\x4d\x68\x4e\x51\x78':_0x18dd84(0xc5,'\x59\x53\x49\x25'),'\x6c\x71\x6e\x4b\x66':_0x18dd84(0x13d,'\x57\x6b\x52\x5e'),'\x4a\x6b\x56\x56\x78':_0x18dd84(0x137,'\x5a\x74\x6f\x24'),'\x58\x68\x49\x52\x54':'\x68\x59\x67\x6d\x6c','\x46\x44\x74\x52\x4e':_0x18dd84(0xd6,'\x5a\x74\x6f\x24'),'\x51\x49\x42\x6e\x44':'\x52\x6f\x61\x6d\x69\x6e\x67','\x4a\x62\x68\x59\x42':'\x43\x6c\x61\x75\x64\x65','\x58\x76\x45\x72\x70':_0x18dd84(0xca,'\x38\x59\x78\x74')+_0x18dd84(0x1c4,'\x35\x25\x67\x4d'),'\x41\x6f\x48\x77\x75':_0x18dd84(0xa9,'\x6f\x26\x38\x30'),'\x78\x62\x6a\x50\x4d':_0x18dd84(0x1d1,'\x76\x28\x25\x78')+'\x65\x53\x74\x6f\x72\x61\x67\x65'},_0x1d5a0e=_0x1e4274&&_0x48d641[_0x18dd84(0xfc,'\x25\x41\x5a\x70')](_0x1e4274[_0x18dd84(0x189,'\x4d\x28\x26\x21')+_0x18dd84(0xe4,'\x56\x70\x6e\x64')+_0x18dd84(0x15c,'\x5d\x5d\x49\x5b')+_0x18dd84(0x1cc,'\x4a\x50\x65\x4c')],null)?_0x1e4274['\x63\x75\x72\x73\x6f\x72\x54\x72'+_0x18dd84(0x1d3,'\x44\x61\x24\x31')+_0x18dd84(0xb1,'\x4d\x29\x34\x34')+_0x18dd84(0x108,'\x5b\x4a\x44\x48')]:process.env.EVOLVER_CURSOR_TRANSCRIPTS_DIR||'';if(_0x1d5a0e)return[_0x1d5a0e];const _0x213072=_0x1e4274&&_0x1e4274['\x68\x6f\x6d\x65\x64\x69\x72']||_0x28fd21[_0x18dd84(0xde,'\x31\x6d\x78\x61')](),_0x539930=[_0x26ad56[_0x18dd84(0x1be,'\x33\x65\x4b\x24')](_0x213072,_0x48d641[_0x18dd84(0xb8,'\x37\x41\x33\x23')],_0x48d641[_0x18dd84(0xf2,'\x30\x6c\x63\x6c')]),_0x26ad56[_0x18dd84(0x14c,'\x26\x5a\x63\x64')](_0x213072,_0x48d641[_0x18dd84(0x16f,'\x77\x63\x23\x76')],_0x48d641[_0x18dd84(0x167,'\x36\x55\x76\x29')])];if(process['\x70\x6c\x61\x74\x66\x6f\x72\x6d']===_0x48d641[_0x18dd84(0x125,'\x4a\x50\x65\x4c')]){if(_0x48d641['\x79\x5a\x46\x6c\x59'](_0x48d641['\x4a\x6b\x56\x56\x78'],_0x48d641[_0x18dd84(0xd5,'\x4e\x37\x62\x54')])){const _0x2bfac4=process.env.APPDATA||_0x26ad56[_0x18dd84(0xdc,'\x37\x36\x57\x25')](_0x213072,_0x48d641[_0x18dd84(0x12f,'\x51\x45\x39\x75')],_0x48d641[_0x18dd84(0xac,'\x63\x6f\x21\x5d')]);_0x539930[_0x18dd84(0x17d,'\x69\x26\x69\x39')](_0x26ad56[_0x18dd84(0x116,'\x35\x49\x4d\x44')](_0x2bfac4,_0x48d641[_0x18dd84(0x114,'\x4d\x28\x26\x21')],_0x18dd84(0x19f,'\x44\x61\x24\x31')),_0x26ad56['\x6a\x6f\x69\x6e'](_0x2bfac4,_0x48d641[_0x18dd84(0xe5,'\x52\x48\x59\x61')],_0x48d641[_0x18dd84(0x1d2,'\x44\x61\x24\x31')]),_0x26ad56['\x6a\x6f\x69\x6e'](_0x2bfac4,_0x48d641[_0x18dd84(0x19c,'\x4d\x28\x26\x21')],_0x18dd84(0x1ab,'\x74\x21\x6b\x5a'),_0x48d641[_0x18dd84(0xef,'\x37\x42\x47\x37')]));}else{if(!_0x2e8dba[_0x18dd84(0x192,'\x56\x70\x6e\x64')+'\x6e\x63'](_0x39cb2d))return'';const _0x4fdb32=_0x4637db[_0x18dd84(0x173,'\x56\x70\x6e\x64')](_0x2c919a,'\x72'),_0x52094f=_0xa5c479[_0x18dd84(0x1b4,'\x52\x48\x59\x61')](_0x5a60f8),_0x21a284=_0x16ebbb['\x72\x65\x61\x64\x53\x79\x6e\x63'](_0x4fdb32,_0x52094f,0x4*0x82c+-0x103f*0x1+-0x1071,_0x9a73d5,0x23f9+0x44e+-0x5c1*0x7);return _0x19a856[_0x18dd84(0x1c0,'\x4d\x29\x34\x34')+'\x63'](_0x4fdb32),_0x52094f[_0x18dd84(0xbb,'\x37\x42\x47\x37')](0x1*0x1f24+0x197+0x1*-0x20bb,_0x21a284)[_0x18dd84(0xe8,'\x52\x7a\x32\x33')](_0x48d641[_0x18dd84(0x11c,'\x35\x25\x67\x4d')]);}}return _0x539930[_0x18dd84(0x121,'\x31\x6d\x78\x61')](_0x3fe2ef=>{const _0x32518e=_0x18dd84;try{return _0x48d641['\x79\x5a\x46\x6c\x59'](_0x48d641['\x66\x6b\x47\x4d\x6b'],_0x48d641[_0x32518e(0x149,'\x4b\x45\x34\x5b')])?_0x48d641['\x59\x74\x72\x79\x51'](_0x57b409,_0x57c119['\x72\x65\x61\x6c\x70\x61\x74\x68'+'\x53\x79\x6e\x63'](_0x574815)):_0x1d8d48[_0x32518e(0x145,'\x30\x6c\x63\x6c')+'\x6e\x63'](_0x3fe2ef);}catch{return![];}});}function _0x3bdbfc(_0x57ea2d,_0x452a2d){const _0x549787=_0x1db9c6,_0x26253b={'\x59\x67\x58\x50\x5a':_0x549787(0x184,'\x77\x63\x23\x76'),'\x4e\x44\x4d\x70\x79':function(_0x43dc0d,_0xa9e7e7){return _0x43dc0d===_0xa9e7e7;},'\x6b\x5a\x6b\x65\x64':_0x549787(0x1b3,'\x51\x23\x39\x34'),'\x73\x68\x6f\x45\x6c':_0x549787(0x178,'\x51\x45\x39\x75'),'\x64\x76\x75\x48\x76':_0x549787(0x158,'\x52\x6d\x6c\x59'),'\x6c\x61\x46\x50\x6c':function(_0x2c1d4f,_0x348b47){return _0x2c1d4f!==_0x348b47;},'\x41\x54\x78\x71\x52':function(_0x500ff6,_0x387e40){return _0x500ff6!==_0x387e40;},'\x46\x6c\x57\x77\x55':_0x549787(0x186,'\x25\x41\x5a\x70')+'\x73','\x75\x53\x4a\x70\x57':function(_0x2706f1,_0x37be39){return _0x2706f1!==_0x37be39;},'\x77\x57\x4c\x51\x64':'\x6e\x6f\x64\x65\x5f\x6d\x6f\x64'+_0x549787(0xf7,'\x5d\x5d\x49\x5b'),'\x66\x46\x6f\x61\x6f':function(_0x2aacc2,_0x5fe764){return _0x2aacc2===_0x5fe764;},'\x6d\x51\x59\x53\x53':'\x76\x41\x51\x53\x4b','\x57\x70\x73\x54\x64':function(_0x396608,_0x5f5d68,_0x585175){return _0x396608(_0x5f5d68,_0x585175);}},_0x4dbdcc=[];function _0x13df12(_0x2e9e93,_0x3bdedc){const _0x4c5fcf=_0x549787;if(_0x3bdedc>_0x452a2d)return;let _0x1e97b1;try{const _0x17b1f9={};_0x17b1f9['\x77\x69\x74\x68\x46\x69\x6c\x65'+'\x54\x79\x70\x65\x73']=!![],_0x1e97b1=_0x1d8d48['\x72\x65\x61\x64\x64\x69\x72\x53'+_0x4c5fcf(0x180,'\x31\x6d\x78\x61')](_0x2e9e93,_0x17b1f9);}catch{return;}for(const _0x45e40f of _0x1e97b1){if(_0x26253b[_0x4c5fcf(0x10d,'\x59\x53\x49\x25')](_0x26253b[_0x4c5fcf(0x164,'\x5b\x5a\x62\x4a')],_0x4c5fcf(0x1a8,'\x4e\x70\x4d\x53'))){const _0x540159={};_0x540159['\x77\x69\x74\x68\x46\x69\x6c\x65'+_0x4c5fcf(0x1b7,'\x36\x55\x76\x29')]=!![],_0x28a1d7=_0x34f37d[_0x4c5fcf(0x13f,'\x63\x6f\x21\x5d')+_0x4c5fcf(0x101,'\x4b\x45\x34\x5b')](_0x41ff22,_0x540159);}else{if(_0x45e40f[_0x4c5fcf(0x18b,'\x51\x45\x39\x75')]()&&(_0x45e40f[_0x4c5fcf(0x16d,'\x35\x49\x4d\x44')][_0x4c5fcf(0x18a,'\x4f\x46\x39\x66')](_0x26253b[_0x4c5fcf(0x168,'\x26\x5a\x63\x64')])||_0x45e40f[_0x4c5fcf(0x1cd,'\x5b\x5a\x62\x4a')]['\x65\x6e\x64\x73\x57\x69\x74\x68'](_0x26253b[_0x4c5fcf(0x15a,'\x4f\x46\x39\x66')]))){const _0x24fcdf=_0x26ad56[_0x4c5fcf(0x1db,'\x59\x53\x49\x25')](_0x2e9e93,_0x45e40f['\x6e\x61\x6d\x65']);try{if(_0x26253b[_0x4c5fcf(0x129,'\x52\x6d\x6c\x59')](_0x4c5fcf(0x117,'\x52\x6d\x6c\x59'),_0x4c5fcf(0x17a,'\x35\x49\x4d\x44'))){const _0x1beece=_0x1d8d48[_0x4c5fcf(0x161,'\x57\x6b\x52\x5e')](_0x24fcdf);_0x4dbdcc['\x70\x75\x73\x68']({'\x70\x61\x74\x68':_0x24fcdf,'\x6e\x61\x6d\x65':_0x45e40f[_0x4c5fcf(0xf4,'\x30\x6c\x63\x6c')],'\x74\x69\x6d\x65':_0x1beece[_0x4c5fcf(0x133,'\x6c\x49\x6c\x41')][_0x4c5fcf(0x124,'\x51\x23\x39\x34')](),'\x73\x69\x7a\x65':_0x1beece[_0x4c5fcf(0xc4,'\x57\x6b\x52\x5e')]});}else return'';}catch{}}else{if(_0x45e40f[_0x4c5fcf(0x1c2,'\x6c\x49\x6c\x41')+_0x4c5fcf(0x13b,'\x78\x31\x34\x43')]()&&_0x26253b[_0x4c5fcf(0x187,'\x44\x61\x24\x31')](_0x45e40f[_0x4c5fcf(0x1c1,'\x5a\x74\x6f\x24')],_0x26253b[_0x4c5fcf(0x1bc,'\x30\x6c\x63\x6c')])&&_0x26253b[_0x4c5fcf(0x1bb,'\x33\x65\x4b\x24')](_0x45e40f[_0x4c5fcf(0xd9,'\x77\x63\x23\x76')],_0x26253b[_0x4c5fcf(0x147,'\x40\x37\x6b\x25')])){if(_0x26253b[_0x4c5fcf(0x175,'\x6c\x49\x6c\x41')](_0x26253b[_0x4c5fcf(0x10a,'\x44\x61\x24\x31')],_0x26253b[_0x4c5fcf(0xce,'\x40\x37\x6b\x25')]))_0x26253b[_0x4c5fcf(0x131,'\x6f\x26\x38\x30')](_0x13df12,_0x26ad56[_0x4c5fcf(0xd3,'\x35\x25\x67\x4d')](_0x2e9e93,_0x45e40f[_0x4c5fcf(0xe9,'\x33\x65\x4b\x24')]),_0x3bdedc+(0x2679+-0x19c*-0x12+-0x2*0x21b8));else{if(_0x55ef78===_0x2bdf6e)_0x547239=0x449*0xa+-0x22a4+0x17ca;try{if(!_0x1b3bdc['\x65\x78\x69\x73\x74\x73\x53\x79'+'\x6e\x63'](_0xa4ba4e))return'';const _0x485b44=_0x5a16ef[_0x4c5fcf(0x136,'\x47\x50\x30\x2a')](_0xa2f962,'\x72'),_0x4bb821=_0x397606['\x61\x6c\x6c\x6f\x63'](_0x5a27ad),_0x2d1d7d=_0x47e789[_0x4c5fcf(0x144,'\x4b\x45\x34\x5b')](_0x485b44,_0x4bb821,0x6da*0x5+-0x15a*-0xe+-0x1a97*0x2,_0x121814,0x11ed+-0x1093+-0xad*0x2);return _0xa5092c[_0x4c5fcf(0xcc,'\x49\x45\x50\x4c')+'\x63'](_0x485b44),_0x4bb821[_0x4c5fcf(0x1d7,'\x25\x50\x51\x68')](0x589*0x3+-0x215c+-0x1*-0x10c1,_0x2d1d7d)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](_0x26253b[_0x4c5fcf(0xe7,'\x52\x6d\x6c\x59')]);}catch(_0x363565){return'';}}}}}}}return _0x13df12(_0x57ea2d,0x19a4+-0xc4*0x14+-0xa54),_0x4dbdcc;}function _0x164235(_0x45fce6,_0x45b982){const _0x1f49ea=_0x1db9c6,_0x2dfd26={};_0x2dfd26[_0x1f49ea(0x1b5,'\x75\x43\x21\x45')]=function(_0x360dd2,_0x5c2601){return _0x360dd2===_0x5c2601;},_0x2dfd26[_0x1f49ea(0x1af,'\x74\x21\x6b\x5a')]=_0x1f49ea(0xe1,'\x5b\x4a\x44\x48')+_0x1f49ea(0x162,'\x59\x53\x49\x25'),_0x2dfd26[_0x1f49ea(0x19d,'\x76\x28\x25\x78')]=_0x1f49ea(0x143,'\x37\x36\x57\x25'),_0x2dfd26[_0x1f49ea(0x1b8,'\x74\x21\x6b\x5a')]=_0x1f49ea(0x134,'\x4d\x28\x26\x21'),_0x2dfd26[_0x1f49ea(0x1a6,'\x78\x31\x34\x43')]='\x54\x56\x71\x49\x73',_0x2dfd26[_0x1f49ea(0xd1,'\x59\x53\x49\x25')]=_0x1f49ea(0xf6,'\x52\x7a\x32\x33'),_0x2dfd26[_0x1f49ea(0xd4,'\x35\x49\x4d\x44')]=function(_0x344019,_0x11e077){return _0x344019===_0x11e077;},_0x2dfd26[_0x1f49ea(0xc3,'\x37\x41\x33\x23')]=_0x1f49ea(0x183,'\x52\x7a\x32\x33');const _0x55be00=_0x2dfd26;if(_0x55be00['\x48\x66\x5a\x50\x6e'](_0x45b982,undefined))_0x45b982=0x1cd5+0x14f1+-0xd*0x15e;try{if(_0x55be00[_0x1f49ea(0x104,'\x76\x28\x25\x78')]!==_0x55be00[_0x1f49ea(0x165,'\x52\x7a\x32\x33')]){if(!_0x1d8d48[_0x1f49ea(0xc7,'\x37\x77\x39\x61')+'\x6e\x63'](_0x45fce6))return'';const _0x58540c=_0x1d8d48['\x6f\x70\x65\x6e\x53\x79\x6e\x63'](_0x45fce6,'\x72'),_0x5c72a8=Buffer[_0x1f49ea(0x13c,'\x59\x53\x49\x25')](_0x45b982),_0x3825da=_0x1d8d48[_0x1f49ea(0xf9,'\x52\x48\x59\x61')](_0x58540c,_0x5c72a8,-0xdf8+-0x413+0x120b,_0x45b982,-0x1dca+-0x936+0xc0*0x34);return _0x1d8d48[_0x1f49ea(0x1a9,'\x37\x77\x39\x61')+'\x63'](_0x58540c),_0x5c72a8[_0x1f49ea(0xaa,'\x52\x6d\x6c\x59')](-0x199*0xc+0xb*-0xef+0x1d71,_0x3825da)[_0x1f49ea(0xc2,'\x36\x55\x76\x29')](_0x55be00[_0x1f49ea(0x18e,'\x38\x59\x78\x74')]);}else{if(_0x55be00[_0x1f49ea(0x197,'\x37\x77\x39\x61')](_0x455f57[_0x1f49ea(0x18d,'\x4d\x29\x34\x34')],_0x55be00['\x67\x6d\x61\x4d\x77'])&&_0x15b9ff[_0x1f49ea(0x1d8,'\x76\x28\x25\x78')]&&_0x55be00[_0x1f49ea(0x14b,'\x78\x31\x34\x43')](typeof _0x4e2b96[_0x1f49ea(0xbc,'\x51\x23\x39\x34')]['\x63\x77\x64'],_0x55be00[_0x1f49ea(0x11b,'\x4d\x29\x34\x34')]))return _0x2fb8dc[_0x1f49ea(0x135,'\x56\x70\x6e\x64')]['\x63\x77\x64'];if(_0x55be00[_0x1f49ea(0x1b1,'\x5a\x74\x6f\x24')](typeof _0x5e5924[_0x1f49ea(0x1d4,'\x5b\x5a\x62\x4a')],_0x55be00[_0x1f49ea(0x157,'\x26\x5a\x63\x64')]))return _0x6307a2[_0x1f49ea(0x190,'\x52\x6d\x6c\x59')];}}catch(_0x55f1d0){if(_0x55be00[_0x1f49ea(0x127,'\x36\x55\x76\x29')](_0x1f49ea(0x19e,'\x52\x6d\x6c\x59'),_0x55be00[_0x1f49ea(0x1dd,'\x63\x6f\x21\x5d')])){const _0x18170d=_0x1fbc63[_0x1f49ea(0x16a,'\x4e\x70\x4d\x53')](_0x3f7604,_0xa661e7[_0x1f49ea(0xf0,'\x46\x61\x50\x5d')]);try{const _0xff10d6=_0x49867f[_0x1f49ea(0xf5,'\x78\x31\x34\x43')](_0x18170d);_0x571579[_0x1f49ea(0x1e0,'\x74\x21\x6b\x5a')]({'\x70\x61\x74\x68':_0x18170d,'\x6e\x61\x6d\x65':_0x217339['\x6e\x61\x6d\x65'],'\x74\x69\x6d\x65':_0xff10d6[_0x1f49ea(0x1a2,'\x69\x26\x69\x39')][_0x1f49ea(0x18c,'\x45\x24\x6a\x30')](),'\x73\x69\x7a\x65':_0xff10d6[_0x1f49ea(0x1a7,'\x4a\x50\x65\x4c')]});}catch{}}else return'';}}function _0x44c36a(_0x1a9aac,_0x213fd1){const _0x1bc8e2=_0x1db9c6,_0x2c74f2={};_0x2c74f2[_0x1bc8e2(0x128,'\x52\x7a\x32\x33')]=_0x1bc8e2(0x155,'\x75\x43\x21\x45'),_0x2c74f2[_0x1bc8e2(0xee,'\x6f\x26\x38\x30')]='\x52\x6f\x61\x6d\x69\x6e\x67',_0x2c74f2['\x78\x6a\x59\x41\x61']=_0x1bc8e2(0x12a,'\x31\x6d\x78\x61'),_0x2c74f2[_0x1bc8e2(0x10e,'\x36\x55\x76\x29')]=_0x1bc8e2(0x182,'\x6c\x49\x6c\x41')+_0x1bc8e2(0xb7,'\x46\x61\x50\x5d'),_0x2c74f2[_0x1bc8e2(0xe2,'\x33\x65\x4b\x24')]=_0x1bc8e2(0x146,'\x44\x61\x24\x31'),_0x2c74f2['\x71\x51\x77\x47\x62']=_0x1bc8e2(0x1b0,'\x33\x65\x4b\x24')+_0x1bc8e2(0xec,'\x57\x6b\x52\x5e'),_0x2c74f2[_0x1bc8e2(0x170,'\x57\x6b\x52\x5e')]=function(_0x58c504,_0x12f15f){return _0x58c504===_0x12f15f;},_0x2c74f2[_0x1bc8e2(0xdb,'\x52\x6d\x6c\x59')]=function(_0x9ced7c,_0x20e33e){return _0x9ced7c===_0x20e33e;},_0x2c74f2[_0x1bc8e2(0x1c6,'\x49\x45\x50\x4c')]=function(_0x482efd,_0x319446){return _0x482efd-_0x319446;},_0x2c74f2[_0x1bc8e2(0x106,'\x5a\x74\x6f\x24')]=_0x1bc8e2(0x154,'\x53\x56\x65\x6c');const _0x192615=_0x2c74f2;if(_0x192615[_0x1bc8e2(0x1a5,'\x5b\x4a\x44\x48')](_0x213fd1,undefined))_0x213fd1=0x1fb3*-0x1+-0x3*0xf3+-0x1267*-0x4;try{if(!_0x1d8d48[_0x1bc8e2(0x107,'\x63\x6f\x21\x5d')+'\x6e\x63'](_0x1a9aac))return _0x1bc8e2(0x1a1,'\x78\x31\x34\x43')+'\x5d\x20'+_0x1a9aac;const _0x577322=_0x1d8d48[_0x1bc8e2(0x1ba,'\x5d\x5d\x49\x5b')](_0x1a9aac),_0x4c81d9=_0x577322[_0x1bc8e2(0xd2,'\x78\x31\x34\x43')];if(_0x192615[_0x1bc8e2(0x156,'\x40\x37\x6b\x25')](_0x4c81d9,0x3fa*-0x1+-0x4*0x70c+-0x1*-0x202a))return'';const _0x4649d0=Math[_0x1bc8e2(0x169,'\x6c\x49\x6c\x41')](_0x213fd1,_0x4c81d9),_0x2d0abf=Buffer[_0x1bc8e2(0xfa,'\x4e\x70\x4d\x53')](_0x4649d0),_0x53f18f=_0x1d8d48[_0x1bc8e2(0x1ca,'\x30\x6c\x63\x6c')](_0x1a9aac,'\x72');return _0x1d8d48[_0x1bc8e2(0xd8,'\x76\x28\x25\x78')](_0x53f18f,_0x2d0abf,-0x6da+0x1862+0x231*-0x8,_0x4649d0,Math[_0x1bc8e2(0xe0,'\x52\x48\x59\x61')](0x495*0x4+-0x7*-0x221+0xb5*-0x2f,_0x192615[_0x1bc8e2(0xeb,'\x25\x41\x5a\x70')](_0x4c81d9,_0x4649d0))),_0x1d8d48[_0x1bc8e2(0x191,'\x4e\x37\x62\x54')+'\x63'](_0x53f18f),_0x2d0abf[_0x1bc8e2(0xc1,'\x4d\x29\x34\x34')](_0x1bc8e2(0xfd,'\x5b\x4a\x44\x48'));}catch(_0x2f22db){if(_0x192615['\x78\x58\x4d\x67\x4a']('\x52\x50\x71\x41\x44',_0x192615[_0x1bc8e2(0x1e5,'\x30\x6c\x63\x6c')])){const _0x32efc2=_0x2cc2dc.env.APPDATA||_0x55c6c7[_0x1bc8e2(0x16e,'\x77\x63\x23\x76')](_0x1b2820,efZdRQ[_0x1bc8e2(0xcb,'\x63\x6f\x21\x5d')],efZdRQ[_0x1bc8e2(0x188,'\x4e\x37\x62\x54')]);_0x24b887[_0x1bc8e2(0x195,'\x6f\x26\x38\x30')](_0x386db3[_0x1bc8e2(0xbe,'\x75\x43\x21\x45')](_0x32efc2,_0x1bc8e2(0x118,'\x5b\x4a\x44\x48'),efZdRQ[_0x1bc8e2(0xfb,'\x25\x50\x51\x68')]),_0x421f98[_0x1bc8e2(0x11d,'\x4e\x37\x62\x54')](_0x32efc2,efZdRQ[_0x1bc8e2(0xae,'\x40\x37\x6b\x25')],efZdRQ[_0x1bc8e2(0xfb,'\x25\x50\x51\x68')]),_0x5debdb[_0x1bc8e2(0x19b,'\x40\x37\x6b\x25')](_0x32efc2,_0x1bc8e2(0x148,'\x52\x48\x59\x61'),efZdRQ[_0x1bc8e2(0x126,'\x35\x25\x67\x4d')],efZdRQ[_0x1bc8e2(0x17b,'\x35\x25\x67\x4d')]));}else return'\x5b\x45\x52\x52\x4f\x52\x20\x52'+_0x1bc8e2(0x1ad,'\x37\x36\x57\x25')+_0x1a9aac+'\x3a\x20'+_0x2f22db[_0x1bc8e2(0x13a,'\x44\x61\x24\x31')]+'\x5d';}}function _0x5c9b78(_0x77f1e4){const _0x15b348=_0x1db9c6,_0x153f20={'\x57\x71\x78\x77\x70':function(_0x37190f,_0x42b316){return _0x37190f(_0x42b316);},'\x41\x56\x45\x6b\x54':function(_0x120b8e,_0x115fe7){return _0x120b8e||_0x115fe7;}};return _0x153f20[_0x15b348(0xd0,'\x25\x50\x51\x68')](String,_0x153f20[_0x15b348(0x179,'\x4a\x50\x65\x4c')](_0x77f1e4,''))[_0x15b348(0xb3,'\x74\x21\x6b\x5a')](/[\\/]+$/,'');}function _0x111591(_0x359f18){const _0x55b162=_0x1db9c6,_0x11d943={'\x4d\x67\x70\x69\x54':function(_0x1609ab,_0x55ca2d){return _0x1609ab(_0x55ca2d);},'\x44\x65\x78\x66\x72':function(_0x4338f0,_0x1dbd80){return _0x4338f0!==_0x1dbd80;},'\x61\x5a\x46\x59\x4f':_0x55b162(0x14f,'\x51\x45\x39\x75'),'\x71\x4b\x55\x56\x75':_0x55b162(0x1c9,'\x51\x45\x39\x75'),'\x6c\x64\x44\x62\x50':function(_0x1c7125,_0x3dd573){return _0x1c7125(_0x3dd573);},'\x78\x6a\x4e\x72\x69':function(_0x4a9a0c,_0x17e0c8){return _0x4a9a0c===_0x17e0c8;},'\x72\x72\x61\x74\x46':_0x55b162(0x15f,'\x51\x23\x39\x34'),'\x52\x54\x56\x53\x4f':_0x55b162(0x115,'\x52\x6d\x6c\x59')};let _0x3b6781;try{if(_0x11d943[_0x55b162(0xc9,'\x4e\x70\x4d\x53')](_0x11d943['\x61\x5a\x46\x59\x4f'],_0x11d943[_0x55b162(0x14a,'\x40\x37\x6b\x25')]))_0x3b6781=_0x11d943[_0x55b162(0x103,'\x33\x65\x4b\x24')](_0x5c9b78,_0x26ad56[_0x55b162(0x199,'\x75\x43\x21\x45')](_0x359f18));else return _0x20c7b4[_0x55b162(0xda,'\x4b\x45\x34\x5b')][_0x55b162(0x1da,'\x6c\x49\x6c\x41')];}catch{return'';}if(!_0x3b6781)return'';try{return _0x11d943[_0x55b162(0x103,'\x33\x65\x4b\x24')](_0x5c9b78,_0x1d8d48[_0x55b162(0x1b9,'\x52\x48\x59\x61')+_0x55b162(0x1bd,'\x52\x6d\x6c\x59')][_0x55b162(0x100,'\x53\x56\x65\x6c')](_0x3b6781));}catch{try{if(_0x11d943[_0x55b162(0xb2,'\x38\x59\x78\x74')]('\x6c\x6c\x54\x45\x46',_0x11d943['\x72\x72\x61\x74\x46']))return _0x11d943[_0x55b162(0xea,'\x37\x41\x33\x23')](_0x5c9b78,_0x1d8d48[_0x55b162(0x1b9,'\x52\x48\x59\x61')+_0x55b162(0xff,'\x53\x56\x65\x6c')](_0x3b6781));else _0x2cf5d3=_0x11d943[_0x55b162(0x109,'\x72\x6c\x35\x34')](_0x45c02d,_0x48caae[_0x55b162(0xcd,'\x37\x77\x39\x61')](_0x31542d));}catch{if(_0x11d943[_0x55b162(0x1dc,'\x5b\x5a\x62\x4a')]===_0x11d943[_0x55b162(0xbf,'\x5a\x74\x6f\x24')])return _0x3b6781;else _0x550912(_0x48c2f9[_0x55b162(0xb9,'\x5d\x5d\x49\x5b')](_0x5bacff,_0x284328[_0x55b162(0xed,'\x25\x41\x5a\x70')]),_0x2728db+(0xd94+-0xbef+0x14*-0x15));}}}function _0x2df22a(_0x2a7b3f){const _0x133ae9=_0x1db9c6,_0x22af0a={'\x61\x52\x4e\x5a\x67':function(_0x5b19ee,_0x11ffe6){return _0x5b19ee===_0x11ffe6;},'\x57\x70\x52\x58\x78':function(_0x49144a,_0x10cb54){return _0x49144a-_0x10cb54;},'\x76\x41\x52\x49\x63':_0x133ae9(0x15e,'\x57\x6b\x52\x5e'),'\x55\x70\x7a\x78\x4e':_0x133ae9(0xb6,'\x47\x50\x30\x2a'),'\x73\x75\x61\x4d\x59':function(_0x3d6989,_0xc30c77,_0x5954da){return _0x3d6989(_0xc30c77,_0x5954da);},'\x64\x65\x78\x46\x77':_0x133ae9(0x1e4,'\x25\x41\x5a\x70'),'\x43\x6f\x66\x51\x69':function(_0x414bf0,_0x4441d4){return _0x414bf0!==_0x4441d4;},'\x45\x6c\x61\x77\x74':_0x133ae9(0x138,'\x52\x48\x59\x61'),'\x6b\x78\x78\x43\x56':'\x5a\x61\x4c\x76\x4a','\x54\x6a\x48\x74\x71':function(_0x32224d,_0xf5440d){return _0x32224d===_0xf5440d;},'\x4f\x41\x4a\x48\x6f':_0x133ae9(0xe1,'\x5b\x4a\x44\x48')+_0x133ae9(0xbd,'\x5a\x74\x6f\x24'),'\x48\x50\x4c\x77\x71':function(_0x296514,_0x189252){return _0x296514===_0x189252;},'\x43\x7a\x72\x72\x53':_0x133ae9(0xaf,'\x74\x21\x6b\x5a'),'\x59\x70\x6b\x50\x67':_0x133ae9(0x1c8,'\x5d\x5d\x49\x5b'),'\x59\x4f\x72\x6f\x76':function(_0x2f8adb,_0x2d4680){return _0x2f8adb===_0x2d4680;}};try{if(!_0x2a7b3f[_0x133ae9(0xc8,'\x72\x6c\x35\x34')](_0x22af0a[_0x133ae9(0xf1,'\x5b\x4a\x44\x48')]))return null;const _0xf99124=_0x22af0a[_0x133ae9(0x102,'\x4f\x46\x39\x66')](_0x164235,_0x2a7b3f,-0x20f1+0x1d3b+0x13b6);if(!_0xf99124)return null;const _0x2b13a8=_0xf99124[_0x133ae9(0x17f,'\x76\x28\x25\x78')]('\x0a');for(let _0x48bccd=0x6b6*-0x5+-0x3ef*-0x2+-0x2*-0xcd8;_0x48bccd<Math[_0x133ae9(0x1d5,'\x45\x24\x6a\x30')](_0x2b13a8['\x6c\x65\x6e\x67\x74\x68'],0x3f5+0x368*-0x1+-0x88);_0x48bccd++){const _0x3db508=_0x2b13a8[_0x48bccd][_0x133ae9(0x194,'\x4d\x29\x34\x34')]();if(!_0x3db508)continue;let _0x58dd4a;try{_0x58dd4a=JSON[_0x133ae9(0x112,'\x4e\x37\x62\x54')](_0x3db508);}catch{continue;}if(_0x58dd4a&&_0x22af0a[_0x133ae9(0xc6,'\x35\x49\x4d\x44')](typeof _0x58dd4a,_0x22af0a[_0x133ae9(0xba,'\x63\x6f\x21\x5d')])){if(_0x22af0a[_0x133ae9(0x181,'\x56\x70\x6e\x64')](_0x22af0a[_0x133ae9(0x159,'\x4a\x50\x65\x4c')],_0x22af0a[_0x133ae9(0x177,'\x40\x37\x6b\x25')])){if(_0x22af0a[_0x133ae9(0x17e,'\x36\x55\x76\x29')](_0x58dd4a[_0x133ae9(0x1e2,'\x4e\x70\x4d\x53')],_0x22af0a[_0x133ae9(0x12e,'\x6c\x49\x6c\x41')])&&_0x58dd4a['\x70\x61\x79\x6c\x6f\x61\x64']&&_0x22af0a[_0x133ae9(0xd7,'\x44\x61\x24\x31')](typeof _0x58dd4a[_0x133ae9(0x122,'\x5d\x5d\x49\x5b')]['\x63\x77\x64'],_0x22af0a[_0x133ae9(0xb5,'\x44\x61\x24\x31')])){if(_0x22af0a[_0x133ae9(0xad,'\x52\x6d\x6c\x59')](_0x22af0a['\x59\x70\x6b\x50\x67'],_0x22af0a[_0x133ae9(0x172,'\x35\x49\x4d\x44')]))return _0x58dd4a[_0x133ae9(0x18f,'\x6c\x49\x6c\x41')]['\x63\x77\x64'];else{if(!_0x12e821[_0x133ae9(0x12c,'\x5b\x4a\x44\x48')+'\x6e\x63'](_0x447cd9))return _0x133ae9(0x1ae,'\x6c\x49\x6c\x41')+'\x5d\x20'+_0x3eb39f;const _0x511831=_0x44c3ed[_0x133ae9(0x11e,'\x49\x45\x50\x4c')](_0x97559d),_0x4f2ecd=_0x511831[_0x133ae9(0x10c,'\x52\x48\x59\x61')];if(FGqipa['\x61\x52\x4e\x5a\x67'](_0x4f2ecd,0x14aa+-0x26bb+-0x19*-0xb9))return'';const _0x5e3403=_0x1867e5['\x6d\x69\x6e'](_0x5877be,_0x4f2ecd),_0x111d9a=_0x1b0f2e[_0x133ae9(0x141,'\x37\x42\x47\x37')](_0x5e3403),_0x509c1b=_0x593cc9[_0x133ae9(0x123,'\x52\x6d\x6c\x59')](_0x5a4db6,'\x72');return _0x444ac3[_0x133ae9(0x111,'\x38\x59\x78\x74')](_0x509c1b,_0x111d9a,0x1*-0xf79+-0x181f+-0x2798*-0x1,_0x5e3403,_0x580a67['\x6d\x61\x78'](-0xd09+-0x1fc+-0x1*-0xf05,FGqipa['\x57\x70\x52\x58\x78'](_0x4f2ecd,_0x5e3403))),_0x189e72[_0x133ae9(0x12b,'\x37\x36\x57\x25')+'\x63'](_0x509c1b),_0x111d9a[_0x133ae9(0x185,'\x40\x37\x6b\x25')](FGqipa[_0x133ae9(0x153,'\x52\x7a\x32\x33')]);}}if(_0x22af0a[_0x133ae9(0xcf,'\x40\x37\x6b\x25')](typeof _0x58dd4a[_0x133ae9(0x1ac,'\x4e\x37\x62\x54')],_0x22af0a[_0x133ae9(0x1de,'\x37\x41\x33\x23')]))return _0x58dd4a['\x63\x77\x64'];}else return _0x456db9(_0x3f7146[_0x133ae9(0x10f,'\x36\x55\x76\x29')+_0x133ae9(0x174,'\x69\x26\x69\x39')][_0x133ae9(0x1aa,'\x52\x48\x59\x61')](_0x47e429));}}return null;}catch{return null;}}function _0x5b8f31(_0x2ea197,_0x4cc453){const _0x30be5b=_0x1db9c6,_0x3a677b={'\x41\x4c\x63\x5a\x49':function(_0x5238e0,_0x385212){return _0x5238e0(_0x385212);},'\x44\x41\x4a\x6c\x50':function(_0x509bfa,_0x3bfded){return _0x509bfa||_0x3bfded;},'\x7a\x65\x65\x48\x42':function(_0x18d2fd,_0x2b7fec){return _0x18d2fd===_0x2b7fec;},'\x4b\x48\x53\x4d\x51':_0x30be5b(0x1e1,'\x4e\x70\x4d\x53'),'\x65\x57\x63\x46\x6d':'\x54\x50\x75\x6a\x44','\x73\x55\x4a\x72\x41':function(_0x7213aa,_0x4941c1){return _0x7213aa(_0x4941c1);}},_0x2bcb65=_0x3a677b[_0x30be5b(0x171,'\x35\x49\x4d\x44')](_0x2df22a,_0x2ea197);if(!_0x2bcb65)return![];const _0x5275c5=Array[_0x30be5b(0x139,'\x6c\x49\x6c\x41')](_0x4cc453)?_0x4cc453:[_0x4cc453],_0x5566dd=_0x3a677b[_0x30be5b(0x1c3,'\x5a\x74\x6f\x24')](_0x111591,_0x2bcb65);if(!_0x5566dd)return![];for(const _0x1f9119 of _0x5275c5){if(_0x3a677b[_0x30be5b(0x1c7,'\x78\x31\x34\x43')](_0x3a677b[_0x30be5b(0x110,'\x51\x45\x39\x75')],_0x3a677b[_0x30be5b(0x1a4,'\x5d\x5d\x49\x5b')]))return gPgAjz['\x41\x4c\x63\x5a\x49'](_0x2ffc44,gPgAjz[_0x30be5b(0xdf,'\x5b\x5a\x62\x4a')](_0x1c8980,''))[_0x30be5b(0x15b,'\x37\x36\x57\x25')](/[\\/]+$/,'');else{if(!_0x1f9119)continue;const _0x5d4d1d=_0x3a677b[_0x30be5b(0xf3,'\x52\x7a\x32\x33')](_0x111591,_0x1f9119);if(!_0x5d4d1d)continue;if(_0x5566dd===_0x5d4d1d)return!![];if(_0x5566dd[_0x30be5b(0x1d6,'\x37\x41\x33\x23')+'\x74\x68'](_0x5d4d1d+_0x26ad56[_0x30be5b(0x150,'\x35\x49\x4d\x44')]))return!![];}}return![];}const _0x567886={};_0x567886[_0x1db9c6(0xf8,'\x4f\x46\x39\x66')+_0x1db9c6(0x196,'\x49\x45\x50\x4c')+'\x74\x44\x69\x72\x73']=_0x363ff7,_0x567886[_0x1db9c6(0x193,'\x5d\x5d\x49\x5b')+'\x72\x61\x6e\x73\x63\x72\x69\x70'+_0x1db9c6(0x16b,'\x4b\x45\x34\x5b')]=_0x3bdbfc,_0x567886[_0x1db9c6(0xdd,'\x69\x26\x69\x39')+_0x1db9c6(0xfe,'\x37\x41\x33\x23')]=_0x164235,_0x567886[_0x1db9c6(0x198,'\x51\x23\x39\x34')+_0x1db9c6(0x1cb,'\x36\x55\x76\x29')]=_0x44c36a,_0x567886[_0x1db9c6(0x1b2,'\x38\x59\x78\x74')+_0x1db9c6(0x166,'\x59\x53\x49\x25')+_0x1db9c6(0xab,'\x53\x56\x65\x6c')]=_0x2df22a,_0x567886[_0x1db9c6(0x163,'\x52\x6d\x6c\x59')+_0x1db9c6(0x14e,'\x76\x28\x25\x78')+_0x1db9c6(0x160,'\x5d\x5d\x49\x5b')+_0x1db9c6(0x1a0,'\x75\x43\x21\x45')]=_0x5b8f31,module[_0x1db9c6(0x130,'\x33\x65\x4b\x24')]=_0x567886;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const os = require('os');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Resolve the directories to scan for IDE / platform session transcripts.
|
|
9
|
+
*
|
|
10
|
+
* Precedence:
|
|
11
|
+
* 1. `EVOLVER_CURSOR_TRANSCRIPTS_DIR` explicit override — returns `[that]`
|
|
12
|
+
* (preserves the existing escape hatch for unusual layouts).
|
|
13
|
+
* 2. Default platform paths under `$HOME`, in priority order:
|
|
14
|
+
* `~/.codex/sessions` (Codex rollout JSONL, layout `YYYY/MM/DD/rollout-*.jsonl`)
|
|
15
|
+
* `~/.claude/projects` (Claude Code per-project transcripts)
|
|
16
|
+
* Only paths that exist are returned.
|
|
17
|
+
*
|
|
18
|
+
* Before #543, only the env-var path was checked, so a fresh Codex install
|
|
19
|
+
* with no env override silently produced "no session logs" even though
|
|
20
|
+
* Codex was writing rollouts to `~/.codex/sessions`. Auto-discovery here
|
|
21
|
+
* mirrors the auto-detection in `readRealSessionLog` which already
|
|
22
|
+
* considers `~/.codex` / `~/.claude` / `~/.cursor` when deciding whether
|
|
23
|
+
* to dispatch to the transcript reader.
|
|
24
|
+
*
|
|
25
|
+
* @param {{ homedir?: string, cursorTranscriptsDirOverride?: string }} [opts]
|
|
26
|
+
* @returns {string[]}
|
|
27
|
+
*/
|
|
28
|
+
function resolveTranscriptDirs(opts) {
|
|
29
|
+
const override = opts && opts.cursorTranscriptsDirOverride != null
|
|
30
|
+
? opts.cursorTranscriptsDirOverride
|
|
31
|
+
: (process.env.EVOLVER_CURSOR_TRANSCRIPTS_DIR || '');
|
|
32
|
+
if (override) return [override];
|
|
33
|
+
const home = (opts && opts.homedir) || os.homedir();
|
|
34
|
+
const candidates = [
|
|
35
|
+
path.join(home, '.codex', 'sessions'),
|
|
36
|
+
path.join(home, '.claude', 'projects'),
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
// Windows: Cursor and Claude Code store their config / transcript data under
|
|
40
|
+
// AppData\Roaming rather than ~/.<name>. Add the known Windows paths when
|
|
41
|
+
// running on win32 so that auto-discovery works without needing
|
|
42
|
+
// EVOLVER_CURSOR_TRANSCRIPTS_DIR to be set manually.
|
|
43
|
+
//
|
|
44
|
+
// Known layouts (as of 2025):
|
|
45
|
+
// Cursor %APPDATA%\Cursor\User\workspaceStorage (SQLite + JSON sessions)
|
|
46
|
+
// Claude %APPDATA%\Claude\projects (mirrors macOS ~/.claude/projects)
|
|
47
|
+
// claude-code %APPDATA%\claude-code\projects (some builds use this name)
|
|
48
|
+
if (process.platform === 'win32') {
|
|
49
|
+
const appData = process.env.APPDATA || path.join(home, 'AppData', 'Roaming');
|
|
50
|
+
candidates.push(
|
|
51
|
+
path.join(appData, 'Claude', 'projects'),
|
|
52
|
+
path.join(appData, 'claude-code', 'projects'),
|
|
53
|
+
// Cursor transcript storage lives one level above individual workspace dirs
|
|
54
|
+
path.join(appData, 'Cursor', 'User', 'workspaceStorage'),
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return candidates.filter((p) => {
|
|
59
|
+
try { return fs.existsSync(p); } catch { return false; }
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Recursively collect .jsonl and .txt transcript files under a directory.
|
|
65
|
+
* @param {string} dir
|
|
66
|
+
* @param {number} maxDepth
|
|
67
|
+
* @returns {{ path: string, name: string, time: number, size: number }[]}
|
|
68
|
+
*/
|
|
69
|
+
function collectTranscriptFiles(dir, maxDepth) {
|
|
70
|
+
const results = [];
|
|
71
|
+
function walk(d, depth) {
|
|
72
|
+
if (depth > maxDepth) return;
|
|
73
|
+
let entries;
|
|
74
|
+
try { entries = fs.readdirSync(d, { withFileTypes: true }); } catch { return; }
|
|
75
|
+
for (const ent of entries) {
|
|
76
|
+
if (ent.isFile() && (ent.name.endsWith('.jsonl') || ent.name.endsWith('.txt'))) {
|
|
77
|
+
const fp = path.join(d, ent.name);
|
|
78
|
+
try {
|
|
79
|
+
const st = fs.statSync(fp);
|
|
80
|
+
results.push({ path: fp, name: ent.name, time: st.mtime.getTime(), size: st.size });
|
|
81
|
+
} catch { /* skip unreadable */ }
|
|
82
|
+
} else if (ent.isDirectory() && ent.name !== 'subagents' && ent.name !== 'node_modules') {
|
|
83
|
+
walk(path.join(d, ent.name), depth + 1);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
walk(dir, 0);
|
|
88
|
+
return results;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Read the first maxBytes bytes of a file.
|
|
93
|
+
* @param {string} filePath
|
|
94
|
+
* @param {number} [maxBytes=8192]
|
|
95
|
+
* @returns {string}
|
|
96
|
+
*/
|
|
97
|
+
function readFileHead(filePath, maxBytes) {
|
|
98
|
+
if (maxBytes === undefined) maxBytes = 8192;
|
|
99
|
+
try {
|
|
100
|
+
if (!fs.existsSync(filePath)) return '';
|
|
101
|
+
const fd = fs.openSync(filePath, 'r');
|
|
102
|
+
const buffer = Buffer.alloc(maxBytes);
|
|
103
|
+
const bytesRead = fs.readSync(fd, buffer, 0, maxBytes, 0);
|
|
104
|
+
fs.closeSync(fd);
|
|
105
|
+
return buffer.slice(0, bytesRead).toString('utf8');
|
|
106
|
+
} catch (e) {
|
|
107
|
+
return '';
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Read the last `size` bytes of a file (tail read for recent logs).
|
|
113
|
+
* @param {string} filePath
|
|
114
|
+
* @param {number} [size=10000]
|
|
115
|
+
* @returns {string}
|
|
116
|
+
*/
|
|
117
|
+
function readRecentLog(filePath, size) {
|
|
118
|
+
if (size === undefined) size = 10000;
|
|
119
|
+
try {
|
|
120
|
+
if (!fs.existsSync(filePath)) return `[MISSING] ${filePath}`;
|
|
121
|
+
const stat = fs.statSync(filePath);
|
|
122
|
+
const fileSize = stat.size;
|
|
123
|
+
if (fileSize === 0) return '';
|
|
124
|
+
const readSize = Math.min(size, fileSize);
|
|
125
|
+
const buffer = Buffer.alloc(readSize);
|
|
126
|
+
const fd = fs.openSync(filePath, 'r');
|
|
127
|
+
fs.readSync(fd, buffer, 0, readSize, Math.max(0, fileSize - readSize));
|
|
128
|
+
fs.closeSync(fd);
|
|
129
|
+
return buffer.toString('utf8');
|
|
130
|
+
} catch (e) {
|
|
131
|
+
return `[ERROR READING ${filePath}: ${e.message}]`;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function stripTrailingSeparators(value) {
|
|
136
|
+
return String(value || '').replace(/[\\/]+$/, '');
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Normalize a workspace identity for provenance comparisons.
|
|
141
|
+
*
|
|
142
|
+
* macOS commonly exposes the same temporary directory through both `/var/...`
|
|
143
|
+
* and `/private/var/...`. `path.resolve()` keeps those strings different even
|
|
144
|
+
* though they identify the same directory, so use realpath when possible and
|
|
145
|
+
* fall back to the resolved path for stale transcript cwd values.
|
|
146
|
+
*
|
|
147
|
+
* @param {string} value
|
|
148
|
+
* @returns {string}
|
|
149
|
+
*/
|
|
150
|
+
function normalizeWorkspaceIdentity(value) {
|
|
151
|
+
let resolved;
|
|
152
|
+
try {
|
|
153
|
+
resolved = stripTrailingSeparators(path.resolve(value));
|
|
154
|
+
} catch {
|
|
155
|
+
return '';
|
|
156
|
+
}
|
|
157
|
+
if (!resolved) return '';
|
|
158
|
+
try {
|
|
159
|
+
return stripTrailingSeparators(fs.realpathSync.native(resolved));
|
|
160
|
+
} catch {
|
|
161
|
+
try {
|
|
162
|
+
return stripTrailingSeparators(fs.realpathSync(resolved));
|
|
163
|
+
} catch {
|
|
164
|
+
return resolved;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Read the first record(s) of a JSONL transcript and try to extract the
|
|
171
|
+
* originating workspace cwd. Codex rollouts start with a `session_meta`
|
|
172
|
+
* record whose `payload.cwd` is the workspace the session ran in
|
|
173
|
+
* (`{"type":"session_meta","payload":{"cwd":"/home/u/workspace/X", ...}}`).
|
|
174
|
+
* Claude Code may emit a top-level `cwd` on its first record; generic
|
|
175
|
+
* fallback also checks `data.cwd`.
|
|
176
|
+
*
|
|
177
|
+
* Returns the cwd string or null when no recognisable cwd is found in
|
|
178
|
+
* the first ~4 KB of the file. Bounded read so a malformed multi-MB
|
|
179
|
+
* transcript can't stall the discovery pass.
|
|
180
|
+
*
|
|
181
|
+
* @param {string} filePath
|
|
182
|
+
* @returns {string|null}
|
|
183
|
+
*/
|
|
184
|
+
function extractTranscriptCwd(filePath) {
|
|
185
|
+
try {
|
|
186
|
+
if (!filePath.endsWith('.jsonl')) return null;
|
|
187
|
+
const head = readFileHead(filePath, 4096);
|
|
188
|
+
if (!head) return null;
|
|
189
|
+
const lines = head.split('\n');
|
|
190
|
+
// Scan at most the first 5 records — `session_meta` should be first
|
|
191
|
+
// for Codex; widen the window slightly in case a writer prepends an
|
|
192
|
+
// envelope record (e.g. version preamble).
|
|
193
|
+
for (let i = 0; i < Math.min(lines.length, 5); i++) {
|
|
194
|
+
const ln = lines[i].trim();
|
|
195
|
+
if (!ln) continue;
|
|
196
|
+
let data;
|
|
197
|
+
try { data = JSON.parse(ln); } catch { continue; }
|
|
198
|
+
if (data && typeof data === 'object') {
|
|
199
|
+
if (data.type === 'session_meta' && data.payload && typeof data.payload.cwd === 'string') {
|
|
200
|
+
return data.payload.cwd;
|
|
201
|
+
}
|
|
202
|
+
if (typeof data.cwd === 'string') return data.cwd;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return null;
|
|
206
|
+
} catch { return null; }
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Decide whether a transcript file belongs to the workspace we're
|
|
211
|
+
* evolving. The user-level discovery paths (`~/.codex/sessions`,
|
|
212
|
+
* `~/.claude/projects`) hold transcripts from EVERY project the user
|
|
213
|
+
* has touched — pulling them in unfiltered would import unrelated
|
|
214
|
+
* session content into another repo's evolution run (Bugbot PR #130
|
|
215
|
+
* Agentic Security Review MEDIUM: cross-project prompt/context
|
|
216
|
+
* contamination + possible unintended disclosure of prior session
|
|
217
|
+
* data).
|
|
218
|
+
*
|
|
219
|
+
* Match semantics: a session's recorded cwd belongs to "this
|
|
220
|
+
* workspace" if it equals OR is a subdir of ANY of the candidate
|
|
221
|
+
* roots passed in. We accept multiple candidates so a user who
|
|
222
|
+
* `cd`'d into a non-git directory still gets their own sessions
|
|
223
|
+
* back: `getWorkspaceRoot()` may fall back to the evolver install
|
|
224
|
+
* dir when no `.git` is found, but `process.cwd()` still points
|
|
225
|
+
* at the user's actual working dir (which is what the Codex
|
|
226
|
+
* session also recorded). Without this multi-candidate match,
|
|
227
|
+
* issue #543's follow-up scenario — tammypi running evolver from
|
|
228
|
+
* `/home/u/workspace/foo` with no `git init` — silently dropped
|
|
229
|
+
* every transcript even though Codex was active there.
|
|
230
|
+
*
|
|
231
|
+
* Files without a recognisable cwd (older formats, third-party
|
|
232
|
+
* writers) are dropped — fail-closed is the conservative answer
|
|
233
|
+
* when we can't prove provenance.
|
|
234
|
+
*
|
|
235
|
+
* @param {string} filePath
|
|
236
|
+
* @param {string|string[]} candidateRoots — one or more workspace
|
|
237
|
+
* identities; the transcript's cwd matches if any of these
|
|
238
|
+
* equals or is a parent of it.
|
|
239
|
+
* @returns {boolean}
|
|
240
|
+
*/
|
|
241
|
+
function transcriptBelongsToWorkspace(filePath, candidateRoots) {
|
|
242
|
+
const cwd = extractTranscriptCwd(filePath);
|
|
243
|
+
if (!cwd) return false;
|
|
244
|
+
const roots = Array.isArray(candidateRoots) ? candidateRoots : [candidateRoots];
|
|
245
|
+
const normCwd = normalizeWorkspaceIdentity(cwd);
|
|
246
|
+
if (!normCwd) return false;
|
|
247
|
+
for (const root of roots) {
|
|
248
|
+
if (!root) continue;
|
|
249
|
+
const normRoot = normalizeWorkspaceIdentity(root);
|
|
250
|
+
if (!normRoot) continue;
|
|
251
|
+
if (normCwd === normRoot) return true;
|
|
252
|
+
if (normCwd.startsWith(normRoot + path.sep)) return true;
|
|
253
|
+
}
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
module.exports = {
|
|
258
|
+
resolveTranscriptDirs,
|
|
259
|
+
collectTranscriptFiles,
|
|
260
|
+
readFileHead,
|
|
261
|
+
readRecentLog,
|
|
262
|
+
extractTranscriptCwd,
|
|
263
|
+
transcriptBelongsToWorkspace,
|
|
264
|
+
};
|