@evomap/evolver 1.89.11 → 1.89.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/BUGBOT.md +182 -0
- package/.env.example +68 -0
- package/.git-commit-guard-token +1 -0
- package/.github/CODEOWNERS +63 -0
- package/.github/ISSUE_TEMPLATE/good_first_issue.md +23 -0
- package/.github/pull_request_template.md +45 -0
- package/.github/workflows/test.yml +75 -0
- package/CHANGELOG.md +1367 -0
- package/README.md +90 -537
- package/README.public.md +578 -0
- package/SECURITY.md +108 -0
- package/assets/gep/events.jsonl +3 -0
- package/examples/atp-consumer-quickstart.md +100 -0
- package/examples/hello-world.md +38 -0
- package/package.json +6 -18
- package/proxy-package.json +39 -0
- package/public.manifest.json +145 -0
- package/src/evolve/guards.js +721 -1
- package/src/evolve/pipeline/collect.js +1283 -1
- package/src/evolve/pipeline/dispatch.js +421 -1
- package/src/evolve/pipeline/enrich.js +440 -1
- package/src/evolve/pipeline/hub.js +319 -1
- package/src/evolve/pipeline/select.js +274 -1
- package/src/evolve/pipeline/signals.js +206 -1
- package/src/evolve/utils.js +264 -1
- package/src/evolve.js +350 -1
- package/src/gep/a2aProtocol.js +4463 -1
- package/src/gep/antiAbuseTelemetry.js +233 -1
- package/src/gep/autoDistillConv.js +205 -1
- package/src/gep/autoDistillLlm.js +315 -1
- package/src/gep/candidateEval.js +92 -1
- package/src/gep/candidates.js +198 -1
- package/src/gep/contentHash.js +30 -1
- package/src/gep/conversationDistiller.js +270 -0
- package/src/gep/conversationSniffer.js +266 -1
- package/src/gep/crypto.js +89 -1
- package/src/gep/curriculum.js +163 -1
- package/src/gep/deviceId.js +218 -1
- package/src/gep/envFingerprint.js +118 -1
- package/src/gep/epigenetics.js +31 -1
- package/src/gep/execBridge.js +712 -1
- package/src/gep/explore.js +289 -1
- package/src/gep/hash.js +15 -1
- package/src/gep/hubFetch.js +608 -1
- package/src/gep/hubReview.js +207 -1
- package/src/gep/hubSearch.js +526 -1
- package/src/gep/hubVerify.js +306 -1
- package/src/gep/learningSignals.js +89 -1
- package/src/gep/memoryGraph.js +1449 -1
- package/src/gep/memoryGraphAdapter.js +203 -1
- package/src/gep/mutation.js +203 -1
- package/src/gep/narrativeMemory.js +108 -1
- package/src/gep/openPRRegistry.js +205 -1
- package/src/gep/personality.js +423 -1
- package/src/gep/policyCheck.js +599 -1
- package/src/gep/prompt.js +836 -1
- package/src/gep/questionGenerator.js +103 -0
- package/src/gep/recallInject.js +409 -1
- package/src/gep/recallVerifier.js +318 -1
- package/src/gep/reflection.js +177 -1
- package/src/gep/savingsCore.js +112 -1
- package/src/gep/selector.js +602 -1
- package/src/gep/skillDistiller.js +1294 -1
- package/src/gep/solidify.js +1699 -1
- package/src/gep/strategy.js +136 -1
- package/src/gep/tokenSavings.js +95 -1
- package/src/gep/workspaceKeychain.js +174 -1
- package/src/proxy/extensions/traceControl.js +109 -1
- package/src/proxy/inject.js +52 -1
- package/src/proxy/lifecycle/manager.js +108 -7
- package/src/proxy/server/routes.js +31 -0
- package/src/proxy/server/settings.js +6 -2
- package/src/proxy/sync/engine.js +31 -15
- package/src/proxy/sync/inbound.js +87 -9
- package/src/proxy/sync/outbound.js +57 -4
- package/src/proxy/trace/extractor.js +1403 -1
- package/src/proxy/trace/usage.js +105 -1
- package/CONTRIBUTING.md +0 -19
- package/assets/cover.png +0 -0
- package/scripts/a2a_export.js +0 -63
- package/scripts/a2a_ingest.js +0 -79
- package/scripts/a2a_promote.js +0 -118
- package/scripts/analyze_by_skill.js +0 -121
- package/scripts/build_binaries.js +0 -479
- package/scripts/check-changelog.js +0 -166
- package/scripts/extract_log.js +0 -85
- package/scripts/generate_history.js +0 -75
- package/scripts/gep_append_event.js +0 -96
- package/scripts/gep_personality_report.js +0 -234
- package/scripts/human_report.js +0 -147
- package/scripts/recall-verify-report.js +0 -234
- package/scripts/recover_loop.js +0 -61
- package/scripts/refresh_stars_badge.js +0 -168
- package/scripts/seed-merchants.js +0 -91
- package/scripts/suggest_version.js +0 -89
- package/scripts/validate-modules.js +0 -38
- package/scripts/validate-suite.js +0 -78
- package/skills/index.json +0 -14
- /package/assets/gep/{genes.seed.json → genes.json} +0 -0
- /package/{skills → bundled-skills}/_meta/SKILL.md +0 -0
|
@@ -1 +1,109 @@
|
|
|
1
|
-
const _0x398e1e=_0x3520;(function(_0x461ec5,_0x94ec55){const _0x218c34=_0x3520,_0x3b2f22=_0x461ec5();while(!![]){try{const _0x4e3565=-parseInt(_0x218c34(0x1f5,'\x4a\x44\x46\x30'))/(-0x1*0x3e1+0x3a5+-0x1*-0x3d)+parseInt(_0x218c34(0x1bf,'\x37\x26\x25\x6e'))/(0xf53+-0x1628+0x6d7)*(parseInt(_0x218c34(0xec,'\x4e\x77\x76\x23'))/(0x6*0xc5+0x2541+-0x29dc))+-parseInt(_0x218c34(0x164,'\x5a\x45\x25\x36'))/(0xdde+-0x141*0x15+0x2d*0x47)*(-parseInt(_0x218c34(0x1b8,'\x38\x6b\x36\x4f'))/(0x6a*-0x48+0xb75*-0x2+0x34bf))+parseInt(_0x218c34(0xdc,'\x41\x29\x30\x79'))/(0x143b+-0x26c8+0x1293)+-parseInt(_0x218c34(0x1d7,'\x5d\x5a\x41\x40'))/(0xa*-0x4f+-0x1*-0x2621+-0x2304)*(parseInt(_0x218c34(0x1da,'\x4a\x65\x45\x63'))/(0x4+-0x4*-0x11f+-0x478))+parseInt(_0x218c34(0x118,'\x39\x6d\x74\x45'))/(-0x19b9*0x1+-0x1a7c+0x6*0x8b5)+-parseInt(_0x218c34(0x177,'\x35\x63\x5a\x79'))/(0x1ace+0x13c+-0x1c00);if(_0x4e3565===_0x94ec55)break;else _0x3b2f22['push'](_0x3b2f22['shift']());}catch(_0x8a797e){_0x3b2f22['push'](_0x3b2f22['shift']());}}}(_0x296b,0xcf1*-0x54+-0x1*-0x5846+-0x1*-0x70f03));const _0x557fda=(function(){let _0x2b1796=!![];return function(_0x240ce8,_0x57af35){const _0x4605ee=_0x2b1796?function(){const _0x3467ba=_0x3520;if(_0x57af35){const _0x461c43=_0x57af35[_0x3467ba(0xdf,'\x4e\x79\x46\x56')](_0x240ce8,arguments);return _0x57af35=null,_0x461c43;}}:function(){};return _0x2b1796=![],_0x4605ee;};}()),_0x546a78=_0x557fda(this,function(){const _0x37560f=_0x3520,_0x1d0ed2={};_0x1d0ed2[_0x37560f(0x139,'\x57\x78\x68\x78')]=_0x37560f(0xf2,'\x72\x35\x47\x67')+_0x37560f(0x1e1,'\x6b\x43\x65\x5a');const _0x361cec=_0x1d0ed2;return _0x546a78['\x74\x6f\x53\x74\x72\x69\x6e\x67']()[_0x37560f(0x190,'\x57\x78\x68\x78')](_0x361cec[_0x37560f(0x1e6,'\x62\x29\x75\x29')])[_0x37560f(0x128,'\x77\x6f\x74\x5b')]()[_0x37560f(0xcb,'\x24\x34\x24\x5e')+_0x37560f(0xda,'\x77\x6f\x74\x5b')](_0x546a78)[_0x37560f(0x137,'\x77\x6f\x74\x5b')](_0x361cec[_0x37560f(0x10e,'\x55\x33\x26\x6c')]);});_0x546a78();'use strict';function _0x296b(){const _0x47921f=['\x6d\x6d\x6b\x6d\x70\x4b\x62\x69\x57\x35\x4f','\x57\x52\x37\x63\x4e\x31\x34\x32\x57\x34\x50\x50\x62\x38\x6f\x65\x57\x34\x42\x64\x50\x43\x6f\x42\x57\x34\x74\x64\x4b\x57','\x45\x43\x6f\x63\x57\x52\x56\x63\x4c\x5a\x6c\x63\x51\x4e\x54\x37','\x75\x4d\x34\x58\x57\x4f\x39\x41\x72\x4e\x70\x64\x4e\x71','\x57\x37\x31\x50\x57\x4f\x33\x63\x56\x59\x4f','\x6a\x6d\x6b\x79\x57\x51\x56\x63\x4e\x62\x37\x63\x4a\x33\x4c\x79','\x57\x51\x2f\x63\x56\x32\x7a\x30\x62\x61','\x6e\x59\x50\x6f\x57\x52\x38\x58\x57\x36\x66\x70','\x64\x53\x6b\x72\x57\x36\x58\x6b\x67\x63\x74\x64\x49\x59\x4f','\x44\x61\x38\x70\x57\x35\x53\x68\x65\x71','\x7a\x43\x6b\x6f\x57\x34\x6a\x42\x78\x32\x34','\x6a\x62\x42\x64\x53\x33\x48\x52\x45\x53\x6b\x43','\x57\x36\x6c\x63\x53\x38\x6b\x72\x6c\x53\x6f\x49','\x67\x53\x6f\x64\x57\x37\x44\x61\x61\x62\x4a\x64\x4d\x4e\x47','\x79\x61\x44\x58\x57\x51\x6d\x49','\x65\x67\x43\x4d\x57\x35\x69','\x6b\x73\x39\x58\x42\x58\x2f\x64\x4f\x78\x69\x43','\x57\x52\x37\x63\x50\x38\x6b\x4a\x43\x57','\x57\x34\x6c\x63\x56\x5a\x33\x64\x4d\x38\x6b\x35','\x57\x52\x4f\x72\x6c\x4d\x68\x63\x48\x74\x69\x68\x57\x35\x6d','\x57\x50\x74\x63\x4e\x43\x6b\x65\x62\x4e\x57','\x57\x50\x2f\x63\x4d\x6d\x6b\x66\x57\x36\x30','\x57\x37\x68\x64\x54\x66\x79\x6d\x65\x53\x6f\x57\x76\x53\x6b\x32','\x57\x34\x44\x55\x70\x6d\x6b\x56\x71\x53\x6f\x34\x57\x50\x2f\x63\x48\x57','\x57\x37\x78\x64\x48\x43\x6f\x51\x57\x36\x52\x63\x52\x65\x2f\x64\x47\x76\x34','\x68\x53\x6f\x66\x78\x71\x57','\x57\x52\x70\x63\x4e\x53\x6b\x57\x57\x52\x78\x64\x4d\x58\x4a\x63\x4c\x76\x37\x63\x53\x77\x7a\x46\x42\x6d\x6f\x4b','\x57\x34\x33\x64\x48\x32\x6d\x39\x6b\x43\x6f\x62\x79\x6d\x6b\x68','\x72\x43\x6b\x6d\x7a\x58\x4e\x64\x55\x38\x6f\x43\x57\x36\x57','\x57\x36\x4e\x64\x51\x4c\x4f\x63','\x57\x35\x42\x64\x4c\x32\x4b\x54\x65\x57','\x57\x52\x30\x6c\x6e\x62\x76\x30\x57\x34\x57','\x77\x59\x76\x2b\x74\x61\x4e\x64\x4a\x43\x6f\x37\x57\x34\x53','\x57\x36\x46\x63\x50\x38\x6b\x74\x61\x38\x6f\x4f','\x61\x72\x2f\x64\x55\x74\x2f\x64\x55\x61','\x57\x51\x79\x66\x69\x72\x57','\x57\x4f\x61\x61\x57\x35\x4b\x71\x6e\x31\x71\x53\x57\x34\x57','\x43\x71\x5a\x64\x48\x61\x56\x64\x55\x53\x6b\x4f\x6e\x59\x34','\x46\x38\x6b\x7a\x57\x37\x6a\x63\x78\x57','\x57\x35\x42\x64\x55\x31\x56\x63\x50\x6d\x6f\x55','\x62\x38\x6f\x6b\x70\x75\x2f\x63\x50\x53\x6b\x45\x57\x37\x30\x36\x62\x43\x6b\x63\x57\x52\x5a\x64\x48\x61','\x6b\x6d\x6b\x72\x6c\x65\x69','\x57\x34\x46\x64\x51\x6d\x6f\x43\x64\x78\x6d','\x57\x34\x6c\x64\x52\x75\x6d\x6c\x62\x38\x6f\x54\x78\x6d\x6b\x38','\x6b\x57\x74\x64\x4d\x61\x52\x64\x54\x61','\x76\x6d\x6b\x66\x6a\x6d\x6f\x51\x57\x36\x33\x64\x48\x66\x54\x71','\x65\x76\x39\x67\x70\x43\x6f\x59\x62\x66\x30\x42','\x64\x47\x50\x2b\x73\x4a\x57','\x79\x5a\x6c\x64\x4f\x38\x6b\x6b\x57\x51\x75','\x6a\x6d\x6f\x4d\x57\x35\x7a\x63\x65\x47','\x6e\x64\x50\x2b\x79\x57\x4a\x64\x4d\x33\x76\x74','\x6c\x4a\x48\x58\x46\x48\x4e\x64\x4c\x47','\x42\x43\x6b\x44\x57\x36\x44\x45\x42\x61','\x57\x51\x4a\x63\x55\x77\x62\x52','\x62\x38\x6b\x72\x57\x37\x4c\x77\x77\x74\x6c\x64\x47\x68\x4b','\x57\x51\x75\x6c\x67\x49\x66\x45\x57\x36\x33\x64\x4f\x43\x6b\x41','\x57\x4f\x4b\x57\x66\x31\x74\x63\x4f\x58\x75\x38\x57\x36\x65','\x57\x36\x5a\x64\x54\x43\x6f\x51\x62\x31\x61','\x57\x34\x5a\x63\x48\x64\x52\x64\x4f\x38\x6b\x41','\x76\x6d\x6b\x79\x6c\x6d\x6f\x32\x57\x36\x4b','\x72\x74\x2f\x63\x4f\x5a\x65\x66','\x45\x6d\x6f\x39\x69\x78\x6a\x69\x45\x78\x69\x55','\x69\x48\x56\x64\x48\x62\x78\x64\x53\x57','\x6b\x4e\x6a\x47\x77\x6d\x6f\x6d\x6b\x78\x6d\x35','\x6f\x6d\x6f\x49\x57\x36\x58\x5a\x68\x47','\x57\x37\x6c\x63\x48\x6d\x6b\x4a\x64\x6d\x6f\x62\x57\x51\x39\x79\x64\x61','\x73\x59\x4b\x35\x57\x52\x66\x4a','\x57\x35\x5a\x64\x4d\x43\x6b\x68\x57\x36\x44\x79\x57\x52\x4a\x64\x4e\x38\x6f\x52','\x61\x53\x6f\x65\x57\x37\x50\x4e\x63\x74\x6c\x64\x4a\x67\x79','\x44\x6d\x6f\x45\x57\x51\x37\x63\x4d\x63\x2f\x63\x50\x4e\x61','\x57\x52\x6d\x6b\x6c\x76\x6c\x63\x4a\x64\x71\x6d\x57\x34\x57','\x67\x48\x42\x64\x54\x57','\x57\x37\x64\x63\x4c\x47\x52\x64\x47\x53\x6b\x67','\x57\x34\x70\x64\x4a\x43\x6b\x62\x57\x37\x6e\x65\x57\x52\x4a\x64\x49\x53\x6f\x33','\x78\x38\x6b\x52\x66\x6d\x6f\x4f\x57\x37\x75','\x73\x4a\x35\x74\x57\x4f\x65\x37','\x57\x34\x48\x51\x57\x50\x42\x63\x50\x48\x30','\x62\x38\x6b\x70\x6c\x6d\x6f\x51\x57\x36\x52\x64\x4d\x75\x4b\x63','\x6d\x64\x33\x64\x4e\x76\x62\x42','\x77\x66\x6a\x6e\x46\x6d\x6f\x2f\x65\x30\x38\x45','\x7a\x6d\x6b\x79\x57\x37\x39\x56\x73\x4d\x6c\x63\x49\x74\x65','\x64\x47\x74\x64\x4a\x48\x37\x63\x54\x53\x6b\x52\x6a\x4a\x75','\x43\x74\x50\x6d\x57\x51\x69\x69\x57\x36\x6e\x39\x57\x37\x71','\x79\x72\x75\x62\x57\x4f\x71','\x62\x63\x70\x64\x4a\x74\x31\x30','\x42\x43\x6b\x6f\x57\x37\x48\x5a\x76\x78\x4e\x63\x4a\x74\x71','\x57\x34\x70\x63\x4f\x6d\x6b\x6e\x69\x53\x6f\x4c\x57\x51\x62\x56\x6c\x71','\x76\x73\x52\x63\x4f\x49\x57\x6f\x6e\x53\x6b\x56\x6f\x47','\x57\x36\x52\x64\x4b\x6d\x6b\x67\x57\x36\x48\x31','\x70\x53\x6b\x6d\x6e\x4b\x54\x69\x57\x34\x4b\x4c','\x65\x77\x30\x6e\x57\x35\x34','\x57\x4f\x6c\x63\x4a\x43\x6f\x44\x57\x52\x53\x6e\x57\x35\x2f\x63\x49\x38\x6f\x75\x57\x52\x4c\x2f\x57\x50\x64\x63\x50\x74\x53','\x6b\x38\x6b\x57\x57\x51\x66\x69\x41\x78\x47\x46\x57\x37\x4f','\x6b\x73\x39\x58\x42\x58\x2f\x64\x4f\x77\x65\x62','\x57\x37\x5a\x64\x51\x65\x6d\x64\x64\x38\x6f\x38\x78\x71','\x61\x38\x6b\x57\x57\x52\x58\x42\x42\x57','\x57\x36\x74\x63\x51\x43\x6b\x59\x67\x53\x6f\x67\x57\x50\x58\x7a\x67\x47','\x57\x35\x52\x64\x48\x38\x6f\x59\x69\x30\x34','\x78\x4e\x37\x63\x4c\x57\x66\x78\x77\x4e\x4e\x64\x4a\x53\x6f\x58','\x57\x37\x4c\x70\x67\x6d\x6b\x48\x79\x47','\x57\x35\x31\x71\x62\x38\x6f\x78\x76\x47','\x44\x61\x5a\x64\x48\x53\x6b\x39\x57\x52\x64\x64\x55\x6d\x6f\x77\x57\x52\x57','\x57\x37\x68\x64\x53\x76\x34\x67\x65\x47','\x63\x33\x4b\x66\x57\x35\x50\x75\x78\x6d\x6f\x6f\x73\x61','\x77\x43\x6b\x78\x7a\x72\x70\x64\x51\x47','\x57\x50\x33\x63\x4f\x53\x6b\x7a\x64\x66\x68\x63\x56\x6d\x6f\x6d\x57\x52\x43','\x57\x52\x61\x41\x6e\x4e\x34','\x6a\x62\x64\x64\x53\x4e\x44\x56\x46\x38\x6b\x45\x57\x36\x6d','\x6d\x33\x34\x66\x46\x57\x43','\x66\x4c\x76\x6b\x45\x53\x6f\x6d\x67\x76\x75\x71','\x57\x50\x70\x63\x56\x6d\x6b\x44\x65\x4c\x46\x63\x54\x43\x6f\x31','\x62\x65\x30\x54\x76\x5a\x65\x4a\x57\x51\x58\x4a','\x6d\x65\x47\x37\x57\x50\x2f\x64\x47\x53\x6f\x47\x74\x57\x6d','\x57\x36\x31\x76\x57\x52\x68\x63\x55\x61\x57','\x76\x53\x6f\x6e\x77\x73\x74\x64\x4e\x74\x69','\x57\x36\x68\x63\x4f\x47\x70\x64\x4f\x38\x6b\x62','\x61\x30\x69\x75\x57\x37\x70\x64\x4f\x47','\x72\x49\x74\x63\x4f\x63\x38','\x57\x34\x70\x64\x4a\x43\x6b\x62\x57\x36\x48\x79\x57\x50\x74\x64\x4a\x71','\x45\x38\x6f\x70\x57\x52\x5a\x63\x4d\x63\x70\x63\x50\x57','\x46\x43\x6b\x32\x57\x51\x4e\x63\x4c\x72\x38\x42\x57\x36\x6d','\x43\x53\x6f\x39\x57\x52\x46\x63\x4b\x59\x4a\x63\x4f\x4d\x62\x47','\x57\x35\x54\x74\x57\x4f\x6a\x61\x41\x30\x75\x54\x57\x36\x33\x64\x53\x31\x61\x68\x57\x4f\x38','\x64\x72\x68\x64\x4c\x74\x66\x2f\x71\x75\x4e\x64\x50\x71','\x57\x36\x2f\x64\x4c\x43\x6f\x71\x70\x76\x61','\x57\x52\x53\x56\x66\x6d\x6f\x43\x45\x32\x53\x58\x64\x47','\x57\x36\x58\x53\x69\x6d\x6b\x47','\x57\x36\x2f\x63\x4d\x6d\x6b\x4c','\x57\x35\x42\x64\x4f\x6d\x6b\x70\x57\x36\x44\x41\x57\x4f\x4a\x64\x4a\x6d\x6f\x53','\x70\x53\x6f\x58\x75\x49\x5a\x63\x49\x71','\x57\x36\x58\x65\x57\x52\x74\x63\x52\x57\x52\x64\x4d\x68\x7a\x4c','\x57\x35\x7a\x32\x57\x51\x4a\x63\x4f\x63\x75','\x45\x4b\x42\x63\x47\x65\x6d','\x6d\x4a\x6e\x4b\x46\x48\x78\x64\x4b\x4b\x58\x74','\x57\x4f\x72\x39\x57\x52\x68\x64\x4a\x61','\x45\x53\x6b\x69\x57\x36\x39\x7a\x78\x67\x34','\x76\x77\x47\x2f\x57\x50\x35\x41','\x78\x64\x78\x64\x4d\x53\x6b\x2b\x57\x52\x4f','\x57\x36\x2f\x64\x55\x76\x61\x6b\x6f\x43\x6f\x58\x74\x6d\x6b\x36','\x57\x52\x64\x63\x48\x6d\x6b\x74\x7a\x32\x30','\x6a\x71\x46\x64\x48\x47','\x57\x50\x5a\x63\x4c\x53\x6b\x6c\x57\x36\x31\x54','\x57\x37\x66\x58\x6a\x38\x6f\x49\x78\x53\x6f\x4a\x57\x50\x70\x63\x56\x47','\x57\x34\x62\x66\x57\x34\x78\x64\x47\x6d\x6b\x6d\x57\x50\x56\x63\x50\x43\x6b\x79\x63\x57\x46\x63\x4a\x38\x6f\x75\x73\x47','\x61\x78\x43\x37\x57\x4f\x46\x64\x4f\x57','\x62\x6d\x6f\x58\x6c\x6d\x6b\x51\x7a\x78\x2f\x64\x4c\x38\x6f\x56','\x7a\x49\x53\x63\x57\x50\x6d\x33\x57\x34\x66\x76\x57\x50\x75','\x57\x37\x31\x73\x67\x43\x6b\x68\x72\x57','\x74\x73\x46\x64\x48\x6d\x6b\x50\x57\x52\x68\x64\x53\x43\x6b\x73\x57\x52\x57','\x57\x51\x42\x63\x48\x53\x6b\x57\x61\x6d\x6f\x63\x57\x50\x4c\x43\x68\x61','\x43\x6d\x6f\x39\x67\x30\x7a\x6f\x42\x57','\x57\x36\x31\x57\x6f\x53\x6b\x4b\x73\x43\x6f\x2f\x57\x50\x4e\x63\x56\x61','\x57\x52\x70\x63\x53\x38\x6b\x54\x7a\x57\x6e\x65\x73\x33\x2f\x64\x53\x43\x6b\x6e\x43\x53\x6f\x78','\x57\x51\x2f\x63\x50\x38\x6b\x39\x42\x4d\x65','\x63\x62\x5a\x64\x53\x5a\x38','\x46\x53\x6b\x32\x73\x74\x5a\x64\x49\x61','\x70\x67\x4b\x33\x57\x37\x4a\x64\x48\x38\x6b\x39\x61\x53\x6b\x65','\x7a\x43\x6f\x45\x57\x52\x6c\x63\x4a\x71','\x57\x52\x61\x75\x69\x58\x35\x34\x57\x35\x56\x64\x53\x71','\x57\x36\x54\x37\x70\x43\x6b\x45\x77\x53\x6f\x57\x57\x4f\x4a\x63\x56\x71','\x74\x6d\x6b\x6e\x79\x71\x4b','\x57\x4f\x70\x63\x51\x4e\x30','\x6c\x38\x6f\x33\x6d\x43\x6b\x4f\x79\x32\x4e\x63\x49\x71','\x79\x64\x4c\x52\x78\x71\x70\x64\x4f\x53\x6f\x6a\x57\x4f\x75','\x57\x51\x38\x67\x70\x32\x47','\x68\x67\x71\x6b\x57\x34\x50\x66\x43\x43\x6f\x79\x72\x61','\x57\x35\x5a\x64\x48\x43\x6f\x55\x57\x36\x78\x63\x50\x71','\x57\x4f\x46\x63\x55\x6d\x6b\x6c\x72\x47','\x62\x53\x6f\x44\x57\x37\x31\x42\x64\x73\x37\x64\x47\x77\x71','\x57\x4f\x6e\x4a\x57\x51\x46\x64\x4b\x4a\x46\x63\x4a\x4c\x6a\x58','\x66\x43\x6f\x39\x67\x53\x6b\x4c\x46\x57','\x68\x77\x6e\x42\x7a\x6d\x6f\x58','\x57\x37\x6a\x6e\x57\x52\x56\x63\x51\x72\x33\x64\x48\x78\x58\x56','\x45\x6d\x6b\x4e\x62\x53\x6f\x44\x57\x51\x5a\x64\x4e\x31\x57\x63','\x57\x37\x78\x64\x4d\x58\x35\x6e\x57\x50\x43','\x57\x51\x4a\x63\x55\x77\x48\x4c\x62\x68\x2f\x63\x4c\x57\x34','\x6d\x6d\x6b\x6d\x70\x47','\x57\x50\x5a\x63\x52\x43\x6b\x70\x65\x4c\x56\x63\x54\x61','\x71\x59\x50\x34\x75\x61','\x63\x43\x6f\x64\x57\x36\x66\x69\x64\x73\x47','\x67\x47\x68\x64\x52\x47','\x57\x34\x72\x6f\x6c\x38\x6f\x6f\x73\x61','\x62\x33\x33\x64\x55\x4e\x6e\x74\x42\x38\x6f\x30\x6d\x43\x6f\x77\x57\x37\x70\x64\x4e\x4c\x79\x4b','\x57\x52\x46\x63\x50\x4d\x66\x2f\x63\x61','\x6a\x72\x33\x64\x47\x47\x4f','\x44\x6d\x6f\x45\x57\x51\x37\x63\x4d\x64\x38','\x57\x36\x37\x64\x52\x66\x57\x44\x61\x57','\x74\x49\x4b\x50\x57\x52\x7a\x49\x43\x4d\x5a\x63\x54\x61','\x45\x43\x6f\x36\x57\x51\x5a\x63\x4c\x73\x78\x63\x50\x4c\x44\x36','\x57\x34\x37\x64\x4a\x78\x64\x63\x4f\x38\x6f\x70','\x71\x64\x4c\x52\x78\x71\x70\x64\x56\x53\x6f\x66\x57\x4f\x71','\x57\x51\x38\x6e\x6c\x4d\x37\x63\x4d\x72\x34\x67\x57\x35\x75','\x62\x6d\x6f\x78\x57\x37\x66\x46\x6a\x4a\x74\x64\x48\x32\x30','\x57\x35\x2f\x64\x4b\x6d\x6b\x6a\x57\x36\x58\x79\x57\x50\x75','\x57\x51\x5a\x63\x55\x32\x76\x2f\x63\x65\x37\x63\x4b\x30\x65','\x44\x53\x6f\x34\x6c\x75\x66\x6f\x73\x78\x30\x4d','\x57\x50\x71\x71\x57\x4f\x46\x63\x4d\x43\x6f\x71\x57\x34\x78\x64\x47\x53\x6b\x78','\x57\x50\x42\x63\x52\x43\x6b\x30\x7a\x61','\x73\x71\x4f\x76\x6c\x43\x6b\x4d\x65\x65\x38\x77\x71\x6d\x6b\x63\x69\x61','\x61\x4a\x7a\x31\x44\x71','\x63\x6d\x6b\x52\x69\x77\x58\x76','\x57\x37\x39\x63\x57\x52\x56\x63\x4c\x71\x52\x64\x47\x33\x39\x54','\x79\x38\x6b\x64\x57\x36\x4c\x63\x76\x78\x56\x63\x54\x4e\x30','\x6d\x43\x6b\x31\x57\x51\x37\x63\x55\x61\x34','\x57\x37\x6e\x78\x7a\x59\x70\x64\x4c\x32\x48\x66\x57\x4f\x4b','\x67\x4c\x6a\x71\x45\x6d\x6b\x4c\x78\x47','\x63\x59\x6c\x64\x4a\x62\x4a\x64\x4c\x61','\x57\x34\x64\x64\x49\x38\x6b\x62\x57\x37\x4c\x79','\x71\x31\x61\x61\x57\x51\x7a\x77','\x57\x36\x68\x64\x52\x43\x6f\x47\x57\x37\x74\x63\x56\x61','\x67\x64\x44\x75\x76\x64\x6d','\x71\x68\x30\x38\x57\x50\x39\x41','\x46\x5a\x64\x64\x51\x43\x6b\x4a\x57\x52\x46\x64\x52\x43\x6b\x65\x57\x37\x38','\x57\x37\x6c\x64\x56\x4c\x4f\x64\x61\x38\x6f\x67\x77\x6d\x6b\x32','\x6f\x6d\x6b\x72\x57\x52\x76\x4d\x77\x71','\x6e\x38\x6b\x42\x57\x4f\x6e\x38\x73\x66\x66\x37\x57\x35\x4f','\x44\x5a\x31\x6e\x57\x52\x4f','\x79\x48\x4e\x63\x4a\x71\x61\x4c\x61\x6d\x6b\x65\x64\x47','\x79\x73\x35\x72\x57\x52\x6e\x78\x57\x52\x4f','\x57\x36\x52\x64\x54\x38\x6f\x36\x63\x4b\x4f\x61\x43\x76\x47','\x75\x73\x76\x52\x78\x61\x52\x64\x48\x6d\x6f\x63','\x57\x36\x6a\x46\x6c\x6d\x6f\x76\x73\x61','\x57\x37\x78\x63\x47\x53\x6b\x54\x68\x43\x6f\x62','\x57\x51\x4e\x63\x55\x6d\x6b\x46\x68\x31\x33\x63\x54\x43\x6b\x38\x57\x37\x71','\x6c\x78\x71\x66\x46\x72\x75\x62','\x68\x53\x6f\x64\x57\x37\x4c\x42\x68\x62\x4a\x64\x48\x4e\x38','\x57\x34\x6a\x36\x57\x52\x64\x64\x4b\x4a\x46\x63\x4d\x4d\x6e\x58','\x65\x32\x71\x64\x57\x35\x35\x75\x43\x71','\x57\x37\x72\x59\x6c\x6d\x6b\x55\x77\x53\x6f\x34\x57\x50\x70\x63\x54\x47','\x69\x6d\x6b\x39\x57\x51\x42\x63\x4b\x64\x4f\x71\x57\x35\x68\x63\x4e\x57','\x57\x4f\x70\x63\x52\x4d\x44\x4e\x61\x30\x5a\x63\x4b\x71\x75','\x57\x37\x4c\x54\x64\x53\x6f\x67\x72\x47','\x57\x52\x53\x76\x57\x50\x2f\x63\x48\x53\x6f\x78','\x6c\x38\x6b\x48\x57\x51\x52\x63\x4b\x71','\x79\x6d\x6b\x6b\x63\x38\x6f\x56\x57\x34\x79','\x57\x51\x4a\x63\x4c\x38\x6b\x61\x43\x75\x47','\x57\x50\x56\x63\x48\x43\x6b\x69\x57\x36\x6a\x54\x57\x52\x54\x37\x75\x47','\x79\x6d\x6f\x70\x57\x4f\x56\x63\x54\x4a\x65','\x57\x36\x68\x64\x52\x43\x6f\x32\x6d\x31\x6d\x73\x6d\x30\x61','\x57\x4f\x37\x63\x4d\x38\x6b\x71\x57\x37\x6a\x48\x57\x50\x44\x68\x77\x61','\x42\x43\x6f\x41\x42\x58\x43\x79\x57\x35\x69\x34\x43\x57\x39\x79\x57\x35\x79','\x64\x30\x57\x38\x57\x52\x2f\x64\x47\x61','\x57\x51\x38\x78\x57\x36\x52\x64\x56\x4c\x52\x63\x4d\x49\x62\x34\x57\x37\x43\x43\x6e\x6d\x6f\x42\x57\x34\x75','\x57\x50\x47\x71\x57\x51\x5a\x63\x4d\x38\x6f\x41\x57\x35\x69','\x79\x38\x6f\x79\x73\x73\x4e\x64\x4d\x5a\x70\x63\x4c\x77\x4b','\x57\x36\x58\x69\x63\x6d\x6f\x6d\x79\x71','\x68\x4d\x47\x70','\x64\x47\x5a\x64\x48\x61\x4e\x64\x53\x6d\x6b\x4b\x6d\x57','\x57\x4f\x31\x31\x57\x52\x5a\x64\x50\x48\x38','\x46\x38\x6b\x65\x57\x37\x50\x45\x77\x32\x70\x63\x4e\x49\x38','\x63\x6d\x6b\x4c\x69\x32\x6a\x47','\x42\x31\x38\x70\x57\x51\x44\x36\x71\x61','\x6c\x64\x35\x51\x79\x5a\x30','\x57\x35\x58\x34\x6a\x6d\x6f\x64\x41\x61','\x67\x75\x6e\x74\x43\x43\x6f\x36\x64\x31\x47','\x57\x36\x5a\x63\x4d\x59\x4a\x64\x4a\x43\x6b\x74\x6f\x61','\x57\x52\x47\x32\x70\x48\x66\x63','\x57\x52\x61\x56\x63\x4c\x33\x63\x4c\x71','\x67\x47\x68\x64\x4a\x59\x42\x64\x4a\x38\x6f\x41\x57\x51\x46\x63\x48\x57','\x75\x38\x6b\x45\x69\x53\x6f\x4e\x57\x36\x4e\x64\x52\x31\x35\x71','\x43\x53\x6f\x79\x41\x47\x5a\x64\x4b\x57','\x70\x43\x6b\x51\x57\x52\x78\x63\x4d\x71','\x77\x53\x6b\x6d\x57\x35\x48\x68\x43\x71','\x57\x51\x79\x6e\x6a\x58\x50\x2b\x57\x34\x56\x64\x4f\x43\x6f\x69','\x57\x4f\x79\x6a\x57\x34\x6d\x68\x70\x62\x47\x73\x57\x4f\x6d','\x62\x49\x4e\x64\x49\x59\x54\x56\x73\x65\x74\x63\x50\x47','\x57\x35\x74\x64\x49\x43\x6f\x71\x6f\x75\x34','\x45\x74\x48\x31\x57\x50\x4a\x63\x48\x43\x6f\x4c\x72\x53\x6b\x47\x44\x6d\x6f\x52\x6a\x77\x46\x64\x4a\x57','\x79\x72\x62\x73\x57\x51\x6d\x64\x57\x36\x6a\x58\x57\x52\x43','\x68\x77\x6a\x58\x43\x6d\x6f\x2f','\x57\x51\x4c\x61\x57\x4f\x74\x64\x4f\x59\x53','\x6e\x49\x56\x64\x54\x49\x74\x64\x49\x71','\x57\x36\x52\x63\x4e\x38\x6b\x56\x62\x53\x6f\x71','\x68\x71\x56\x64\x56\x73\x64\x64\x4e\x53\x6f\x42','\x45\x64\x78\x64\x4e\x38\x6b\x56\x57\x4f\x6c\x64\x54\x43\x6f\x67\x57\x52\x6d','\x66\x5a\x54\x38\x45\x48\x69','\x45\x6d\x6f\x49\x57\x37\x64\x64\x4a\x4e\x7a\x66\x57\x36\x5a\x63\x50\x30\x33\x64\x49\x43\x6b\x51\x57\x34\x65','\x57\x50\x46\x63\x4e\x6d\x6b\x76\x62\x31\x57','\x57\x34\x46\x64\x48\x53\x6b\x45\x57\x36\x34','\x6c\x65\x71\x71\x57\x35\x37\x64\x53\x61','\x73\x6d\x6f\x6e\x71\x49\x74\x64\x4c\x5a\x46\x64\x4e\x61','\x62\x57\x4e\x64\x53\x4a\x33\x64\x4a\x38\x6f\x41\x57\x51\x46\x63\x48\x57','\x79\x47\x4b\x70\x57\x4f\x54\x45\x71\x4b\x4f','\x6b\x6d\x6b\x57\x57\x51\x34','\x57\x37\x70\x63\x47\x38\x6b\x6f\x69\x6d\x6f\x68','\x57\x4f\x33\x63\x51\x38\x6b\x45\x73\x4c\x6d','\x57\x35\x2f\x64\x4b\x75\x2f\x63\x4a\x43\x6f\x6f\x79\x53\x6f\x47\x57\x35\x75','\x57\x4f\x68\x63\x4c\x53\x6b\x44\x57\x37\x72\x36\x57\x4f\x65','\x6b\x6d\x6b\x55\x44\x4d\x48\x48\x79\x75\x75\x61\x57\x52\x57','\x43\x63\x7a\x66\x57\x52\x47\x65\x57\x36\x4f\x34\x57\x51\x61','\x57\x50\x7a\x39\x57\x52\x2f\x64\x47\x4a\x56\x63\x4f\x4e\x31\x4d','\x57\x51\x33\x63\x50\x38\x6b\x69\x62\x57','\x6b\x53\x6b\x50\x57\x52\x48\x4e\x71\x47','\x57\x36\x2f\x64\x4f\x43\x6f\x48\x57\x36\x4a\x63\x47\x71','\x57\x50\x4f\x63\x57\x34\x6d\x4d\x6a\x58\x75\x37\x57\x34\x79','\x71\x48\x56\x64\x4a\x53\x6b\x64\x57\x51\x4f','\x41\x71\x79\x41\x57\x50\x58\x61\x71\x47','\x65\x43\x6b\x4e\x57\x52\x47','\x75\x71\x5a\x64\x50\x43\x6b\x62\x57\x50\x78\x64\x4d\x53\x6f\x32\x57\x50\x65','\x78\x43\x6f\x39\x41\x73\x78\x64\x4c\x61','\x6d\x77\x4b\x6e\x46\x62\x4b\x46\x57\x50\x7a\x53','\x57\x4f\x61\x61\x57\x35\x4b\x41\x69\x72\x65\x52\x57\x4f\x6d','\x57\x50\x70\x64\x49\x6d\x6b\x67\x57\x36\x6a\x72\x57\x4f\x6c\x63\x4e\x53\x6f\x4b','\x76\x4e\x6d\x38\x57\x4f\x61','\x57\x50\x54\x77\x78\x6d\x6f\x6b\x57\x37\x74\x63\x53\x68\x52\x63\x4b\x47','\x57\x37\x2f\x64\x48\x30\x6d\x41\x62\x6d\x6f\x31\x75\x6d\x6b\x37','\x70\x53\x6f\x4d\x6f\x38\x6b\x75\x7a\x78\x78\x63\x4c\x6d\x6f\x51','\x72\x53\x6b\x43\x6d\x38\x6f\x4f\x57\x36\x78\x64\x4c\x75\x4f','\x57\x36\x4e\x63\x4c\x38\x6b\x4d','\x65\x53\x6b\x30\x66\x31\x31\x67','\x72\x53\x6b\x70\x6b\x61'];_0x296b=function(){return _0x47921f;};return _0x296b();}const _0x40a200=require(_0x398e1e(0xd9,'\x69\x6c\x33\x65'));function _0x13d3b4(_0x105300={}){const _0x4df4be=_0x398e1e,_0x53b45c={};_0x53b45c[_0x4df4be(0x123,'\x4a\x65\x45\x63')]='\x74\x72\x61\x63\x65\x5f\x63\x6f'+_0x4df4be(0x15f,'\x4e\x79\x46\x56')+_0x4df4be(0x168,'\x4b\x71\x69\x53'),_0x53b45c[_0x4df4be(0x1f0,'\x4e\x50\x4c\x55')]=function(_0x5dc873,_0x5c5f68){return _0x5dc873===_0x5c5f68;},_0x53b45c[_0x4df4be(0x189,'\x77\x6f\x74\x5b')]=function(_0x29dd58,_0x244830){return _0x29dd58===_0x244830;},_0x53b45c['\x57\x49\x66\x63\x75']=function(_0x4d92e6,_0x215712){return _0x4d92e6!==_0x215712;},_0x53b45c[_0x4df4be(0x142,'\x52\x25\x47\x53')]='\x64\x56\x6a\x4e\x4e',_0x53b45c['\x5a\x6d\x6b\x4e\x48']=_0x4df4be(0x18a,'\x43\x21\x77\x59')+'\x65',_0x53b45c[_0x4df4be(0x151,'\x38\x68\x58\x57')]=function(_0x578530,_0x25212e){return _0x578530===_0x25212e;},_0x53b45c[_0x4df4be(0xd0,'\x46\x51\x35\x49')]=_0x4df4be(0x18a,'\x43\x21\x77\x59')+_0x4df4be(0x1dd,'\x38\x6b\x36\x4f')+_0x4df4be(0x1e9,'\x6b\x43\x65\x5a'),_0x53b45c[_0x4df4be(0x1b5,'\x38\x6b\x36\x4f')]=function(_0x22e8eb,_0x350e8e){return _0x22e8eb===_0x350e8e;},_0x53b45c[_0x4df4be(0x1ed,'\x4b\x71\x73\x69')]=_0x4df4be(0x101,'\x4a\x44\x46\x30')+_0x4df4be(0x1f3,'\x57\x50\x39\x35'),_0x53b45c[_0x4df4be(0x120,'\x31\x76\x36\x23')]=function(_0x4930ee,_0x51fc57){return _0x4930ee!==_0x51fc57;};const _0x18d846=_0x53b45c,_0x3044fe={};for(const _0x429262 of Object[_0x4df4be(0x1c7,'\x72\x35\x47\x67')](_0x105300)['\x73\x6f\x72\x74']()){if(_0x18d846[_0x4df4be(0x1c1,'\x4a\x65\x45\x63')](_0x18d846[_0x4df4be(0xe3,'\x54\x6b\x6f\x74')],_0x4df4be(0x19d,'\x69\x6c\x33\x65'))){if(_0x18d846[_0x4df4be(0xf8,'\x57\x78\x68\x78')](_0x429262,_0x18d846[_0x4df4be(0x14a,'\x31\x6b\x6f\x37')])||_0x18d846[_0x4df4be(0x133,'\x4e\x77\x76\x23')](_0x429262,_0x4df4be(0x16d,'\x57\x78\x68\x78')+_0x4df4be(0xe6,'\x69\x6c\x33\x65')+_0x4df4be(0x145,'\x54\x42\x5b\x42'))||_0x18d846[_0x4df4be(0xf4,'\x77\x6f\x74\x5b')](_0x429262,_0x18d846['\x4a\x78\x44\x6e\x79']))continue;if(_0x18d846[_0x4df4be(0xcc,'\x35\x63\x5a\x79')](_0x429262,_0x18d846[_0x4df4be(0x16f,'\x49\x56\x40\x4b')]))continue;const _0x1fa9f9=_0x105300[_0x429262];if(_0x18d846[_0x4df4be(0x1de,'\x68\x62\x77\x76')](_0x1fa9f9,undefined))_0x3044fe[_0x429262]=_0x1fa9f9;}else{const _0x26eaef={};_0x26eaef[_0x4df4be(0xca,'\x72\x35\x47\x67')]=_0x18d846[_0x4df4be(0x12c,'\x5e\x24\x38\x55')],_0x26eaef[_0x4df4be(0x136,'\x52\x25\x47\x53')]=0x32;const _0x4f13cb={};_0x4f13cb[_0x4df4be(0x12b,'\x5d\x29\x6e\x57')]=_0x4df4be(0x1a6,'\x38\x6b\x36\x4f')+_0x4df4be(0x19a,'\x57\x50\x39\x35')+'\x69\x67',_0x4f13cb[_0x4df4be(0x136,'\x52\x25\x47\x53')]=0x32;const _0x33e28d=[...this[_0x4df4be(0x198,'\x43\x21\x77\x59')][_0x4df4be(0x1d2,'\x41\x29\x30\x79')](_0x26eaef),...this[_0x4df4be(0xf5,'\x38\x6b\x36\x4f')][_0x4df4be(0x155,'\x65\x57\x58\x54')](_0x4f13cb)];let _0x59d010=-0x1d*0xac+0x1e*-0x12e+0x36e0;for(const _0xf85c7c of _0x33e28d){const _0x470488=this[_0x4df4be(0x179,'\x26\x6a\x40\x4f')](_0xf85c7c),_0x3f9472=_0x18d846[_0x4df4be(0xf6,'\x65\x57\x58\x54')](_0x470488,!![])||_0x470488&&_0x470488['\x61\x63\x6b']===!![],_0xe54b6=_0x470488===!![]||_0x470488&&_0x18d846[_0x4df4be(0x187,'\x4a\x44\x46\x30')](_0x470488[_0x4df4be(0x1cb,'\x51\x30\x26\x41')],!![]);_0x3f9472&&this[_0x4df4be(0x19b,'\x6b\x43\x65\x5a')][_0x4df4be(0x15c,'\x43\x21\x77\x59')](_0xf85c7c['\x69\x64']),_0xe54b6&&_0x59d010++;}return _0x59d010;}}return JSON[_0x4df4be(0x1cd,'\x4b\x71\x73\x69')+'\x79'](_0x3044fe);}function _0xca75f7(_0xac78f8={},_0x52f5f2=process.env){const _0x57f1d4=_0x398e1e,_0x3e0ef5={'\x64\x45\x53\x41\x46':function(_0x260843,_0x113a0f){return _0x260843(_0x113a0f);},'\x4a\x74\x51\x44\x6b':function(_0x1bd6ea,_0x2dad94){return _0x1bd6ea||_0x2dad94;},'\x61\x57\x69\x59\x61':'\x75\x74\x66\x38','\x79\x4a\x69\x67\x4c':_0x57f1d4(0x100,'\x5a\x45\x25\x36')},_0x2e65a9=_0x3e0ef5[_0x57f1d4(0x169,'\x52\x25\x47\x53')](String,_0x52f5f2[_0x57f1d4(0x1b3,'\x52\x25\x47\x53')+_0x57f1d4(0x19c,'\x4e\x77\x76\x23')+'\x46\x49\x47\x5f\x53\x49\x47\x4e'+_0x57f1d4(0xe1,'\x65\x23\x5b\x48')+_0x57f1d4(0x121,'\x65\x57\x58\x54')]||_0x52f5f2[_0x57f1d4(0x1cc,'\x2a\x29\x38\x64')+_0x57f1d4(0x195,'\x72\x35\x47\x67')+'\x43\x45\x5f\x43\x4f\x4e\x46\x49'+_0x57f1d4(0x150,'\x62\x29\x75\x29')+_0x57f1d4(0xfd,'\x31\x6b\x6f\x37')+'\x5f\x4b\x45\x59']||'')[_0x57f1d4(0x17a,'\x28\x75\x44\x46')](),_0x586c1c=_0x3e0ef5['\x64\x45\x53\x41\x46'](String,_0xac78f8[_0x57f1d4(0x11f,'\x5e\x24\x38\x55')+'\x65']||_0xac78f8[_0x57f1d4(0x112,'\x54\x42\x5b\x42')+_0x57f1d4(0x1ca,'\x4e\x77\x76\x23')+_0x57f1d4(0x14e,'\x65\x23\x5b\x48')]||'')[_0x57f1d4(0x1db,'\x4e\x50\x4c\x55')]();if(_0x3e0ef5[_0x57f1d4(0x12a,'\x38\x68\x58\x57')](!_0x2e65a9,!_0x586c1c))return![];try{return _0x40a200[_0x57f1d4(0x1e4,'\x5e\x24\x38\x55')]('\x73\x68\x61\x32\x35\x36',Buffer[_0x57f1d4(0x1b0,'\x65\x23\x5b\x48')](_0x13d3b4(_0xac78f8),_0x3e0ef5['\x61\x57\x69\x59\x61']),_0x2e65a9,Buffer[_0x57f1d4(0x1e3,'\x53\x77\x39\x4e')](_0x586c1c,_0x3e0ef5['\x79\x4a\x69\x67\x4c']));}catch{return![];}}class _0x9614ef{constructor({store:_0x5d4639,logger:_0x1b4404}={}){const _0x21cdf3=_0x398e1e,_0x55137d={};_0x55137d['\x6f\x7a\x62\x47\x41']=function(_0xd0b6fd,_0x20f82c){return _0xd0b6fd||_0x20f82c;};const _0x561e1e=_0x55137d;this[_0x21cdf3(0x10d,'\x4a\x65\x45\x63')]=_0x5d4639,this[_0x21cdf3(0x17c,'\x48\x4b\x4d\x55')]=_0x561e1e[_0x21cdf3(0x11e,'\x53\x77\x39\x4e')](_0x1b4404,console);}['\x70\x72\x6f\x63\x65\x73\x73'](_0x58a41b){const _0x272711=_0x398e1e,_0x5f11ad={'\x48\x57\x76\x6a\x4c':_0x272711(0x166,'\x65\x23\x5b\x48'),'\x50\x70\x52\x58\x6e':_0x272711(0xf3,'\x4e\x77\x76\x23'),'\x65\x50\x78\x79\x62':_0x272711(0x1b6,'\x31\x76\x36\x23'),'\x53\x57\x6e\x46\x46':function(_0x18f8b6,_0x23e98b){return _0x18f8b6(_0x23e98b);},'\x7a\x76\x73\x4b\x6d':function(_0x2c4ff8,_0x40d465){return _0x2c4ff8===_0x40d465;},'\x75\x61\x55\x42\x77':'\x73\x74\x72\x69\x6e\x67','\x4c\x70\x75\x49\x6c':function(_0x4e1825,_0x994d77){return _0x4e1825&&_0x994d77;},'\x72\x65\x67\x65\x77':_0x272711(0x105,'\x51\x30\x26\x41')+_0x272711(0x12e,'\x5d\x5a\x41\x40')+_0x272711(0x153,'\x5d\x5a\x41\x40')+_0x272711(0x1f4,'\x4e\x50\x4c\x55')+_0x272711(0x1f2,'\x52\x25\x47\x53')+_0x272711(0x1ac,'\x4e\x77\x76\x23')+'\x73\x20\x65\x6e\x61\x62\x6c\x65'+_0x272711(0x154,'\x38\x6b\x36\x4f')+_0x272711(0xe8,'\x6c\x69\x49\x59')+'\x74\x72\x61\x63\x65\x20\x64\x69'+_0x272711(0x1ea,'\x54\x42\x5b\x42'),'\x47\x66\x48\x6b\x4a':_0x272711(0x1c4,'\x24\x34\x24\x5e')+_0x272711(0xce,'\x69\x6c\x33\x65')+_0x272711(0x10c,'\x6c\x69\x49\x59'),'\x6d\x43\x67\x48\x42':function(_0x3dc04f,_0x4cb088){return _0x3dc04f===_0x4cb088;},'\x48\x55\x66\x4f\x53':_0x272711(0x129,'\x43\x21\x77\x59')+_0x272711(0xfb,'\x28\x75\x44\x46')+_0x272711(0x115,'\x54\x42\x5b\x42')+_0x272711(0xd7,'\x51\x30\x26\x41'),'\x49\x71\x71\x57\x5a':'\x74\x72\x75\x65','\x6e\x77\x72\x52\x6a':_0x272711(0xf9,'\x65\x57\x58\x54'),'\x61\x56\x4c\x49\x77':'\x50\x55\x42\x4c\x49\x43\x20\x4b'+'\x45\x59','\x78\x47\x57\x6c\x79':'\x74\x72\x61\x63\x65\x5f\x68\x75'+_0x272711(0x157,'\x28\x75\x44\x46')+'\x5f\x6b\x65\x79','\x61\x70\x7a\x6e\x56':_0x272711(0x1ee,'\x46\x51\x35\x49')+_0x272711(0xf0,'\x5e\x24\x38\x55')+_0x272711(0x18f,'\x57\x78\x68\x78')+_0x272711(0x19e,'\x52\x25\x47\x53')+_0x272711(0x1c2,'\x62\x29\x75\x29')+_0x272711(0x1ae,'\x6b\x43\x65\x5a')+_0x272711(0x193,'\x69\x6c\x33\x65')+_0x272711(0x181,'\x5d\x5a\x41\x40')+_0x272711(0x1b7,'\x24\x34\x24\x5e'),'\x68\x46\x4d\x61\x6b':function(_0x1f4b23,_0x31bb77){return _0x1f4b23!==_0x31bb77;},'\x78\x66\x6b\x44\x41':_0x272711(0x14b,'\x35\x63\x5a\x79'),'\x6d\x57\x48\x68\x6a':_0x272711(0x143,'\x43\x34\x67\x62'),'\x71\x63\x7a\x6f\x47':_0x272711(0x1f1,'\x62\x29\x75\x29')+_0x272711(0x1e2,'\x57\x78\x68\x78')+_0x272711(0x12f,'\x37\x26\x25\x6e')+_0x272711(0x1af,'\x5a\x45\x25\x36')+_0x272711(0x1a1,'\x69\x6c\x33\x65')+_0x272711(0xfa,'\x62\x29\x75\x29')+'\x75\x73\x65\x20\x70\x69\x6e\x6e'+_0x272711(0x1ef,'\x5a\x45\x25\x36')+_0x272711(0x178,'\x28\x75\x44\x46')+_0x272711(0xff,'\x41\x29\x30\x79')+'\x42\x5f\x50\x55\x42\x4c\x49\x43'+_0x272711(0xd3,'\x43\x21\x77\x59')+_0x272711(0x147,'\x5a\x45\x25\x36')+_0x272711(0x1e7,'\x28\x75\x44\x46')+_0x272711(0x174,'\x4e\x50\x4c\x55')+'\x6b\x65\x79','\x6b\x50\x45\x50\x69':_0x272711(0xd5,'\x6c\x69\x49\x59')+'\x6c\x6c\x65\x63\x74\x69\x6f\x6e'+_0x272711(0x188,'\x28\x75\x44\x46')+_0x272711(0xc7,'\x6c\x69\x49\x59'),'\x6d\x79\x6a\x54\x70':_0x272711(0x11a,'\x38\x68\x58\x57')+'\x6f\x6e\x74\x72\x6f\x6c\x5d\x20'+'\x74\x72\x61\x63\x65\x20\x63\x6f'+_0x272711(0x173,'\x28\x75\x44\x46')+'\x20','\x79\x42\x42\x7a\x69':_0x272711(0x102,'\x58\x4f\x55\x30'),'\x64\x47\x66\x72\x51':_0x272711(0x144,'\x54\x6b\x6f\x74')},_0x45a141=_0x58a41b&&_0x58a41b['\x70\x61\x79\x6c\x6f\x61\x64']?_0x58a41b[_0x272711(0x13e,'\x38\x68\x58\x57')]:_0x58a41b,_0x29b5cc=_0x45a141&&(_0x45a141[_0x272711(0x140,'\x65\x23\x5b\x48')]??_0x45a141[_0x272711(0xe4,'\x58\x4f\x55\x30')+_0x272711(0xd2,'\x39\x6d\x74\x45')+_0x272711(0x1c8,'\x4b\x71\x69\x53')]??_0x45a141['\x70\x72\x6f\x78\x79\x5f\x74\x72'+_0x272711(0xef,'\x39\x6d\x74\x45')+_0x272711(0xea,'\x55\x33\x26\x6c')+_0x272711(0x1cf,'\x38\x68\x58\x57')]);if(typeof _0x29b5cc!==_0x5f11ad[_0x272711(0xd1,'\x4e\x77\x76\x23')]){this[_0x272711(0x109,'\x24\x34\x24\x5e')][_0x272711(0x180,'\x48\x4b\x4d\x55')]?.(_0x272711(0x1b9,'\x31\x6b\x6f\x37')+_0x272711(0x17d,'\x58\x4f\x55\x30')+_0x272711(0x13f,'\x77\x6f\x74\x5b')+_0x272711(0x1aa,'\x43\x21\x77\x59')+_0x272711(0x12d,'\x48\x4b\x4d\x55')+'\x62\x6f\x6f\x6c\x65\x61\x6e\x20'+'\x65\x6e\x61\x62\x6c\x65\x64');const _0x334b98={};return _0x334b98[_0x272711(0x141,'\x5d\x29\x6e\x57')]=!![],_0x334b98[_0x272711(0x1fb,'\x48\x4b\x4d\x55')]=![],_0x334b98;}let _0x49d7c5=_0x45a141[_0x272711(0x152,'\x2a\x29\x38\x64')+_0x272711(0x170,'\x72\x35\x47\x67')+'\x5f\x65\x6e\x61\x62\x6c\x65\x64']??_0x45a141[_0x272711(0x1ba,'\x57\x78\x68\x78')+_0x272711(0xe9,'\x57\x50\x39\x35')+_0x272711(0xcf,'\x53\x77\x39\x4e')+_0x272711(0x1d4,'\x4e\x79\x46\x56')];const _0x2959ba=_0x5f11ad[_0x272711(0x18c,'\x57\x78\x68\x78')](_0xca75f7,_0x45a141),_0x95d03b=_0x5f11ad['\x7a\x76\x73\x4b\x6d'](_0x29b5cc,!![]),_0x9f0caf=_0x5f11ad['\x7a\x76\x73\x4b\x6d'](_0x49d7c5,!![]),_0x52d19d=_0x5f11ad[_0x272711(0xd4,'\x51\x67\x41\x55')](typeof _0x45a141[_0x272711(0x1ad,'\x5e\x24\x38\x55')+_0x272711(0x119,'\x55\x33\x26\x6c')],_0x5f11ad[_0x272711(0x18d,'\x62\x29\x75\x29')])&&_0x45a141[_0x272711(0x1a3,'\x72\x35\x47\x67')+_0x272711(0x167,'\x5e\x24\x38\x55')][_0x272711(0xde,'\x6b\x43\x65\x5a')]();if(_0x5f11ad['\x4c\x70\x75\x49\x6c'](!_0x2959ba,_0x95d03b)){this[_0x272711(0x15d,'\x31\x76\x36\x23')][_0x272711(0xd8,'\x58\x4f\x55\x30')]?.(_0x272711(0x105,'\x51\x30\x26\x41')+_0x272711(0x1c6,'\x51\x30\x26\x41')+_0x272711(0x1df,'\x39\x6d\x74\x45')+_0x272711(0x108,'\x53\x77\x39\x4e')+_0x272711(0x165,'\x69\x6c\x33\x65')+_0x272711(0x114,'\x4a\x44\x46\x30')+'\x68\x61\x74\x20\x63\x6f\x75\x6c'+'\x64\x20\x65\x6e\x61\x62\x6c\x65'+_0x272711(0x182,'\x6b\x43\x65\x5a')+_0x272711(0x1eb,'\x4e\x50\x4c\x55')+_0x272711(0x18b,'\x4e\x77\x76\x23')+_0x272711(0x1fd,'\x26\x6a\x40\x4f'));const _0x39f349={};return _0x39f349[_0x272711(0x14f,'\x31\x6b\x6f\x37')]=!![],_0x39f349[_0x272711(0x124,'\x4e\x77\x76\x23')]=![],_0x39f349;}!_0x2959ba&&_0x9f0caf&&(this['\x6c\x6f\x67\x67\x65\x72'][_0x272711(0x16e,'\x43\x34\x67\x62')]?.(_0x5f11ad[_0x272711(0x1c9,'\x2a\x29\x38\x64')]),_0x49d7c5=![]);this[_0x272711(0x1e5,'\x65\x57\x58\x54')][_0x272711(0x1fc,'\x4e\x50\x4c\x55')](_0x5f11ad[_0x272711(0x110,'\x43\x21\x77\x59')],_0x29b5cc?_0x272711(0x186,'\x31\x76\x36\x23'):'\x66\x61\x6c\x73\x65');_0x5f11ad[_0x272711(0x184,'\x54\x6b\x6f\x74')](typeof _0x49d7c5,_0x5f11ad[_0x272711(0x13b,'\x51\x30\x26\x41')])&&this[_0x272711(0x183,'\x5e\x24\x38\x55')][_0x272711(0x1fc,'\x4e\x50\x4c\x55')](_0x5f11ad[_0x272711(0xfc,'\x31\x6b\x6f\x37')],_0x49d7c5?_0x5f11ad[_0x272711(0x1a8,'\x5a\x45\x25\x36')]:_0x5f11ad[_0x272711(0x196,'\x4a\x44\x46\x30')]);const _0x4dc480=typeof _0x45a141['\x74\x72\x61\x63\x65\x5f\x68\x75'+'\x62\x5f\x70\x75\x62\x6c\x69\x63'+_0x272711(0x149,'\x51\x30\x26\x41')]===_0x5f11ad[_0x272711(0x113,'\x4e\x79\x46\x56')]&&_0x45a141['\x74\x72\x61\x63\x65\x5f\x68\x75'+_0x272711(0x1bd,'\x52\x25\x47\x53')+_0x272711(0x16c,'\x30\x54\x73\x47')]['\x74\x72\x69\x6d']();if(_0x5f11ad[_0x272711(0x117,'\x4b\x71\x73\x69')](_0x2959ba,_0x4dc480)&&_0x45a141[_0x272711(0x107,'\x69\x6c\x33\x65')+_0x272711(0x1d8,'\x37\x26\x25\x6e')+_0x272711(0xeb,'\x43\x34\x67\x62')][_0x272711(0x10b,'\x5d\x29\x6e\x57')](_0x5f11ad[_0x272711(0x1d0,'\x49\x56\x40\x4b')]))this[_0x272711(0x104,'\x52\x25\x47\x53')][_0x272711(0x1fc,'\x4e\x50\x4c\x55')](_0x5f11ad[_0x272711(0x1a7,'\x43\x21\x77\x59')],_0x45a141[_0x272711(0xe5,'\x72\x35\x47\x67')+_0x272711(0x132,'\x5a\x45\x25\x36')+_0x272711(0xed,'\x57\x78\x68\x78')][_0x272711(0x192,'\x6c\x69\x49\x59')]());else _0x5f11ad[_0x272711(0x197,'\x49\x56\x40\x4b')](!_0x2959ba,_0x4dc480)&&this[_0x272711(0x125,'\x49\x56\x40\x4b')][_0x272711(0xd8,'\x58\x4f\x55\x30')]?.(_0x5f11ad[_0x272711(0x191,'\x5e\x24\x38\x55')]);if(_0x52d19d){if(_0x5f11ad[_0x272711(0x103,'\x4a\x65\x45\x63')](_0x5f11ad[_0x272711(0xf1,'\x5d\x29\x6e\x57')],_0x5f11ad[_0x272711(0x1d9,'\x4a\x44\x46\x30')]))this[_0x272711(0xe7,'\x38\x6b\x36\x4f')]['\x77\x61\x72\x6e']?.(_0x5f11ad[_0x272711(0x122,'\x57\x78\x68\x78')]);else return _0x28dfe0['\x76\x65\x72\x69\x66\x79'](vezEOF[_0x272711(0x1e0,'\x39\x6d\x74\x45')],_0xac464a[_0x272711(0x1f7,'\x77\x6f\x74\x5b')](_0x480dd4(_0x4f0b6a),_0x272711(0xcd,'\x51\x30\x26\x41')),_0xc445c7,_0x1e73d9[_0x272711(0x10f,'\x5d\x29\x6e\x57')](_0x29ace9,vezEOF[_0x272711(0x17f,'\x6b\x43\x65\x5a')]));}this[_0x272711(0x1bc,'\x31\x6b\x6f\x37')][_0x272711(0x14c,'\x5d\x5a\x41\x40')](_0x5f11ad[_0x272711(0x127,'\x72\x35\x47\x67')],new Date()[_0x272711(0x194,'\x48\x4b\x4d\x55')+_0x272711(0x1dc,'\x52\x25\x47\x53')]()),this[_0x272711(0x106,'\x2a\x29\x38\x64')][_0x272711(0xd6,'\x31\x76\x36\x23')]?.(_0x5f11ad['\x6d\x79\x6a\x54\x70']+(_0x29b5cc?_0x5f11ad[_0x272711(0x1e8,'\x43\x34\x67\x62')]:_0x5f11ad[_0x272711(0xf7,'\x35\x63\x5a\x79')]));const _0x293340={};return _0x293340['\x61\x63\x6b']=!![],_0x293340[_0x272711(0x159,'\x43\x21\x77\x59')]=!![],_0x293340;}[_0x398e1e(0x175,'\x35\x63\x5a\x79')+_0x398e1e(0x1fa,'\x4e\x79\x46\x56')](){const _0x6354c6=_0x398e1e,_0x51be1b={};_0x51be1b[_0x6354c6(0x1f8,'\x26\x6a\x40\x4f')]=_0x6354c6(0x148,'\x53\x77\x39\x4e')+_0x6354c6(0x1a0,'\x38\x6b\x36\x4f')+'\x61\x6c\x79\x73\x69\x73\x5f\x65'+_0x6354c6(0x1d4,'\x4e\x79\x46\x56'),_0x51be1b[_0x6354c6(0x1a9,'\x39\x6d\x74\x45')]=_0x6354c6(0x176,'\x68\x62\x77\x76'),_0x51be1b['\x61\x51\x51\x6c\x4c']=function(_0x1fbccd,_0x1c29f9){return _0x1fbccd===_0x1c29f9;},_0x51be1b[_0x6354c6(0x18e,'\x69\x6c\x33\x65')]=function(_0x560895,_0x4c82a8){return _0x560895===_0x4c82a8;},_0x51be1b[_0x6354c6(0x171,'\x51\x30\x26\x41')]=_0x6354c6(0x160,'\x65\x57\x58\x54')+_0x6354c6(0x10a,'\x4e\x50\x4c\x55')+_0x6354c6(0x11d,'\x6b\x43\x65\x5a'),_0x51be1b[_0x6354c6(0x135,'\x77\x6f\x74\x5b')]=_0x6354c6(0x1d1,'\x30\x54\x73\x47'),_0x51be1b['\x69\x52\x6d\x63\x53']=function(_0x55b472,_0x1d9d37){return _0x55b472===_0x1d9d37;},_0x51be1b['\x4b\x4f\x5a\x42\x75']=function(_0x581d60,_0x4a1506){return _0x581d60===_0x4a1506;},_0x51be1b[_0x6354c6(0xee,'\x31\x76\x36\x23')]=function(_0x2f14db,_0x47a91f){return _0x2f14db===_0x47a91f;},_0x51be1b[_0x6354c6(0xdd,'\x6c\x69\x49\x59')]=function(_0x539a85,_0x49b04b){return _0x539a85!==_0x49b04b;},_0x51be1b[_0x6354c6(0x13d,'\x30\x54\x73\x47')]=_0x6354c6(0x1a5,'\x49\x56\x40\x4b');const _0xf028f3=_0x51be1b,_0x2be914={};_0x2be914['\x74\x79\x70\x65']=_0xf028f3[_0x6354c6(0x11b,'\x4a\x65\x45\x63')],_0x2be914[_0x6354c6(0x1c3,'\x28\x75\x44\x46')]=0x32;const _0x4f6e7e={};_0x4f6e7e[_0x6354c6(0x13c,'\x38\x6b\x36\x4f')]=_0x6354c6(0x16a,'\x69\x6c\x33\x65')+_0x6354c6(0x158,'\x46\x51\x35\x49')+'\x69\x67',_0x4f6e7e[_0x6354c6(0x1c5,'\x26\x6a\x40\x4f')]=0x32;const _0x5d96dd=[...this['\x73\x74\x6f\x72\x65']['\x70\x6f\x6c\x6c'](_0x2be914),...this[_0x6354c6(0x163,'\x6c\x69\x49\x59')][_0x6354c6(0x172,'\x54\x42\x5b\x42')](_0x4f6e7e)];let _0x4a95b8=0x18ad+0x15*-0x37+-0x142a;for(const _0x1448dd of _0x5d96dd){if(_0xf028f3[_0x6354c6(0xdb,'\x4a\x65\x45\x63')](_0xf028f3[_0x6354c6(0x1be,'\x4a\x44\x46\x30')],_0x6354c6(0x19f,'\x65\x23\x5b\x48'))){const _0x1fe30f=this[_0x6354c6(0x1d3,'\x38\x6b\x36\x4f')](_0x1448dd),_0x2e9147=_0xf028f3[_0x6354c6(0x126,'\x48\x4b\x4d\x55')](_0x1fe30f,!![])||_0x1fe30f&&_0xf028f3[_0x6354c6(0x17b,'\x28\x75\x44\x46')](_0x1fe30f['\x61\x63\x6b'],!![]),_0x4096c6=_0xf028f3[_0x6354c6(0x14d,'\x62\x29\x75\x29')](_0x1fe30f,!![])||_0x1fe30f&&_0xf028f3[_0x6354c6(0x134,'\x53\x77\x39\x4e')](_0x1fe30f[_0x6354c6(0x1a2,'\x4e\x79\x46\x56')],!![]);_0x2e9147&&this[_0x6354c6(0x1ce,'\x39\x6d\x74\x45')]['\x61\x63\x6b'](_0x1448dd['\x69\x64']),_0x4096c6&&(_0xf028f3[_0x6354c6(0x1b1,'\x37\x26\x25\x6e')](_0xf028f3[_0x6354c6(0x161,'\x39\x6d\x74\x45')],_0xf028f3[_0x6354c6(0x16b,'\x5a\x45\x25\x36')])?this[_0x6354c6(0x199,'\x41\x29\x30\x79')][_0x6354c6(0x1f9,'\x30\x54\x73\x47')](RoDMYR[_0x6354c6(0x1ab,'\x4b\x71\x69\x53')],_0x39779d?RoDMYR[_0x6354c6(0x130,'\x4a\x44\x46\x30')]:_0x6354c6(0x1f6,'\x43\x34\x67\x62')):_0x4a95b8++);}else{const _0x953ab=this[_0x6354c6(0xc8,'\x46\x51\x35\x49')](_0x3c1f3b),_0x59b1da=_0xf028f3[_0x6354c6(0x111,'\x43\x34\x67\x62')](_0x953ab,!![])||_0x953ab&&_0xf028f3[_0x6354c6(0x17e,'\x52\x25\x47\x53')](_0x953ab[_0x6354c6(0x1a4,'\x4b\x71\x69\x53')],!![]),_0x44d3e0=_0xf028f3[_0x6354c6(0x1c0,'\x4e\x50\x4c\x55')](_0x953ab,!![])||_0x953ab&&_0xf028f3[_0x6354c6(0x15b,'\x31\x76\x36\x23')](_0x953ab[_0x6354c6(0x1bb,'\x28\x75\x44\x46')],!![]);_0x59b1da&&this[_0x6354c6(0xe0,'\x28\x75\x44\x46')][_0x6354c6(0x11c,'\x24\x34\x24\x5e')](_0x442a01['\x69\x64']),_0x44d3e0&&_0x2c828b++;}}return _0x4a95b8;}}const _0x42c4eb={};function _0x3520(_0x172ef4,_0x12a634){_0x172ef4=_0x172ef4-(-0x1*0xf25+-0x1*0x7bd+-0x17a9*-0x1);const _0x48d54b=_0x296b();let _0x3d3e12=_0x48d54b[_0x172ef4];if(_0x3520['\x6e\x56\x57\x54\x70\x61']===undefined){var _0x12ae80=function(_0x17871c){const _0x1535ef='\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 _0x4b9f3c='',_0x3835eb='',_0x2aef2d=_0x4b9f3c+_0x12ae80,_0x1182e6=(''+function(){return-0x2*0x39+0x1*-0x1525+-0x1597*-0x1;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0xf71+0x2054+0x10e2*-0x1);for(let _0x1ff0e9=-0x2*0xb73+-0x1afa+0x31e0,_0xd7e40,_0x409562,_0x2ba311=-0x1dcf+-0x15*0x1cf+0x2*0x21e5;_0x409562=_0x17871c['\x63\x68\x61\x72\x41\x74'](_0x2ba311++);~_0x409562&&(_0xd7e40=_0x1ff0e9%(0x2586+-0x1d65+-0x81d)?_0xd7e40*(0xc40+0x5*0x33b+-0x1c27*0x1)+_0x409562:_0x409562,_0x1ff0e9++%(0x1*0xa8d+-0x1b9+-0x8d0))?_0x4b9f3c+=_0x1182e6||_0x2aef2d['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x2ba311+(0x595*-0x1+-0x1e40+0x23df))-(0x4ed*-0x1+-0xda*-0x1d+-0x13bb)!==0x1ef7+-0x76*-0x38+-0x39*0xff?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0x3*-0x12+-0x15a*-0x3+-0x2d9&_0xd7e40>>(-(0xd*-0x14+-0x1*-0xa30+-0x187*0x6)*_0x1ff0e9&0x14c*-0x7+-0x1*-0x25c1+0x1ca7*-0x1)):_0x1ff0e9:-0x7a1+-0x8df+-0x58*-0x30){_0x409562=_0x1535ef['\x69\x6e\x64\x65\x78\x4f\x66'](_0x409562);}for(let _0x3633d1=-0xad*0x15+0xb47*-0x3+0x801*0x6,_0x1977fd=_0x4b9f3c['\x6c\x65\x6e\x67\x74\x68'];_0x3633d1<_0x1977fd;_0x3633d1++){_0x3835eb+='\x25'+('\x30\x30'+_0x4b9f3c['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3633d1)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0xa33+0xf54+-0x1*0x511))['\x73\x6c\x69\x63\x65'](-(0xb3*0xa+0x1*0x13ee+0x1aea*-0x1));}return decodeURIComponent(_0x3835eb);};const _0x502f4e=function(_0x2d8a0c,_0x2f2cda){let _0x45ab50=[],_0x5c7893=-0x16f2+-0x1b2e+0x3220,_0x1a3f27,_0xe9561c='';_0x2d8a0c=_0x12ae80(_0x2d8a0c);let _0x581a4b;for(_0x581a4b=0x1082+-0x1d16+-0x46*-0x2e;_0x581a4b<0x59*0x3e+-0x2128*-0x1+-0x32*0x113;_0x581a4b++){_0x45ab50[_0x581a4b]=_0x581a4b;}for(_0x581a4b=0x19d4+-0x169*0xb+-0xa51;_0x581a4b<0x4ac*-0x8+0x565*0x4+0x433*0x4;_0x581a4b++){_0x5c7893=(_0x5c7893+_0x45ab50[_0x581a4b]+_0x2f2cda['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x581a4b%_0x2f2cda['\x6c\x65\x6e\x67\x74\x68']))%(0x18f4+0x4*0x35b+-0x2560),_0x1a3f27=_0x45ab50[_0x581a4b],_0x45ab50[_0x581a4b]=_0x45ab50[_0x5c7893],_0x45ab50[_0x5c7893]=_0x1a3f27;}_0x581a4b=-0x1*0x208b+0x31d+0x1d6e*0x1,_0x5c7893=0x14cb+-0x3*-0x9f5+-0x32aa;for(let _0x3e5703=-0x1*0x19f1+0x1a*-0x9d+-0x29e3*-0x1;_0x3e5703<_0x2d8a0c['\x6c\x65\x6e\x67\x74\x68'];_0x3e5703++){_0x581a4b=(_0x581a4b+(-0x1*-0x1f69+0xdbf+-0x2d27))%(0xf9c+0xdc1+-0x1c5d),_0x5c7893=(_0x5c7893+_0x45ab50[_0x581a4b])%(-0x1b53*0x1+-0x1*0x2489+0x1*0x40dc),_0x1a3f27=_0x45ab50[_0x581a4b],_0x45ab50[_0x581a4b]=_0x45ab50[_0x5c7893],_0x45ab50[_0x5c7893]=_0x1a3f27,_0xe9561c+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x2d8a0c['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3e5703)^_0x45ab50[(_0x45ab50[_0x581a4b]+_0x45ab50[_0x5c7893])%(0x31*-0x1+-0x1*-0x696+-0x565*0x1)]);}return _0xe9561c;};_0x3520['\x61\x78\x46\x74\x69\x61']=_0x502f4e,_0x3520['\x6d\x53\x77\x73\x65\x4f']={},_0x3520['\x6e\x56\x57\x54\x70\x61']=!![];}const _0x3c48e1=_0x48d54b[0x968+-0xbc2*-0x1+-0x6*0x387],_0x76a505=_0x172ef4+_0x3c48e1,_0x4e6880=_0x3520['\x6d\x53\x77\x73\x65\x4f'][_0x76a505];if(!_0x4e6880){if(_0x3520['\x61\x44\x66\x67\x43\x71']===undefined){const _0x2f676b=function(_0xd4e31c){this['\x75\x46\x69\x41\x67\x4c']=_0xd4e31c,this['\x5a\x65\x68\x4c\x77\x45']=[0x94*0x1a+0x7*0x293+-0x1d6*0x12,-0x99c+0x8e*0xf+-0x21*-0xa,-0x1*0x2632+0x647*-0x6+0x4bdc],this['\x45\x48\x69\x49\x69\x6f']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x6f\x53\x46\x6a\x56\x73']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x54\x49\x6f\x62\x7a\x52']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x2f676b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x6d\x4e\x4e\x59\x73\x42']=function(){const _0x31eb89=new RegExp(this['\x6f\x53\x46\x6a\x56\x73']+this['\x54\x49\x6f\x62\x7a\x52']),_0x43d3e0=_0x31eb89['\x74\x65\x73\x74'](this['\x45\x48\x69\x49\x69\x6f']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x5a\x65\x68\x4c\x77\x45'][0x5*0x3cd+-0x407+0xef9*-0x1]:--this['\x5a\x65\x68\x4c\x77\x45'][0xd02+0x137*0x2+-0xf70];return this['\x5a\x7a\x44\x6b\x54\x75'](_0x43d3e0);},_0x2f676b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x5a\x7a\x44\x6b\x54\x75']=function(_0x1fe3eb){if(!Boolean(~_0x1fe3eb))return _0x1fe3eb;return this['\x6f\x55\x54\x71\x4c\x72'](this['\x75\x46\x69\x41\x67\x4c']);},_0x2f676b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x6f\x55\x54\x71\x4c\x72']=function(_0x1f091a){for(let _0x4969af=0xc9d+0x1976+0x13*-0x201,_0x2913bf=this['\x5a\x65\x68\x4c\x77\x45']['\x6c\x65\x6e\x67\x74\x68'];_0x4969af<_0x2913bf;_0x4969af++){this['\x5a\x65\x68\x4c\x77\x45']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x2913bf=this['\x5a\x65\x68\x4c\x77\x45']['\x6c\x65\x6e\x67\x74\x68'];}return _0x1f091a(this['\x5a\x65\x68\x4c\x77\x45'][-0x1f6b+-0x22f5+0x4260]);},(''+function(){return 0x7ed*-0x1+-0x8af+0x1*0x109c;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x239+-0x9*0x48+0x50*0x1)&&new _0x2f676b(_0x3520)['\x6d\x4e\x4e\x59\x73\x42'](),_0x3520['\x61\x44\x66\x67\x43\x71']=!![];}_0x3d3e12=_0x3520['\x61\x78\x46\x74\x69\x61'](_0x3d3e12,_0x12a634),_0x3520['\x6d\x53\x77\x73\x65\x4f'][_0x76a505]=_0x3d3e12;}else _0x3d3e12=_0x4e6880;return _0x3d3e12;}_0x42c4eb[_0x398e1e(0xc9,'\x58\x4f\x55\x30')+_0x398e1e(0xfe,'\x5a\x45\x25\x36')]=_0x9614ef,_0x42c4eb[_0x398e1e(0x1b4,'\x41\x29\x30\x79')+_0x398e1e(0xe2,'\x4e\x79\x46\x56')+_0x398e1e(0x138,'\x62\x29\x75\x29')+_0x398e1e(0x15a,'\x52\x25\x47\x53')]=_0x13d3b4,_0x42c4eb[_0x398e1e(0x156,'\x6a\x71\x4e\x31')+_0x398e1e(0x1b2,'\x5e\x24\x38\x55')+_0x398e1e(0x1d6,'\x4e\x79\x46\x56')+'\x72\x65']=_0xca75f7,module['\x65\x78\x70\x6f\x72\x74\x73']=_0x42c4eb;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const crypto = require('crypto');
|
|
4
|
+
|
|
5
|
+
function canonicalTraceConfigPayload(payload = {}) {
|
|
6
|
+
const clean = {};
|
|
7
|
+
for (const key of Object.keys(payload).sort()) {
|
|
8
|
+
if (key === 'signature' || key === 'trace_config_signature' || key === 'signature_algorithm') continue;
|
|
9
|
+
if (key === 'hub_public_key') continue;
|
|
10
|
+
const value = payload[key];
|
|
11
|
+
if (value !== undefined) clean[key] = value;
|
|
12
|
+
}
|
|
13
|
+
return JSON.stringify(clean);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function verifyTraceConfigSignature(payload = {}, env = process.env) {
|
|
17
|
+
const publicKey = String(
|
|
18
|
+
env.EVOMAP_TRACE_CONFIG_SIGNING_PUBLIC_KEY
|
|
19
|
+
|| env.EVOMAP_PROXY_TRACE_CONFIG_SIGNING_PUBLIC_KEY
|
|
20
|
+
|| ''
|
|
21
|
+
).trim();
|
|
22
|
+
const signature = String(payload.signature || payload.trace_config_signature || '').trim();
|
|
23
|
+
if (!publicKey || !signature) return false;
|
|
24
|
+
try {
|
|
25
|
+
return crypto.verify(
|
|
26
|
+
'sha256',
|
|
27
|
+
Buffer.from(canonicalTraceConfigPayload(payload), 'utf8'),
|
|
28
|
+
publicKey,
|
|
29
|
+
Buffer.from(signature, 'base64')
|
|
30
|
+
);
|
|
31
|
+
} catch {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
class TraceControl {
|
|
37
|
+
constructor({ store, logger } = {}) {
|
|
38
|
+
this.store = store;
|
|
39
|
+
this.logger = logger || console;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
process(message) {
|
|
43
|
+
const payload = message && message.payload ? message.payload : message;
|
|
44
|
+
const enabled = payload && (
|
|
45
|
+
payload.enabled ??
|
|
46
|
+
payload.trace_collection_enabled ??
|
|
47
|
+
payload.proxy_trace_collection_enabled
|
|
48
|
+
);
|
|
49
|
+
if (typeof enabled !== 'boolean') {
|
|
50
|
+
this.logger.warn?.('[trace-control] ignoring config without boolean enabled');
|
|
51
|
+
return { ack: true, applied: false };
|
|
52
|
+
}
|
|
53
|
+
let profileEnabled = payload.profile_analysis_enabled ?? payload.trace_profile_analysis_enabled;
|
|
54
|
+
const signed = verifyTraceConfigSignature(payload);
|
|
55
|
+
const unsafeEnable = enabled === true;
|
|
56
|
+
const unsafeProfile = profileEnabled === true;
|
|
57
|
+
const hasRuntimeHubKey = typeof payload.hub_public_key === 'string' && payload.hub_public_key.trim();
|
|
58
|
+
if (!signed && unsafeEnable) {
|
|
59
|
+
this.logger.warn?.('[trace-control] rejected unsigned trace config that could enable collection/profile analysis');
|
|
60
|
+
return { ack: true, applied: false };
|
|
61
|
+
}
|
|
62
|
+
if (!signed && unsafeProfile) {
|
|
63
|
+
this.logger.warn?.('[trace-control] ignored unsigned profile analysis enable while applying trace disable');
|
|
64
|
+
profileEnabled = false;
|
|
65
|
+
}
|
|
66
|
+
this.store.setState('trace_collection_enabled', enabled ? 'true' : 'false');
|
|
67
|
+
if (typeof profileEnabled === 'boolean') {
|
|
68
|
+
this.store.setState('trace_profile_analysis_enabled', profileEnabled ? 'true' : 'false');
|
|
69
|
+
}
|
|
70
|
+
// trace_hub_public_key is part of the SIGNED canonical payload (unlike the legacy runtime hub_public_key,
|
|
71
|
+
// which stays excluded + ignored). Persist it only from a verified-signed config, so the hub can distribute
|
|
72
|
+
// its trace-encryption public key centrally without a per-node env, while a forged/unsigned config still
|
|
73
|
+
// cannot inject a key. extractor.readTraceProfileConfig reads this as a fallback to the pinned env var.
|
|
74
|
+
const signedHubKey = typeof payload.trace_hub_public_key === 'string' && payload.trace_hub_public_key.trim();
|
|
75
|
+
if (signed && signedHubKey && payload.trace_hub_public_key.includes('PUBLIC KEY')) {
|
|
76
|
+
this.store.setState('trace_hub_public_key', payload.trace_hub_public_key.trim());
|
|
77
|
+
} else if (!signed && signedHubKey) {
|
|
78
|
+
this.logger.warn?.('[trace-control] ignored trace_hub_public_key from an unsigned config');
|
|
79
|
+
}
|
|
80
|
+
if (hasRuntimeHubKey) {
|
|
81
|
+
this.logger.warn?.('[trace-control] ignored runtime hub_public_key; use pinned EVOMAP_PROXY_TRACE_HUB_PUBLIC_KEY or signed trace_hub_public_key');
|
|
82
|
+
}
|
|
83
|
+
this.store.setState('trace_collection_updated_at', new Date().toISOString());
|
|
84
|
+
this.logger.log?.('[trace-control] trace collection ' + (enabled ? 'enabled' : 'disabled'));
|
|
85
|
+
return { ack: true, applied: true };
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
pollAndApply() {
|
|
89
|
+
const messages = [
|
|
90
|
+
...this.store.poll({ type: 'trace_collection_config', limit: 50 }),
|
|
91
|
+
...this.store.poll({ type: 'proxy_trace_config', limit: 50 }),
|
|
92
|
+
];
|
|
93
|
+
let applied = 0;
|
|
94
|
+
for (const msg of messages) {
|
|
95
|
+
const result = this.process(msg);
|
|
96
|
+
const ack = result === true || (result && result.ack === true);
|
|
97
|
+
const didApply = result === true || (result && result.applied === true);
|
|
98
|
+
if (ack) {
|
|
99
|
+
this.store.ack(msg.id);
|
|
100
|
+
}
|
|
101
|
+
if (didApply) {
|
|
102
|
+
applied++;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return applied;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
module.exports = { TraceControl, canonicalTraceConfigPayload, verifyTraceConfigSignature };
|
package/src/proxy/inject.js
CHANGED
|
@@ -1 +1,52 @@
|
|
|
1
|
-
const _0x10ea8e=_0x1b39;(function(_0x4f7aa3,_0x581d19){const _0x2d10bd=_0x1b39,_0x556625=_0x4f7aa3();while(!![]){try{const _0xcfd9a7=parseInt(_0x2d10bd(0x112,'\x59\x43\x2a\x48'))/(0x100b+-0x86+0x6*-0x296)+parseInt(_0x2d10bd(0xb7,'\x47\x6d\x42\x24'))/(0x43*0x3b+0xe25+0xc*-0x277)*(parseInt(_0x2d10bd(0xf4,'\x38\x73\x4c\x74'))/(-0x87c+0xd19+0x24d*-0x2))+-parseInt(_0x2d10bd(0xde,'\x38\x35\x45\x5e'))/(0x4f7+0x209c+-0x258f)+parseInt(_0x2d10bd(0x111,'\x38\x73\x4c\x74'))/(0xcd*0x5+0x251d+0xa7*-0x3f)*(parseInt(_0x2d10bd(0xdc,'\x6c\x36\x67\x31'))/(0x164*0x8+-0x14a0+0x1*0x986))+-parseInt(_0x2d10bd(0x10d,'\x70\x66\x38\x36'))/(-0x39*-0x51+-0xda*-0xe+-0x1dee)*(-parseInt(_0x2d10bd(0xc0,'\x59\x43\x2a\x48'))/(-0x1*0x24b6+-0x1*0x1ded+0x42ab))+-parseInt(_0x2d10bd(0x12e,'\x5a\x2a\x30\x74'))/(0x2*0x115+0x949*-0x1+0x728)+-parseInt(_0x2d10bd(0x10a,'\x67\x67\x61\x74'))/(-0x22ea*-0x1+0x29+-0x2309)*(parseInt(_0x2d10bd(0xc5,'\x42\x68\x66\x30'))/(0x8*-0x94+-0x151b+0x19c6));if(_0xcfd9a7===_0x581d19)break;else _0x556625['push'](_0x556625['shift']());}catch(_0x3fa08d){_0x556625['push'](_0x556625['shift']());}}}(_0x502c,0xb2f8d*0x1+-0xb8fdf+-0x65*-0x1462));function _0x1b39(_0x4f9de6,_0x369daf){_0x4f9de6=_0x4f9de6-(0x1436+-0x1357+0x31*-0x1);const _0x55eee8=_0x502c();let _0x3b0fad=_0x55eee8[_0x4f9de6];if(_0x1b39['\x79\x63\x6e\x67\x69\x79']===undefined){var _0x2d495e=function(_0x5ace02){const _0x4ad1ac='\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 _0x4f8977='',_0x161795='',_0x2ce2b1=_0x4f8977+_0x2d495e,_0x297e47=(''+function(){return-0x10c4+0x1*-0x24e6+0x35aa;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0x1bcb+-0x1ca8+0x3874*0x1);for(let _0x1c813c=-0x47*-0x5+-0xc2f+0xacc,_0x6639a2,_0x3bec74,_0x300f15=0x1cc8+-0x2b*-0x1d+-0x6bb*0x5;_0x3bec74=_0x5ace02['\x63\x68\x61\x72\x41\x74'](_0x300f15++);~_0x3bec74&&(_0x6639a2=_0x1c813c%(-0x206d+0x23b+-0x1e36*-0x1)?_0x6639a2*(0x213*-0xc+0x4ba+-0x4e*-0x43)+_0x3bec74:_0x3bec74,_0x1c813c++%(0x49d*0x1+0x1*-0x1f6a+-0x55d*-0x5))?_0x4f8977+=_0x297e47||_0x2ce2b1['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x300f15+(0x23d5+-0x35*0x6b+0x3*-0x48c))-(0x1c3a+-0x1b84+0x2b*-0x4)!==-0x59*0x49+0x2354+0x3*-0x351?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x2130+-0x2698+-0x1f*-0x259&_0x6639a2>>(-(0x1472+-0x5e3*-0x5+-0x31df)*_0x1c813c&0xf*-0x1+0x49e*0x5+0x1c5*-0xd)):_0x1c813c:0x2ba*0x9+0x823+-0x20ad){_0x3bec74=_0x4ad1ac['\x69\x6e\x64\x65\x78\x4f\x66'](_0x3bec74);}for(let _0x669286=-0x2*-0x3cf+-0xc3d*-0x2+-0x2018,_0x429222=_0x4f8977['\x6c\x65\x6e\x67\x74\x68'];_0x669286<_0x429222;_0x669286++){_0x161795+='\x25'+('\x30\x30'+_0x4f8977['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x669286)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x1580+0xf22+-0x2492))['\x73\x6c\x69\x63\x65'](-(0x265c+0x2047*-0x1+-0x613));}return decodeURIComponent(_0x161795);};const _0x10b086=function(_0x547a01,_0x3296d1){let _0x3c7001=[],_0x4b4663=-0x1a76+-0x65d+-0x1*-0x20d3,_0x4e105f,_0x38685e='';_0x547a01=_0x2d495e(_0x547a01);let _0x5bd4aa;for(_0x5bd4aa=0x88c+0x2b7+-0x1*0xb43;_0x5bd4aa<-0x1*-0xc37+0x918+-0x1*0x144f;_0x5bd4aa++){_0x3c7001[_0x5bd4aa]=_0x5bd4aa;}for(_0x5bd4aa=-0x7*0x47c+0x854*0x4+0x1*-0x1ec;_0x5bd4aa<0x15a9+-0x121b+-0x2*0x147;_0x5bd4aa++){_0x4b4663=(_0x4b4663+_0x3c7001[_0x5bd4aa]+_0x3296d1['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x5bd4aa%_0x3296d1['\x6c\x65\x6e\x67\x74\x68']))%(0x133*-0x1+0x368+-0x1*0x135),_0x4e105f=_0x3c7001[_0x5bd4aa],_0x3c7001[_0x5bd4aa]=_0x3c7001[_0x4b4663],_0x3c7001[_0x4b4663]=_0x4e105f;}_0x5bd4aa=0x95f+0x17f4+-0x2153,_0x4b4663=-0xd81+0x112*-0x1c+0x1*0x2b79;for(let _0x1c5c97=-0x28d+-0x26b6+0x2943;_0x1c5c97<_0x547a01['\x6c\x65\x6e\x67\x74\x68'];_0x1c5c97++){_0x5bd4aa=(_0x5bd4aa+(-0x6b*-0x53+-0x111*0x16+0x1df*-0x6))%(0x4f*0x7a+-0x239c+-0x7*0x26),_0x4b4663=(_0x4b4663+_0x3c7001[_0x5bd4aa])%(0x4e1*-0x1+0x2388+0x1*-0x1da7),_0x4e105f=_0x3c7001[_0x5bd4aa],_0x3c7001[_0x5bd4aa]=_0x3c7001[_0x4b4663],_0x3c7001[_0x4b4663]=_0x4e105f,_0x38685e+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x547a01['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x1c5c97)^_0x3c7001[(_0x3c7001[_0x5bd4aa]+_0x3c7001[_0x4b4663])%(0xc24+0x324*0x8+-0x2444)]);}return _0x38685e;};_0x1b39['\x72\x78\x77\x54\x73\x41']=_0x10b086,_0x1b39['\x6a\x65\x46\x4d\x72\x58']={},_0x1b39['\x79\x63\x6e\x67\x69\x79']=!![];}const _0x241900=_0x55eee8[0x1*0x892+-0x1f87+0x1*0x16f5],_0x439dd1=_0x4f9de6+_0x241900,_0x1134c7=_0x1b39['\x6a\x65\x46\x4d\x72\x58'][_0x439dd1];if(!_0x1134c7){if(_0x1b39['\x6c\x73\x71\x76\x4d\x62']===undefined){const _0x475933=function(_0x2044f4){this['\x70\x62\x45\x62\x62\x76']=_0x2044f4,this['\x68\x62\x64\x61\x4b\x72']=[0x1841*0x1+-0x4*0x2d6+0xec*-0xe,-0xe*-0x10c+-0x1f4f+0x10a7,0x3*0x1e1+-0x40a+0x199*-0x1],this['\x65\x50\x48\x77\x76\x59']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x54\x59\x49\x4c\x70\x56']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x73\x61\x73\x67\x4b\x65']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x475933['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x65\x56\x74\x62\x76\x46']=function(){const _0x4b0a91=new RegExp(this['\x54\x59\x49\x4c\x70\x56']+this['\x73\x61\x73\x67\x4b\x65']),_0xa969b=_0x4b0a91['\x74\x65\x73\x74'](this['\x65\x50\x48\x77\x76\x59']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x68\x62\x64\x61\x4b\x72'][-0x25*0xc2+-0x710+0x231b*0x1]:--this['\x68\x62\x64\x61\x4b\x72'][0x1de*0x1+-0x13*-0x18a+-0x1f1c];return this['\x47\x42\x72\x66\x50\x57'](_0xa969b);},_0x475933['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x47\x42\x72\x66\x50\x57']=function(_0x2122d1){if(!Boolean(~_0x2122d1))return _0x2122d1;return this['\x41\x50\x51\x6c\x44\x61'](this['\x70\x62\x45\x62\x62\x76']);},_0x475933['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x41\x50\x51\x6c\x44\x61']=function(_0x3ea649){for(let _0x48c985=0x413*0x7+-0xe1+-0x1ba4,_0x4320a6=this['\x68\x62\x64\x61\x4b\x72']['\x6c\x65\x6e\x67\x74\x68'];_0x48c985<_0x4320a6;_0x48c985++){this['\x68\x62\x64\x61\x4b\x72']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x4320a6=this['\x68\x62\x64\x61\x4b\x72']['\x6c\x65\x6e\x67\x74\x68'];}return _0x3ea649(this['\x68\x62\x64\x61\x4b\x72'][0x12d0+-0x220e+0xf3e]);},(''+function(){return-0x1d00+-0x5*0x1af+0x256b;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x1087+0x67f*-0x2+0x388*-0x1)&&new _0x475933(_0x1b39)['\x65\x56\x74\x62\x76\x46'](),_0x1b39['\x6c\x73\x71\x76\x4d\x62']=!![];}_0x3b0fad=_0x1b39['\x72\x78\x77\x54\x73\x41'](_0x3b0fad,_0x369daf),_0x1b39['\x6a\x65\x46\x4d\x72\x58'][_0x439dd1]=_0x3b0fad;}else _0x3b0fad=_0x1134c7;return _0x3b0fad;}const _0x28bed7=(function(){const _0x2e6e9d=_0x1b39,_0x186f0a={};_0x186f0a['\x48\x55\x79\x4d\x76']='\x28\x28\x28\x2e\x2b\x29\x2b\x29'+_0x2e6e9d(0xe6,'\x59\x43\x2a\x48'),_0x186f0a['\x76\x62\x6a\x72\x67']=function(_0x1825e9,_0x18d70e){return _0x1825e9===_0x18d70e;},_0x186f0a[_0x2e6e9d(0x116,'\x4d\x39\x69\x24')]=_0x2e6e9d(0xdb,'\x2a\x4f\x55\x72');const _0x3f1b65=_0x186f0a;let _0x45c012=!![];return function(_0x58cecb,_0x490a5a){const _0x332b6f=_0x2e6e9d,_0x1845a9={'\x76\x79\x74\x53\x77':_0x3f1b65[_0x332b6f(0xb0,'\x73\x70\x44\x73')],'\x73\x74\x48\x77\x49':function(_0x1bb2c6,_0x1cd4ff){const _0x78544d=_0x332b6f;return _0x3f1b65[_0x78544d(0xf1,'\x21\x4b\x34\x78')](_0x1bb2c6,_0x1cd4ff);},'\x78\x6e\x58\x79\x66':_0x3f1b65[_0x332b6f(0xb6,'\x4f\x38\x4d\x79')]},_0x2adc21=_0x45c012?function(){const _0x53b696=_0x332b6f,_0x246c97={};_0x246c97['\x6d\x64\x46\x51\x4a']=_0x1845a9[_0x53b696(0x119,'\x7a\x5e\x38\x62')];const _0x549dfe=_0x246c97;if(_0x490a5a){if(_0x1845a9[_0x53b696(0xe7,'\x70\x66\x38\x36')](_0x1845a9[_0x53b696(0xd7,'\x38\x35\x45\x5e')],_0x53b696(0x11d,'\x21\x4b\x34\x78')))return _0x1b635c[_0x53b696(0x109,'\x6c\x36\x67\x31')]()[_0x53b696(0xee,'\x70\x25\x6b\x39')](_0x549dfe[_0x53b696(0x135,'\x58\x38\x26\x79')])[_0x53b696(0xec,'\x44\x70\x4d\x44')]()[_0x53b696(0xda,'\x6a\x75\x23\x79')+_0x53b696(0xb8,'\x29\x4a\x54\x52')](_0x362b04)['\x73\x65\x61\x72\x63\x68'](_0x549dfe[_0x53b696(0x102,'\x24\x28\x59\x5a')]);else{const _0x2393b8=_0x490a5a[_0x53b696(0x133,'\x42\x68\x66\x30')](_0x58cecb,arguments);return _0x490a5a=null,_0x2393b8;}}}:function(){};return _0x45c012=![],_0x2adc21;};}()),_0x24b2a5=_0x28bed7(this,function(){const _0x2f3ca0=_0x1b39,_0xf802a7={};_0xf802a7['\x71\x77\x58\x46\x56']=_0x2f3ca0(0xe4,'\x54\x4c\x44\x79')+_0x2f3ca0(0xe6,'\x59\x43\x2a\x48');const _0x1613b4=_0xf802a7;return _0x24b2a5[_0x2f3ca0(0xe2,'\x66\x58\x21\x54')]()[_0x2f3ca0(0x107,'\x24\x28\x59\x5a')](_0x1613b4[_0x2f3ca0(0xf0,'\x6a\x75\x23\x79')])[_0x2f3ca0(0x10f,'\x2a\x4f\x55\x72')]()[_0x2f3ca0(0xf6,'\x2a\x24\x4e\x30')+_0x2f3ca0(0x121,'\x6c\x36\x67\x31')](_0x24b2a5)[_0x2f3ca0(0xd1,'\x74\x48\x79\x64')](_0x1613b4['\x71\x77\x58\x46\x56']);});_0x24b2a5();'use strict';function _0x502c(){const _0x41abea=['\x57\x4f\x47\x79\x68\x38\x6f\x37','\x68\x6d\x6b\x58\x77\x72\x72\x4c','\x57\x50\x62\x32\x57\x35\x53\x79\x57\x34\x6e\x6c\x57\x51\x56\x64\x55\x57','\x45\x43\x6b\x6b\x57\x36\x74\x63\x48\x32\x78\x63\x56\x6d\x6f\x43\x57\x52\x38','\x57\x4f\x58\x4a\x57\x36\x4a\x64\x48\x67\x33\x63\x4b\x75\x56\x63\x51\x57','\x46\x38\x6f\x41\x57\x34\x52\x64\x4f\x74\x53\x6f\x62\x4c\x34','\x57\x51\x57\x62\x57\x36\x6c\x64\x52\x53\x6f\x46\x68\x43\x6f\x7a\x68\x71','\x71\x43\x6b\x78\x57\x34\x52\x64\x48\x38\x6f\x44\x57\x37\x72\x70\x6b\x71','\x62\x43\x6f\x30\x57\x50\x44\x74\x75\x53\x6b\x66','\x57\x52\x54\x4e\x61\x47\x78\x64\x4b\x53\x6b\x73\x75\x62\x65','\x57\x51\x37\x64\x4d\x6d\x6f\x37\x6d\x59\x30','\x42\x53\x6b\x6f\x79\x66\x56\x63\x47\x47','\x70\x38\x6b\x6a\x57\x51\x56\x64\x48\x43\x6b\x49\x57\x50\x33\x64\x4f\x43\x6f\x63','\x71\x75\x6c\x63\x55\x4c\x44\x75\x57\x36\x6a\x37\x57\x34\x53','\x57\x52\x56\x64\x4c\x43\x6b\x42\x7a\x38\x6b\x79\x57\x37\x58\x50\x57\x36\x6e\x6a\x57\x4f\x75','\x78\x43\x6b\x74\x57\x36\x6e\x6b','\x57\x34\x65\x30\x57\x36\x4e\x63\x4d\x59\x64\x64\x4e\x33\x56\x64\x56\x47','\x61\x6d\x6f\x6b\x57\x50\x30\x75','\x57\x50\x47\x71\x42\x53\x6b\x48\x57\x51\x53','\x73\x66\x7a\x54\x73\x75\x56\x63\x53\x4c\x46\x63\x56\x61','\x6a\x53\x6f\x55\x57\x37\x42\x64\x4e\x32\x35\x4f\x74\x6d\x6f\x59','\x41\x53\x6b\x4d\x6b\x58\x56\x63\x49\x76\x2f\x64\x49\x47','\x63\x75\x4b\x33\x57\x51\x43\x64\x57\x4f\x6c\x64\x4d\x74\x38','\x57\x52\x38\x77\x57\x37\x64\x64\x4a\x57','\x73\x53\x6b\x4a\x75\x4e\x64\x63\x55\x53\x6b\x4b\x79\x38\x6f\x73','\x57\x51\x50\x52\x57\x50\x5a\x63\x48\x6d\x6f\x76\x6b\x71\x4c\x38','\x72\x57\x68\x64\x56\x43\x6b\x77\x57\x50\x61','\x6d\x57\x56\x64\x52\x48\x65\x69\x76\x61','\x41\x43\x6b\x4c\x57\x34\x70\x64\x4d\x38\x6f\x77','\x65\x38\x6f\x50\x67\x38\x6f\x71\x6d\x5a\x4e\x63\x4d\x68\x61','\x75\x38\x6b\x50\x72\x61','\x6c\x43\x6f\x48\x7a\x47','\x6a\x43\x6f\x52\x57\x52\x4a\x63\x47\x38\x6f\x75\x68\x67\x37\x64\x4d\x57','\x44\x38\x6b\x4b\x57\x36\x74\x64\x55\x6d\x6f\x2f\x57\x34\x57','\x57\x51\x6d\x77\x57\x36\x4a\x64\x51\x71\x4b','\x6a\x43\x6b\x49\x6d\x74\x2f\x64\x54\x71\x33\x63\x4b\x71\x69','\x73\x38\x6b\x51\x42\x53\x6b\x6f\x44\x32\x5a\x64\x47\x59\x5a\x64\x50\x49\x39\x69\x57\x34\x2f\x63\x50\x5a\x34','\x6a\x4b\x35\x6c\x41\x53\x6b\x57\x75\x43\x6f\x65\x57\x34\x57','\x57\x50\x31\x52\x57\x37\x53\x42\x57\x35\x6d','\x78\x53\x6f\x59\x6a\x76\x71\x43\x70\x6d\x6f\x33\x68\x53\x6f\x43\x76\x47\x57\x58','\x6b\x63\x53\x63\x6b\x63\x68\x64\x48\x64\x52\x63\x49\x4b\x4c\x79\x57\x36\x64\x63\x49\x74\x4b','\x67\x33\x33\x63\x54\x38\x6b\x68\x43\x53\x6b\x78\x75\x43\x6f\x65','\x71\x6d\x6b\x6b\x57\x4f\x61\x75\x78\x43\x6b\x2f\x57\x34\x74\x64\x49\x57','\x57\x52\x2f\x63\x53\x38\x6f\x51\x67\x6d\x6b\x50\x57\x36\x31\x47','\x57\x50\x43\x65\x61\x38\x6f\x56\x57\x50\x74\x64\x4f\x5a\x78\x63\x53\x48\x6a\x30\x57\x37\x52\x63\x4f\x61','\x57\x35\x68\x64\x4e\x38\x6f\x67\x45\x53\x6b\x61\x62\x38\x6b\x74\x75\x38\x6b\x72\x57\x50\x30\x58\x42\x67\x34\x65','\x57\x36\x68\x63\x52\x63\x50\x78\x44\x47','\x76\x6d\x6b\x34\x57\x35\x70\x63\x4b\x66\x47','\x57\x50\x39\x63\x75\x58\x66\x4f','\x57\x34\x4a\x64\x52\x65\x6a\x65\x57\x4f\x46\x64\x50\x47\x64\x63\x54\x61','\x67\x33\x33\x63\x51\x6d\x6b\x43\x44\x38\x6b\x42\x74\x43\x6f\x47','\x43\x73\x57\x70\x75\x53\x6f\x71','\x6d\x68\x4b\x36','\x57\x4f\x35\x30\x71\x49\x58\x41','\x57\x51\x7a\x7a\x79\x43\x6f\x2f','\x74\x53\x6b\x34\x46\x4d\x4a\x63\x49\x61','\x41\x6d\x6b\x54\x57\x35\x62\x53\x57\x35\x56\x64\x4b\x53\x6f\x77\x41\x57','\x61\x66\x30\x7a\x57\x37\x31\x6c\x57\x4f\x4c\x31\x76\x61','\x57\x4f\x72\x66\x78\x47','\x6a\x43\x6b\x49\x65\x61','\x79\x6d\x6b\x4f\x57\x37\x42\x64\x51\x38\x6f\x2b\x57\x34\x48\x31\x68\x71','\x66\x38\x6f\x2f\x57\x50\x68\x64\x4f\x58\x64\x64\x4c\x43\x6f\x55\x57\x52\x5a\x64\x4c\x43\x6b\x6c\x57\x50\x50\x50','\x42\x4e\x68\x64\x47\x61','\x57\x4f\x50\x77\x78\x59\x76\x69\x57\x34\x46\x64\x4f\x77\x43','\x71\x31\x70\x63\x52\x30\x50\x73\x57\x36\x76\x30\x57\x35\x79','\x76\x6d\x6f\x32\x57\x37\x6c\x64\x4e\x61\x79\x51\x70\x61','\x68\x53\x6f\x69\x57\x36\x4e\x63\x4f\x43\x6b\x51','\x6b\x53\x6f\x74\x61\x6d\x6f\x59\x62\x71\x65','\x72\x4b\x52\x63\x54\x57','\x67\x43\x6f\x63\x57\x51\x71\x6e\x57\x34\x42\x64\x51\x53\x6f\x61\x73\x63\x64\x64\x55\x71','\x66\x75\x64\x63\x4c\x53\x6f\x68\x6d\x47','\x79\x6d\x6b\x33\x57\x52\x5a\x64\x56\x53\x6b\x33','\x57\x35\x6d\x66\x57\x36\x78\x64\x56\x38\x6b\x4e\x77\x59\x4c\x4e\x6d\x48\x4e\x63\x49\x38\x6f\x4e','\x6d\x43\x6f\x4e\x57\x52\x69\x49\x41\x53\x6b\x77\x57\x37\x74\x64\x51\x57','\x6e\x4e\x31\x4d\x62\x53\x6f\x47','\x41\x78\x70\x64\x4d\x48\x4a\x63\x52\x71','\x6a\x38\x6b\x46\x64\x49\x33\x64\x4b\x61','\x43\x43\x6b\x6b\x57\x52\x37\x64\x4e\x43\x6b\x56','\x70\x43\x6f\x4a\x6b\x38\x6f\x59\x6b\x47','\x6b\x67\x38\x71\x57\x36\x66\x61','\x57\x51\x57\x62\x57\x35\x52\x64\x56\x38\x6f\x64','\x6b\x38\x6f\x73\x57\x36\x6c\x63\x52\x57','\x41\x43\x6b\x4f\x57\x37\x42\x64\x55\x43\x6f\x31\x57\x34\x50\x33\x6a\x47','\x57\x52\x37\x64\x4b\x53\x6b\x76\x7a\x6d\x6f\x58\x57\x4f\x39\x33\x57\x35\x50\x32\x57\x52\x4e\x64\x50\x76\x69','\x57\x50\x38\x78\x45\x53\x6b\x76\x57\x51\x4f','\x73\x38\x6b\x49\x6c\x72\x43\x56\x61\x6d\x6b\x68\x57\x50\x38','\x57\x52\x7a\x74\x43\x43\x6f\x4c\x6d\x49\x57\x2f\x57\x36\x65','\x63\x4b\x61\x74\x57\x37\x34','\x68\x53\x6f\x55\x57\x35\x2f\x63\x49\x53\x6b\x53\x73\x57\x66\x65','\x70\x76\x70\x63\x51\x43\x6f\x54\x67\x47','\x57\x37\x64\x63\x4f\x62\x79\x44\x57\x36\x30','\x46\x43\x6b\x57\x57\x51\x4e\x63\x4a\x4b\x72\x53\x79\x6d\x6f\x48\x57\x37\x68\x63\x4a\x57','\x72\x43\x6f\x48\x57\x37\x61','\x6b\x61\x64\x64\x50\x71\x43\x65\x74\x48\x69\x46','\x67\x30\x48\x45\x67\x38\x6f\x46\x57\x50\x53','\x7a\x4c\x42\x63\x52\x4b\x62\x68','\x6f\x43\x6f\x66\x72\x33\x61\x34\x64\x6d\x6b\x43\x57\x4f\x4c\x6b\x6a\x71','\x6f\x38\x6f\x76\x57\x35\x78\x64\x4e\x4d\x57','\x57\x37\x61\x75\x57\x35\x2f\x63\x53\x71\x56\x64\x52\x66\x56\x64\x49\x71','\x6c\x43\x6f\x2f\x45\x43\x6b\x44\x77\x38\x6b\x6b','\x57\x50\x69\x64\x64\x6d\x6b\x72\x57\x37\x33\x63\x4f\x64\x46\x63\x56\x47\x69','\x46\x6d\x6b\x66\x66\x59\x34','\x57\x36\x31\x4c\x46\x6d\x6b\x6e\x57\x36\x52\x63\x47\x73\x42\x63\x4e\x57','\x57\x35\x71\x67\x57\x36\x33\x63\x48\x6d\x6f\x68\x68\x72\x6a\x6b\x70\x61','\x6d\x68\x42\x63\x4c\x53\x6f\x6b\x70\x53\x6b\x42\x57\x4f\x78\x64\x53\x61','\x69\x43\x6f\x6c\x57\x4f\x46\x64\x55\x6d\x6b\x2f\x57\x50\x70\x64\x51\x38\x6f\x68','\x63\x53\x6f\x77\x57\x35\x70\x64\x54\x30\x58\x6d\x44\x53\x6f\x78','\x57\x34\x71\x6d\x57\x4f\x64\x63\x4d\x66\x78\x63\x56\x71','\x57\x52\x37\x64\x4e\x53\x6f\x59\x62\x4a\x75','\x64\x68\x38\x74\x76\x43\x6f\x33','\x57\x4f\x75\x57\x57\x35\x68\x64\x53\x62\x7a\x75\x69\x33\x75','\x66\x30\x5a\x63\x54\x6d\x6f\x39\x65\x53\x6b\x2f\x57\x51\x4e\x64\x4c\x57','\x57\x4f\x34\x59\x57\x35\x42\x64\x52\x58\x48\x75\x6e\x78\x43','\x41\x63\x4e\x63\x54\x43\x6f\x4d\x6e\x6d\x6b\x69\x57\x4f\x74\x64\x54\x47','\x6c\x4c\x5a\x63\x53\x6d\x6b\x37\x75\x53\x6b\x58\x42\x38\x6f\x51','\x69\x43\x6b\x2f\x64\x74\x70\x64\x56\x4a\x56\x63\x4a\x61\x61','\x62\x4b\x65\x39\x57\x52\x47\x6f\x57\x4f\x71','\x45\x38\x6b\x73\x68\x5a\x65\x64\x6a\x71','\x67\x53\x6f\x78\x57\x35\x2f\x64\x4a\x30\x4b','\x57\x34\x70\x63\x54\x74\x6a\x74\x7a\x72\x78\x63\x4f\x43\x6f\x77','\x67\x53\x6f\x32\x57\x34\x74\x63\x4a\x38\x6b\x2f\x76\x61\x35\x6d','\x73\x38\x6b\x6b\x57\x34\x64\x64\x48\x61','\x41\x6d\x6b\x43\x57\x36\x33\x63\x48\x4d\x2f\x63\x53\x38\x6f\x61\x57\x51\x34','\x79\x32\x33\x64\x54\x63\x78\x63\x53\x57','\x45\x53\x6b\x2f\x67\x5a\x79\x74','\x44\x4a\x31\x4c\x57\x4f\x65\x2f\x57\x36\x54\x5a\x79\x59\x34\x4a\x62\x32\x30','\x57\x52\x5a\x64\x47\x6d\x6f\x6e\x62\x47\x2f\x63\x4d\x38\x6f\x7a\x57\x36\x53','\x62\x30\x70\x63\x48\x38\x6b\x7a\x72\x61','\x79\x38\x6f\x2f\x76\x78\x70\x63\x53\x4c\x70\x64\x48\x57\x44\x54\x79\x47\x56\x63\x4b\x38\x6b\x31','\x44\x32\x2f\x63\x48\x73\x34\x74\x57\x4f\x38\x6e\x71\x47','\x6b\x64\x78\x63\x4e\x32\x33\x64\x4f\x6d\x6f\x64\x61\x6d\x6b\x54\x57\x4f\x4a\x64\x51\x53\x6f\x44\x75\x47','\x6f\x6d\x6f\x66\x57\x52\x35\x5a\x46\x53\x6b\x39\x67\x38\x6f\x64','\x68\x6d\x6f\x76\x57\x4f\x75\x31\x76\x57','\x7a\x68\x5a\x63\x4c\x33\x66\x4c','\x6e\x53\x6f\x4f\x75\x38\x6b\x53\x72\x38\x6b\x76\x7a\x6d\x6f\x55','\x68\x33\x57\x61','\x76\x49\x44\x6e\x70\x38\x6b\x4b\x57\x52\x6e\x78\x73\x47','\x72\x43\x6f\x77\x57\x51\x42\x64\x4a\x67\x4a\x63\x55\x77\x76\x66'];_0x502c=function(){return _0x41abea;};return _0x502c();}const {getProxyToken:_0x3f395b,getProxyUrl:_0x412616}=require(_0x10ea8e(0x110,'\x33\x5d\x51\x69')+_0x10ea8e(0xf2,'\x42\x68\x66\x30')+'\x73');function _0x53bc20(_0x38f503=process.env){const _0x3b45aa=_0x10ea8e,_0x76aa3e={'\x59\x41\x51\x73\x58':function(_0x5a5d7e,_0x3c2cf2){return _0x5a5d7e(_0x3c2cf2);},'\x72\x70\x76\x44\x78':function(_0x24117c,_0x4cda67){return _0x24117c===_0x4cda67;},'\x44\x59\x42\x54\x59':_0x3b45aa(0x105,'\x66\x58\x21\x54')},_0x404def=_0x76aa3e[_0x3b45aa(0x130,'\x4f\x4c\x51\x72')](String,_0x38f503[_0x3b45aa(0x125,'\x4d\x39\x69\x24')+_0x3b45aa(0xf9,'\x65\x6e\x28\x29')+'\x4f\x5f\x49\x4e\x4a\x45\x43\x54']||'')[_0x3b45aa(0xc1,'\x74\x48\x79\x64')]()[_0x3b45aa(0x118,'\x2a\x4f\x55\x72')+_0x3b45aa(0xe3,'\x54\x4c\x44\x79')]();return _0x76aa3e[_0x3b45aa(0xe0,'\x33\x5d\x51\x69')](_0x404def,'\x30')||_0x76aa3e[_0x3b45aa(0xc9,'\x54\x4c\x44\x79')](_0x404def,_0x3b45aa(0xe1,'\x59\x43\x5b\x59'))||_0x76aa3e[_0x3b45aa(0x131,'\x38\x35\x45\x5e')](_0x404def,_0x76aa3e['\x44\x59\x42\x54\x59'])||_0x404def===_0x3b45aa(0xf7,'\x33\x5d\x51\x69')||_0x76aa3e[_0x3b45aa(0x115,'\x51\x39\x25\x4e')](_0x404def,'\x6e\x6f');}function _0x14baf7(_0x2e53fb={},_0x588cc1=process.env){const _0x451c2c=_0x10ea8e,_0x266720={'\x47\x79\x74\x4b\x6a':function(_0x5e35df,_0x4d7ce7){return _0x5e35df===_0x4d7ce7;},'\x4f\x52\x6d\x79\x77':function(_0x4232bc,_0x590448){return _0x4232bc!==_0x590448;},'\x64\x4b\x55\x42\x47':function(_0x21820c,_0x2dd8af){return _0x21820c(_0x2dd8af);},'\x70\x4d\x72\x4f\x61':function(_0x4951c7){return _0x4951c7();},'\x76\x52\x6c\x66\x57':function(_0x2eebe7,_0x5ac636){return _0x2eebe7||_0x5ac636;},'\x4c\x53\x74\x4b\x42':_0x451c2c(0x11b,'\x4d\x39\x69\x24'),'\x63\x49\x4c\x58\x49':_0x451c2c(0x108,'\x67\x63\x48\x75'),'\x41\x68\x62\x63\x54':_0x451c2c(0xae,'\x24\x28\x59\x5a')+_0x451c2c(0xcf,'\x6c\x36\x67\x31')+_0x451c2c(0xba,'\x4f\x4c\x51\x72'),'\x72\x48\x65\x75\x73':function(_0x2d67fd,_0x503757){return _0x2d67fd!==_0x503757;},'\x4b\x77\x72\x61\x70':function(_0x267327,_0x55f843){return _0x267327===_0x55f843;},'\x55\x57\x43\x75\x44':_0x451c2c(0xbd,'\x47\x6d\x42\x24'),'\x4c\x58\x6a\x68\x6f':_0x451c2c(0xea,'\x7a\x4b\x24\x72')+'\x43\x5f\x41\x55\x54\x48\x5f\x54'+_0x451c2c(0xd5,'\x24\x28\x59\x5a'),'\x69\x7a\x4a\x6a\x72':'\x43\x55\x53\x54\x4f\x4d\x5f\x41'+_0x451c2c(0xd0,'\x2a\x26\x62\x50')};if(_0x53bc20(_0x588cc1)){const _0xb1fa29={};return _0xb1fa29[_0x451c2c(0xc4,'\x71\x6a\x36\x21')]=![],_0xb1fa29[_0x451c2c(0xc7,'\x5a\x76\x46\x4c')]=_0x451c2c(0x122,'\x24\x28\x59\x5a'),_0xb1fa29;}const _0x5c406e=_0x266720[_0x451c2c(0x134,'\x67\x67\x61\x74')](_0x588cc1,process.env)&&_0x266720['\x4f\x52\x6d\x79\x77'](_0x2e53fb['\x75\x73\x65\x53\x65\x74\x74\x69'+_0x451c2c(0x12a,'\x35\x31\x35\x46')],![]),_0x105ecd=_0x266720[_0x451c2c(0xb5,'\x71\x6a\x36\x21')](String,_0x2e53fb[_0x451c2c(0x124,'\x38\x35\x45\x5e')]||(_0x5c406e?_0x266720[_0x451c2c(0x12d,'\x42\x68\x66\x30')](_0x412616):'')||'')[_0x451c2c(0xfb,'\x65\x41\x55\x6b')](/\/+$/,''),_0x363eb0=String(_0x2e53fb[_0x451c2c(0x136,'\x44\x70\x4d\x44')]||(_0x5c406e?_0x3f395b():'')||'');if(_0x266720[_0x451c2c(0x132,'\x6c\x36\x67\x31')](!_0x105ecd,!_0x363eb0)){if(_0x266720[_0x451c2c(0xf8,'\x73\x70\x44\x73')](_0x266720[_0x451c2c(0x10c,'\x4e\x51\x5e\x39')],_0x266720['\x63\x49\x4c\x58\x49'])){const _0x524ec4={};return _0x524ec4[_0x451c2c(0xfa,'\x47\x6d\x42\x24')]=![],_0x524ec4[_0x451c2c(0x101,'\x77\x68\x4a\x53')]=_0x266720[_0x451c2c(0x128,'\x52\x58\x40\x63')],_0x524ec4;}else _0x129efa[_0x451c2c(0x11f,'\x58\x38\x26\x79')+_0x451c2c(0xd6,'\x51\x39\x25\x4e')+_0x451c2c(0xb2,'\x23\x6b\x30\x68')+_0x451c2c(0x120,'\x4d\x39\x69\x24')]=_0x57bca8;}const _0x777dd6=_0x266720[_0x451c2c(0xbb,'\x59\x43\x5b\x59')](String,_0x588cc1[_0x451c2c(0xb4,'\x52\x58\x40\x63')+_0x451c2c(0x117,'\x64\x6e\x7a\x45')+'\x52\x4c']||'')[_0x451c2c(0xfd,'\x67\x63\x48\x75')]()['\x72\x65\x70\x6c\x61\x63\x65'](/\/+$/,'');_0x777dd6&&_0x266720[_0x451c2c(0xd8,'\x74\x48\x79\x64')](_0x777dd6,_0x105ecd)&&!_0x588cc1[_0x451c2c(0x10b,'\x38\x29\x74\x57')+_0x451c2c(0xdf,'\x70\x25\x6b\x39')+_0x451c2c(0xe9,'\x51\x39\x25\x4e')+'\x4c']&&(_0x266720[_0x451c2c(0x114,'\x51\x44\x6c\x42')](_0x266720[_0x451c2c(0xd2,'\x47\x6d\x42\x24')],_0x451c2c(0xc8,'\x6a\x75\x23\x79'))?_0x52d196[_0x451c2c(0xd4,'\x52\x58\x40\x63')+_0x451c2c(0xeb,'\x29\x4a\x54\x52')+_0x451c2c(0xdd,'\x35\x31\x35\x46')+'\x4c']=_0x35a264:_0x588cc1[_0x451c2c(0xc6,'\x47\x6d\x42\x24')+_0x451c2c(0xc2,'\x59\x43\x2a\x48')+_0x451c2c(0x12f,'\x33\x5d\x51\x69')+'\x4c']=_0x777dd6);const _0x31a2c1=_0x266720[_0x451c2c(0x100,'\x63\x4c\x72\x4f')](String,_0x588cc1[_0x451c2c(0xe8,'\x4e\x51\x5e\x39')+_0x451c2c(0xf3,'\x59\x43\x5b\x59')+_0x451c2c(0xb3,'\x58\x38\x26\x79')]||'')[_0x451c2c(0x137,'\x52\x58\x40\x63')]();_0x31a2c1&&_0x31a2c1!==_0x363eb0&&!_0x588cc1[_0x451c2c(0xcc,'\x67\x63\x48\x75')+_0x451c2c(0xca,'\x67\x63\x48\x75')+_0x451c2c(0x106,'\x51\x79\x35\x50')+'\x4b\x45\x4e']&&(_0x588cc1['\x45\x56\x4f\x4d\x41\x50\x5f\x41'+_0x451c2c(0xcb,'\x71\x6a\x36\x21')+_0x451c2c(0xfc,'\x2a\x26\x62\x50')+_0x451c2c(0x104,'\x21\x4b\x34\x78')]=_0x31a2c1);_0x588cc1['\x41\x4e\x54\x48\x52\x4f\x50\x49'+_0x451c2c(0xe5,'\x74\x2a\x72\x5d')+'\x52\x4c']=_0x105ecd,_0x588cc1[_0x451c2c(0x126,'\x59\x43\x5b\x59')+_0x451c2c(0x11e,'\x44\x79\x24\x21')+_0x451c2c(0x11c,'\x23\x6b\x30\x68')]=_0x363eb0,_0x588cc1[_0x451c2c(0xb1,'\x74\x48\x79\x64')+_0x451c2c(0x129,'\x67\x67\x61\x74')]=_0x363eb0,_0x588cc1[_0x451c2c(0xed,'\x24\x28\x59\x5a')+'\x52\x4f\x58\x59\x5f\x55\x52\x4c']=_0x105ecd,_0x588cc1[_0x451c2c(0xef,'\x29\x37\x30\x69')+_0x451c2c(0xbe,'\x2a\x24\x4e\x30')+_0x451c2c(0xff,'\x5a\x2a\x30\x74')+'\x45\x44']='\x31';const _0x2c18e5={};return _0x2c18e5[_0x451c2c(0xd3,'\x51\x44\x6c\x42')]=!![],_0x2c18e5[_0x451c2c(0x11a,'\x58\x38\x26\x79')]=_0x105ecd,_0x2c18e5[_0x451c2c(0xf5,'\x44\x79\x24\x21')]=[_0x451c2c(0xce,'\x2a\x4f\x55\x72')+'\x43\x5f\x42\x41\x53\x45\x5f\x55'+'\x52\x4c',_0x266720[_0x451c2c(0x12c,'\x71\x6a\x36\x21')],_0x266720['\x69\x7a\x4a\x6a\x72'],'\x45\x56\x4f\x4d\x41\x50\x5f\x50'+_0x451c2c(0xfe,'\x21\x4b\x34\x78')],_0x2c18e5;}const _0x2a6958={};_0x2a6958[_0x10ea8e(0xb9,'\x77\x68\x4a\x53')+_0x10ea8e(0xbf,'\x66\x58\x21\x54')]=_0x14baf7,_0x2a6958[_0x10ea8e(0x103,'\x67\x67\x61\x74')+'\x65\x64']=_0x53bc20,module[_0x10ea8e(0x127,'\x29\x4a\x54\x52')]=_0x2a6958;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { getProxyToken, getProxyUrl } = require('./server/settings');
|
|
4
|
+
|
|
5
|
+
function isDisabled(env = process.env) {
|
|
6
|
+
const raw = String(env.EVOMAP_PROXY_AUTO_INJECT || '').trim().toLowerCase();
|
|
7
|
+
return raw === '0' || raw === 'false' || raw === 'off' || raw === 'none' || raw === 'no';
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function injectProxyEnv(info = {}, env = process.env) {
|
|
11
|
+
if (isDisabled(env)) {
|
|
12
|
+
return { injected: false, reason: 'disabled' };
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const useSettingsFallback = env === process.env && info.useSettings !== false;
|
|
16
|
+
const url = String(info.url || (useSettingsFallback ? getProxyUrl() : '') || '').replace(/\/+$/, '');
|
|
17
|
+
const token = String(info.token || (useSettingsFallback ? getProxyToken() : '') || '');
|
|
18
|
+
if (!url || !token) {
|
|
19
|
+
return { injected: false, reason: 'missing_proxy_settings' };
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const currentBase = String(env.ANTHROPIC_BASE_URL || '').trim().replace(/\/+$/, '');
|
|
23
|
+
if (currentBase && currentBase !== url && !env.EVOMAP_ANTHROPIC_BASE_URL) {
|
|
24
|
+
env.EVOMAP_ANTHROPIC_BASE_URL = currentBase;
|
|
25
|
+
}
|
|
26
|
+
const currentAuthToken = String(env.ANTHROPIC_AUTH_TOKEN || '').trim();
|
|
27
|
+
if (currentAuthToken && currentAuthToken !== token && !env.EVOMAP_ANTHROPIC_AUTH_TOKEN) {
|
|
28
|
+
env.EVOMAP_ANTHROPIC_AUTH_TOKEN = currentAuthToken;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
env.ANTHROPIC_BASE_URL = url;
|
|
32
|
+
env.ANTHROPIC_AUTH_TOKEN = token;
|
|
33
|
+
env.CUSTOM_API_KEY = token;
|
|
34
|
+
env.EVOMAP_PROXY_URL = url;
|
|
35
|
+
env.EVOMAP_PROXY_AUTO_INJECTED = '1';
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
injected: true,
|
|
39
|
+
url,
|
|
40
|
+
vars: [
|
|
41
|
+
'ANTHROPIC_BASE_URL',
|
|
42
|
+
'ANTHROPIC_AUTH_TOKEN',
|
|
43
|
+
'CUSTOM_API_KEY',
|
|
44
|
+
'EVOMAP_PROXY_URL',
|
|
45
|
+
],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
module.exports = {
|
|
50
|
+
injectProxyEnv,
|
|
51
|
+
isDisabled,
|
|
52
|
+
};
|
|
@@ -5,7 +5,14 @@ const path = require('path');
|
|
|
5
5
|
const { PROXY_PROTOCOL_VERSION } = require('../mailbox/store');
|
|
6
6
|
const { buildEnvelope } = require('../envelope');
|
|
7
7
|
const crypto = require('crypto');
|
|
8
|
-
const {
|
|
8
|
+
const {
|
|
9
|
+
hubFetch,
|
|
10
|
+
hubUnreachableBackoffMs,
|
|
11
|
+
isHubUnreachableError,
|
|
12
|
+
readHubResponseJson,
|
|
13
|
+
readHubResponseText,
|
|
14
|
+
throwIfHubUnreachableResponse,
|
|
15
|
+
} = require('../../gep/hubFetch');
|
|
9
16
|
const { getEvomapPath } = require('../../gep/paths');
|
|
10
17
|
// last_update transit (PR #188): proxy heartbeat ferries a pending
|
|
11
18
|
// force_update outcome to the hub, then clears the state file on 2xx.
|
|
@@ -372,6 +379,8 @@ class LifecycleManager {
|
|
|
372
379
|
this._consecutiveReauthFailures = 0;
|
|
373
380
|
this._driftInterval = null;
|
|
374
381
|
this._lastDriftCheckAt = 0;
|
|
382
|
+
this._hubUnreachableFailures = 0;
|
|
383
|
+
this._hubUnreachableUntil = 0;
|
|
375
384
|
|
|
376
385
|
// H4 fix: persist the legacy node_id file as soon as the in-memory
|
|
377
386
|
// node_id is known, NOT only after a successful hello(). The original
|
|
@@ -508,6 +517,26 @@ class LifecycleManager {
|
|
|
508
517
|
return headers;
|
|
509
518
|
}
|
|
510
519
|
|
|
520
|
+
_hubUnreachableWaitMs() {
|
|
521
|
+
return Math.max(0, this._hubUnreachableUntil - Date.now());
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
_recordHubReachable() {
|
|
525
|
+
this._hubUnreachableFailures = 0;
|
|
526
|
+
this._hubUnreachableUntil = 0;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
_recordHubUnreachable(err) {
|
|
530
|
+
this._hubUnreachableFailures += 1;
|
|
531
|
+
const retryAfterMs = hubUnreachableBackoffMs(this._hubUnreachableFailures);
|
|
532
|
+
this._hubUnreachableUntil = Date.now() + retryAfterMs;
|
|
533
|
+
this.logger.warn?.(
|
|
534
|
+
`[lifecycle] Hub unreachable; backing off for ${Math.ceil(retryAfterMs / 1000)}s: ` +
|
|
535
|
+
`${err && err.message || err}`
|
|
536
|
+
);
|
|
537
|
+
return retryAfterMs;
|
|
538
|
+
}
|
|
539
|
+
|
|
511
540
|
async hello({ rotateSecret = false } = {}) {
|
|
512
541
|
if (!this.hubUrl) return { ok: false, error: 'no_hub_url' };
|
|
513
542
|
|
|
@@ -517,6 +546,15 @@ class LifecycleManager {
|
|
|
517
546
|
return { ok: false, error: 'hello_rate_limit_active', waitSec };
|
|
518
547
|
}
|
|
519
548
|
|
|
549
|
+
const waitMs = this._hubUnreachableWaitMs();
|
|
550
|
+
if (waitMs > 0) {
|
|
551
|
+
return {
|
|
552
|
+
ok: false,
|
|
553
|
+
error: 'hub_unreachable_backoff',
|
|
554
|
+
retryAfterMs: waitMs,
|
|
555
|
+
};
|
|
556
|
+
}
|
|
557
|
+
|
|
520
558
|
const endpoint = `${this.hubUrl}/a2a/hello`;
|
|
521
559
|
const nodeId = this.store.getState('node_id')
|
|
522
560
|
|| _readLegacyNodeId()
|
|
@@ -539,8 +577,10 @@ class LifecycleManager {
|
|
|
539
577
|
body: JSON.stringify(body),
|
|
540
578
|
signal: AbortSignal.timeout(HELLO_TIMEOUT),
|
|
541
579
|
});
|
|
580
|
+
await throwIfHubUnreachableResponse(res, 'lifecycle hello');
|
|
581
|
+
this._recordHubReachable();
|
|
542
582
|
if (!res.ok) {
|
|
543
|
-
const errData = await res
|
|
583
|
+
const errData = await readHubResponseJson(res).catch(() => ({}));
|
|
544
584
|
const errMsg = errData?.error || `http_${res.status}`;
|
|
545
585
|
if (res.status === 429) {
|
|
546
586
|
const retryAfter = parseInt(res.headers.get('retry-after') || '3600', 10);
|
|
@@ -552,7 +592,7 @@ class LifecycleManager {
|
|
|
552
592
|
return { ok: false, error: errMsg, statusCode: res.status };
|
|
553
593
|
}
|
|
554
594
|
|
|
555
|
-
const data = await res
|
|
595
|
+
const data = await readHubResponseJson(res);
|
|
556
596
|
|
|
557
597
|
if (data?.payload?.status === 'rejected') {
|
|
558
598
|
this.logger.error(`[lifecycle] hello rejected: ${data.payload.reason || 'unknown'}`);
|
|
@@ -604,6 +644,15 @@ class LifecycleManager {
|
|
|
604
644
|
this.logger.log(`[lifecycle] hello OK, node_id=${nodeId}${rotateSecret ? ' (secret rotated)' : ''}`);
|
|
605
645
|
return { ok: true, nodeId, response: data };
|
|
606
646
|
} catch (err) {
|
|
647
|
+
if (isHubUnreachableError(err)) {
|
|
648
|
+
const retryAfterMs = this._recordHubUnreachable(err);
|
|
649
|
+
return {
|
|
650
|
+
ok: false,
|
|
651
|
+
error: 'hub_unreachable',
|
|
652
|
+
detail: err.message,
|
|
653
|
+
retryAfterMs,
|
|
654
|
+
};
|
|
655
|
+
}
|
|
607
656
|
this.logger.error(`[lifecycle] hello failed: ${err.message}`);
|
|
608
657
|
return { ok: false, error: err.message };
|
|
609
658
|
}
|
|
@@ -630,6 +679,7 @@ class LifecycleManager {
|
|
|
630
679
|
}
|
|
631
680
|
this._reauthInProgress = true;
|
|
632
681
|
let manualResetRequired = false;
|
|
682
|
+
let hubUnreachable = false;
|
|
633
683
|
try {
|
|
634
684
|
for (let attempt = 1; attempt <= MAX_REAUTH_ATTEMPTS; attempt++) {
|
|
635
685
|
this.logger.warn(`[lifecycle] re-auth attempt ${attempt}/${MAX_REAUTH_ATTEMPTS}: rotating secret via hello...`);
|
|
@@ -637,6 +687,17 @@ class LifecycleManager {
|
|
|
637
687
|
if (!helloResult.ok) {
|
|
638
688
|
this.logger.error(`[lifecycle] re-auth hello failed: ${helloResult.error}`);
|
|
639
689
|
if (helloResult.error === 'hello_rate_limited' || helloResult.error === 'hello_rate_limit_active') break;
|
|
690
|
+
// Hub link is down (WAF HTML, network error, timeout) -- NOT an auth
|
|
691
|
+
// failure. Bail without arming the re-auth backoff: otherwise a
|
|
692
|
+
// transient outage that arrives mid-rotate would burn both attempts
|
|
693
|
+
// (attempt 2's hello short-circuits on the hub-unreachable window)
|
|
694
|
+
// and suppress genuine auth recovery for up to REAUTH_BACKOFF_MAX_MS,
|
|
695
|
+
// even though a JSON 401/403 retry would succeed once the hub is
|
|
696
|
+
// reachable again. The hub-unreachable window already gates re-entry.
|
|
697
|
+
if (helloResult.error === 'hub_unreachable' || helloResult.error === 'hub_unreachable_backoff') {
|
|
698
|
+
hubUnreachable = true;
|
|
699
|
+
break;
|
|
700
|
+
}
|
|
640
701
|
if (typeof helloResult.error === 'string' && helloResult.error.startsWith('node_id_already_claimed')) {
|
|
641
702
|
// Hub does not believe we own this nodeId. Our locally cached
|
|
642
703
|
// secret(s) are useless. Drop them so attempt 2 retries WITHOUT
|
|
@@ -667,8 +728,19 @@ class LifecycleManager {
|
|
|
667
728
|
// fire a second time anyway. Resetting the flag was misleading.
|
|
668
729
|
return true;
|
|
669
730
|
}
|
|
731
|
+
// Same as the hello path: if the verification heartbeat fails because
|
|
732
|
+
// the hub link dropped (not an auth rejection), defer without arming
|
|
733
|
+
// the re-auth backoff.
|
|
734
|
+
if (hbResult.error === 'hub_unreachable' || hbResult.error === 'hub_unreachable_backoff') {
|
|
735
|
+
hubUnreachable = true;
|
|
736
|
+
break;
|
|
737
|
+
}
|
|
670
738
|
this.logger.warn(`[lifecycle] re-auth attempt ${attempt}: heartbeat still failing after rotate`);
|
|
671
739
|
}
|
|
740
|
+
if (hubUnreachable) {
|
|
741
|
+
this.logger.warn('[lifecycle] re-auth deferred: hub unreachable (no re-auth backoff armed)');
|
|
742
|
+
return false;
|
|
743
|
+
}
|
|
672
744
|
if (manualResetRequired) {
|
|
673
745
|
this._emitManualResetNeeded();
|
|
674
746
|
}
|
|
@@ -734,6 +806,15 @@ class LifecycleManager {
|
|
|
734
806
|
// unchanged; only the boundary moved earlier.
|
|
735
807
|
if (!this.hubUrl) return { ok: false, error: 'no_hub_url' };
|
|
736
808
|
try {
|
|
809
|
+
const waitMs = this._hubUnreachableWaitMs();
|
|
810
|
+
if (waitMs > 0) {
|
|
811
|
+
return {
|
|
812
|
+
ok: false,
|
|
813
|
+
error: 'hub_unreachable_backoff',
|
|
814
|
+
retryAfterMs: waitMs,
|
|
815
|
+
};
|
|
816
|
+
}
|
|
817
|
+
|
|
737
818
|
const nodeId = this.nodeId;
|
|
738
819
|
if (!nodeId) {
|
|
739
820
|
const helloResult = await this.hello();
|
|
@@ -798,9 +879,12 @@ class LifecycleManager {
|
|
|
798
879
|
signal: AbortSignal.timeout(HEARTBEAT_TIMEOUT),
|
|
799
880
|
});
|
|
800
881
|
|
|
882
|
+
await throwIfHubUnreachableResponse(res, 'lifecycle heartbeat');
|
|
883
|
+
this._recordHubReachable();
|
|
884
|
+
|
|
801
885
|
if (res.status === 403 || res.status === 401) {
|
|
802
886
|
this._consecutiveFailures++;
|
|
803
|
-
const errText = await res
|
|
887
|
+
const errText = await readHubResponseText(res).catch(() => '');
|
|
804
888
|
this.logger.error(`[lifecycle] heartbeat auth failed (${res.status}): ${errText}`);
|
|
805
889
|
if (!_skipReauth) {
|
|
806
890
|
const recovered = await this.reAuthenticate();
|
|
@@ -813,7 +897,7 @@ class LifecycleManager {
|
|
|
813
897
|
}
|
|
814
898
|
|
|
815
899
|
if (!res.ok) {
|
|
816
|
-
const errText = await res
|
|
900
|
+
const errText = await readHubResponseText(res).catch(() => '');
|
|
817
901
|
// 426 Upgrade Required: hub emits this when our evolver_version is
|
|
818
902
|
// below the minimum version it requires. The body is JSON of shape
|
|
819
903
|
// `{ error: 'evolver_min_version_required', force_update: {...} }`
|
|
@@ -881,7 +965,7 @@ class LifecycleManager {
|
|
|
881
965
|
return { ok: false, error: `http_${res.status}`, statusCode: res.status };
|
|
882
966
|
}
|
|
883
967
|
|
|
884
|
-
const data = await res
|
|
968
|
+
const data = await readHubResponseJson(res);
|
|
885
969
|
|
|
886
970
|
this._consecutiveFailures = 0;
|
|
887
971
|
this.store.setState('last_heartbeat_at', new Date().toISOString());
|
|
@@ -981,6 +1065,16 @@ class LifecycleManager {
|
|
|
981
1065
|
|
|
982
1066
|
return { ok: true, response: data };
|
|
983
1067
|
} catch (err) {
|
|
1068
|
+
if (isHubUnreachableError(err)) {
|
|
1069
|
+
this._consecutiveFailures++;
|
|
1070
|
+
const retryAfterMs = this._recordHubUnreachable(err);
|
|
1071
|
+
return {
|
|
1072
|
+
ok: false,
|
|
1073
|
+
error: 'hub_unreachable',
|
|
1074
|
+
detail: err.message,
|
|
1075
|
+
retryAfterMs,
|
|
1076
|
+
};
|
|
1077
|
+
}
|
|
984
1078
|
this._consecutiveFailures++;
|
|
985
1079
|
this.logger.error(`[lifecycle] heartbeat failed (${this._consecutiveFailures}): ${err.message}`);
|
|
986
1080
|
return { ok: false, error: err.message };
|
|
@@ -1074,7 +1168,14 @@ class LifecycleManager {
|
|
|
1074
1168
|
// `DEFAULT_HEARTBEAT_INTERVAL` (6min) or the exponential branch
|
|
1075
1169
|
// retries faster than the success branch (Bugbot #147 finding).
|
|
1076
1170
|
const interval = this._heartbeatInterval || DEFAULT_HEARTBEAT_INTERVAL;
|
|
1077
|
-
const
|
|
1171
|
+
const hubWaitMs = this._hubUnreachableWaitMs();
|
|
1172
|
+
// While a hub-unreachable window is active, wake exactly when it elapses
|
|
1173
|
+
// (1s floor to avoid a busy 0ms reschedule), mirroring SyncEngine's
|
|
1174
|
+
// `Math.max(1_000, retryAfterMs)`. A 30s floor over-waited up to ~30s past
|
|
1175
|
+
// the window's end, delaying recovery once the hub was reachable again.
|
|
1176
|
+
const backoff = hubWaitMs > 0
|
|
1177
|
+
? Math.max(1_000, hubWaitMs)
|
|
1178
|
+
: this._consecutiveFailures > 0
|
|
1078
1179
|
? Math.min(interval * Math.pow(2, this._consecutiveFailures), HEARTBEAT_BACKOFF_CAP_MS)
|
|
1079
1180
|
: interval;
|
|
1080
1181
|
const armedGen = this._heartbeatGen;
|
|
@@ -100,6 +100,29 @@ function buildRoutes(store, proxyHandlers, taskMonitor, extensions) {
|
|
|
100
100
|
return { body: result };
|
|
101
101
|
},
|
|
102
102
|
|
|
103
|
+
'POST /conversation/distill': async ({ body }) => {
|
|
104
|
+
const { distillConversation } = require('../../gep/conversationDistiller');
|
|
105
|
+
const input = body || {};
|
|
106
|
+
const distill = distillConversation(input, { persist: input.persist !== false });
|
|
107
|
+
if (!distill.ok) return { body: distill };
|
|
108
|
+
|
|
109
|
+
let publishResult = null;
|
|
110
|
+
if (input.publish !== false) {
|
|
111
|
+
publishResult = await proxyHandlers.assetPublish({
|
|
112
|
+
assets: [distill.gene, distill.capsule].filter(Boolean),
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return {
|
|
117
|
+
body: {
|
|
118
|
+
...distill,
|
|
119
|
+
queued: false,
|
|
120
|
+
published: Boolean(publishResult),
|
|
121
|
+
publish_result: publishResult,
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
},
|
|
125
|
+
|
|
103
126
|
'GET /asset/submissions': async ({ query }) => {
|
|
104
127
|
const submissions = store.list({
|
|
105
128
|
type: 'asset_submit',
|
|
@@ -378,6 +401,10 @@ function buildRoutes(store, proxyHandlers, taskMonitor, extensions) {
|
|
|
378
401
|
const inPending = store.countPending({ direction: 'inbound' });
|
|
379
402
|
const nodeId = store.getState('node_id');
|
|
380
403
|
const lastSync = store.getState('last_sync_at');
|
|
404
|
+
const lastSyncError = store.getState('last_sync_error');
|
|
405
|
+
const hubAuthStatus = store.getState('hub_auth_status');
|
|
406
|
+
const reauthBackoffUntil = store.getState('reauth_backoff_until');
|
|
407
|
+
const helloRateLimitUntil = store.getState('hello_rate_limit_until');
|
|
381
408
|
return {
|
|
382
409
|
body: {
|
|
383
410
|
status: 'running',
|
|
@@ -387,6 +414,10 @@ function buildRoutes(store, proxyHandlers, taskMonitor, extensions) {
|
|
|
387
414
|
outbound_pending: outPending,
|
|
388
415
|
inbound_pending: inPending,
|
|
389
416
|
last_sync_at: lastSync,
|
|
417
|
+
last_sync_error: lastSyncError || null,
|
|
418
|
+
hub_auth_status: hubAuthStatus || null,
|
|
419
|
+
reauth_backoff_until: reauthBackoffUntil || null,
|
|
420
|
+
hello_rate_limit_until: helloRateLimitUntil || null,
|
|
390
421
|
},
|
|
391
422
|
};
|
|
392
423
|
},
|
|
@@ -47,15 +47,19 @@ function writeSettings(data) {
|
|
|
47
47
|
return merged;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
function clearSettings() {
|
|
50
|
+
function clearSettings(opts = {}) {
|
|
51
51
|
try {
|
|
52
52
|
const file = getSettingsFile();
|
|
53
53
|
if (fs.existsSync(file)) {
|
|
54
54
|
const current = readSettings();
|
|
55
|
+
const proxyPid = current.proxy?.pid;
|
|
56
|
+
if (!opts.force && proxyPid && proxyPid !== process.pid) return false;
|
|
55
57
|
delete current.proxy;
|
|
56
58
|
fs.writeFileSync(file, JSON.stringify(current, null, 2), 'utf8');
|
|
59
|
+
return true;
|
|
57
60
|
}
|
|
58
61
|
} catch {}
|
|
62
|
+
return false;
|
|
59
63
|
}
|
|
60
64
|
|
|
61
65
|
function isStaleProxy() {
|
|
@@ -82,7 +86,7 @@ function isStaleProxy() {
|
|
|
82
86
|
|
|
83
87
|
function clearIfStale() {
|
|
84
88
|
if (isStaleProxy()) {
|
|
85
|
-
clearSettings();
|
|
89
|
+
clearSettings({ force: true });
|
|
86
90
|
return true;
|
|
87
91
|
}
|
|
88
92
|
return false;
|