@evomap/evolver 1.89.4 → 1.89.5
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/CONTRIBUTING.md +19 -0
- package/README.md +536 -86
- package/assets/cover.png +0 -0
- package/index.js +87 -7
- package/package.json +17 -6
- package/scripts/a2a_export.js +63 -0
- package/scripts/a2a_ingest.js +79 -0
- package/scripts/a2a_promote.js +118 -0
- package/scripts/analyze_by_skill.js +121 -0
- package/scripts/build_binaries.js +479 -0
- package/scripts/check-changelog.js +166 -0
- package/scripts/extract_log.js +85 -0
- package/scripts/generate_history.js +75 -0
- package/scripts/gep_append_event.js +96 -0
- package/scripts/gep_personality_report.js +234 -0
- package/scripts/human_report.js +147 -0
- package/scripts/recall-verify-report.js +234 -0
- package/scripts/recover_loop.js +61 -0
- package/scripts/refresh_stars_badge.js +168 -0
- package/scripts/seed-merchants.js +91 -0
- package/scripts/suggest_version.js +89 -0
- package/scripts/validate-modules.js +38 -0
- package/scripts/validate-suite.js +78 -0
- package/skills/index.json +14 -0
- package/src/adapters/scripts/_runtimePaths.js +1 -0
- package/src/adapters/scripts/evolver-session-end.js +1 -0
- package/src/adapters/scripts/evolver-session-start.js +1 -0
- package/src/evolve/guards.js +1 -721
- package/src/evolve/pipeline/collect.js +1 -1283
- package/src/evolve/pipeline/dispatch.js +1 -421
- package/src/evolve/pipeline/enrich.js +1 -440
- package/src/evolve/pipeline/hub.js +1 -319
- package/src/evolve/pipeline/select.js +1 -274
- package/src/evolve/pipeline/signals.js +1 -206
- package/src/evolve/utils.js +1 -264
- package/src/evolve.js +1 -350
- package/src/gep/a2aProtocol.js +1 -4455
- package/src/gep/antiAbuseTelemetry.js +1 -233
- package/src/gep/autoDistillConv.js +1 -205
- package/src/gep/autoDistillLlm.js +1 -315
- package/src/gep/candidateEval.js +1 -92
- package/src/gep/candidates.js +1 -198
- package/src/gep/contentHash.js +1 -30
- package/src/gep/conversationSniffer.js +1 -266
- package/src/gep/crypto.js +1 -89
- package/src/gep/curriculum.js +1 -163
- package/src/gep/deviceId.js +1 -218
- package/src/gep/envFingerprint.js +1 -118
- package/src/gep/epigenetics.js +1 -31
- package/src/gep/execBridge.js +1 -711
- package/src/gep/explore.js +1 -289
- package/src/gep/hash.js +1 -15
- package/src/gep/hubFetch.js +1 -359
- package/src/gep/hubReview.js +1 -207
- package/src/gep/hubSearch.js +1 -526
- package/src/gep/hubVerify.js +1 -306
- package/src/gep/idleScheduler.js +6 -1
- package/src/gep/learningSignals.js +1 -89
- package/src/gep/memoryGraph.js +1 -1374
- package/src/gep/memoryGraphAdapter.js +1 -203
- package/src/gep/mutation.js +1 -203
- package/src/gep/narrativeMemory.js +1 -108
- package/src/gep/openPRRegistry.js +1 -205
- package/src/gep/personality.js +1 -423
- package/src/gep/policyCheck.js +1 -599
- package/src/gep/prompt.js +1 -836
- package/src/gep/recallInject.js +1 -409
- package/src/gep/recallVerifier.js +1 -318
- package/src/gep/reflection.js +1 -177
- package/src/gep/selector.js +1 -602
- package/src/gep/skillDistiller.js +1 -1294
- package/src/gep/solidify.js +1 -1699
- package/src/gep/strategy.js +1 -136
- package/src/gep/tokenSavings.js +1 -88
- package/src/gep/workspaceKeychain.js +1 -174
- package/src/ops/lifecycle.js +17 -4
- package/src/proxy/extensions/traceControl.js +1 -99
- package/src/proxy/index.js +206 -1
- package/src/proxy/inject.js +1 -52
- package/src/proxy/lifecycle/manager.js +12 -0
- package/src/proxy/mailbox/store.js +29 -6
- package/src/proxy/router/responses_route.js +157 -0
- package/src/proxy/server/http.js +13 -4
- package/src/proxy/server/routes.js +11 -1
- package/src/proxy/sync/engine.js +7 -1
- package/src/proxy/sync/outbound.js +32 -4
- package/src/proxy/trace/extractor.js +1 -646
- package/src/proxy/trace/usage.js +1 -105
- package/.cursor/BUGBOT.md +0 -182
- package/.env.example +0 -68
- package/.git-commit-guard-token +0 -1
- package/.github/CODEOWNERS +0 -63
- package/.github/ISSUE_TEMPLATE/good_first_issue.md +0 -23
- package/.github/pull_request_template.md +0 -45
- package/.github/workflows/test.yml +0 -75
- package/CHANGELOG.md +0 -1237
- package/README.public.md +0 -569
- package/SECURITY.md +0 -108
- package/assets/gep/events.jsonl +0 -3
- package/examples/atp-consumer-quickstart.md +0 -100
- package/examples/hello-world.md +0 -38
- package/proxy-package.json +0 -39
- package/public.manifest.json +0 -143
- /package/assets/gep/{genes.json → genes.seed.json} +0 -0
- /package/{bundled-skills → skills}/_meta/SKILL.md +0 -0
package/src/gep/strategy.js
CHANGED
|
@@ -1,136 +1 @@
|
|
|
1
|
-
// Evolution Strategy Presets (v1.1)
|
|
2
|
-
// Controls the balance between repair, optimize, and innovate intents.
|
|
3
|
-
//
|
|
4
|
-
// Usage: set EVOLVE_STRATEGY env var to one of: balanced, innovate, harden, repair-only,
|
|
5
|
-
// early-stabilize, steady-state, or "auto" for adaptive selection.
|
|
6
|
-
// Default: balanced (or auto-detected based on cycle count / saturation signals)
|
|
7
|
-
//
|
|
8
|
-
// Each strategy defines:
|
|
9
|
-
// repair/optimize/innovate - target allocation ratios (inform the LLM prompt)
|
|
10
|
-
// repairLoopThreshold - repair ratio in last 8 cycles that triggers forced innovation
|
|
11
|
-
// label - human-readable name injected into the GEP prompt
|
|
12
|
-
|
|
13
|
-
var fs = require('fs');
|
|
14
|
-
var path = require('path');
|
|
15
|
-
|
|
16
|
-
var STRATEGIES = {
|
|
17
|
-
'balanced': {
|
|
18
|
-
repair: 0.20,
|
|
19
|
-
optimize: 0.20,
|
|
20
|
-
innovate: 0.50,
|
|
21
|
-
explore: 0.10,
|
|
22
|
-
repairLoopThreshold: 0.50,
|
|
23
|
-
label: 'Balanced',
|
|
24
|
-
description: 'Normal operation. Steady growth with stability.',
|
|
25
|
-
},
|
|
26
|
-
'innovate': {
|
|
27
|
-
repair: 0.05,
|
|
28
|
-
optimize: 0.10,
|
|
29
|
-
innovate: 0.80,
|
|
30
|
-
explore: 0.05,
|
|
31
|
-
repairLoopThreshold: 0.30,
|
|
32
|
-
label: 'Innovation Focus',
|
|
33
|
-
description: 'System is stable. Maximize new features and capabilities.',
|
|
34
|
-
},
|
|
35
|
-
'harden': {
|
|
36
|
-
repair: 0.40,
|
|
37
|
-
optimize: 0.35,
|
|
38
|
-
innovate: 0.20,
|
|
39
|
-
explore: 0.05,
|
|
40
|
-
repairLoopThreshold: 0.70,
|
|
41
|
-
label: 'Hardening',
|
|
42
|
-
description: 'After a big change. Focus on stability and robustness.',
|
|
43
|
-
},
|
|
44
|
-
'repair-only': {
|
|
45
|
-
repair: 0.80,
|
|
46
|
-
optimize: 0.18,
|
|
47
|
-
innovate: 0.00,
|
|
48
|
-
explore: 0.02,
|
|
49
|
-
repairLoopThreshold: 1.00,
|
|
50
|
-
label: 'Repair Only',
|
|
51
|
-
description: 'Emergency. Fix everything before doing anything else.',
|
|
52
|
-
},
|
|
53
|
-
'early-stabilize': {
|
|
54
|
-
repair: 0.60,
|
|
55
|
-
optimize: 0.22,
|
|
56
|
-
innovate: 0.15,
|
|
57
|
-
explore: 0.03,
|
|
58
|
-
repairLoopThreshold: 0.80,
|
|
59
|
-
label: 'Early Stabilization',
|
|
60
|
-
description: 'First cycles. Prioritize fixing existing issues before innovating.',
|
|
61
|
-
},
|
|
62
|
-
'steady-state': {
|
|
63
|
-
repair: 0.55,
|
|
64
|
-
optimize: 0.25,
|
|
65
|
-
innovate: 0.05,
|
|
66
|
-
explore: 0.15,
|
|
67
|
-
repairLoopThreshold: 0.90,
|
|
68
|
-
label: 'Steady State',
|
|
69
|
-
description: 'Evolution saturated. Maintain existing capabilities. Explore for new directions.',
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
// Read evolution_state.json to get the current cycle count for auto-detection.
|
|
74
|
-
function _readCycleCount() {
|
|
75
|
-
try {
|
|
76
|
-
// evolver/memory/evolution_state.json (local to the skill)
|
|
77
|
-
var localPath = path.resolve(__dirname, '..', '..', 'memory', 'evolution_state.json');
|
|
78
|
-
// workspace/memory/evolution/evolution_state.json (canonical path used by evolve.js)
|
|
79
|
-
var workspacePath = path.resolve(__dirname, '..', '..', '..', '..', 'memory', 'evolution', 'evolution_state.json');
|
|
80
|
-
var candidates = [localPath, workspacePath];
|
|
81
|
-
for (var i = 0; i < candidates.length; i++) {
|
|
82
|
-
if (fs.existsSync(candidates[i])) {
|
|
83
|
-
var data = JSON.parse(fs.readFileSync(candidates[i], 'utf8'));
|
|
84
|
-
return data && Number.isFinite(data.cycleCount) ? data.cycleCount : 0;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
} catch (e) {}
|
|
88
|
-
return 0;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
function resolveStrategy(opts) {
|
|
92
|
-
var signals = (opts && Array.isArray(opts.signals)) ? opts.signals : [];
|
|
93
|
-
var name = String(process.env.EVOLVE_STRATEGY || 'balanced').toLowerCase().trim();
|
|
94
|
-
|
|
95
|
-
// Backward compatibility: FORCE_INNOVATION=true maps to 'innovate'
|
|
96
|
-
var forceInnovation = false;
|
|
97
|
-
if (!process.env.EVOLVE_STRATEGY) {
|
|
98
|
-
var fi = String(process.env.FORCE_INNOVATION || process.env.EVOLVE_FORCE_INNOVATION || '').toLowerCase();
|
|
99
|
-
if (fi === 'true') {
|
|
100
|
-
name = 'innovate';
|
|
101
|
-
forceInnovation = true;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// Auto-detection: when no explicit strategy is set (defaults to 'balanced'),
|
|
106
|
-
// apply heuristics inspired by Echo-MingXuan's "fix first, innovate later" pattern.
|
|
107
|
-
// Skip if user explicitly set FORCE_INNOVATION=true
|
|
108
|
-
var isDefault = !process.env.EVOLVE_STRATEGY || name === 'balanced' || name === 'auto';
|
|
109
|
-
|
|
110
|
-
if (isDefault && !forceInnovation) {
|
|
111
|
-
// Early-stabilize: first 5 cycles should focus on fixing existing issues.
|
|
112
|
-
var cycleCount = _readCycleCount();
|
|
113
|
-
if (cycleCount > 0 && cycleCount <= 5) {
|
|
114
|
-
name = 'early-stabilize';
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Saturation detection: if saturation signals are present, switch to steady-state.
|
|
118
|
-
if (signals.indexOf('force_steady_state') !== -1) {
|
|
119
|
-
name = 'steady-state';
|
|
120
|
-
} else if (signals.indexOf('evolution_saturation') !== -1) {
|
|
121
|
-
name = 'steady-state';
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
// Explicit "auto" maps to whatever was auto-detected above (or balanced if no heuristic fired).
|
|
126
|
-
if (name === 'auto') name = 'balanced';
|
|
127
|
-
|
|
128
|
-
var strategy = STRATEGIES[name] || STRATEGIES['balanced'];
|
|
129
|
-
return Object.assign({}, strategy, { name: name });
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
function getStrategyNames() {
|
|
133
|
-
return Object.keys(STRATEGIES);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
module.exports = { resolveStrategy, getStrategyNames, STRATEGIES };
|
|
1
|
+
var _0x35f7af=_0x360a;(function(_0x3cbf5a,_0x4440c8){var _0x5f0e5f=_0x360a,_0x2d94b5=_0x3cbf5a();while(!![]){try{var _0x98107a=-parseInt(_0x5f0e5f(0xfc,'\x5d\x21\x51\x4a'))/(-0x1da1+-0x14e2+0xca1*0x4)*(parseInt(_0x5f0e5f(0x1da,'\x29\x6f\x45\x6b'))/(0x3ef+0x38*-0x5e+0x10a3*0x1))+-parseInt(_0x5f0e5f(0x19b,'\x77\x6a\x55\x65'))/(0x58*-0x53+0x2543+-0x5d*0x18)*(-parseInt(_0x5f0e5f(0x162,'\x77\x6a\x55\x65'))/(-0xa28+0x27f+0x7ad))+parseInt(_0x5f0e5f(0x11a,'\x52\x73\x4b\x5a'))/(0x230*-0x5+-0x2364+-0x153*-0x23)+-parseInt(_0x5f0e5f(0x104,'\x56\x55\x69\x50'))/(0xe7e+0x1791+0x5b*-0x6b)*(-parseInt(_0x5f0e5f(0x120,'\x33\x73\x54\x77'))/(-0x422+0x32f*0x7+-0x1220))+parseInt(_0x5f0e5f(0x195,'\x28\x24\x55\x4d'))/(0xfe*0x1a+-0x1*-0x14a8+-0x2e6c)*(parseInt(_0x5f0e5f(0x1c3,'\x76\x31\x42\x69'))/(0x2078*-0x1+0x65a*-0x2+0x2d35))+parseInt(_0x5f0e5f(0x155,'\x5d\x21\x51\x4a'))/(0x977+-0xc*-0x14c+-0x18fd)*(-parseInt(_0x5f0e5f(0x177,'\x56\x55\x69\x50'))/(0x1*-0x242b+0xfc0+0x1476))+-parseInt(_0x5f0e5f(0x1a8,'\x4e\x36\x4b\x23'))/(-0x1300+0x4b*-0x2e+-0x2086*-0x1);if(_0x98107a===_0x4440c8)break;else _0x2d94b5['push'](_0x2d94b5['shift']());}catch(_0x6a919c){_0x2d94b5['push'](_0x2d94b5['shift']());}}}(_0x542a,-0x4a81f+-0xcea38+0x1f2a5f));var _0xec63ac=(function(){var _0xe381d1=_0x360a,_0x1f5d15={};_0x1f5d15[_0xe381d1(0x19e,'\x48\x41\x5d\x72')]=_0xe381d1(0x18e,'\x72\x63\x38\x5a');var _0x46aece=_0x1f5d15,_0x101a0d=!![];return function(_0x52dbe4,_0xd9985f){var _0x57d654=_0xe381d1,_0x1dc3f1={};_0x1dc3f1[_0x57d654(0x183,'\x56\x55\x69\x50')]=_0x57d654(0x12d,'\x39\x47\x51\x2a'),_0x1dc3f1['\x6b\x4a\x54\x75\x61']=function(_0x2a755c,_0x4679a2){return _0x2a755c===_0x4679a2;},_0x1dc3f1[_0x57d654(0x126,'\x45\x4e\x57\x56')]=_0x46aece[_0x57d654(0x110,'\x33\x73\x54\x77')];var _0x5dd203=_0x1dc3f1,_0x4ac4ec=_0x101a0d?function(){var _0x53b32e=_0x57d654;if(_0xd9985f){if(_0x5dd203[_0x53b32e(0xf0,'\x4b\x67\x6c\x62')](_0x5dd203['\x64\x66\x61\x42\x6e'],_0x53b32e(0x1ca,'\x77\x6a\x55\x65'))){var _0x351765=_0xd9985f[_0x53b32e(0x1c9,'\x43\x4c\x35\x37')](_0x52dbe4,arguments);return _0xd9985f=null,_0x351765;}else _0x393d06=_0x5dd203[_0x53b32e(0x1d3,'\x28\x24\x55\x4d')],_0x222976=!![];}}:function(){};return _0x101a0d=![],_0x4ac4ec;};}()),_0x53ed30=_0xec63ac(this,function(){var _0x17a692=_0x360a,_0x496f30={};_0x496f30[_0x17a692(0x1cc,'\x4e\x29\x21\x5e')]='\x28\x28\x28\x2e\x2b\x29\x2b\x29'+_0x17a692(0x1e3,'\x64\x4d\x71\x68');var _0x170ef5=_0x496f30;return _0x53ed30[_0x17a692(0x15c,'\x32\x31\x32\x26')]()[_0x17a692(0x181,'\x43\x53\x4c\x57')](_0x170ef5[_0x17a692(0x191,'\x6c\x25\x73\x6b')])[_0x17a692(0x1b3,'\x72\x63\x38\x5a')]()[_0x17a692(0x116,'\x51\x4e\x30\x4a')+_0x17a692(0x14e,'\x31\x32\x53\x70')](_0x53ed30)[_0x17a692(0x175,'\x76\x31\x42\x69')](_0x170ef5[_0x17a692(0x151,'\x41\x28\x72\x32')]);});_0x53ed30();var _0x66da12=require('\x66\x73'),_0x8d714d=require(_0x35f7af(0xed,'\x55\x33\x68\x51')),_0x21621f={};_0x21621f[_0x35f7af(0x18b,'\x62\x59\x5d\x67')]=0.2,_0x21621f[_0x35f7af(0x1ce,'\x5b\x4c\x6f\x66')]=0.2,_0x21621f[_0x35f7af(0x13e,'\x52\x73\x4b\x5a')]=0.5,_0x21621f[_0x35f7af(0x179,'\x28\x24\x55\x4d')]=0.1,_0x21621f['\x72\x65\x70\x61\x69\x72\x4c\x6f'+_0x35f7af(0x11f,'\x4b\x67\x6c\x62')+_0x35f7af(0x105,'\x64\x4d\x71\x68')]=0.5,_0x21621f[_0x35f7af(0x14d,'\x4e\x36\x4b\x23')]=_0x35f7af(0x16c,'\x43\x4c\x35\x37'),_0x21621f[_0x35f7af(0x194,'\x49\x6c\x6a\x53')+_0x35f7af(0x10f,'\x41\x28\x72\x32')]=_0x35f7af(0x143,'\x52\x73\x4b\x5a')+_0x35f7af(0x15d,'\x55\x48\x54\x23')+_0x35f7af(0x1b8,'\x4e\x29\x21\x5e')+_0x35f7af(0x182,'\x4d\x30\x65\x4a')+_0x35f7af(0x1ad,'\x53\x52\x71\x46')+_0x35f7af(0x1e2,'\x32\x31\x32\x26');var _0x1bf54f={};_0x1bf54f[_0x35f7af(0x107,'\x57\x52\x25\x62')]=0.05,_0x1bf54f['\x6f\x70\x74\x69\x6d\x69\x7a\x65']=0.1,_0x1bf54f['\x69\x6e\x6e\x6f\x76\x61\x74\x65']=0.8,_0x1bf54f[_0x35f7af(0x112,'\x4b\x67\x6c\x62')]=0.05,_0x1bf54f[_0x35f7af(0x10e,'\x32\x31\x32\x26')+_0x35f7af(0x13b,'\x33\x73\x54\x77')+_0x35f7af(0xeb,'\x5d\x21\x51\x4a')]=0.3,_0x1bf54f[_0x35f7af(0x16a,'\x2a\x59\x57\x4c')]=_0x35f7af(0x16e,'\x55\x48\x54\x23')+_0x35f7af(0x1df,'\x6f\x54\x38\x5e'),_0x1bf54f[_0x35f7af(0x12c,'\x43\x4c\x35\x37')+_0x35f7af(0x130,'\x32\x31\x32\x26')]=_0x35f7af(0x10d,'\x53\x52\x71\x46')+_0x35f7af(0x13f,'\x75\x68\x43\x4c')+_0x35f7af(0x15a,'\x33\x73\x54\x77')+_0x35f7af(0x1ac,'\x45\x4e\x57\x56')+_0x35f7af(0x16d,'\x53\x52\x71\x46')+_0x35f7af(0x1c0,'\x57\x52\x25\x62')+_0x35f7af(0xf2,'\x75\x68\x43\x4c')+'\x2e';function _0x542a(){var _0x4da19e=['\x57\x4f\x46\x63\x50\x78\x64\x63\x53\x61\x69','\x57\x51\x6e\x4d\x57\x35\x64\x64\x48\x32\x6c\x63\x54\x38\x6f\x49\x76\x71','\x57\x50\x64\x64\x54\x75\x68\x63\x47\x33\x34\x7a\x57\x52\x38\x58','\x57\x4f\x56\x63\x54\x61\x50\x39\x57\x34\x31\x68\x57\x36\x58\x6b','\x57\x4f\x64\x63\x4d\x43\x6b\x59','\x57\x35\x78\x63\x49\x76\x38\x57\x57\x34\x79','\x57\x51\x62\x4b\x79\x38\x6b\x6d\x57\x4f\x33\x63\x53\x43\x6b\x6c\x57\x37\x30','\x57\x4f\x4a\x63\x4e\x38\x6f\x75\x57\x51\x42\x63\x50\x76\x64\x64\x52\x61','\x57\x51\x48\x7a\x70\x72\x69\x4c\x57\x52\x4b','\x57\x37\x39\x39\x63\x47\x30','\x45\x31\x56\x63\x4a\x74\x56\x63\x51\x61','\x75\x53\x6b\x69\x57\x35\x4a\x64\x4c\x38\x6b\x59\x57\x36\x33\x64\x4c\x53\x6f\x4c','\x57\x51\x6a\x67\x57\x37\x65\x55','\x57\x51\x78\x64\x54\x68\x46\x63\x50\x4c\x61','\x57\x35\x31\x4b\x67\x49\x39\x34','\x57\x37\x61\x54\x57\x4f\x56\x63\x48\x73\x37\x64\x54\x6d\x6b\x65\x41\x62\x42\x64\x4f\x6d\x6b\x30\x57\x36\x33\x63\x4e\x57','\x57\x52\x42\x63\x53\x30\x43\x43\x57\x51\x69','\x63\x4d\x38\x49\x57\x36\x30','\x57\x4f\x76\x77\x7a\x43\x6b\x6b\x57\x50\x57','\x73\x67\x33\x64\x52\x43\x6f\x44','\x57\x4f\x6c\x63\x4c\x38\x6f\x57\x57\x51\x6c\x63\x55\x65\x46\x64\x55\x53\x6b\x67','\x57\x52\x70\x64\x55\x62\x79\x4f\x57\x37\x4b\x6f\x57\x50\x65\x66\x79\x57','\x57\x4f\x76\x6e\x57\x37\x79\x47','\x57\x51\x76\x61\x70\x58\x4f\x56\x57\x51\x78\x64\x54\x71','\x57\x50\x39\x76\x78\x38\x6b\x51\x57\x51\x33\x63\x4e\x61','\x78\x78\x6a\x68','\x7a\x43\x6b\x57\x6f\x6d\x6b\x7a\x57\x37\x64\x63\x53\x4a\x78\x63\x47\x38\x6f\x64\x57\x37\x50\x47\x79\x77\x34','\x57\x50\x72\x51\x57\x35\x68\x64\x54\x38\x6b\x49','\x57\x4f\x71\x39\x57\x51\x5a\x64\x51\x67\x70\x64\x4a\x38\x6b\x4e','\x79\x38\x6f\x72\x57\x36\x52\x63\x55\x53\x6b\x2f\x57\x52\x72\x2f\x57\x35\x4f','\x57\x50\x38\x32\x57\x52\x4a\x64\x52\x68\x6c\x64\x53\x53\x6f\x53\x57\x34\x75','\x6f\x6d\x6f\x61\x42\x53\x6f\x54\x57\x52\x6d','\x57\x37\x37\x63\x54\x76\x4a\x63\x4a\x49\x61\x45\x42\x57\x65','\x57\x36\x35\x53\x68\x31\x7a\x75\x77\x4d\x30\x44','\x79\x4e\x52\x63\x4b\x58\x42\x63\x4a\x53\x6b\x2b\x42\x48\x38','\x6e\x62\x70\x64\x47\x38\x6f\x76\x73\x57','\x64\x77\x61\x48\x57\x36\x46\x63\x4e\x53\x6b\x54\x43\x4b\x30','\x57\x50\x64\x63\x56\x48\x71','\x57\x37\x6e\x79\x57\x35\x74\x63\x54\x53\x6b\x4e','\x57\x35\x43\x66\x57\x4f\x4e\x64\x53\x58\x2f\x63\x55\x6d\x6b\x4c\x64\x43\x6b\x56\x61\x61\x68\x64\x54\x61','\x57\x50\x31\x74\x57\x36\x69\x4c\x72\x57','\x42\x4b\x72\x31\x57\x35\x6a\x46\x57\x52\x53','\x70\x53\x6f\x59\x6a\x33\x79\x2f','\x57\x36\x6c\x64\x49\x4b\x2f\x63\x49\x53\x6f\x30','\x79\x33\x76\x6f\x57\x37\x37\x64\x4b\x61','\x6d\x75\x37\x63\x55\x30\x35\x54','\x57\x37\x33\x64\x4e\x31\x70\x63\x51\x6d\x6f\x68\x73\x5a\x4a\x64\x4a\x57','\x57\x4f\x37\x63\x4b\x38\x6b\x2f\x7a\x53\x6f\x57\x57\x34\x48\x32\x57\x37\x30','\x57\x36\x33\x63\x56\x4e\x4f\x71\x57\x37\x34\x67\x57\x52\x61\x6f','\x57\x50\x50\x64\x44\x38\x6b\x4b\x57\x52\x46\x63\x4e\x43\x6b\x34\x57\x35\x65','\x57\x50\x4c\x4a\x57\x35\x34','\x57\x51\x39\x57\x57\x35\x46\x64\x4d\x32\x64\x63\x50\x43\x6f\x66\x73\x71','\x43\x61\x66\x52\x57\x34\x4c\x6d\x57\x51\x64\x63\x47\x75\x69','\x70\x68\x66\x49\x57\x4f\x72\x72','\x57\x50\x50\x33\x76\x53\x6b\x6a\x57\x52\x38','\x45\x6d\x6f\x53\x57\x37\x6c\x63\x56\x53\x6b\x6d','\x57\x4f\x48\x58\x57\x34\x56\x64\x4d\x78\x46\x63\x51\x6d\x6b\x72\x71\x57','\x57\x51\x4e\x63\x4e\x38\x6b\x32\x44\x43\x6f\x35\x57\x34\x35\x39\x57\x37\x4f','\x57\x52\x70\x64\x47\x30\x6c\x63\x54\x75\x53','\x72\x32\x5a\x64\x55\x6d\x6f\x42\x44\x58\x61\x6a\x43\x47','\x76\x38\x6b\x62\x57\x34\x52\x64\x53\x30\x4f','\x6d\x33\x5a\x63\x51\x68\x35\x55\x66\x43\x6f\x64','\x57\x51\x65\x73\x57\x52\x52\x64\x51\x33\x4f','\x57\x51\x72\x72\x57\x37\x4b\x4e\x43\x6d\x6b\x39\x57\x37\x66\x4a','\x57\x51\x7a\x77\x57\x35\x4a\x64\x50\x53\x6b\x4e','\x6c\x72\x34\x39\x57\x4f\x6c\x64\x4c\x43\x6b\x65\x57\x34\x6c\x63\x47\x73\x4b\x4a\x75\x6d\x6f\x68\x69\x47','\x77\x68\x58\x6c\x57\x36\x37\x64\x53\x57','\x57\x36\x48\x44\x70\x61','\x78\x64\x70\x63\x56\x77\x76\x44\x57\x35\x7a\x51\x57\x35\x4f','\x7a\x67\x74\x63\x49\x72\x64\x63\x4c\x43\x6b\x32\x79\x62\x38','\x57\x50\x4e\x63\x56\x43\x6b\x67\x57\x51\x39\x74','\x57\x51\x5a\x63\x53\x43\x6f\x57\x57\x50\x70\x63\x55\x71','\x79\x43\x6b\x5a\x6d\x38\x6f\x39\x62\x53\x6b\x4b\x57\x36\x53\x73','\x57\x35\x33\x63\x55\x43\x6b\x33\x57\x52\x72\x64\x45\x73\x79','\x62\x67\x33\x63\x49\x75\x6e\x5a\x57\x35\x66\x55\x57\x34\x34','\x6e\x38\x6b\x37\x57\x4f\x4e\x64\x4b\x6d\x6b\x73\x57\x37\x64\x63\x4e\x72\x30','\x6e\x4b\x56\x64\x53\x4e\x4c\x72\x70\x4b\x33\x63\x47\x57','\x69\x78\x39\x64','\x57\x34\x6c\x64\x56\x31\x64\x63\x50\x43\x6f\x51','\x57\x51\x5a\x64\x52\x4d\x6d\x7a\x57\x37\x71\x6b\x57\x51\x34\x70','\x57\x36\x53\x42\x57\x50\x6a\x35\x6c\x53\x6b\x43\x57\x52\x31\x35','\x57\x4f\x33\x63\x56\x49\x4c\x4f\x57\x35\x7a\x43\x57\x34\x35\x63','\x42\x30\x48\x39\x57\x35\x78\x63\x4c\x53\x6f\x43\x57\x50\x74\x63\x55\x71','\x6c\x6d\x6b\x4c\x57\x52\x4a\x64\x49\x38\x6b\x74\x57\x52\x53','\x63\x6d\x6f\x73\x57\x4f\x70\x63\x4c\x6d\x6f\x32\x57\x51\x52\x63\x4c\x43\x6f\x6b\x46\x77\x46\x64\x4c\x43\x6f\x71\x57\x37\x6d','\x57\x37\x42\x64\x4c\x66\x6d','\x78\x77\x52\x64\x55\x6d\x6f\x67\x46\x66\x43\x76','\x46\x66\x39\x67\x57\x51\x4c\x37\x45\x43\x6f\x78','\x75\x5a\x6c\x63\x4f\x77\x4c\x6f\x57\x36\x48\x54\x57\x34\x53','\x57\x50\x6a\x64\x76\x61','\x71\x43\x6b\x39\x6c\x6d\x6f\x2b\x61\x43\x6b\x4b\x57\x37\x65','\x57\x50\x56\x64\x4e\x43\x6b\x68\x76\x53\x6b\x75','\x41\x38\x6b\x54\x6b\x38\x6f\x64\x68\x61','\x6e\x49\x70\x64\x47\x53\x6f\x79\x44\x53\x6f\x52\x57\x35\x71','\x57\x4f\x4a\x63\x48\x43\x6b\x56\x57\x52\x66\x54\x77\x71','\x63\x38\x6f\x62\x62\x66\x65\x76','\x57\x34\x31\x44\x79\x63\x70\x63\x50\x66\x52\x63\x4f\x38\x6f\x33\x67\x62\x5a\x64\x53\x75\x52\x64\x48\x57','\x57\x34\x48\x4f\x61\x66\x72\x69\x75\x68\x47\x6e','\x57\x51\x42\x64\x52\x75\x42\x63\x47\x4d\x4b\x72\x57\x36\x58\x34','\x76\x4b\x6e\x48\x57\x35\x56\x63\x4c\x6d\x6f\x75\x57\x4f\x2f\x63\x56\x47','\x57\x50\x52\x63\x47\x53\x6b\x35\x57\x52\x4c\x55\x74\x4b\x62\x38','\x75\x4c\x6c\x63\x4e\x64\x68\x63\x4c\x71','\x57\x51\x62\x51\x43\x38\x6b\x44\x57\x50\x57','\x57\x50\x58\x54\x57\x35\x6c\x64\x4b\x6d\x6b\x47','\x57\x37\x4c\x57\x57\x35\x74\x63\x4f\x38\x6b\x59\x57\x34\x71\x38\x57\x34\x71','\x78\x31\x6c\x63\x4e\x76\x4e\x63\x49\x43\x6f\x46\x57\x52\x6a\x68','\x57\x4f\x47\x6c\x6d\x32\x64\x64\x56\x57\x69','\x6a\x43\x6b\x37\x78\x43\x6f\x4d\x78\x73\x52\x63\x4a\x43\x6b\x35','\x72\x6d\x6f\x2b\x57\x34\x33\x64\x4d\x38\x6b\x6b\x44\x64\x4a\x63\x49\x57\x65\x2b\x72\x75\x7a\x39\x46\x61','\x57\x36\x61\x6f\x57\x50\x76\x5a\x6d\x43\x6b\x43\x57\x52\x44\x4f','\x61\x78\x79\x2f\x57\x36\x74\x63\x48\x38\x6b\x2b\x79\x57','\x57\x4f\x58\x67\x57\x36\x5a\x63\x51\x4c\x78\x64\x51\x43\x6b\x4d\x62\x61','\x6d\x71\x70\x64\x4b\x38\x6f\x4e\x44\x57','\x46\x4c\x35\x51','\x57\x4f\x74\x63\x49\x6d\x6f\x6b','\x57\x36\x2f\x63\x51\x30\x6d\x78\x57\x37\x34\x41','\x57\x4f\x70\x64\x4a\x53\x6b\x71\x76\x47','\x42\x66\x5a\x63\x4a\x62\x4a\x63\x51\x47','\x57\x50\x34\x32\x57\x51\x4e\x64\x56\x33\x4a\x64\x51\x61','\x57\x37\x37\x63\x54\x65\x70\x63\x4d\x74\x34\x65\x79\x61\x65','\x6d\x6d\x6b\x4a\x57\x50\x37\x63\x55\x38\x6f\x49','\x57\x4f\x4a\x63\x4e\x38\x6f\x6e\x57\x52\x4e\x63\x56\x4b\x56\x64\x50\x38\x6b\x6a','\x6b\x67\x52\x63\x4d\x77\x31\x31\x62\x47','\x62\x38\x6b\x65\x57\x35\x46\x64\x51\x75\x65\x31\x46\x38\x6f\x78','\x77\x38\x6b\x2f\x57\x36\x4a\x64\x47\x67\x69\x6a\x6b\x62\x75','\x57\x35\x43\x46\x57\x4f\x6e\x58\x6a\x38\x6b\x6d\x57\x36\x44\x70','\x57\x4f\x58\x5a\x57\x36\x69\x61\x45\x47','\x57\x50\x4a\x63\x4b\x38\x6b\x4e\x79\x47','\x79\x38\x6f\x72\x57\x36\x52\x63\x55\x53\x6b\x2f\x57\x52\x71','\x6e\x4a\x46\x64\x47\x43\x6f\x72\x6e\x57','\x57\x51\x52\x64\x4f\x4c\x42\x63\x4b\x4d\x6d\x37\x57\x37\x4b','\x7a\x53\x6f\x50\x41\x53\x6f\x44\x75\x71','\x71\x43\x6b\x67\x57\x35\x68\x63\x55\x62\x61','\x62\x6d\x6f\x7a\x62\x76\x47\x43\x41\x59\x74\x64\x4d\x47','\x6b\x78\x64\x64\x4e\x67\x44\x4c','\x57\x34\x65\x68\x43\x6d\x6b\x35\x57\x51\x56\x63\x48\x43\x6b\x56\x57\x37\x53','\x6d\x4c\x37\x64\x56\x32\x6d','\x6d\x6d\x6f\x4d\x45\x6d\x6f\x6e\x57\x52\x78\x64\x51\x33\x68\x63\x52\x47','\x76\x74\x31\x38\x57\x52\x2f\x64\x4e\x38\x6f\x38\x6d\x4e\x68\x63\x4d\x43\x6f\x6a\x57\x4f\x50\x45\x7a\x71','\x57\x52\x6e\x76\x57\x37\x57\x36\x41\x43\x6b\x4e\x57\x36\x4c\x4e','\x57\x4f\x37\x63\x51\x53\x6b\x59\x76\x6d\x6f\x57','\x43\x4d\x68\x63\x48\x68\x33\x63\x56\x71','\x57\x50\x78\x63\x56\x47\x48\x35\x57\x4f\x72\x74\x57\x34\x39\x78','\x57\x37\x6c\x63\x47\x76\x34\x36\x57\x35\x57','\x45\x49\x6d\x46\x57\x37\x6d\x66\x62\x53\x6b\x4c\x57\x37\x78\x63\x51\x63\x56\x64\x4b\x43\x6f\x46\x72\x47','\x75\x38\x6b\x62\x57\x34\x5a\x64\x50\x71','\x57\x52\x46\x63\x56\x76\x2f\x63\x4d\x74\x38\x72\x46\x65\x71','\x57\x52\x56\x64\x49\x43\x6f\x41\x79\x67\x4b','\x57\x52\x46\x63\x56\x63\x6a\x78\x57\x36\x69','\x72\x76\x4a\x63\x56\x4a\x78\x63\x4a\x61','\x57\x50\x2f\x63\x47\x53\x6f\x78\x57\x51\x78\x63\x50\x4c\x74\x64\x52\x61','\x6e\x4d\x37\x63\x49\x32\x4c\x57','\x65\x4c\x44\x78\x57\x4f\x7a\x2b','\x71\x5a\x4a\x63\x4f\x78\x6e\x46\x57\x35\x39\x33\x57\x35\x65','\x73\x6d\x6b\x4e\x57\x37\x4e\x64\x4e\x32\x69','\x70\x63\x56\x64\x50\x53\x6f\x43\x41\x38\x6f\x38\x57\x34\x6c\x64\x54\x47','\x6c\x32\x4b\x31\x57\x36\x37\x63\x4d\x71','\x64\x73\x47\x43\x57\x52\x56\x63\x52\x38\x6f\x47\x57\x52\x4e\x63\x4e\x71\x42\x64\x47\x53\x6f\x7a\x57\x51\x74\x63\x4f\x57','\x7a\x43\x6f\x42\x57\x35\x42\x63\x54\x6d\x6b\x48\x57\x51\x6e\x62\x57\x37\x79','\x6c\x6d\x6b\x6a\x57\x50\x52\x63\x4f\x43\x6f\x46','\x43\x65\x66\x52','\x57\x4f\x50\x50\x57\x50\x64\x64\x4d\x38\x6b\x50\x57\x51\x52\x64\x53\x53\x6f\x42','\x57\x52\x74\x64\x50\x75\x42\x63\x4e\x5a\x53\x68\x57\x36\x53\x35','\x57\x52\x4a\x63\x4d\x78\x4e\x63\x4a\x62\x6d','\x7a\x38\x6b\x6c\x57\x35\x78\x64\x48\x66\x39\x46\x57\x50\x74\x63\x53\x71','\x61\x53\x6f\x77\x63\x76\x47\x6d\x78\x63\x6c\x64\x47\x61','\x57\x4f\x64\x63\x4d\x6d\x6b\x59\x57\x52\x44\x38\x76\x48\x4c\x51','\x6f\x53\x6b\x4a\x45\x6d\x6f\x70\x57\x52\x70\x64\x54\x33\x70\x63\x55\x57','\x79\x38\x6f\x4b\x73\x38\x6f\x6c\x72\x73\x78\x63\x48\x53\x6b\x6e','\x57\x50\x33\x63\x54\x61\x4c\x2f\x57\x35\x7a\x43\x57\x35\x62\x72','\x57\x51\x33\x63\x4f\x38\x6b\x55\x57\x52\x7a\x46','\x6b\x65\x38\x39\x57\x36\x37\x63\x49\x71','\x45\x68\x33\x63\x4d\x48\x46\x63\x4d\x43\x6b\x5a\x41\x71','\x6b\x43\x6b\x31\x68\x32\x47\x64\x57\x35\x61\x67\x57\x51\x69','\x57\x50\x64\x64\x54\x6d\x6b\x75\x75\x53\x6b\x51','\x57\x37\x39\x5a\x57\x51\x66\x2b\x71\x61','\x77\x38\x6b\x75\x57\x35\x4e\x64\x49\x47','\x45\x31\x78\x63\x4d\x31\x64\x63\x47\x53\x6f\x73\x57\x51\x61\x74','\x57\x51\x5a\x64\x4f\x66\x79','\x45\x64\x74\x63\x4b\x48\x46\x64\x4d\x6d\x6b\x53\x42\x48\x53','\x57\x52\x72\x37\x57\x34\x4e\x64\x4c\x78\x2f\x63\x54\x47','\x57\x36\x75\x66\x57\x4f\x69\x57\x69\x6d\x6b\x75\x57\x52\x44\x39','\x57\x36\x62\x36\x61\x31\x53','\x71\x58\x2f\x63\x55\x75\x35\x6f','\x57\x34\x4c\x7a\x65\x32\x42\x64\x52\x48\x56\x64\x54\x43\x6f\x38','\x44\x6d\x6f\x78\x57\x36\x37\x63\x53\x53\x6b\x35\x57\x51\x48\x61\x57\x50\x53','\x57\x50\x4a\x64\x4b\x6d\x6b\x62','\x76\x6d\x6b\x66\x57\x36\x37\x64\x52\x33\x6d','\x78\x57\x78\x64\x55\x71','\x42\x63\x33\x64\x52\x76\x4e\x63\x4c\x57','\x57\x36\x54\x35\x68\x66\x4c\x46','\x6f\x78\x6a\x46\x57\x51\x44\x75','\x7a\x38\x6b\x61\x57\x34\x6c\x63\x4a\x57\x44\x76\x57\x4f\x4f','\x44\x38\x6f\x45\x66\x4d\x53\x2f','\x71\x53\x6f\x30\x70\x4e\x61\x46\x57\x50\x65\x58\x57\x51\x38','\x79\x43\x6b\x45\x57\x35\x6c\x63\x47\x58\x6a\x5a\x57\x50\x42\x63\x50\x61','\x69\x6d\x6f\x4d\x42\x38\x6b\x61\x57\x36\x46\x64\x4a\x32\x64\x63\x53\x57','\x57\x52\x64\x64\x55\x66\x46\x63\x4c\x4e\x38\x6e\x57\x52\x69\x52','\x6e\x5a\x37\x64\x47\x43\x6f\x78\x41\x38\x6f\x57\x57\x34\x68\x64\x51\x47','\x57\x37\x7a\x41\x57\x37\x30\x30\x66\x53\x6b\x57\x57\x37\x72\x30','\x69\x77\x69\x51\x57\x35\x52\x63\x55\x61','\x57\x4f\x64\x63\x52\x53\x6b\x30\x57\x52\x31\x71','\x42\x66\x68\x63\x4d\x76\x33\x63\x4b\x53\x6b\x6e\x57\x50\x38\x69','\x57\x4f\x37\x64\x50\x38\x6f\x6d\x63\x65\x64\x64\x55\x47\x37\x64\x51\x47','\x57\x4f\x57\x58\x57\x51\x68\x64\x4f\x78\x6c\x64\x55\x53\x6b\x4b','\x72\x53\x6f\x43\x57\x37\x33\x63\x52\x53\x6b\x7a','\x61\x53\x6f\x74\x70\x33\x61\x69','\x57\x51\x57\x72\x57\x51\x7a\x48\x74\x6d\x6f\x32\x41\x65\x4b','\x57\x50\x2f\x63\x47\x53\x6f\x66\x57\x51\x37\x63\x4a\x65\x56\x64\x50\x43\x6b\x6c','\x57\x4f\x58\x41\x57\x35\x57','\x71\x68\x72\x67\x57\x36\x75','\x46\x31\x42\x63\x47\x66\x64\x63\x4b\x53\x6b\x66\x57\x52\x69\x74','\x70\x64\x78\x63\x4b\x53\x6f\x59\x44\x53\x6f\x36\x57\x34\x74\x64\x52\x71','\x57\x50\x4e\x64\x4b\x6d\x6b\x43','\x57\x36\x39\x67\x6b\x58\x44\x56\x57\x34\x52\x64\x51\x32\x57','\x57\x50\x56\x63\x55\x62\x7a\x31\x57\x35\x62\x6d\x57\x4f\x34','\x57\x37\x56\x64\x4b\x63\x72\x63','\x61\x6d\x6f\x78\x57\x36\x5a\x64\x52\x43\x6b\x45\x57\x37\x4e\x64\x4b\x38\x6f\x33','\x57\x50\x66\x7a\x78\x43\x6b\x4b\x57\x51\x33\x63\x4a\x43\x6f\x53\x57\x35\x75','\x77\x4a\x68\x63\x54\x57','\x78\x6d\x6b\x70\x57\x36\x5a\x64\x49\x43\x6b\x48','\x76\x6d\x6b\x4b\x6b\x6d\x6f\x35','\x57\x52\x2f\x63\x4f\x31\x64\x63\x4c\x63\x61\x43\x79\x76\x75','\x67\x38\x6b\x32\x57\x4f\x2f\x63\x47\x43\x6f\x42\x6b\x4d\x33\x63\x4d\x61','\x57\x4f\x42\x63\x52\x43\x6f\x57\x57\x52\x2f\x63\x51\x57','\x79\x38\x6f\x72\x57\x36\x4e\x63\x54\x6d\x6b\x36\x57\x52\x62\x77\x57\x36\x79','\x79\x75\x48\x30\x57\x35\x72\x7a\x57\x51\x56\x63\x49\x66\x71','\x71\x74\x5a\x63\x50\x32\x38','\x57\x50\x76\x4e\x57\x35\x46\x64\x4c\x57','\x57\x35\x7a\x51\x57\x36\x64\x63\x55\x43\x6b\x4f\x57\x4f\x30\x52\x57\x35\x47','\x75\x53\x6b\x45\x57\x35\x78\x64\x49\x6d\x6b\x4a\x57\x35\x5a\x64\x4a\x6d\x6f\x5a','\x57\x4f\x6c\x63\x4c\x38\x6f\x71\x57\x51\x70\x63\x50\x30\x56\x64\x53\x38\x6b\x6c','\x57\x50\x39\x6d\x57\x37\x4a\x64\x54\x4c\x61','\x57\x37\x44\x6f\x57\x50\x66\x72\x75\x53\x6f\x35\x44\x33\x38','\x57\x4f\x6a\x61\x43\x4c\x74\x64\x54\x72\x6c\x63\x54\x53\x6f\x77','\x69\x6d\x6b\x63\x57\x51\x6c\x63\x49\x38\x6b\x4a\x57\x51\x54\x48\x57\x35\x7a\x6c','\x62\x67\x4a\x64\x4f\x74\x47\x46\x57\x4f\x35\x6c\x57\x34\x78\x63\x50\x68\x2f\x64\x4c\x38\x6b\x54','\x57\x50\x48\x49\x57\x37\x46\x64\x4b\x53\x6b\x79','\x43\x66\x37\x64\x55\x6d\x6f\x36\x44\x61','\x6c\x57\x78\x64\x4e\x57\x37\x64\x47\x38\x6f\x70\x57\x36\x66\x75\x6a\x53\x6f\x75\x57\x4f\x46\x63\x53\x6d\x6f\x72\x57\x37\x57','\x77\x53\x6b\x4a\x57\x36\x33\x64\x47\x33\x75\x56\x7a\x57\x4b','\x43\x31\x5a\x63\x53\x31\x68\x63\x4e\x61','\x43\x6d\x6f\x77\x57\x37\x70\x63\x54\x38\x6b\x2f\x57\x52\x58\x77','\x45\x4c\x76\x2f\x57\x35\x4a\x63\x4a\x43\x6f\x68\x57\x50\x34','\x71\x43\x6f\x38\x57\x34\x52\x64\x4d\x6d\x6b\x6b\x43\x68\x52\x64\x4d\x73\x57\x65\x43\x75\x79','\x57\x52\x2f\x63\x4c\x77\x53','\x57\x4f\x56\x63\x54\x61\x50\x39\x57\x34\x31\x68','\x57\x37\x79\x6f\x57\x50\x7a\x58\x6b\x53\x6b\x68','\x6b\x4e\x66\x62\x57\x51\x72\x43\x76\x6d\x6f\x35\x57\x34\x43','\x7a\x75\x56\x63\x4a\x47\x33\x63\x4d\x43\x6b\x52\x46\x31\x71','\x57\x52\x2f\x63\x52\x6d\x6b\x30\x57\x4f\x54\x48'];_0x542a=function(){return _0x4da19e;};return _0x542a();}var _0x80a32f={};_0x80a32f['\x72\x65\x70\x61\x69\x72']=0.4,_0x80a32f[_0x35f7af(0xf7,'\x4b\x67\x6c\x62')]=0.35,_0x80a32f['\x69\x6e\x6e\x6f\x76\x61\x74\x65']=0.2,_0x80a32f[_0x35f7af(0x103,'\x55\x48\x54\x23')]=0.05,_0x80a32f['\x72\x65\x70\x61\x69\x72\x4c\x6f'+_0x35f7af(0x156,'\x56\x5b\x31\x59')+_0x35f7af(0x1c5,'\x57\x7a\x5b\x73')]=0.7,_0x80a32f[_0x35f7af(0x172,'\x45\x4e\x57\x56')]='\x48\x61\x72\x64\x65\x6e\x69\x6e'+'\x67',_0x80a32f['\x64\x65\x73\x63\x72\x69\x70\x74'+_0x35f7af(0x1c7,'\x45\x63\x6d\x6b')]=_0x35f7af(0x174,'\x4b\x67\x28\x5d')+_0x35f7af(0x1d6,'\x48\x41\x5d\x72')+'\x67\x65\x2e\x20\x46\x6f\x63\x75'+_0x35f7af(0x1be,'\x39\x47\x51\x2a')+_0x35f7af(0x1e5,'\x29\x41\x59\x44')+'\x6e\x64\x20\x72\x6f\x62\x75\x73'+_0x35f7af(0x15e,'\x56\x5b\x31\x59');var _0x24ee79={};_0x24ee79[_0x35f7af(0x106,'\x32\x31\x32\x26')]=0.8,_0x24ee79[_0x35f7af(0x157,'\x6c\x25\x73\x6b')]=0.18,_0x24ee79[_0x35f7af(0x19d,'\x4d\x30\x65\x4a')]=0x0,_0x24ee79[_0x35f7af(0x168,'\x6f\x54\x38\x5e')]=0.02,_0x24ee79[_0x35f7af(0x128,'\x62\x59\x5d\x67')+_0x35f7af(0x17a,'\x77\x79\x50\x6c')+_0x35f7af(0x1ab,'\x55\x48\x54\x23')]=0x1,_0x24ee79[_0x35f7af(0x166,'\x57\x7a\x5b\x73')]='\x52\x65\x70\x61\x69\x72\x20\x4f'+_0x35f7af(0x1e0,'\x57\x7a\x5b\x73'),_0x24ee79[_0x35f7af(0x1b4,'\x32\x31\x32\x26')+_0x35f7af(0x158,'\x77\x6a\x55\x65')]=_0x35f7af(0x144,'\x29\x69\x4b\x55')+_0x35f7af(0xfa,'\x76\x31\x42\x69')+_0x35f7af(0x1a4,'\x5d\x21\x51\x4a')+'\x67\x20\x62\x65\x66\x6f\x72\x65'+_0x35f7af(0x186,'\x66\x43\x25\x73')+_0x35f7af(0xef,'\x56\x55\x69\x50')+_0x35f7af(0x18c,'\x6f\x54\x38\x5e');var _0x27ac78={};_0x27ac78[_0x35f7af(0x185,'\x67\x28\x6e\x79')]=0.6,_0x27ac78[_0x35f7af(0x15b,'\x57\x52\x25\x62')]=0.22,_0x27ac78[_0x35f7af(0x13e,'\x52\x73\x4b\x5a')]=0.15,_0x27ac78[_0x35f7af(0x122,'\x65\x50\x4a\x69')]=0.03,_0x27ac78[_0x35f7af(0x1d5,'\x4b\x67\x28\x5d')+_0x35f7af(0x11f,'\x4b\x67\x6c\x62')+_0x35f7af(0x1bd,'\x53\x52\x71\x46')]=0.8,_0x27ac78['\x6c\x61\x62\x65\x6c']=_0x35f7af(0x1cd,'\x4e\x29\x21\x5e')+_0x35f7af(0x1de,'\x4b\x67\x28\x5d')+_0x35f7af(0x17d,'\x4b\x67\x6c\x62'),_0x27ac78[_0x35f7af(0x178,'\x57\x52\x25\x62')+_0x35f7af(0x13d,'\x45\x4e\x57\x56')]=_0x35f7af(0x173,'\x5a\x5d\x52\x78')+'\x63\x6c\x65\x73\x2e\x20\x50\x72'+_0x35f7af(0xf9,'\x29\x6f\x45\x6b')+_0x35f7af(0x12b,'\x4d\x30\x65\x4a')+_0x35f7af(0x184,'\x4b\x67\x6c\x62')+'\x20\x69\x73\x73\x75\x65\x73\x20'+_0x35f7af(0x100,'\x5a\x36\x55\x32')+'\x6e\x6e\x6f\x76\x61\x74\x69\x6e'+'\x67\x2e';var _0x139887={};_0x139887[_0x35f7af(0x1bf,'\x52\x73\x4b\x5a')]=0.55,_0x139887[_0x35f7af(0x150,'\x39\x47\x51\x2a')]=0.25,_0x139887[_0x35f7af(0x12f,'\x28\x24\x55\x4d')]=0.05,_0x139887['\x65\x78\x70\x6c\x6f\x72\x65']=0.15,_0x139887['\x72\x65\x70\x61\x69\x72\x4c\x6f'+_0x35f7af(0x1a6,'\x6f\x54\x38\x5e')+_0x35f7af(0x1dc,'\x77\x79\x50\x6c')]=0.9,_0x139887[_0x35f7af(0x1a2,'\x67\x28\x6e\x79')]=_0x35f7af(0x188,'\x57\x52\x25\x62')+_0x35f7af(0x19c,'\x66\x43\x25\x73'),_0x139887[_0x35f7af(0x1d1,'\x6f\x54\x38\x5e')+_0x35f7af(0x124,'\x4e\x36\x4b\x23')]=_0x35f7af(0x153,'\x55\x33\x68\x51')+_0x35f7af(0x1b2,'\x49\x6c\x6a\x53')+_0x35f7af(0x1cf,'\x49\x6c\x6a\x53')+_0x35f7af(0x146,'\x64\x33\x39\x6d')+'\x69\x73\x74\x69\x6e\x67\x20\x63'+_0x35f7af(0xee,'\x4d\x30\x65\x4a')+_0x35f7af(0x1af,'\x5b\x4c\x6f\x66')+_0x35f7af(0x199,'\x32\x31\x32\x26')+_0x35f7af(0x1d2,'\x34\x31\x77\x51')+_0x35f7af(0x1c4,'\x62\x59\x5d\x67');var _0x4f7e21={};function _0x360a(_0xa24cdb,_0x2639b7){_0xa24cdb=_0xa24cdb-(-0xe8f+0x9b*0x1b+-0xdf);var _0x4061a6=_0x542a();var _0x50ad4a=_0x4061a6[_0xa24cdb];if(_0x360a['\x74\x6c\x6c\x4e\x53\x41']===undefined){var _0x194847=function(_0x4ad570){var _0x48c331='\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';var _0x456d07='',_0xc15b0b='',_0xd9725=_0x456d07+_0x194847,_0x488939=(''+function(){return 0x535+0xa*-0x39d+0x1eed;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0x2*-0xf4+-0x192*0xe+-0x1415*-0x1);for(var _0x1d14ce=0x194*0x1+0x24b*0x5+-0x3*0x459,_0x4af4a9,_0x1cacd6,_0x3257c8=-0x16a2+0xb*-0x33f+-0x1d*-0x203;_0x1cacd6=_0x4ad570['\x63\x68\x61\x72\x41\x74'](_0x3257c8++);~_0x1cacd6&&(_0x4af4a9=_0x1d14ce%(-0x42e+0x1*-0x945+0xd77)?_0x4af4a9*(-0x1a3*0x7+0x24c3+-0x190e)+_0x1cacd6:_0x1cacd6,_0x1d14ce++%(-0x1*-0x51d+-0x1ec3+0x3*0x88e))?_0x456d07+=_0x488939||_0xd9725['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3257c8+(0x3ab+-0x8d*-0xd+0xaca*-0x1))-(-0x17*-0x2b+-0x8*0x2c3+0x1245)!==0xc7d*0x1+-0x24cd*-0x1+-0x314a*0x1?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0x15f9+0x1*0x220f+-0xc1*0x49&_0x4af4a9>>(-(0x22*0xf3+-0x53d+0xbb*-0x25)*_0x1d14ce&0x16a6+-0x6*0x163+-0xe4e)):_0x1d14ce:0x1*0x16b4+-0x1*0x1e25+0x771){_0x1cacd6=_0x48c331['\x69\x6e\x64\x65\x78\x4f\x66'](_0x1cacd6);}for(var _0x4ba20e=0x2590+0x1c0a+-0x3*0x15de,_0x114955=_0x456d07['\x6c\x65\x6e\x67\x74\x68'];_0x4ba20e<_0x114955;_0x4ba20e++){_0xc15b0b+='\x25'+('\x30\x30'+_0x456d07['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x4ba20e)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x1ac5+0x2a5*0x7+-0x2d38))['\x73\x6c\x69\x63\x65'](-(-0x72e*0x3+0xc*0x18c+0x2fc));}return decodeURIComponent(_0xc15b0b);};var _0x2471e6=function(_0x3a19de,_0x3ed688){var _0xedf60d=[],_0x12c484=-0x5*0x17+0x5cb+-0x558,_0x2c33e6,_0x40da6a='';_0x3a19de=_0x194847(_0x3a19de);var _0x15b17f;for(_0x15b17f=0x95*-0x40+0xe5*-0x23+0x448f;_0x15b17f<-0x1ce9+-0x1*-0x1afb+0x2ee;_0x15b17f++){_0xedf60d[_0x15b17f]=_0x15b17f;}for(_0x15b17f=0x1c*-0x128+-0x15e3+0x3643;_0x15b17f<0x21e1+0x1*-0x1a03+-0x24a*0x3;_0x15b17f++){_0x12c484=(_0x12c484+_0xedf60d[_0x15b17f]+_0x3ed688['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x15b17f%_0x3ed688['\x6c\x65\x6e\x67\x74\x68']))%(-0x6de+-0x147*-0x2+0x550),_0x2c33e6=_0xedf60d[_0x15b17f],_0xedf60d[_0x15b17f]=_0xedf60d[_0x12c484],_0xedf60d[_0x12c484]=_0x2c33e6;}_0x15b17f=-0x10c3*0x1+0x1*0x9fa+0x6c9,_0x12c484=0x3*0xc59+0xa*-0xa3+0x1*-0x1ead;for(var _0x2486d4=0x1*-0x102a+0x1545+-0x1*0x51b;_0x2486d4<_0x3a19de['\x6c\x65\x6e\x67\x74\x68'];_0x2486d4++){_0x15b17f=(_0x15b17f+(0x181f+0x2217+-0x3a35))%(0x1*0x159d+-0x106a+-0x19*0x2b),_0x12c484=(_0x12c484+_0xedf60d[_0x15b17f])%(-0x19ec+-0x1c67+0x1*0x3753),_0x2c33e6=_0xedf60d[_0x15b17f],_0xedf60d[_0x15b17f]=_0xedf60d[_0x12c484],_0xedf60d[_0x12c484]=_0x2c33e6,_0x40da6a+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x3a19de['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x2486d4)^_0xedf60d[(_0xedf60d[_0x15b17f]+_0xedf60d[_0x12c484])%(0x1154+0x6d4+0x98*-0x27)]);}return _0x40da6a;};_0x360a['\x72\x6c\x61\x4f\x65\x6c']=_0x2471e6,_0x360a['\x6d\x74\x49\x79\x67\x65']={},_0x360a['\x74\x6c\x6c\x4e\x53\x41']=!![];}var _0x19b325=_0x4061a6[-0x18a6+-0xf30+0x27d6],_0x225624=_0xa24cdb+_0x19b325,_0x31989a=_0x360a['\x6d\x74\x49\x79\x67\x65'][_0x225624];if(!_0x31989a){if(_0x360a['\x6d\x78\x45\x5a\x49\x65']===undefined){var _0x93491=function(_0x4b1232){this['\x41\x67\x6c\x62\x6f\x58']=_0x4b1232,this['\x4e\x52\x63\x41\x61\x58']=[-0x1bce+0x4f*-0x11+0x210e,-0x2646+-0x1636+0x3c7c,-0x2683+0x1*0x233+0x14c*0x1c],this['\x47\x4b\x62\x64\x6d\x4a']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x72\x63\x48\x72\x42\x6d']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x56\x4d\x44\x5a\x4a\x51']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x93491['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x67\x70\x6d\x76\x47\x7a']=function(){var _0x30eda3=new RegExp(this['\x72\x63\x48\x72\x42\x6d']+this['\x56\x4d\x44\x5a\x4a\x51']),_0x55048f=_0x30eda3['\x74\x65\x73\x74'](this['\x47\x4b\x62\x64\x6d\x4a']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x4e\x52\x63\x41\x61\x58'][-0x1aa*-0xd+-0x104*-0x10+-0x25e1*0x1]:--this['\x4e\x52\x63\x41\x61\x58'][0x36*-0x71+0x2199+0x7*-0x165];return this['\x6b\x73\x45\x63\x58\x46'](_0x55048f);},_0x93491['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x6b\x73\x45\x63\x58\x46']=function(_0x3efa3e){if(!Boolean(~_0x3efa3e))return _0x3efa3e;return this['\x46\x77\x59\x64\x61\x4a'](this['\x41\x67\x6c\x62\x6f\x58']);},_0x93491['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x46\x77\x59\x64\x61\x4a']=function(_0x1858d3){for(var _0x31479f=0xe67*-0x1+0x3cc*0x3+0x303,_0xe10042=this['\x4e\x52\x63\x41\x61\x58']['\x6c\x65\x6e\x67\x74\x68'];_0x31479f<_0xe10042;_0x31479f++){this['\x4e\x52\x63\x41\x61\x58']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0xe10042=this['\x4e\x52\x63\x41\x61\x58']['\x6c\x65\x6e\x67\x74\x68'];}return _0x1858d3(this['\x4e\x52\x63\x41\x61\x58'][-0xb*-0x3d+-0x16ea+-0x5*-0x40f]);},(''+function(){return 0x2b*0x85+-0x863+-0x26*0x5e;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0xf7f+-0xc9*-0x31+-0x35f7)&&new _0x93491(_0x360a)['\x67\x70\x6d\x76\x47\x7a'](),_0x360a['\x6d\x78\x45\x5a\x49\x65']=!![];}_0x50ad4a=_0x360a['\x72\x6c\x61\x4f\x65\x6c'](_0x50ad4a,_0x2639b7),_0x360a['\x6d\x74\x49\x79\x67\x65'][_0x225624]=_0x50ad4a;}else _0x50ad4a=_0x31989a;return _0x50ad4a;}_0x4f7e21[_0x35f7af(0x13a,'\x29\x69\x4b\x55')]=_0x21621f,_0x4f7e21[_0x35f7af(0x14f,'\x5d\x21\x51\x4a')]=_0x1bf54f,_0x4f7e21[_0x35f7af(0x113,'\x65\x50\x4a\x69')]=_0x80a32f,_0x4f7e21[_0x35f7af(0x129,'\x43\x53\x4c\x57')+_0x35f7af(0x160,'\x38\x21\x34\x6e')]=_0x24ee79,_0x4f7e21['\x65\x61\x72\x6c\x79\x2d\x73\x74'+_0x35f7af(0x1d7,'\x43\x53\x4c\x57')]=_0x27ac78,_0x4f7e21[_0x35f7af(0x1d0,'\x53\x52\x71\x46')+_0x35f7af(0x18a,'\x29\x69\x4b\x55')]=_0x139887;var _0x5cce82=_0x4f7e21;function _0x4eb8bf(){var _0x534c45=_0x35f7af,_0x250a5a={};_0x250a5a[_0x534c45(0x145,'\x53\x52\x71\x46')]=_0x534c45(0x114,'\x43\x4c\x35\x37'),_0x250a5a[_0x534c45(0x140,'\x77\x6a\x55\x65')]=_0x534c45(0x1e1,'\x31\x32\x53\x70')+_0x534c45(0xf3,'\x5d\x21\x51\x4a'),_0x250a5a[_0x534c45(0x12a,'\x49\x6c\x6a\x53')]=function(_0x3dd102,_0x3d8453){return _0x3dd102===_0x3d8453;},_0x250a5a[_0x534c45(0x17b,'\x6f\x54\x38\x5e')]='\x66\x47\x4b\x55\x6a',_0x250a5a[_0x534c45(0x1ba,'\x29\x6f\x45\x6b')]=_0x534c45(0x1c2,'\x5d\x21\x51\x4a'),_0x250a5a['\x6c\x55\x6d\x41\x46']='\x65\x76\x6f\x6c\x75\x74\x69\x6f'+'\x6e\x5f\x73\x74\x61\x74\x65\x2e'+_0x534c45(0x1bb,'\x51\x4e\x30\x4a'),_0x250a5a[_0x534c45(0x1d4,'\x41\x28\x72\x32')]='\x65\x76\x6f\x6c\x75\x74\x69\x6f'+'\x6e',_0x250a5a[_0x534c45(0x152,'\x4b\x67\x6c\x62')]=function(_0x3fb328,_0x2a2fe3){return _0x3fb328<_0x2a2fe3;},_0x250a5a[_0x534c45(0x101,'\x4b\x67\x28\x5d')]=function(_0x18f2ca,_0xf954ad){return _0x18f2ca!==_0xf954ad;},_0x250a5a[_0x534c45(0x1b6,'\x28\x24\x55\x4d')]=_0x534c45(0x136,'\x38\x21\x34\x6e');var _0x6973fc=_0x250a5a;try{if(_0x6973fc[_0x534c45(0x1c6,'\x5a\x36\x55\x32')](_0x6973fc[_0x534c45(0x197,'\x29\x69\x4b\x55')],_0x6973fc['\x61\x52\x42\x46\x66'])){if(_0x34b7ae[_0x534c45(0x10c,'\x52\x73\x4b\x5a')+'\x6e\x63'](_0x3429c1[_0x386cee])){var _0x427975=_0x3467f4[_0x534c45(0x147,'\x66\x43\x25\x73')](_0x14b892[_0x534c45(0x1db,'\x4b\x67\x6c\x62')+_0x534c45(0x121,'\x34\x31\x77\x51')](_0x3e6eb6[_0x23798d],_0x6973fc[_0x534c45(0x115,'\x39\x47\x51\x2a')]));return _0x427975&&_0x52b45a[_0x534c45(0xf5,'\x5a\x5d\x52\x78')](_0x427975[_0x534c45(0x190,'\x2a\x59\x57\x4c')+'\x6e\x74'])?_0x427975[_0x534c45(0x187,'\x5a\x36\x55\x32')+'\x6e\x74']:0x169*0x2+0x24ae+0x8*-0x4f0;}}else{var _0x4d5d1e=_0x8d714d['\x72\x65\x73\x6f\x6c\x76\x65'](__dirname,'\x2e\x2e','\x2e\x2e',_0x534c45(0x134,'\x75\x68\x43\x4c'),_0x6973fc[_0x534c45(0x198,'\x4b\x67\x28\x5d')]),_0x3cd27e=_0x8d714d[_0x534c45(0x1a1,'\x4b\x67\x6c\x62')](__dirname,'\x2e\x2e','\x2e\x2e','\x2e\x2e','\x2e\x2e',_0x534c45(0x17e,'\x33\x73\x54\x77'),_0x6973fc[_0x534c45(0x142,'\x62\x59\x5d\x67')],'\x65\x76\x6f\x6c\x75\x74\x69\x6f'+_0x534c45(0x109,'\x39\x47\x51\x2a')+_0x534c45(0x1c1,'\x43\x4c\x35\x37')),_0x46d9e4=[_0x4d5d1e,_0x3cd27e];for(var _0x5860e9=-0x59c+0x1a6*0x5+0x1*-0x2a2;_0x6973fc[_0x534c45(0x119,'\x31\x32\x53\x70')](_0x5860e9,_0x46d9e4[_0x534c45(0x123,'\x29\x41\x59\x44')]);_0x5860e9++){if(_0x66da12['\x65\x78\x69\x73\x74\x73\x53\x79'+'\x6e\x63'](_0x46d9e4[_0x5860e9])){if(_0x6973fc[_0x534c45(0xec,'\x51\x4e\x30\x4a')](_0x6973fc[_0x534c45(0x131,'\x5a\x5d\x52\x78')],_0x6973fc[_0x534c45(0x149,'\x43\x53\x4c\x57')]))_0x4657ae=_0x6973fc['\x74\x61\x4f\x41\x63'];else{var _0x28e6df=JSON[_0x534c45(0x1a5,'\x5a\x36\x55\x32')](_0x66da12[_0x534c45(0x14a,'\x34\x31\x77\x51')+_0x534c45(0xf4,'\x52\x73\x4b\x5a')](_0x46d9e4[_0x5860e9],_0x6973fc[_0x534c45(0x19a,'\x33\x73\x54\x77')]));return _0x28e6df&&Number[_0x534c45(0x13c,'\x29\x41\x59\x44')](_0x28e6df['\x63\x79\x63\x6c\x65\x43\x6f\x75'+'\x6e\x74'])?_0x28e6df[_0x534c45(0xf6,'\x51\x4e\x30\x4a')+'\x6e\x74']:0x66*0x5c+-0x1b7f*-0x1+-0x4027;}}}}}catch(_0x2f08f1){}return-0x233a+-0x114e+0x52*0xa4;}function _0x2da6da(_0x2eac6b){var _0x43507d=_0x35f7af,_0x418da2={'\x44\x55\x72\x6e\x55':function(_0x1f5075){return _0x1f5075();},'\x53\x5a\x42\x50\x45':function(_0x221c3a,_0x6b062){return _0x221c3a<=_0x6b062;},'\x4e\x6d\x58\x4b\x46':_0x43507d(0x1bc,'\x4b\x67\x28\x5d')+_0x43507d(0x102,'\x62\x59\x5d\x67'),'\x56\x5a\x68\x53\x6b':function(_0x14e61c,_0x54f1c8){return _0x14e61c!==_0x54f1c8;},'\x4b\x67\x7a\x66\x71':_0x43507d(0x163,'\x5d\x21\x51\x4a')+_0x43507d(0x196,'\x34\x31\x77\x51')+'\x74\x65','\x5a\x47\x7a\x43\x4c':_0x43507d(0x16f,'\x41\x28\x72\x32')+'\x74\x61\x74\x65','\x59\x52\x41\x42\x46':_0x43507d(0x1b0,'\x2a\x59\x57\x4c')+'\x6e\x5f\x73\x61\x74\x75\x72\x61'+_0x43507d(0x1dd,'\x4e\x36\x4b\x23'),'\x69\x47\x67\x44\x66':function(_0x21de33,_0x458066){return _0x21de33(_0x458066);},'\x59\x46\x61\x48\x6d':_0x43507d(0x108,'\x77\x6a\x55\x65'),'\x4f\x68\x77\x52\x6f':function(_0x231abd,_0x22523d){return _0x231abd===_0x22523d;},'\x76\x66\x54\x47\x45':_0x43507d(0x17f,'\x57\x7a\x5b\x73'),'\x67\x48\x71\x61\x52':function(_0x1a4273,_0x10fa91){return _0x1a4273===_0x10fa91;},'\x66\x4a\x48\x7a\x5a':_0x43507d(0x11e,'\x64\x33\x39\x6d'),'\x6b\x41\x52\x42\x71':function(_0x1c4278,_0x4a78d4){return _0x1c4278&&_0x4a78d4;},'\x65\x73\x59\x44\x71':_0x43507d(0x1d8,'\x62\x59\x5d\x67'),'\x4e\x4c\x43\x4c\x74':function(_0x59904e,_0x214c1e){return _0x59904e<=_0x214c1e;},'\x66\x78\x45\x51\x4b':_0x43507d(0x10b,'\x4d\x30\x65\x4a'),'\x68\x6e\x47\x67\x54':'\x4d\x57\x4b\x70\x4f'},_0x590364=_0x2eac6b&&Array[_0x43507d(0x148,'\x67\x28\x6e\x79')](_0x2eac6b['\x73\x69\x67\x6e\x61\x6c\x73'])?_0x2eac6b[_0x43507d(0x1b7,'\x39\x47\x51\x2a')]:[],_0x49e12c=_0x418da2[_0x43507d(0x141,'\x29\x41\x59\x44')](String,process.env.EVOLVE_STRATEGY||_0x418da2[_0x43507d(0xfe,'\x64\x33\x39\x6d')])['\x74\x6f\x4c\x6f\x77\x65\x72\x43'+_0x43507d(0x164,'\x29\x41\x59\x44')]()[_0x43507d(0x117,'\x34\x31\x77\x51')](),_0x37244d=![];if(!process.env.EVOLVE_STRATEGY){var _0x1fad46=String(process.env.FORCE_INNOVATION||process.env.EVOLVE_FORCE_INNOVATION||'')[_0x43507d(0x1a9,'\x62\x59\x5d\x67')+_0x43507d(0x17c,'\x55\x48\x54\x23')]();_0x418da2[_0x43507d(0x18f,'\x5b\x4c\x6f\x66')](_0x1fad46,_0x418da2[_0x43507d(0x11d,'\x29\x41\x59\x44')])&&(_0x49e12c=_0x43507d(0x1b1,'\x41\x28\x72\x32'),_0x37244d=!![]);}var _0x560045=!process.env.EVOLVE_STRATEGY||_0x418da2[_0x43507d(0x1b9,'\x57\x7a\x5b\x73')](_0x49e12c,_0x418da2[_0x43507d(0x1aa,'\x56\x55\x69\x50')])||_0x418da2[_0x43507d(0x167,'\x55\x33\x68\x51')](_0x49e12c,_0x418da2[_0x43507d(0x1ae,'\x4d\x30\x65\x4a')]);if(_0x418da2[_0x43507d(0x138,'\x67\x28\x6e\x79')](_0x560045,!_0x37244d)){if(_0x418da2[_0x43507d(0x10a,'\x41\x28\x72\x32')](_0x418da2[_0x43507d(0x1d9,'\x2a\x59\x57\x4c')],_0x43507d(0x137,'\x4e\x36\x4b\x23'))){var _0x5d14f6=_0x418da2[_0x43507d(0x1b5,'\x41\x28\x72\x32')](_0x1f20f9);_0x5d14f6>0x2*-0x184+-0xdd*0x19+-0x189d*-0x1&&_0x418da2[_0x43507d(0x171,'\x29\x41\x59\x44')](_0x5d14f6,0x2691+0x154b*0x1+-0x1*0x3bd7)&&(_0x4141ba=_0x418da2[_0x43507d(0x19f,'\x32\x31\x32\x26')]);if(_0x418da2['\x56\x5a\x68\x53\x6b'](_0x5d88ff[_0x43507d(0x18d,'\x53\x52\x71\x46')](_0x418da2[_0x43507d(0x1a7,'\x28\x24\x55\x4d')]),-(-0x478+-0xb80*-0x2+0x33*-0x5d)))_0x299b07=_0x418da2[_0x43507d(0x189,'\x34\x31\x77\x51')];else _0x418da2['\x56\x5a\x68\x53\x6b'](_0x27c523['\x69\x6e\x64\x65\x78\x4f\x66'](_0x418da2[_0x43507d(0x135,'\x2a\x59\x57\x4c')]),-(-0x65d+-0x3*0xb35+-0x1d*-0x161))&&(_0x505c27=_0x418da2[_0x43507d(0x1a3,'\x77\x6a\x55\x65')]);}else{var _0x177da6=_0x4eb8bf();_0x177da6>0x73e*-0x3+-0x3*-0xcfa+0x3*-0x5bc&&_0x418da2[_0x43507d(0x1a0,'\x39\x47\x51\x2a')](_0x177da6,-0x2*-0xda0+-0xf79+-0x46*0x2b)&&(_0x418da2[_0x43507d(0x180,'\x39\x47\x51\x2a')](_0x418da2[_0x43507d(0x118,'\x53\x52\x71\x46')],_0x418da2[_0x43507d(0xfd,'\x45\x4e\x57\x56')])?_0x24036c=_0x418da2[_0x43507d(0x1c8,'\x45\x63\x6d\x6b')]:_0x49e12c=_0x43507d(0x1bc,'\x4b\x67\x28\x5d')+'\x61\x62\x69\x6c\x69\x7a\x65');if(_0x590364[_0x43507d(0x1cb,'\x5b\x4c\x6f\x66')](_0x418da2[_0x43507d(0x133,'\x34\x31\x77\x51')])!==-(-0x2239+-0x65*0x53+0x42f9))_0x49e12c=_0x418da2[_0x43507d(0x1a3,'\x77\x6a\x55\x65')];else _0x418da2[_0x43507d(0x14b,'\x45\x4e\x57\x56')](_0x590364[_0x43507d(0x127,'\x43\x53\x4c\x57')](_0x418da2[_0x43507d(0xf8,'\x52\x73\x4b\x5a')]),-(0x8d*-0x1d+-0xf8*-0x2+0xe0a))&&(_0x49e12c=_0x418da2[_0x43507d(0x159,'\x38\x21\x34\x6e')]);}}if(_0x418da2[_0x43507d(0x12e,'\x6f\x54\x38\x5e')](_0x49e12c,_0x418da2[_0x43507d(0x11b,'\x64\x4d\x71\x68')]))_0x49e12c=_0x418da2[_0x43507d(0x170,'\x39\x47\x51\x2a')];var _0x7b584c=_0x5cce82[_0x49e12c]||_0x5cce82[_0x418da2[_0x43507d(0xfe,'\x64\x33\x39\x6d')]],_0x560039={};return _0x560039[_0x43507d(0x11c,'\x28\x24\x55\x4d')]=_0x49e12c,Object[_0x43507d(0x169,'\x41\x28\x72\x32')]({},_0x7b584c,_0x560039);}function _0x24d781(){var _0x1b3fe1=_0x35f7af;return Object[_0x1b3fe1(0x193,'\x6c\x25\x73\x6b')](_0x5cce82);}var _0x1fd7cd={};_0x1fd7cd[_0x35f7af(0xf1,'\x62\x59\x5d\x67')+_0x35f7af(0x161,'\x64\x33\x39\x6d')]=_0x2da6da,_0x1fd7cd['\x67\x65\x74\x53\x74\x72\x61\x74'+_0x35f7af(0x139,'\x38\x21\x34\x6e')]=_0x24d781,_0x1fd7cd[_0x35f7af(0x111,'\x29\x41\x59\x44')+'\x45\x53']=_0x5cce82,module[_0x35f7af(0x165,'\x55\x33\x68\x51')]=_0x1fd7cd;
|
package/src/gep/tokenSavings.js
CHANGED
|
@@ -1,88 +1 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
// Grounded FALLBACK estimate for "tokens saved by reusing an asset".
|
|
4
|
-
//
|
|
5
|
-
// The real number is the measured cost of the avoided derive loop, captured
|
|
6
|
-
// from the proxy trace meter (see src/proxy/trace/usage.js) and carried on the
|
|
7
|
-
// reused asset as `derivation_tokens`. This estimator is only used when that
|
|
8
|
-
// measured cost is unavailable -- the asset was derived with the proxy off, or
|
|
9
|
-
// predates token telemetry. Reusing a verified capsule avoids re-running a
|
|
10
|
-
// derive loop; we approximate that loop's size from the asset's own
|
|
11
|
-
// blast_radius (a real, per-asset signal), so the estimate scales with how big
|
|
12
|
-
// the change actually was instead of being a flat constant.
|
|
13
|
-
//
|
|
14
|
-
// Calibration: a median patch (~75 changed lines) reproduces the ~180k tokens
|
|
15
|
-
// the desktop savings model historically assumed:
|
|
16
|
-
// DERIVE_BASE_TOKENS + TYPICAL_CHANGED_LINES * TOKENS_PER_CHANGED_LINE
|
|
17
|
-
// = 120_000 + 75 * 800 = 180_000.
|
|
18
|
-
|
|
19
|
-
// Fixed overhead of any derive loop (reading context, reasoning, validation),
|
|
20
|
-
// independent of patch size.
|
|
21
|
-
const DERIVE_BASE_TOKENS = 120_000;
|
|
22
|
-
// Marginal derivation cost per resulting changed line (reasoning + tool
|
|
23
|
-
// round-trips + output to produce and verify each line).
|
|
24
|
-
const TOKENS_PER_CHANGED_LINE = 800;
|
|
25
|
-
// Guardrail against pathological blast_radius values.
|
|
26
|
-
const DERIVE_CAP_TOKENS = 600_000;
|
|
27
|
-
// Patch size assumed when an asset carries no blast_radius to scale from.
|
|
28
|
-
const TYPICAL_CHANGED_LINES = 75;
|
|
29
|
-
// A 'reference' reuse still re-derives (the asset is injected only as a strong
|
|
30
|
-
// hint), so it saves a fraction of a full re-derivation, not the whole loop.
|
|
31
|
-
const REFERENCE_SAVING_FRACTION = 0.4;
|
|
32
|
-
|
|
33
|
-
function _blastLines(asset) {
|
|
34
|
-
const br = asset && (asset.blast_radius || (asset.payload && asset.payload.blast_radius));
|
|
35
|
-
if (br && typeof br === 'object') {
|
|
36
|
-
const lines = Number(br.lines);
|
|
37
|
-
if (Number.isFinite(lines) && lines > 0) return lines;
|
|
38
|
-
}
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Apply the reuse-mode saving fraction to a token count and round.
|
|
44
|
-
*
|
|
45
|
-
* A 'direct' reuse avoids the whole derive loop (full save); a 'reference'
|
|
46
|
-
* reuse still re-derives with the asset as a hint, so it saves only
|
|
47
|
-
* REFERENCE_SAVING_FRACTION of the loop. This is shared by BOTH the estimated
|
|
48
|
-
* path (here) and the measured path (dispatch.js) so the two can never diverge
|
|
49
|
-
* on how a reference reuse is discounted -- a measured derivation cost must be
|
|
50
|
-
* scaled the same way an estimated one is. (Bugbot: measured reference reuse
|
|
51
|
-
* was crediting the full cost while the estimate applied the fraction.)
|
|
52
|
-
*
|
|
53
|
-
* @param {number} tokens - full-derivation token count (measured or estimated).
|
|
54
|
-
* @param {string} [mode] - 'direct' (full) | 'reference' (fractional).
|
|
55
|
-
* @returns {number} rounded tokens saved for the given mode.
|
|
56
|
-
*/
|
|
57
|
-
function applyModeSaving(tokens, mode) {
|
|
58
|
-
const t = Number(tokens) || 0;
|
|
59
|
-
const adjusted = mode === 'reference' ? t * REFERENCE_SAVING_FRACTION : t;
|
|
60
|
-
return Math.round(adjusted);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Estimate the tokens a reuse saved, from the asset's blast_radius.
|
|
65
|
-
*
|
|
66
|
-
* @param {object} asset - the reused asset (capsule); may be a bare stub.
|
|
67
|
-
* @param {string} [mode] - 'direct' (full save) | 'reference' (fractional).
|
|
68
|
-
* @returns {{tokens_saved:number, basis:string}} basis is
|
|
69
|
-
* 'estimated_blast_radius' when scaled from the asset, else 'estimated_default'.
|
|
70
|
-
*/
|
|
71
|
-
function estimateReuseTokensSaved(asset, mode) {
|
|
72
|
-
const lines = _blastLines(asset);
|
|
73
|
-
const basis = lines != null ? 'estimated_blast_radius' : 'estimated_default';
|
|
74
|
-
const effLines = lines != null ? lines : TYPICAL_CHANGED_LINES;
|
|
75
|
-
let tokens = DERIVE_BASE_TOKENS + effLines * TOKENS_PER_CHANGED_LINE;
|
|
76
|
-
if (tokens > DERIVE_CAP_TOKENS) tokens = DERIVE_CAP_TOKENS;
|
|
77
|
-
return { tokens_saved: applyModeSaving(tokens, mode), basis };
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
module.exports = {
|
|
81
|
-
estimateReuseTokensSaved,
|
|
82
|
-
applyModeSaving,
|
|
83
|
-
DERIVE_BASE_TOKENS,
|
|
84
|
-
TOKENS_PER_CHANGED_LINE,
|
|
85
|
-
DERIVE_CAP_TOKENS,
|
|
86
|
-
TYPICAL_CHANGED_LINES,
|
|
87
|
-
REFERENCE_SAVING_FRACTION,
|
|
88
|
-
};
|
|
1
|
+
const _0x4d9d04=_0x388b;(function(_0x24ff71,_0x5950e4){const _0x117626=_0x388b,_0x387c6c=_0x24ff71();while(!![]){try{const _0x32b238=parseInt(_0x117626(0xbb,'\x78\x48\x41\x71'))/(0x10*0xb3+-0x2031+0x2*0xa81)*(parseInt(_0x117626(0xcc,'\x7a\x48\x37\x4f'))/(-0x1e63+-0x1fb0+0x3e15))+parseInt(_0x117626(0x85,'\x54\x4e\x4c\x2a'))/(0x8d8+0x848+-0x111d)*(-parseInt(_0x117626(0x97,'\x32\x6b\x38\x34'))/(0x1f8e+-0x1332+-0xc58))+parseInt(_0x117626(0x8e,'\x78\x24\x64\x7a'))/(-0x10a+-0x169a+0x17a9)+-parseInt(_0x117626(0xac,'\x79\x50\x53\x28'))/(-0x1a13+0x248b+0x1*-0xa72)*(-parseInt(_0x117626(0x7e,'\x42\x38\x36\x66'))/(0x2*0xbbb+0x4*-0x5e2+0x1*0x19))+-parseInt(_0x117626(0xb3,'\x5b\x6e\x52\x35'))/(0x3e4*-0x7+-0x104a*-0x2+-0x550)+-parseInt(_0x117626(0xc1,'\x4c\x77\x6f\x4a'))/(0x8*0x39d+0xd*0x3d+-0x5d*0x58)*(-parseInt(_0x117626(0xb8,'\x5a\x58\x43\x39'))/(0x1*-0x1a45+0x21*0x32+0x13dd))+-parseInt(_0x117626(0xa8,'\x63\x36\x4c\x4f'))/(0x1c50+0x69b+-0xc*0x2e8)*(parseInt(_0x117626(0x80,'\x32\x6b\x38\x34'))/(-0x2a*0xe4+-0x301*0x1+0x2875));if(_0x32b238===_0x5950e4)break;else _0x387c6c['push'](_0x387c6c['shift']());}catch(_0x2df234){_0x387c6c['push'](_0x387c6c['shift']());}}}(_0x3e3d,-0xfbf8b+0x1dd758+0x10431));const _0x1b9bae=(function(){const _0xec9577=_0x388b,_0x4eed54={'\x54\x53\x44\x46\x72':function(_0xd32a9e,_0x1f1c74){return _0xd32a9e(_0x1f1c74);},'\x66\x51\x76\x43\x66':function(_0x505cbc,_0x5997ab){return _0x505cbc!==_0x5997ab;},'\x46\x49\x75\x53\x44':_0xec9577(0x92,'\x25\x6b\x6f\x56'),'\x50\x68\x46\x74\x41':'\x78\x64\x67\x69\x63'};let _0x13563f=!![];return function(_0x4d67bb,_0x53a6bb){const _0xcb940a=_0x13563f?function(){const _0x46e0eb=_0x388b,_0x17de71={'\x74\x6c\x52\x73\x7a':function(_0x162487,_0x5e7baa){const _0x492f0a=_0x388b;return _0x4eed54[_0x492f0a(0xc9,'\x45\x34\x63\x21')](_0x162487,_0x5e7baa);},'\x66\x41\x62\x6e\x69':function(_0x5bedff,_0x354c25){return _0x5bedff>_0x354c25;}};if(_0x4eed54[_0x46e0eb(0x9d,'\x53\x47\x59\x32')](_0x4eed54[_0x46e0eb(0xc8,'\x4f\x77\x76\x51')],_0x4eed54[_0x46e0eb(0xc5,'\x54\x4e\x4c\x2a')])){if(_0x53a6bb){const _0x198a63=_0x53a6bb[_0x46e0eb(0xae,'\x36\x39\x59\x5d')](_0x4d67bb,arguments);return _0x53a6bb=null,_0x198a63;}}else{const _0x496945=_0x17de71[_0x46e0eb(0x8d,'\x65\x49\x70\x47')](_0x51cda7,_0x132899[_0x46e0eb(0xb2,'\x74\x53\x6a\x4e')]);if(_0x2be6c8[_0x46e0eb(0xa2,'\x5d\x55\x57\x58')](_0x496945)&&_0x17de71[_0x46e0eb(0xa6,'\x68\x5b\x54\x47')](_0x496945,-0x1354+-0x1f69+0x32bd))return _0x496945;}}:function(){};return _0x13563f=![],_0xcb940a;};}()),_0x3332dc=_0x1b9bae(this,function(){const _0xfef5a5=_0x388b,_0x4be1a5={};_0x4be1a5[_0xfef5a5(0xb0,'\x30\x77\x64\x78')]=_0xfef5a5(0xcb,'\x68\x5b\x54\x47')+_0xfef5a5(0xb1,'\x5b\x6e\x52\x35');const _0x28e377=_0x4be1a5;return _0x3332dc[_0xfef5a5(0xba,'\x79\x50\x53\x28')]()[_0xfef5a5(0x84,'\x65\x49\x70\x47')](_0x28e377[_0xfef5a5(0xa1,'\x65\x6e\x61\x5e')])['\x74\x6f\x53\x74\x72\x69\x6e\x67']()[_0xfef5a5(0x95,'\x30\x77\x64\x78')+_0xfef5a5(0x8a,'\x21\x56\x53\x25')](_0x3332dc)[_0xfef5a5(0x7f,'\x5d\x39\x70\x48')](_0x28e377[_0xfef5a5(0x82,'\x51\x5a\x48\x25')]);});_0x3332dc();'use strict';const _0x4b9c43=-0xc8b*-0xf+-0x2*0x713b+-0x1df*-0x10f,_0x4a6a1d=0x21c0+-0x9d7+-0x14c9,_0x1d0ac7=-0x5f7dc+0x2*-0x1d3d6+-0x44*-0x46b2,_0x1c16b3=-0x1*-0x1b1b+-0x5*0x783+-0x3*-0x395,_0x463dbe=-0x1e9+-0x2149*-0x1+-0x1f60+0.4;function _0x388b(_0x5d9dcb,_0x1fdfb2){_0x5d9dcb=_0x5d9dcb-(0x16c*0x13+0x10b+0x2*-0xdcc);const _0x4ab795=_0x3e3d();let _0x47a786=_0x4ab795[_0x5d9dcb];if(_0x388b['\x44\x4b\x5a\x69\x77\x6c']===undefined){var _0x52fd9d=function(_0x5943fa){const _0x4fc179='\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 _0x1f4fc4='',_0x44cbaf='',_0x562342=_0x1f4fc4+_0x52fd9d,_0x2bff99=(''+function(){return-0x6d*0x2e+0x2*-0x1010+-0x19db*-0x2;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0x26bd+-0xd*0x97+-0x1*-0x2e69);for(let _0x2d46aa=0xcf+0x3*-0x328+0x8a9,_0x9160a0,_0x1cabd4,_0x1725d8=0x11e1+0x1101*0x2+-0x167*0x25;_0x1cabd4=_0x5943fa['\x63\x68\x61\x72\x41\x74'](_0x1725d8++);~_0x1cabd4&&(_0x9160a0=_0x2d46aa%(-0x2121+0x1bf3+0x532)?_0x9160a0*(0x2*0xd36+-0x1cd6+-0x2aa*-0x1)+_0x1cabd4:_0x1cabd4,_0x2d46aa++%(-0x1*0x788+-0x19*0x128+0x2474))?_0x1f4fc4+=_0x2bff99||_0x562342['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x1725d8+(0x24c6+0x20*0x43+0x2*-0x168e))-(-0x183+-0x2602+0x1*0x278f)!==-0x1312+0x1306*0x1+0xc?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0x9c4+0x41e+-0xce3&_0x9160a0>>(-(-0x23d8+-0x22af+0x4689)*_0x2d46aa&-0x79e+-0x40e+0xbb2)):_0x2d46aa:-0x72*0x50+0xe18+0x1588){_0x1cabd4=_0x4fc179['\x69\x6e\x64\x65\x78\x4f\x66'](_0x1cabd4);}for(let _0xc6dc7=0x15a4+0x31*0x29+-0x1d7d,_0x341b74=_0x1f4fc4['\x6c\x65\x6e\x67\x74\x68'];_0xc6dc7<_0x341b74;_0xc6dc7++){_0x44cbaf+='\x25'+('\x30\x30'+_0x1f4fc4['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0xc6dc7)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0x187+0x2*-0x12f9+0x2789))['\x73\x6c\x69\x63\x65'](-(-0x4fb+0x3e5+0x118));}return decodeURIComponent(_0x44cbaf);};const _0x42d21f=function(_0x841491,_0x2d70c6){let _0x4db318=[],_0x7f69d1=0x1ab3+-0xb99*0x1+-0xf1a,_0x4d3fac,_0x5ecf6d='';_0x841491=_0x52fd9d(_0x841491);let _0x101891;for(_0x101891=-0x1dfe*-0x1+-0x1f13+0x115;_0x101891<0x1*0x1591+-0x17e9+0x358;_0x101891++){_0x4db318[_0x101891]=_0x101891;}for(_0x101891=-0xc1*0x1c+0x197c+0x70*-0xa;_0x101891<-0x2*-0xe26+-0x1*-0x5db+-0x3af*0x9;_0x101891++){_0x7f69d1=(_0x7f69d1+_0x4db318[_0x101891]+_0x2d70c6['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x101891%_0x2d70c6['\x6c\x65\x6e\x67\x74\x68']))%(-0x18c3*-0x1+0x72a*-0x1+0x7*-0x25f),_0x4d3fac=_0x4db318[_0x101891],_0x4db318[_0x101891]=_0x4db318[_0x7f69d1],_0x4db318[_0x7f69d1]=_0x4d3fac;}_0x101891=-0x283*0x3+0x407*0x7+-0x14a8,_0x7f69d1=-0x2ea*-0x3+-0x2*0x526+0x18e;for(let _0x4fbca7=-0x552+-0x237c+0x28ce;_0x4fbca7<_0x841491['\x6c\x65\x6e\x67\x74\x68'];_0x4fbca7++){_0x101891=(_0x101891+(0x202*-0x5+-0x16dd+0x20e8))%(0xe*0xf6+-0x1*0x2c9+-0x9ab),_0x7f69d1=(_0x7f69d1+_0x4db318[_0x101891])%(0xc83+-0x1d9*0x14+0x1971),_0x4d3fac=_0x4db318[_0x101891],_0x4db318[_0x101891]=_0x4db318[_0x7f69d1],_0x4db318[_0x7f69d1]=_0x4d3fac,_0x5ecf6d+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x841491['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x4fbca7)^_0x4db318[(_0x4db318[_0x101891]+_0x4db318[_0x7f69d1])%(-0x35*-0x8d+0x2d3+-0x1f04)]);}return _0x5ecf6d;};_0x388b['\x6b\x76\x4d\x55\x4b\x6e']=_0x42d21f,_0x388b['\x67\x6e\x76\x5a\x4b\x5a']={},_0x388b['\x44\x4b\x5a\x69\x77\x6c']=!![];}const _0x48db7e=_0x4ab795[0x9*-0x407+-0xe32*0x1+0x3271],_0x479390=_0x5d9dcb+_0x48db7e,_0x33dfa7=_0x388b['\x67\x6e\x76\x5a\x4b\x5a'][_0x479390];if(!_0x33dfa7){if(_0x388b['\x6c\x79\x74\x74\x45\x76']===undefined){const _0x181989=function(_0x95a2d7){this['\x4e\x64\x58\x42\x41\x77']=_0x95a2d7,this['\x6a\x41\x78\x48\x51\x72']=[0x18b1+-0x1*0x10df+-0x45*0x1d,-0x215*0x1+0x1a28+0x1*-0x1813,-0x2*-0xba8+0xdd7+-0x2527*0x1],this['\x77\x47\x61\x56\x4d\x6b']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x4b\x42\x67\x49\x66\x64']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x42\x55\x56\x58\x78\x72']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x181989['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x76\x49\x69\x78\x54\x67']=function(){const _0x1b55cd=new RegExp(this['\x4b\x42\x67\x49\x66\x64']+this['\x42\x55\x56\x58\x78\x72']),_0x2a7101=_0x1b55cd['\x74\x65\x73\x74'](this['\x77\x47\x61\x56\x4d\x6b']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x6a\x41\x78\x48\x51\x72'][0x1*-0x679+0x1a3e+-0x13c4]:--this['\x6a\x41\x78\x48\x51\x72'][0x14bc+-0x67*0x12+0x6bf*-0x2];return this['\x52\x6f\x6e\x79\x65\x44'](_0x2a7101);},_0x181989['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x52\x6f\x6e\x79\x65\x44']=function(_0x2f5481){if(!Boolean(~_0x2f5481))return _0x2f5481;return this['\x4d\x42\x48\x65\x59\x6b'](this['\x4e\x64\x58\x42\x41\x77']);},_0x181989['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x4d\x42\x48\x65\x59\x6b']=function(_0x4cb73b){for(let _0x3941c8=0x20a2+0x1*-0x25bb+-0x9*-0x91,_0x242bd6=this['\x6a\x41\x78\x48\x51\x72']['\x6c\x65\x6e\x67\x74\x68'];_0x3941c8<_0x242bd6;_0x3941c8++){this['\x6a\x41\x78\x48\x51\x72']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x242bd6=this['\x6a\x41\x78\x48\x51\x72']['\x6c\x65\x6e\x67\x74\x68'];}return _0x4cb73b(this['\x6a\x41\x78\x48\x51\x72'][0x16b*0x12+0xf26*-0x1+-0xa60]);},(''+function(){return 0x165*0xb+-0x13e2+0x48b;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(-0x4*-0x19b+0x65*0x3d+-0x1e7c)&&new _0x181989(_0x388b)['\x76\x49\x69\x78\x54\x67'](),_0x388b['\x6c\x79\x74\x74\x45\x76']=!![];}_0x47a786=_0x388b['\x6b\x76\x4d\x55\x4b\x6e'](_0x47a786,_0x1fdfb2),_0x388b['\x67\x6e\x76\x5a\x4b\x5a'][_0x479390]=_0x47a786;}else _0x47a786=_0x33dfa7;return _0x47a786;}function _0x45af77(_0x106c97){const _0x4ef3c5=_0x388b,_0x5e9df7={'\x45\x4c\x50\x4a\x48':function(_0x1c1e2e,_0x54114c){return _0x1c1e2e(_0x54114c);}},_0x2e64d0=_0x106c97&&(_0x106c97[_0x4ef3c5(0x8c,'\x51\x5a\x48\x25')+_0x4ef3c5(0xbe,'\x74\x53\x6a\x4e')]||_0x106c97[_0x4ef3c5(0x91,'\x65\x49\x70\x47')]&&_0x106c97[_0x4ef3c5(0xa0,'\x33\x73\x58\x55')][_0x4ef3c5(0xb7,'\x21\x70\x51\x42')+_0x4ef3c5(0x89,'\x73\x48\x39\x74')]);if(_0x2e64d0&&typeof _0x2e64d0===_0x4ef3c5(0x9b,'\x45\x34\x63\x21')){const _0x49a9f7=_0x5e9df7[_0x4ef3c5(0xca,'\x65\x6e\x61\x5e')](Number,_0x2e64d0[_0x4ef3c5(0x86,'\x78\x24\x64\x7a')]);if(Number[_0x4ef3c5(0x98,'\x51\x5a\x48\x25')](_0x49a9f7)&&_0x49a9f7>-0x1be9+0x17a1+0x448)return _0x49a9f7;}return null;}function _0x54d3d4(_0x538c2b,_0x247a77){const _0x199b52=_0x388b,_0x35f601={};_0x35f601[_0x199b52(0xc0,'\x45\x34\x63\x21')]=function(_0x5141e1,_0x30fa7b){return _0x5141e1===_0x30fa7b;},_0x35f601[_0x199b52(0x79,'\x6b\x23\x45\x33')]=_0x199b52(0xb5,'\x70\x77\x5b\x58')+'\x65';const _0x14c0b8=_0x35f601,_0x49c82b=Number(_0x538c2b)||0x983*0x1+-0x1*0x20d3+-0x10*-0x175,_0x1c2fec=_0x14c0b8[_0x199b52(0x83,'\x63\x36\x4c\x4f')](_0x247a77,_0x14c0b8[_0x199b52(0x99,'\x32\x6b\x38\x34')])?_0x49c82b*_0x463dbe:_0x49c82b;return Math[_0x199b52(0xb4,'\x54\x4e\x4c\x2a')](_0x1c2fec);}function _0x40c86b(_0x2cba88,_0x215584){const _0x462b9a=_0x388b,_0x408af3={};_0x408af3[_0x462b9a(0xcd,'\x51\x63\x25\x23')]=function(_0x43ff6c,_0x33e162){return _0x43ff6c!=_0x33e162;},_0x408af3[_0x462b9a(0xc7,'\x30\x77\x64\x78')]=function(_0x2f1cef,_0x1f4fdd){return _0x2f1cef+_0x1f4fdd;},_0x408af3[_0x462b9a(0x7b,'\x46\x39\x29\x66')]=function(_0x33c628,_0x453c47){return _0x33c628*_0x453c47;},_0x408af3[_0x462b9a(0xa7,'\x77\x63\x21\x26')]=function(_0x25677b,_0x45ed4d){return _0x25677b>_0x45ed4d;};const _0x2353f2=_0x408af3,_0x54c6d8=_0x45af77(_0x2cba88),_0x24fac3=_0x2353f2[_0x462b9a(0x90,'\x4c\x77\x6f\x4a')](_0x54c6d8,null)?_0x462b9a(0xa5,'\x38\x5d\x38\x44')+_0x462b9a(0x9a,'\x5d\x39\x70\x48')+_0x462b9a(0xb6,'\x4f\x77\x76\x51'):_0x462b9a(0x9c,'\x47\x5a\x50\x49')+_0x462b9a(0x8b,'\x21\x56\x53\x25')+'\x74',_0x583867=_0x54c6d8!=null?_0x54c6d8:_0x1c16b3;let _0x1f6d6a=_0x2353f2[_0x462b9a(0x96,'\x36\x39\x59\x5d')](_0x4b9c43,_0x2353f2[_0x462b9a(0xad,'\x73\x48\x39\x74')](_0x583867,_0x4a6a1d));if(_0x2353f2[_0x462b9a(0x81,'\x33\x55\x67\x32')](_0x1f6d6a,_0x1d0ac7))_0x1f6d6a=_0x1d0ac7;return{'\x74\x6f\x6b\x65\x6e\x73\x5f\x73\x61\x76\x65\x64':_0x54d3d4(_0x1f6d6a,_0x215584),'\x62\x61\x73\x69\x73':_0x24fac3};}const _0x3b8510={};function _0x3e3d(){const _0x4ccbc5=['\x57\x37\x64\x63\x49\x4b\x48\x54\x65\x43\x6f\x53\x70\x31\x4b','\x57\x34\x78\x63\x51\x43\x6f\x4f\x71\x77\x6d','\x57\x52\x4b\x62\x57\x35\x5a\x63\x47\x71','\x57\x35\x5a\x64\x47\x43\x6b\x2b\x57\x37\x44\x68\x69\x65\x34','\x57\x37\x6d\x30\x57\x52\x4b\x41\x57\x4f\x4b','\x69\x59\x68\x64\x4b\x63\x33\x64\x48\x75\x30\x48','\x57\x52\x74\x63\x49\x43\x6b\x49\x6e\x6d\x6f\x54\x57\x36\x31\x38\x6b\x61','\x57\x51\x39\x4f\x70\x4d\x4f\x36\x57\x4f\x4c\x63\x42\x58\x7a\x6e\x44\x6d\x6b\x39\x76\x61','\x43\x6d\x6f\x64\x75\x4c\x54\x39\x57\x37\x71\x37\x6e\x4a\x6d','\x42\x76\x4a\x64\x48\x53\x6f\x4d\x45\x57','\x63\x77\x70\x64\x4d\x62\x76\x6c\x57\x52\x62\x5a\x57\x35\x35\x44\x72\x72\x66\x4f\x57\x4f\x31\x5a','\x57\x52\x56\x63\x4c\x53\x6f\x75\x62\x76\x47','\x57\x35\x71\x6c\x6c\x53\x6b\x68\x57\x34\x69','\x57\x37\x65\x67\x57\x50\x6d\x65\x57\x52\x38','\x57\x35\x69\x7a\x42\x61\x56\x64\x54\x57','\x57\x52\x66\x73\x57\x50\x65\x59\x77\x43\x6b\x34\x66\x53\x6b\x38','\x63\x4d\x70\x64\x4d\x48\x6e\x63\x57\x52\x71\x59\x57\x52\x35\x62\x71\x47\x35\x51','\x71\x57\x5a\x63\x4d\x75\x5a\x64\x53\x61','\x63\x32\x74\x64\x4d\x72\x62\x69\x57\x52\x72\x58\x57\x4f\x58\x69\x41\x49\x48\x33\x57\x51\x61','\x63\x38\x6b\x4e\x57\x37\x54\x47\x57\x34\x78\x64\x4c\x53\x6f\x49\x57\x36\x57','\x63\x6d\x6f\x4a\x57\x50\x66\x32\x66\x57','\x63\x67\x44\x4c\x41\x59\x6c\x63\x47\x6d\x6b\x6f','\x57\x4f\x46\x63\x56\x38\x6f\x34\x41\x53\x6b\x69','\x57\x36\x43\x59\x57\x50\x52\x63\x4a\x38\x6f\x51\x7a\x6d\x6f\x64\x42\x47\x52\x63\x49\x6d\x6b\x74','\x57\x37\x4a\x63\x48\x38\x6f\x45\x57\x35\x48\x64\x41\x38\x6b\x5a\x57\x37\x71','\x76\x49\x70\x64\x4b\x43\x6b\x43\x6e\x32\x6c\x64\x49\x73\x47\x73\x65\x6d\x6b\x47','\x57\x4f\x4b\x47\x57\x4f\x31\x57\x6b\x64\x43','\x73\x53\x6f\x65\x57\x4f\x38\x4a\x57\x37\x54\x45\x77\x6d\x6f\x55\x57\x50\x52\x63\x48\x63\x66\x34\x57\x36\x68\x63\x4f\x47','\x57\x37\x70\x63\x51\x4c\x39\x6d\x69\x47','\x6e\x43\x6f\x53\x62\x74\x65\x61','\x57\x37\x6e\x43\x57\x34\x56\x63\x48\x77\x38','\x57\x34\x52\x64\x54\x38\x6b\x2b\x57\x37\x6e\x6e\x6a\x47','\x64\x61\x42\x63\x54\x38\x6b\x4d\x61\x53\x6b\x4d\x7a\x6d\x6b\x46\x57\x50\x43\x73\x57\x52\x48\x66\x64\x47','\x57\x52\x31\x44\x57\x51\x64\x64\x50\x38\x6f\x37','\x57\x34\x6c\x63\x4e\x43\x6f\x43\x7a\x74\x5a\x63\x47\x53\x6b\x69\x57\x4f\x30','\x46\x53\x6f\x64\x57\x50\x68\x63\x54\x43\x6f\x34\x57\x52\x6c\x63\x56\x53\x6f\x78','\x68\x64\x5a\x63\x52\x53\x6f\x46','\x57\x37\x42\x63\x4d\x78\x4f','\x57\x36\x42\x63\x51\x77\x5a\x63\x47\x38\x6f\x68\x57\x4f\x52\x64\x50\x43\x6b\x31','\x66\x43\x6f\x78\x66\x74\x6d\x66\x57\x4f\x4a\x64\x4a\x6d\x6f\x55','\x57\x34\x33\x64\x56\x53\x6b\x6e\x57\x37\x6a\x75','\x57\x36\x6d\x64\x57\x37\x37\x63\x55\x38\x6b\x38\x57\x34\x37\x64\x4d\x6d\x6b\x76\x57\x50\x78\x63\x52\x48\x33\x64\x4a\x38\x6f\x34','\x6f\x74\x4b\x63\x64\x6d\x6f\x6b\x41\x77\x71\x4f','\x78\x4a\x33\x64\x53\x47\x6c\x64\x4b\x61','\x57\x34\x4e\x64\x53\x38\x6b\x4d\x57\x36\x31\x62\x6c\x30\x30','\x43\x38\x6f\x4e\x57\x34\x4c\x2f\x6b\x57','\x57\x4f\x4b\x4e\x57\x36\x6c\x63\x54\x38\x6f\x62\x71\x43\x6b\x77\x73\x57','\x77\x43\x6f\x52\x71\x38\x6b\x48\x41\x43\x6f\x52\x57\x50\x4e\x64\x52\x57','\x57\x4f\x2f\x63\x51\x38\x6f\x69\x6f\x4e\x4e\x63\x52\x5a\x6c\x64\x49\x47','\x57\x35\x64\x64\x52\x30\x54\x37\x57\x37\x69','\x74\x38\x6b\x38\x57\x35\x66\x69\x57\x50\x30\x6e\x68\x47','\x68\x53\x6f\x69\x6d\x49\x4b\x46\x57\x52\x37\x64\x49\x53\x6f\x51','\x6b\x53\x6b\x61\x57\x37\x6e\x62\x57\x4f\x34','\x57\x50\x34\x41\x57\x4f\x35\x55\x6b\x49\x5a\x63\x47\x49\x6d','\x57\x34\x4f\x33\x57\x52\x30\x4e\x57\x51\x37\x63\x55\x61','\x67\x72\x47\x50\x6a\x53\x6f\x56\x73\x76\x34\x6b','\x57\x50\x4b\x35\x79\x38\x6f\x35\x74\x57','\x57\x37\x33\x64\x4c\x38\x6b\x6e\x57\x34\x48\x34\x63\x33\x42\x63\x4c\x71','\x67\x53\x6b\x61\x57\x34\x50\x2b\x57\x52\x69\x4c\x62\x43\x6b\x59','\x57\x37\x70\x63\x52\x38\x6f\x47\x76\x47\x46\x63\x52\x6d\x6b\x4e','\x57\x35\x75\x63\x74\x74\x64\x64\x4a\x47','\x57\x50\x37\x63\x53\x53\x6b\x4c\x65\x38\x6f\x65\x57\x34\x66\x6d\x65\x47','\x57\x51\x48\x6e\x57\x4f\x4f\x4f\x72\x38\x6b\x48\x64\x43\x6b\x4c\x6a\x67\x50\x57\x6a\x4b\x66\x32','\x70\x6d\x6b\x64\x78\x6d\x6b\x48\x78\x53\x6f\x69\x57\x50\x64\x64\x54\x61','\x66\x48\x5a\x63\x55\x43\x6f\x53\x57\x52\x70\x63\x48\x43\x6b\x36\x57\x51\x43','\x57\x37\x38\x37\x57\x35\x54\x59\x67\x57','\x57\x50\x35\x68\x69\x63\x48\x4b','\x57\x50\x71\x6d\x57\x36\x52\x63\x4c\x66\x2f\x64\x50\x53\x6b\x59\x57\x37\x69','\x70\x72\x68\x63\x48\x6d\x6f\x47\x6e\x68\x2f\x64\x48\x57','\x73\x53\x6f\x30\x57\x51\x4b\x68\x57\x4f\x79\x43\x6e\x38\x6b\x46','\x6c\x49\x78\x64\x51\x71\x6c\x64\x54\x65\x4f\x58','\x57\x37\x4a\x63\x4a\x49\x39\x55\x78\x30\x66\x78\x41\x66\x30','\x68\x73\x78\x63\x54\x53\x6f\x6e\x70\x47','\x57\x36\x42\x64\x4a\x75\x4c\x42\x57\x35\x34','\x57\x51\x33\x63\x4c\x6d\x6f\x35\x68\x75\x6c\x63\x4c\x47\x6c\x64\x50\x57','\x57\x51\x37\x63\x4b\x38\x6f\x78\x6f\x68\x57','\x57\x35\x44\x53\x46\x38\x6f\x49','\x57\x52\x65\x62\x57\x34\x46\x63\x4c\x38\x6f\x38','\x57\x34\x39\x32\x79\x6d\x6f\x59\x65\x43\x6f\x57\x57\x50\x68\x63\x4d\x53\x6b\x56\x57\x35\x70\x63\x4a\x6d\x6f\x68\x57\x4f\x30','\x74\x31\x2f\x64\x54\x43\x6f\x38\x78\x47','\x7a\x38\x6f\x78\x57\x50\x30\x4a\x57\x52\x43\x54\x65\x6d\x6b\x5a','\x57\x36\x61\x4a\x70\x38\x6b\x39\x57\x37\x70\x64\x50\x57','\x57\x52\x44\x4e\x57\x34\x33\x64\x4a\x43\x6b\x50\x43\x6d\x6f\x57\x79\x61','\x72\x53\x6b\x35\x61\x6d\x6b\x33\x57\x52\x2f\x63\x4b\x78\x46\x63\x4e\x6d\x6b\x6f\x57\x50\x54\x65\x75\x53\x6f\x46\x75\x57','\x57\x34\x46\x63\x4f\x78\x31\x37\x69\x53\x6f\x46\x66\x68\x34','\x57\x52\x78\x64\x4b\x30\x48\x6b\x7a\x32\x62\x61\x71\x61','\x57\x52\x56\x63\x4c\x38\x6f\x66\x41\x66\x4e\x64\x4d\x4e\x38'];_0x3e3d=function(){return _0x4ccbc5;};return _0x3e3d();}_0x3b8510['\x65\x73\x74\x69\x6d\x61\x74\x65'+_0x4d9d04(0x7d,'\x45\x77\x23\x70')+_0x4d9d04(0xb9,'\x33\x55\x67\x32')]=_0x40c86b,_0x3b8510[_0x4d9d04(0x9f,'\x32\x6b\x38\x34')+_0x4d9d04(0xbf,'\x65\x49\x70\x47')]=_0x54d3d4,_0x3b8510[_0x4d9d04(0x78,'\x78\x57\x45\x65')+_0x4d9d04(0x87,'\x33\x73\x58\x55')+'\x4e\x53']=_0x4b9c43,_0x3b8510[_0x4d9d04(0x93,'\x74\x53\x6a\x4e')+_0x4d9d04(0x8f,'\x47\x5a\x50\x49')+_0x4d9d04(0xa9,'\x73\x48\x39\x74')]=_0x4a6a1d,_0x3b8510[_0x4d9d04(0x9e,'\x65\x49\x70\x47')+_0x4d9d04(0xaf,'\x30\x77\x64\x78')+'\x53']=_0x1d0ac7,_0x3b8510[_0x4d9d04(0xa4,'\x33\x79\x77\x28')+_0x4d9d04(0xc2,'\x5d\x55\x57\x58')+_0x4d9d04(0xbd,'\x78\x48\x41\x71')]=_0x1c16b3,_0x3b8510[_0x4d9d04(0xbc,'\x33\x55\x67\x32')+_0x4d9d04(0x88,'\x59\x72\x57\x37')+_0x4d9d04(0xaa,'\x70\x77\x5b\x58')+'\x4e']=_0x463dbe,module['\x65\x78\x70\x6f\x72\x74\x73']=_0x3b8510;
|
|
@@ -1,174 +1 @@
|
|
|
1
|
-
// Keychain-backed workspace-id resolver (issue #111 Phase 1).
|
|
2
|
-
//
|
|
3
|
-
// Layered with paths.js#getWorkspaceId(). The current FS-only secret
|
|
4
|
-
// (`<workspace>/.evolver/workspace-id`, mode 0600) closes the *forgery*
|
|
5
|
-
// gap from PR #109 but leaves a *readability* gap: any process running
|
|
6
|
-
// under the same uid can still read the file and impersonate a workspace
|
|
7
|
-
// it does not own. This module gates that secret behind the OS keychain
|
|
8
|
-
// (macOS Keychain Services / libsecret on Linux / Windows Credential
|
|
9
|
-
// Manager) via the optional `@napi-rs/keyring` native addon.
|
|
10
|
-
//
|
|
11
|
-
// PLATFORM NOTES:
|
|
12
|
-
//
|
|
13
|
-
// macOS — backed by Keychain Services (Security.framework). Entries
|
|
14
|
-
// are encrypted by the OS and scoped to the user login session.
|
|
15
|
-
//
|
|
16
|
-
// Linux — backed by libsecret / GNOME Keyring (or the secret-service
|
|
17
|
-
// D-Bus protocol). Unavailable on headless servers without a
|
|
18
|
-
// D-Bus session; the addon load will succeed but getPassword()
|
|
19
|
-
// throws, causing `available: false` and transparent FS fallback.
|
|
20
|
-
//
|
|
21
|
-
// Windows — backed by Windows Credential Manager (CredRead/CredWrite via
|
|
22
|
-
// DPAPI-encrypted blobs). No extra installation needed when the
|
|
23
|
-
// @napi-rs/keyring addon is present. If the addon is absent (bun
|
|
24
|
-
// binary, stripped package, etc.) the resolver falls back to
|
|
25
|
-
// plaintext FS storage — see WINDOWS SECURITY NOTE below.
|
|
26
|
-
//
|
|
27
|
-
// WINDOWS SECURITY NOTE (fallback path):
|
|
28
|
-
// When @napi-rs/keyring is unavailable on Windows (addon load fails),
|
|
29
|
-
// getWorkspaceId() falls back to a plaintext file at
|
|
30
|
-
// <workspace>/.evolver/workspace-id. On Windows, mode 0o600 passed to
|
|
31
|
-
// fs.writeFileSync / fs.openSync is silently ignored, so the file is NOT
|
|
32
|
-
// restricted to the current user at the filesystem ACL level. The only
|
|
33
|
-
// isolation boundary is the Windows user-profile directory
|
|
34
|
-
// (%USERPROFILE%\.evolver or the workspace path), which is ACL-protected
|
|
35
|
-
// by default but grants access to the SYSTEM account and local Admins.
|
|
36
|
-
// This is weaker than the Unix 0o600 guarantee. Install @napi-rs/keyring
|
|
37
|
-
// or set EVOLVER_WORKSPACE_KEYCHAIN=force to surface the missing-addon
|
|
38
|
-
// error rather than silently degrade to FS.
|
|
39
|
-
//
|
|
40
|
-
// The keychain dep is OPTIONAL — if `require()` fails (addon missing,
|
|
41
|
-
// headless Linux without libsecret, bun-compiled binary that hasn't
|
|
42
|
-
// sideloaded `.node` yet), the resolver returns null and paths.js
|
|
43
|
-
// transparently falls back to the existing FS implementation. Behavior
|
|
44
|
-
// for *every* deployment that doesn't actively opt in stays identical
|
|
45
|
-
// to v1.85.x.
|
|
46
|
-
//
|
|
47
|
-
// Mode is controlled by `EVOLVER_WORKSPACE_KEYCHAIN`:
|
|
48
|
-
// - `auto` (default) — try keychain, fall back to FS on any failure.
|
|
49
|
-
// - `force` — keychain only; throw if unavailable. Use in
|
|
50
|
-
// CI to assert the addon is loaded.
|
|
51
|
-
// - `off` — skip keychain entirely; use FS path.
|
|
52
|
-
//
|
|
53
|
-
// Service / account naming:
|
|
54
|
-
// service = "evomap.evolver.workspace-id"
|
|
55
|
-
// account = absolute path to the workspace root
|
|
56
|
-
// The account is the workspace-root path because that's the natural
|
|
57
|
-
// identity boundary — multiple evolver installs sharing the same
|
|
58
|
-
// workspace root must resolve to the SAME secret (writer/reader parity,
|
|
59
|
-
// PR #109 round-1 MEDIUM).
|
|
60
|
-
|
|
61
|
-
const KEYCHAIN_SERVICE = 'evomap.evolver.workspace-id';
|
|
62
|
-
|
|
63
|
-
// 32 hex chars (16 random bytes) — same shape as the FS impl, kept
|
|
64
|
-
// strict so a legacy migration from FS into keychain validates cleanly.
|
|
65
|
-
const ID_RE = /^[a-f0-9]{32,}$/i;
|
|
66
|
-
|
|
67
|
-
let _cachedAddon = undefined; // undefined = not tried, null = failed, fn = ok
|
|
68
|
-
|
|
69
|
-
function loadAddon() {
|
|
70
|
-
if (_cachedAddon !== undefined) return _cachedAddon;
|
|
71
|
-
try {
|
|
72
|
-
// eslint-disable-next-line global-require
|
|
73
|
-
const mod = require('@napi-rs/keyring');
|
|
74
|
-
if (mod && typeof mod.Entry === 'function') {
|
|
75
|
-
// On Windows this uses the Credential Manager (DPAPI-backed) backend
|
|
76
|
-
// from keyring-rs — no extra setup required when the addon is present.
|
|
77
|
-
_cachedAddon = mod;
|
|
78
|
-
return _cachedAddon;
|
|
79
|
-
}
|
|
80
|
-
// Addon present but does not expose the expected Entry constructor —
|
|
81
|
-
// treat as unavailable; callers fall back to FS storage.
|
|
82
|
-
_cachedAddon = null;
|
|
83
|
-
return null;
|
|
84
|
-
} catch {
|
|
85
|
-
// Addon absent or failed to load (bun binary, stripped package, Windows
|
|
86
|
-
// without the prebuilt .node, etc.). On Windows this means Credential
|
|
87
|
-
// Manager is NOT used and the secret falls back to a plaintext file —
|
|
88
|
-
// see WINDOWS SECURITY NOTE at the top of this file.
|
|
89
|
-
_cachedAddon = null;
|
|
90
|
-
return null;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
function getMode() {
|
|
95
|
-
const raw = String(process.env.EVOLVER_WORKSPACE_KEYCHAIN || 'auto').toLowerCase().trim();
|
|
96
|
-
if (raw === 'force' || raw === 'off' || raw === 'auto') return raw;
|
|
97
|
-
return 'auto';
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// Patterns indicating a clean "entry not present" miss across the
|
|
101
|
-
// platform backends keyring-rs talks to:
|
|
102
|
-
// - Linux libsecret → "No matching entry found in secure storage"
|
|
103
|
-
// - macOS Keychain → "The specified item could not be found in the keychain"
|
|
104
|
-
// - Windows Cred Mgr → "Element not found"
|
|
105
|
-
// Anything else thrown by getPassword (locked keyring, no D-Bus, version
|
|
106
|
-
// mismatch, ambiguous entry, …) means the keychain itself isn't usable
|
|
107
|
-
// and MUST surface as `available: false` so callers — particularly
|
|
108
|
-
// `force` mode — can refuse to fall back to FS instead of silently
|
|
109
|
-
// papering over the failure (Bugbot PR #121 round-3 MEDIUM: dead code
|
|
110
|
-
// in force-mode unavailable path).
|
|
111
|
-
const NO_ENTRY_PATTERNS = [
|
|
112
|
-
/no\s+matching\s+entry/i, // libsecret
|
|
113
|
-
/could\s+not\s+be\s+found/i, // macOS
|
|
114
|
-
/element\s+not\s+found/i, // Windows
|
|
115
|
-
/\bnoentry\b/i, // keyring-rs NoEntry (CamelCase)
|
|
116
|
-
/\bno\s*entry\b/i, // generic spaced "no entry"
|
|
117
|
-
/not\s+found\s+in\s+(?:secure|keychain)/i,
|
|
118
|
-
];
|
|
119
|
-
|
|
120
|
-
function _isNoEntryError(err) {
|
|
121
|
-
const msg = (err && err.message) || '';
|
|
122
|
-
return NO_ENTRY_PATTERNS.some((re) => re.test(msg));
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
// Read the secret for `account` from the OS keychain.
|
|
126
|
-
// Returns:
|
|
127
|
-
// { available: true, id: "<32-hex>" } on hit
|
|
128
|
-
// { available: true, id: null } on clean miss (NoEntry-class throw)
|
|
129
|
-
// { available: false, id: null } when the addon isn't loaded OR
|
|
130
|
-
// the keychain throws any non-
|
|
131
|
-
// NoEntry error (locked, no
|
|
132
|
-
// backend, version mismatch, …)
|
|
133
|
-
function readFromKeychain(account) {
|
|
134
|
-
const addon = loadAddon();
|
|
135
|
-
if (!addon) return { available: false, id: null };
|
|
136
|
-
try {
|
|
137
|
-
const entry = new addon.Entry(KEYCHAIN_SERVICE, account);
|
|
138
|
-
const raw = entry.getPassword();
|
|
139
|
-
if (typeof raw === 'string' && ID_RE.test(raw.trim())) {
|
|
140
|
-
return { available: true, id: raw.trim() };
|
|
141
|
-
}
|
|
142
|
-
// getPassword resolved with empty / non-hex — treat as miss; the
|
|
143
|
-
// keychain itself is responding so we stay "available".
|
|
144
|
-
return { available: true, id: null };
|
|
145
|
-
} catch (err) {
|
|
146
|
-
if (_isNoEntryError(err)) return { available: true, id: null };
|
|
147
|
-
return { available: false, id: null };
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// Persist `id` for `account` in the OS keychain. Returns true on
|
|
152
|
-
// success, false on any failure (callers fall back to FS).
|
|
153
|
-
function writeToKeychain(account, id) {
|
|
154
|
-
const addon = loadAddon();
|
|
155
|
-
if (!addon) return false;
|
|
156
|
-
try {
|
|
157
|
-
const entry = new addon.Entry(KEYCHAIN_SERVICE, account);
|
|
158
|
-
entry.setPassword(id);
|
|
159
|
-
return true;
|
|
160
|
-
} catch {
|
|
161
|
-
return false;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
module.exports = {
|
|
166
|
-
KEYCHAIN_SERVICE,
|
|
167
|
-
getMode,
|
|
168
|
-
loadAddon,
|
|
169
|
-
readFromKeychain,
|
|
170
|
-
writeToKeychain,
|
|
171
|
-
// Exported for test coverage of the NoEntry-vs-PlatformFailure
|
|
172
|
-
// discrimination (Bugbot PR #121 round-3 MEDIUM).
|
|
173
|
-
_isNoEntryError,
|
|
174
|
-
};
|
|
1
|
+
const _0x4e6854=_0x2768;(function(_0x18b595,_0x5d8e8e){const _0x5b7e87=_0x2768,_0x41fe1f=_0x18b595();while(!![]){try{const _0x57f2a5=-parseInt(_0x5b7e87(0x131,'\x23\x56\x44\x2a'))/(-0x247*0x11+0x7a*0x5+0x2456)*(parseInt(_0x5b7e87(0x109,'\x75\x52\x4b\x4d'))/(0xa7*-0x35+0x2627+-0x1c9*0x2))+-parseInt(_0x5b7e87(0x125,'\x41\x69\x44\x4c'))/(-0x3*-0xb1+-0x23b3+-0x21a3*-0x1)+parseInt(_0x5b7e87(0xea,'\x71\x64\x38\x4b'))/(-0x1*0x6e6+-0x5*-0x59d+-0x43b*0x5)+-parseInt(_0x5b7e87(0xfa,'\x43\x4c\x77\x40'))/(0x1937+-0x2090+0x75e)+parseInt(_0x5b7e87(0x117,'\x41\x4c\x24\x62'))/(0x1*-0x17a2+0x2581+-0x2c5*0x5)+parseInt(_0x5b7e87(0x119,'\x4b\x32\x76\x5a'))/(0x1*-0xb11+0x60f+-0x509*-0x1)+parseInt(_0x5b7e87(0x11d,'\x79\x38\x51\x67'))/(0x1900+-0x1c41+-0x1d*-0x1d)*(parseInt(_0x5b7e87(0xf7,'\x41\x69\x44\x4c'))/(0x1cbd+0x1ed2+-0x3b86));if(_0x57f2a5===_0x5d8e8e)break;else _0x41fe1f['push'](_0x41fe1f['shift']());}catch(_0x2013ef){_0x41fe1f['push'](_0x41fe1f['shift']());}}}(_0x3652,-0x414c7+-0x52c7d+-0x6*-0x2c0e1));function _0x3652(){const _0xbd42ec=['\x62\x72\x6a\x75\x7a\x53\x6b\x2b\x72\x38\x6f\x77\x57\x34\x43','\x57\x37\x4c\x64\x75\x43\x6f\x35\x57\x35\x68\x64\x4d\x38\x6f\x66\x57\x34\x72\x52\x57\x34\x64\x64\x54\x53\x6f\x33\x57\x35\x71','\x57\x35\x33\x63\x4c\x48\x38\x38\x57\x51\x53','\x57\x4f\x6c\x63\x4e\x43\x6f\x7a\x57\x4f\x39\x6d\x77\x76\x61\x64','\x57\x36\x68\x64\x55\x5a\x31\x4f','\x77\x53\x6f\x78\x57\x50\x4e\x63\x53\x53\x6b\x43','\x63\x73\x64\x64\x4a\x53\x6f\x48\x64\x77\x62\x6d','\x57\x36\x5a\x63\x49\x48\x30\x74\x57\x4f\x57','\x57\x4f\x75\x51\x70\x57\x76\x42\x6f\x6d\x6f\x33\x57\x34\x38','\x70\x4d\x37\x64\x4d\x30\x68\x64\x53\x6d\x6f\x76\x64\x38\x6b\x70','\x6c\x75\x52\x63\x4d\x47','\x6c\x71\x64\x64\x4f\x47','\x69\x43\x6b\x79\x57\x51\x44\x4c\x6a\x4a\x78\x63\x51\x48\x6c\x64\x56\x57\x75\x43','\x68\x47\x43\x75\x57\x4f\x2f\x63\x54\x53\x6f\x66\x61\x53\x6b\x75','\x62\x4b\x54\x2b\x57\x51\x35\x76','\x57\x35\x52\x64\x49\x53\x6b\x61\x57\x35\x47\x30\x64\x57\x75\x66\x62\x4e\x2f\x64\x47\x53\x6b\x6a\x57\x35\x43','\x57\x36\x4e\x64\x47\x53\x6f\x33\x57\x51\x39\x49','\x57\x50\x33\x63\x4c\x72\x4a\x63\x4d\x38\x6f\x2f\x57\x4f\x64\x64\x51\x38\x6f\x72','\x69\x4b\x54\x38\x42\x38\x6f\x38\x41\x6d\x6b\x75\x61\x71','\x76\x65\x4b\x63\x69\x43\x6f\x36\x64\x6d\x6b\x76\x57\x36\x43\x57\x69\x38\x6f\x57\x57\x4f\x70\x64\x4b\x71','\x64\x58\x65\x37\x57\x4f\x4a\x63\x4f\x6d\x6f\x6a\x68\x47','\x42\x75\x46\x63\x4d\x43\x6f\x6e\x57\x50\x66\x71\x57\x35\x34\x54','\x57\x35\x4b\x68\x57\x37\x43','\x67\x4b\x4b\x66\x57\x36\x39\x78\x6b\x73\x62\x48','\x65\x67\x54\x74\x57\x4f\x66\x64\x75\x4d\x72\x30','\x57\x37\x46\x64\x4b\x53\x6b\x72\x57\x37\x70\x63\x4b\x57','\x77\x5a\x44\x73\x78\x6d\x6f\x70\x57\x4f\x42\x64\x54\x38\x6f\x77\x57\x34\x6a\x2b\x6e\x53\x6b\x6f\x57\x52\x61','\x6e\x6d\x6b\x6c\x57\x51\x57\x4f\x57\x52\x4b','\x71\x6d\x6f\x65\x71\x73\x74\x63\x4b\x53\x6f\x51\x79\x43\x6b\x39\x57\x51\x46\x63\x50\x72\x31\x44\x57\x50\x53','\x57\x51\x42\x63\x56\x77\x57\x59\x57\x52\x70\x64\x4e\x72\x66\x49\x77\x38\x6f\x66\x63\x6d\x6f\x32\x57\x37\x57','\x46\x38\x6f\x73\x57\x37\x43','\x57\x36\x4a\x64\x54\x6d\x6b\x34\x57\x37\x78\x63\x4f\x71','\x75\x43\x6f\x41\x65\x38\x6f\x34\x57\x37\x70\x64\x50\x77\x46\x64\x52\x77\x5a\x63\x54\x73\x33\x64\x55\x71','\x57\x36\x79\x7a\x62\x47','\x63\x30\x31\x4a\x76\x38\x6f\x32\x78\x38\x6f\x75\x61\x47','\x45\x53\x6b\x34\x57\x4f\x50\x42\x75\x53\x6b\x55\x57\x36\x50\x70','\x68\x67\x62\x4f\x73\x53\x6f\x45','\x65\x67\x31\x63\x57\x4f\x72\x77','\x57\x4f\x34\x45\x66\x53\x6b\x2b\x57\x50\x65','\x57\x51\x74\x63\x47\x66\x2f\x63\x4c\x57','\x43\x62\x4a\x64\x48\x6d\x6b\x61\x57\x35\x6d\x61\x57\x4f\x79\x6a\x57\x50\x48\x74\x75\x67\x50\x54','\x6c\x67\x4f\x76\x67\x38\x6b\x70','\x74\x5a\x4e\x63\x47\x4b\x4a\x64\x56\x43\x6b\x42\x64\x38\x6b\x69\x77\x57','\x77\x6d\x6b\x51\x57\x50\x5a\x63\x55\x75\x64\x63\x55\x4b\x76\x33','\x57\x50\x5a\x63\x4c\x38\x6f\x7a\x57\x4f\x39\x6c\x74\x31\x53\x62','\x6f\x31\x7a\x30','\x6d\x4c\x37\x63\x54\x53\x6f\x4a\x57\x52\x65','\x78\x43\x6b\x4a\x57\x51\x58\x61\x75\x57','\x57\x51\x4e\x63\x48\x43\x6b\x72\x57\x34\x31\x4a\x61\x43\x6f\x54\x57\x52\x39\x54\x57\x50\x4a\x63\x4b\x6d\x6b\x30\x57\x50\x30','\x57\x37\x38\x49\x57\x34\x74\x64\x54\x61','\x68\x75\x6d\x33\x57\x36\x4c\x67\x6b\x61','\x57\x36\x74\x63\x4a\x61\x33\x64\x50\x38\x6b\x51','\x57\x50\x68\x63\x50\x53\x6f\x76\x57\x52\x66\x77\x74\x64\x4f\x71','\x45\x53\x6f\x6e\x57\x50\x65\x77\x57\x37\x38','\x65\x53\x6b\x71\x57\x51\x33\x64\x54\x32\x70\x64\x53\x43\x6b\x39\x57\x52\x4b','\x65\x74\x5a\x64\x54\x76\x5a\x64\x55\x57','\x57\x34\x52\x63\x4e\x57\x78\x64\x53\x53\x6b\x46\x57\x4f\x6c\x63\x54\x38\x6b\x4d','\x76\x6d\x6b\x45\x57\x4f\x66\x2f\x46\x61','\x57\x51\x74\x63\x55\x58\x31\x55\x57\x35\x74\x63\x4a\x4d\x31\x62','\x61\x53\x6b\x4b\x57\x36\x61\x73\x44\x61','\x74\x53\x6b\x5a\x77\x53\x6f\x4d\x57\x36\x30','\x57\x34\x5a\x64\x52\x38\x6b\x66\x57\x34\x61','\x6c\x38\x6b\x6f\x57\x34\x53\x59\x77\x43\x6f\x4d\x57\x34\x35\x55','\x6e\x38\x6f\x4b\x57\x34\x38\x43','\x68\x4e\x4f\x66\x57\x52\x78\x63\x47\x65\x76\x31\x42\x71\x44\x4b\x78\x33\x37\x63\x4f\x57','\x75\x30\x37\x63\x4a\x6d\x6b\x42\x57\x51\x2f\x64\x50\x4c\x57','\x57\x50\x33\x63\x4c\x38\x6f\x7a\x57\x50\x4c\x55\x76\x71','\x66\x67\x54\x44\x57\x4f\x76\x6f\x71\x59\x48\x39','\x68\x75\x6d\x49\x57\x34\x54\x65\x6d\x5a\x31\x58','\x57\x35\x30\x6e\x57\x34\x53\x49\x57\x52\x4b','\x57\x34\x70\x64\x4c\x53\x6b\x64\x57\x36\x68\x63\x4f\x53\x6b\x64\x57\x35\x65','\x6b\x72\x33\x64\x4d\x4b\x5a\x64\x53\x57','\x70\x47\x52\x64\x50\x65\x56\x64\x47\x67\x74\x64\x4b\x58\x61','\x57\x50\x33\x63\x4b\x58\x4a\x63\x47\x6d\x6f\x59','\x42\x38\x6b\x4f\x57\x50\x62\x4f\x72\x38\x6b\x30\x57\x37\x7a\x77','\x6f\x43\x6b\x53\x57\x52\x56\x64\x4b\x75\x46\x64\x4b\x43\x6b\x71\x57\x50\x53','\x57\x51\x74\x63\x4d\x30\x64\x63\x4d\x31\x46\x63\x4b\x61','\x43\x58\x78\x64\x48\x6d\x6f\x6e\x57\x4f\x44\x41\x57\x34\x69\x2b\x57\x52\x69','\x57\x35\x46\x64\x54\x53\x6b\x4c\x57\x36\x42\x63\x4d\x71','\x44\x67\x66\x4c\x62\x6d\x6f\x65','\x61\x47\x74\x64\x4a\x38\x6f\x6e\x57\x36\x56\x63\x50\x62\x52\x63\x48\x6d\x6b\x53\x57\x4f\x70\x63\x49\x47\x64\x64\x4f\x71','\x6f\x43\x6b\x32\x57\x4f\x30\x52\x57\x4f\x69','\x69\x6d\x6f\x43\x6f\x53\x6b\x56\x57\x51\x74\x64\x53\x78\x5a\x63\x4c\x57'];_0x3652=function(){return _0xbd42ec;};return _0x3652();}const _0x38ebdb=(function(){let _0x4b39cf=!![];return function(_0x5a4fad,_0x47bc7c){const _0x151b3a=_0x4b39cf?function(){const _0x1cc8ae=_0x2768;if(_0x47bc7c){const _0x26d202=_0x47bc7c[_0x1cc8ae(0x122,'\x6f\x5a\x6c\x64')](_0x5a4fad,arguments);return _0x47bc7c=null,_0x26d202;}}:function(){};return _0x4b39cf=![],_0x151b3a;};}()),_0x4d54b7=_0x38ebdb(this,function(){const _0x5c66d3=_0x2768,_0x26a871={};_0x26a871[_0x5c66d3(0x139,'\x42\x79\x5e\x6c')]=_0x5c66d3(0xfc,'\x42\x79\x5e\x6c')+_0x5c66d3(0xe9,'\x45\x5b\x70\x34');const _0x5791b5=_0x26a871;return _0x4d54b7[_0x5c66d3(0x114,'\x46\x40\x6c\x43')]()[_0x5c66d3(0x12f,'\x46\x40\x6c\x43')](_0x5791b5[_0x5c66d3(0x118,'\x47\x70\x67\x6b')])[_0x5c66d3(0x133,'\x52\x32\x77\x23')]()[_0x5c66d3(0xfd,'\x28\x63\x32\x42')+_0x5c66d3(0x108,'\x5e\x38\x47\x77')](_0x4d54b7)[_0x5c66d3(0xec,'\x4a\x25\x24\x69')](_0x5791b5[_0x5c66d3(0x11c,'\x38\x34\x40\x49')]);});_0x4d54b7();const _0xd1b4cc=_0x4e6854(0xed,'\x6f\x5a\x6c\x64')+_0x4e6854(0x10f,'\x77\x55\x5b\x52')+_0x4e6854(0x105,'\x69\x71\x33\x36')+_0x4e6854(0x11e,'\x75\x70\x45\x31'),_0x560266=/^[a-f0-9]{32,}$/i;let _0x4509b9=undefined;function _0x3ab121(){const _0xb5ed1a=_0x4e6854,_0x1b4078={};_0x1b4078[_0xb5ed1a(0x134,'\x5e\x38\x47\x77')]=_0xb5ed1a(0x106,'\x42\x79\x4a\x6b')+_0xb5ed1a(0x112,'\x41\x69\x44\x4c'),_0x1b4078[_0xb5ed1a(0x12c,'\x45\x5b\x70\x34')]=function(_0x28e217,_0x5ee32e){return _0x28e217===_0x5ee32e;};const _0x11615f=_0x1b4078;if(_0x4509b9!==undefined)return _0x4509b9;try{const _0x1d6233=require(_0x11615f[_0xb5ed1a(0x136,'\x45\x5b\x70\x34')]);if(_0x1d6233&&_0x11615f[_0xb5ed1a(0x104,'\x5d\x66\x47\x38')](typeof _0x1d6233[_0xb5ed1a(0x123,'\x75\x70\x45\x31')],_0xb5ed1a(0x120,'\x45\x5b\x70\x34')))return _0x4509b9=_0x1d6233,_0x4509b9;return _0x4509b9=null,null;}catch{return _0x4509b9=null,null;}}function _0x2768(_0x466d8a,_0x5d5b61){_0x466d8a=_0x466d8a-(0x1c32+0x1a2e+-0x3578);const _0x7d921=_0x3652();let _0x8192b=_0x7d921[_0x466d8a];if(_0x2768['\x63\x77\x78\x70\x6a\x49']===undefined){var _0x38c11=function(_0x375d13){const _0x55123f='\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 _0x240edd='',_0x5ec365='',_0x5324d8=_0x240edd+_0x38c11,_0x1e695b=(''+function(){return 0x6b*0xd+-0x6*0x62d+0x1f9f;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0x2469*0x1+0x1dd0+0x69a);for(let _0x1be0b9=-0x1be6+-0x918+0x3b3*0xa,_0x589342,_0x2468e4,_0x1dd89f=-0x1038+0x1*0x1609+-0x1*0x5d1;_0x2468e4=_0x375d13['\x63\x68\x61\x72\x41\x74'](_0x1dd89f++);~_0x2468e4&&(_0x589342=_0x1be0b9%(-0xe14+0x11*-0x1f6+-0xd*-0x3a6)?_0x589342*(-0x23ef+-0x1c*-0xd7+0xcab)+_0x2468e4:_0x2468e4,_0x1be0b9++%(-0xf1b*0x1+-0x96a+0x1889))?_0x240edd+=_0x1e695b||_0x5324d8['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x1dd89f+(0x250f*0x1+0x68e+-0x17*0x1e5))-(-0x4f4+0x2a2+0x4*0x97)!==0x283*0x2+0x2689*0x1+0x19d*-0x1b?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x2495+0x35e*-0x2+0x2c50&_0x589342>>(-(-0x15b*-0x4+0x1188+-0x16f2)*_0x1be0b9&-0x2bd*0xe+0x5c2+0x209a)):_0x1be0b9:0xf4a+0x1c8f+-0x2bd9){_0x2468e4=_0x55123f['\x69\x6e\x64\x65\x78\x4f\x66'](_0x2468e4);}for(let _0x103db0=-0x609*0x2+0x4f1+0x721,_0x51c34c=_0x240edd['\x6c\x65\x6e\x67\x74\x68'];_0x103db0<_0x51c34c;_0x103db0++){_0x5ec365+='\x25'+('\x30\x30'+_0x240edd['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x103db0)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x4*0x6c7+0xc91+0x1*-0x279d))['\x73\x6c\x69\x63\x65'](-(0x129*-0x1+0x1*0x6a8+-0x57d*0x1));}return decodeURIComponent(_0x5ec365);};const _0x2cf8b5=function(_0x4dce0c,_0x2235b2){let _0x20d23a=[],_0x48321b=0x12a4+-0x54c+-0xf4*0xe,_0x182a64,_0x397520='';_0x4dce0c=_0x38c11(_0x4dce0c);let _0x5cb516;for(_0x5cb516=-0x1489+0x23f0+-0xf67;_0x5cb516<-0x1*0x2611+0x1*0x1ac0+-0xc51*-0x1;_0x5cb516++){_0x20d23a[_0x5cb516]=_0x5cb516;}for(_0x5cb516=0xe5c+0x1471*0x1+-0x97*0x3b;_0x5cb516<-0xbb9+-0x1117*0x1+-0x3*-0x9f0;_0x5cb516++){_0x48321b=(_0x48321b+_0x20d23a[_0x5cb516]+_0x2235b2['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x5cb516%_0x2235b2['\x6c\x65\x6e\x67\x74\x68']))%(-0x38f*0x9+0xd4f+0x13b8),_0x182a64=_0x20d23a[_0x5cb516],_0x20d23a[_0x5cb516]=_0x20d23a[_0x48321b],_0x20d23a[_0x48321b]=_0x182a64;}_0x5cb516=0xa1f+0x24bb*0x1+-0x2eda,_0x48321b=-0x623+0x21e3+0xde0*-0x2;for(let _0x567426=0xd*-0x251+0x13a3+0xa7a;_0x567426<_0x4dce0c['\x6c\x65\x6e\x67\x74\x68'];_0x567426++){_0x5cb516=(_0x5cb516+(-0x94b*0x1+-0x2068+0x44*0x9d))%(0x1a07*-0x1+0x22e4+-0x7dd),_0x48321b=(_0x48321b+_0x20d23a[_0x5cb516])%(0x13*-0x10d+0x2*-0xa4e+0x2993*0x1),_0x182a64=_0x20d23a[_0x5cb516],_0x20d23a[_0x5cb516]=_0x20d23a[_0x48321b],_0x20d23a[_0x48321b]=_0x182a64,_0x397520+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x4dce0c['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x567426)^_0x20d23a[(_0x20d23a[_0x5cb516]+_0x20d23a[_0x48321b])%(0x15b4+0x1180+0x28c*-0xf)]);}return _0x397520;};_0x2768['\x4a\x4a\x74\x6c\x66\x42']=_0x2cf8b5,_0x2768['\x50\x71\x6d\x6b\x56\x48']={},_0x2768['\x63\x77\x78\x70\x6a\x49']=!![];}const _0x4b61dd=_0x7d921[0xc*0x11e+-0x14e*-0x2+-0x1004],_0x7f50bf=_0x466d8a+_0x4b61dd,_0x3a6167=_0x2768['\x50\x71\x6d\x6b\x56\x48'][_0x7f50bf];if(!_0x3a6167){if(_0x2768['\x41\x79\x79\x4a\x66\x72']===undefined){const _0x189cf5=function(_0xade504){this['\x70\x45\x61\x61\x44\x61']=_0xade504,this['\x68\x58\x6c\x42\x6d\x62']=[0x75a*-0x1+-0x1*-0x1886+0x5b9*-0x3,-0x1b7*-0x2+0x7f*0x21+-0x89*0x25,-0x23e*0x7+0xb9e*0x1+-0x12*-0x3a],this['\x45\x79\x6a\x43\x41\x69']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x6e\x51\x69\x64\x56\x6f']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x71\x73\x55\x4e\x65\x52']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x189cf5['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x4e\x78\x6f\x79\x65\x54']=function(){const _0x4564d7=new RegExp(this['\x6e\x51\x69\x64\x56\x6f']+this['\x71\x73\x55\x4e\x65\x52']),_0x451a84=_0x4564d7['\x74\x65\x73\x74'](this['\x45\x79\x6a\x43\x41\x69']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x68\x58\x6c\x42\x6d\x62'][0x2af+-0x1*-0x3a+-0x2e8]:--this['\x68\x58\x6c\x42\x6d\x62'][0x219*0xa+0x51b*0x1+-0xb*0x25f];return this['\x6a\x54\x6e\x66\x41\x6b'](_0x451a84);},_0x189cf5['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x6a\x54\x6e\x66\x41\x6b']=function(_0x91d78){if(!Boolean(~_0x91d78))return _0x91d78;return this['\x57\x73\x6a\x66\x6c\x45'](this['\x70\x45\x61\x61\x44\x61']);},_0x189cf5['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x57\x73\x6a\x66\x6c\x45']=function(_0x4cc782){for(let _0x22c780=0xdc+0x142e+-0x150a*0x1,_0x2d7db7=this['\x68\x58\x6c\x42\x6d\x62']['\x6c\x65\x6e\x67\x74\x68'];_0x22c780<_0x2d7db7;_0x22c780++){this['\x68\x58\x6c\x42\x6d\x62']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x2d7db7=this['\x68\x58\x6c\x42\x6d\x62']['\x6c\x65\x6e\x67\x74\x68'];}return _0x4cc782(this['\x68\x58\x6c\x42\x6d\x62'][0x22a5+0x1962+-0x3c07]);},(''+function(){return 0x43a*-0x3+-0x2b9*-0x5+-0x1*0xef;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x10f7+0x1*-0x178d+-0xf1*-0x7)&&new _0x189cf5(_0x2768)['\x4e\x78\x6f\x79\x65\x54'](),_0x2768['\x41\x79\x79\x4a\x66\x72']=!![];}_0x8192b=_0x2768['\x4a\x4a\x74\x6c\x66\x42'](_0x8192b,_0x5d5b61),_0x2768['\x50\x71\x6d\x6b\x56\x48'][_0x7f50bf]=_0x8192b;}else _0x8192b=_0x3a6167;return _0x8192b;}function _0x3bf503(){const _0x36a7e8=_0x4e6854,_0x34913a={};_0x34913a[_0x36a7e8(0xf1,'\x5e\x38\x47\x77')]=_0x36a7e8(0x12e,'\x46\x55\x23\x26'),_0x34913a[_0x36a7e8(0xef,'\x41\x6d\x5e\x6d')]=_0x36a7e8(0x138,'\x67\x71\x74\x48'),_0x34913a[_0x36a7e8(0x116,'\x38\x34\x40\x49')]=function(_0x123151,_0xe93c9e){return _0x123151===_0xe93c9e;},_0x34913a[_0x36a7e8(0x132,'\x4c\x23\x34\x77')]=_0x36a7e8(0x107,'\x41\x69\x44\x4c');const _0x199227=_0x34913a,_0x1cd7f3=String(process.env.EVOLVER_WORKSPACE_KEYCHAIN||_0x199227[_0x36a7e8(0x12b,'\x41\x69\x44\x4c')])[_0x36a7e8(0x10a,'\x45\x59\x6b\x4c')+'\x61\x73\x65']()[_0x36a7e8(0x101,'\x4a\x39\x54\x36')]();if(_0x1cd7f3===_0x199227['\x6b\x78\x58\x4c\x56']||_0x199227[_0x36a7e8(0x130,'\x50\x78\x6a\x71')](_0x1cd7f3,_0x199227[_0x36a7e8(0xf8,'\x38\x34\x40\x49')])||_0x1cd7f3===_0x199227['\x70\x72\x4a\x57\x52'])return _0x1cd7f3;return _0x199227[_0x36a7e8(0xff,'\x5d\x66\x47\x38')];}const _0x22f27c=[/no\s+matching\s+entry/i,/could\s+not\s+be\s+found/i,/element\s+not\s+found/i,/\bnoentry\b/i,/\bno\s*entry\b/i,/not\s+found\s+in\s+(?:secure|keychain)/i];function _0xe8caa(_0x41c1f4){const _0x28204f=_0x4e6854,_0x561106=_0x41c1f4&&_0x41c1f4[_0x28204f(0xf0,'\x38\x34\x40\x49')]||'';return _0x22f27c[_0x28204f(0x124,'\x4c\x4a\x4d\x42')](_0x5bbf02=>_0x5bbf02['\x74\x65\x73\x74'](_0x561106));}function _0x20a4cb(_0x322a1b){const _0x2f488a=_0x4e6854,_0x4afb33={'\x48\x44\x78\x53\x47':function(_0x1d8435){return _0x1d8435();},'\x61\x70\x61\x72\x61':function(_0x535257,_0x3ffe94){return _0x535257===_0x3ffe94;},'\x77\x56\x4c\x46\x7a':_0x2f488a(0xf6,'\x4c\x4a\x4d\x42'),'\x78\x6e\x52\x70\x68':_0x2f488a(0x10d,'\x23\x56\x44\x2a'),'\x4b\x7a\x69\x64\x59':function(_0x592e42,_0x55ffa8){return _0x592e42(_0x55ffa8);}},_0x3f7908=_0x4afb33[_0x2f488a(0x121,'\x77\x55\x5b\x52')](_0x3ab121),_0x2150c7={};_0x2150c7[_0x2f488a(0x115,'\x6f\x5a\x6c\x64')+'\x65']=![],_0x2150c7['\x69\x64']=null;if(!_0x3f7908)return _0x2150c7;try{const _0x42e060=new _0x3f7908[(_0x2f488a(0x126,'\x41\x4c\x24\x62'))](_0xd1b4cc,_0x322a1b),_0x134988=_0x42e060[_0x2f488a(0xf2,'\x5e\x38\x47\x77')+_0x2f488a(0x12a,'\x77\x55\x5b\x52')]();if(_0x4afb33[_0x2f488a(0xf3,'\x74\x56\x4b\x45')](typeof _0x134988,_0x4afb33[_0x2f488a(0x10b,'\x6f\x5a\x6c\x64')])&&_0x560266[_0x2f488a(0x13a,'\x62\x4f\x7a\x58')](_0x134988['\x74\x72\x69\x6d']()))return{'\x61\x76\x61\x69\x6c\x61\x62\x6c\x65':!![],'\x69\x64':_0x134988['\x74\x72\x69\x6d']()};const _0x26dc5d={};return _0x26dc5d['\x61\x76\x61\x69\x6c\x61\x62\x6c'+'\x65']=!![],_0x26dc5d['\x69\x64']=null,_0x26dc5d;}catch(_0x4a21d2){if(_0x4afb33['\x78\x6e\x52\x70\x68']!=='\x47\x59\x71\x53\x56'){const _0x59e47d={};_0x59e47d[_0x2f488a(0x128,'\x30\x53\x6d\x42')+'\x65']=!![],_0x59e47d['\x69\x64']=null;if(_0x4afb33[_0x2f488a(0xfb,'\x47\x70\x67\x6b')](_0xe8caa,_0x4a21d2))return _0x59e47d;const _0x496562={};return _0x496562[_0x2f488a(0x10e,'\x74\x56\x4b\x45')+'\x65']=![],_0x496562['\x69\x64']=null,_0x496562;}else{const _0x5d49a3=_0x4afb33[_0x2f488a(0x121,'\x77\x55\x5b\x52')](_0x58a024);if(!_0x5d49a3)return![];try{const _0x1a2cf8=new _0x5d49a3[(_0x2f488a(0x102,'\x44\x78\x79\x58'))](_0x26c171,_0x9b7938);return _0x1a2cf8[_0x2f488a(0xf4,'\x45\x5b\x70\x34')+_0x2f488a(0x11b,'\x75\x52\x4b\x4d')](_0x505b41),!![];}catch{return![];}}}}function _0x583c84(_0x47f003,_0x25bcd2){const _0xa6ed1b=_0x4e6854,_0x230e71={'\x5a\x71\x69\x45\x53':function(_0x3efb1f){return _0x3efb1f();}},_0x25b204=_0x230e71[_0xa6ed1b(0xf9,'\x65\x68\x28\x4e')](_0x3ab121);if(!_0x25b204)return![];try{const _0x1aee68=new _0x25b204[(_0xa6ed1b(0x126,'\x41\x4c\x24\x62'))](_0xd1b4cc,_0x47f003);return _0x1aee68[_0xa6ed1b(0xee,'\x46\x40\x6c\x43')+_0xa6ed1b(0x113,'\x41\x6d\x5e\x6d')](_0x25bcd2),!![];}catch{return![];}}const _0x28fa46={};_0x28fa46[_0x4e6854(0xe8,'\x67\x71\x74\x48')+_0x4e6854(0xf5,'\x52\x32\x77\x23')]=_0xd1b4cc,_0x28fa46[_0x4e6854(0x103,'\x25\x30\x6d\x38')]=_0x3bf503,_0x28fa46[_0x4e6854(0x100,'\x4a\x25\x24\x69')+'\x6e']=_0x3ab121,_0x28fa46[_0x4e6854(0x129,'\x4a\x25\x24\x69')+'\x4b\x65\x79\x63\x68\x61\x69\x6e']=_0x20a4cb,_0x28fa46[_0x4e6854(0x135,'\x50\x78\x6a\x71')+_0x4e6854(0x111,'\x45\x59\x6b\x4c')]=_0x583c84,_0x28fa46[_0x4e6854(0x11f,'\x77\x55\x5b\x52')+'\x72\x79\x45\x72\x72\x6f\x72']=_0xe8caa,module[_0x4e6854(0xeb,'\x43\x4c\x77\x40')]=_0x28fa46;
|
package/src/ops/lifecycle.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
const fs = require('fs');
|
|
7
7
|
const path = require('path');
|
|
8
8
|
const os = require('os');
|
|
9
|
-
const { execSync, spawn } = require('child_process');
|
|
9
|
+
const { execFileSync, execSync, spawn } = require('child_process');
|
|
10
10
|
// 10 MB — prevents RangeError on large child process output (e.g. git log/diff
|
|
11
11
|
// on large repos). See GHSA reports / issue #451.
|
|
12
12
|
const MAX_EXEC_BUFFER = 10 * 1024 * 1024;
|
|
@@ -37,9 +37,22 @@ function execText(command) {
|
|
|
37
37
|
return execSync(command, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], maxBuffer: MAX_EXEC_BUFFER });
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
function execFileText(file, args) {
|
|
41
|
+
return execFileSync(file, args, {
|
|
42
|
+
encoding: 'utf8',
|
|
43
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
44
|
+
maxBuffer: MAX_EXEC_BUFFER,
|
|
45
|
+
windowsHide: true
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
40
49
|
function listProcesses() {
|
|
41
50
|
if (process.platform === 'win32') {
|
|
42
|
-
var out =
|
|
51
|
+
var out = execFileText('powershell', [
|
|
52
|
+
'-NoProfile',
|
|
53
|
+
'-Command',
|
|
54
|
+
'Get-CimInstance Win32_Process | ForEach-Object { $cmd = if ($_.CommandLine) { $_.CommandLine } else { \'\'}; Write-Output (\'{0}\t{1}\' -f $_.ProcessId, $cmd) }'
|
|
55
|
+
]);
|
|
43
56
|
var procs = [];
|
|
44
57
|
for (var line of out.split(/\r?\n/)) {
|
|
45
58
|
if (!line || !line.trim()) continue;
|
|
@@ -132,7 +145,7 @@ function start(options) {
|
|
|
132
145
|
}
|
|
133
146
|
|
|
134
147
|
var child = spawn(process.execPath, [script, '--loop'], {
|
|
135
|
-
detached: true, stdio: ['ignore', out, err], cwd: WORKSPACE_ROOT, env: env
|
|
148
|
+
detached: true, stdio: ['ignore', out, err], cwd: WORKSPACE_ROOT, env: env, windowsHide: true
|
|
136
149
|
});
|
|
137
150
|
child.unref();
|
|
138
151
|
fs.writeFileSync(PID_FILE, String(child.pid));
|
|
@@ -163,7 +176,7 @@ function stop() {
|
|
|
163
176
|
console.log('[Lifecycle] Force-killing PID ' + remaining[j]);
|
|
164
177
|
// Windows does not support SIGKILL; use taskkill /F instead.
|
|
165
178
|
if (process.platform === 'win32') {
|
|
166
|
-
try {
|
|
179
|
+
try { execFileSync('taskkill', ['/F', '/PID', String(remaining[j])], { stdio: 'ignore', windowsHide: true }); } catch (e) {}
|
|
167
180
|
} else {
|
|
168
181
|
try { process.kill(remaining[j], 'SIGKILL'); } catch (e) {}
|
|
169
182
|
}
|