@scheduler-systems/gal-run 0.0.248 → 0.0.253

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.
@@ -1,2554 +1,932 @@
1
1
  #!/usr/bin/env node
2
- const _0x52049f = _0x53af;
3
- (function (_0x20bb89, _0x4605fc) {
4
- const _0x2cf4fc = {
5
- _0x3d410a: 0x6a3,
6
- _0x393b8a: 0x4f9,
7
- _0x946c47: 0xa8,
8
- _0x32f02b: 0x7df,
9
- _0x1e537e: 0x490,
10
- _0x54a1f6: 0x40f,
11
- _0x2b6346: 0x702,
12
- _0x32bf4: 0x268,
13
- _0x2daa69: 0x46c,
14
- _0x49dd03: 0x200
15
- }, _0xfc5430 = _0x53af, _0x19f660 = _0x20bb89();
16
- while (!![]) {
17
- try {
18
- const _0x1d3dae = parseInt(_0xfc5430(_0x2cf4fc._0x3d410a)) / 0x1 + parseInt(_0xfc5430(_0x2cf4fc._0x393b8a)) / 0x2 * (parseInt(_0xfc5430(_0x2cf4fc._0x946c47)) / 0x3) + -parseInt(_0xfc5430(_0x2cf4fc._0x32f02b)) / 0x4 + parseInt(_0xfc5430(_0x2cf4fc._0x1e537e)) / 0x5 + -parseInt(_0xfc5430(_0x2cf4fc._0x54a1f6)) / 0x6 * (parseInt(_0xfc5430(_0x2cf4fc._0x2b6346)) / 0x7) + -parseInt(_0xfc5430(_0x2cf4fc._0x32bf4)) / 0x8 * (-parseInt(_0xfc5430(_0x2cf4fc._0x2daa69)) / 0x9) + -parseInt(_0xfc5430(_0x2cf4fc._0x49dd03)) / 0xa;
19
- if (_0x1d3dae === _0x4605fc)
20
- break;
21
- else
22
- _0x19f660['push'](_0x19f660['shift']());
23
- } catch (_0x53fbcc) {
24
- _0x19f660['push'](_0x19f660['shift']());
2
+ /**
3
+ * GAL CLI Postinstall Script
4
+ *
5
+ * Automatically installs Claude Code integrations when GAL CLI is installed via pnpm.
6
+ * This script runs as a pnpm lifecycle hook after package installation completes.
7
+ *
8
+ * What it installs:
9
+ * 1. SessionStart hook → ~/.claude/hooks/gal-sync-reminder.js
10
+ * - Shows sync status at the start of each Claude session
11
+ * - Prompts user to login/sync if needed
12
+ * 2. Status line script → ~/.claude/status_lines/gal-sync-status.py
13
+ * - Displays sync warnings in Claude's status bar (when not synced)
14
+ * 3. GAL CLI rules → ~/.claude/rules/gal-cli.md
15
+ * - Provides persistent GAL CLI awareness to Claude Code
16
+ *
17
+ * Scope:
18
+ * - These are CLI-level integrations (user-wide, not project-specific)
19
+ * - Org-specific configs are handled by `gal sync --pull`
20
+ *
21
+ * Key behaviors:
22
+ * - Idempotent: Safe to run multiple times, only updates when versions change
23
+ * - Version-aware: Checks version markers before overwriting files
24
+ * - Self-cleaning: Installed scripts remove themselves if GAL CLI is uninstalled
25
+ * - Non-destructive: Won't overwrite user's custom configs (e.g., custom statusLine)
26
+ * - Telemetry: Queues installation event for next CLI run (GAL-114)
27
+ *
28
+ * When it runs:
29
+ * - Automatically during `pnpm add -g @scheduler-systems/gal-run`
30
+ * - Can be manually triggered via `pnpm run postinstall` in the CLI package directory
31
+ *
32
+ * Prerequisites:
33
+ * - Node.js 18+ (CommonJS module)
34
+ * - Writable ~/.claude directory
35
+ *
36
+ * Related files:
37
+ * - apps/cli/scripts/preuninstall.cjs - Cleanup script (runs before uninstall)
38
+ * - apps/cli/package.json - pnpm lifecycle hooks configuration
39
+ *
40
+ * @see specs/gal-cli/installation.md
41
+ */
42
+
43
+ const fs = require('fs');
44
+ const path = require('path');
45
+ const os = require('os');
46
+
47
+ // =============================================================================
48
+ // Version Configuration
49
+ // =============================================================================
50
+ // Version markers control when files get updated.
51
+ // Bump these when file contents change to trigger reinstallation.
52
+
53
+ // Get current CLI version from package.json
54
+ const cliPackageJson = require('../package.json');
55
+ const cliVersion = cliPackageJson.version;
56
+
57
+ // Version markers for idempotency checks
58
+ // Bump these to force updates to installed files
59
+ const HOOK_VERSION = '4.0.0'; // SessionStart hook (4.0.0: Background cache refresh + sync)
60
+ const STATUS_LINE_VERSION = '1.0.0'; // Status line script
61
+ const RULES_VERSION = '1.0.0'; // GAL CLI rules
62
+
63
+ // =============================================================================
64
+ // GAL CLI Rules Content
65
+ // =============================================================================
66
+ // Injected into ~/.claude/rules/gal-cli.md
67
+ // Provides persistent GAL CLI awareness to Claude without hook overhead.
68
+ // Claude automatically loads rules from ~/.claude/rules/ at session start.
69
+ // =============================================================================
70
+
71
+ const GAL_CLI_RULES_CONTENT = `# GAL CLI
72
+
73
+ <!-- GAL_RULES_VERSION = "${RULES_VERSION}" -->
74
+
75
+ The \`gal\` CLI is available for managing org-approved AI agent configurations.
76
+
77
+ ## Available Commands
78
+ - \`gal sync --pull\` - Download latest approved config from your organization
79
+ - \`gal auth login\` - Authenticate with GitHub
80
+ - \`gal --help\` - See all available commands
81
+
82
+ ## Behavior Rules
83
+ - **Confirmation Required**: Always ask the user before running any \`gal\` command
84
+ - **Self-Discovery**: If unsure about syntax, run \`gal --help\` or \`gal <command> --help\` first
85
+ - **Sync Notifications**: When you see a GAL sync notification, ask: "Do you want me to sync gal now?"
86
+ `;
87
+
88
+ // =============================================================================
89
+ // SessionStart Hook Content
90
+ // =============================================================================
91
+ // Shows sync status notification at Claude session start.
92
+ // Appears once at the top of the chat window and stays visible.
93
+ // For continuous status updates, see the status line script below.
94
+ // =============================================================================
95
+
96
+ const HOOK_CONTENT = `#!/usr/bin/env node
97
+ /**
98
+ * GAL Config Sync Hook for Claude Code (SessionStart)
99
+ * Version: ${HOOK_VERSION}
100
+ *
101
+ * Shows sync status at session start:
102
+ * - Not authenticated → prompt to login
103
+ * - Token expired → prompt to re-login
104
+ * - Not synced → prompt to sync
105
+ * - Config outdated → prompt to sync
106
+ * - All good → show synced status
107
+ *
108
+ * Self-cleaning: removes itself if GAL CLI is uninstalled.
109
+ */
110
+
111
+ // GAL_HOOK_VERSION = "${HOOK_VERSION}"
112
+
113
+ const fs = require('fs');
114
+ const path = require('path');
115
+ const { execSync, spawn } = require('child_process');
116
+ const os = require('os');
117
+
118
+ const GAL_DIR = '.gal';
119
+ const SYNC_STATE_FILE = 'sync-state.json';
120
+ const GAL_CONFIG_FILE = path.join(os.homedir(), '.gal', 'config.json');
121
+
122
+ function showMessage(message, status) {
123
+ // Queue telemetry event before showing message
124
+ queueTelemetryEvent(status);
125
+ console.log(JSON.stringify({ systemMessage: message }));
126
+ process.exit(0);
127
+ }
128
+
129
+ // =============================================================================
130
+ // Telemetry: Queue events for CLI to send on next run (GAL-114)
131
+ // =============================================================================
132
+ // Hook runs in Claude context (no network access), so we queue telemetry events
133
+ // in a JSON file that the CLI reads and flushes on next run. This allows us to
134
+ // track hook executions without blocking the user or requiring network calls.
135
+ // =============================================================================
136
+
137
+ /**
138
+ * Queue a telemetry event for the next CLI run.
139
+ *
140
+ * Since hooks run synchronously in Claude's context, we can't send telemetry
141
+ * directly. Instead, we write events to a pending queue file that the CLI
142
+ * reads and flushes on its next execution.
143
+ *
144
+ * @param {string} status - Sync status from the hook (auth_required, synced, etc.)
145
+ */
146
+ function queueTelemetryEvent(status) {
147
+ const pendingEventsPath = path.join(os.homedir(), '.gal', 'telemetry-pending-events.json');
148
+ const galDir = path.join(os.homedir(), '.gal');
149
+
150
+ let pending = [];
151
+ try {
152
+ if (fs.existsSync(pendingEventsPath)) {
153
+ pending = JSON.parse(fs.readFileSync(pendingEventsPath, 'utf-8'));
154
+ }
155
+ } catch {}
156
+
157
+ // Add session start hook event
158
+ pending.push({
159
+ id: require('crypto').randomUUID(),
160
+ eventType: 'hook_triggered',
161
+ timestamp: new Date().toISOString(),
162
+ payload: {
163
+ notificationType: 'session_start',
164
+ hookVersion: '${HOOK_VERSION}',
165
+ status: status,
166
+ cwd: process.cwd(),
167
+ platform: process.platform,
168
+ nodeVersion: process.version,
169
+ },
170
+ queuedAt: Date.now(),
171
+ });
172
+
173
+ try {
174
+ if (!fs.existsSync(galDir)) {
175
+ fs.mkdirSync(galDir, { recursive: true });
176
+ }
177
+ fs.writeFileSync(pendingEventsPath, JSON.stringify(pending), 'utf-8');
178
+ } catch {
179
+ // Ignore errors - telemetry is optional
180
+ }
181
+ }
182
+
183
+ // =============================================================================
184
+ // Self-cleaning: Remove hook if GAL CLI is uninstalled
185
+ // =============================================================================
186
+
187
+ function isGalInstalled() {
188
+ try {
189
+ execSync('which gal', { stdio: 'ignore' });
190
+ return true;
191
+ } catch {
192
+ return false;
193
+ }
194
+ }
195
+
196
+ function selfClean() {
197
+ const hookPath = __filename;
198
+ const claudeDir = path.join(os.homedir(), '.claude');
199
+ const settingsPath = path.join(claudeDir, 'settings.json');
200
+ const rulesPath = path.join(claudeDir, 'rules', 'gal-cli.md');
201
+
202
+ // Remove hook file
203
+ try { fs.unlinkSync(hookPath); } catch {}
204
+
205
+ // Remove rules file
206
+ try { fs.unlinkSync(rulesPath); } catch {}
207
+
208
+ // Remove hook entries from settings.json
209
+ try {
210
+ if (fs.existsSync(settingsPath)) {
211
+ const settings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
212
+ const hookEvents = ['SessionStart', 'UserPromptSubmit'];
213
+
214
+ for (const event of hookEvents) {
215
+ if (settings.hooks?.[event]) {
216
+ settings.hooks[event] = settings.hooks[event].filter(entry => {
217
+ if (!entry.hooks) return true;
218
+ entry.hooks = entry.hooks.filter(h => !h.command?.includes('gal-'));
219
+ return entry.hooks.length > 0;
220
+ });
221
+ if (settings.hooks[event].length === 0) delete settings.hooks[event];
25
222
  }
223
+ }
224
+
225
+ if (Object.keys(settings.hooks || {}).length === 0) delete settings.hooks;
226
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
26
227
  }
27
- }(_0x4078, 0x64797));
28
- const fs = require('fs'), path = require(_0x52049f(0x4b6)), os = require('os'), cliPackageJson = require(_0x52049f(0xe4) + _0x52049f(0x61c) + _0x52049f(0x423)), cliVersion = cliPackageJson[_0x52049f(0x2a9) + 'on'], HOOK_VERSION = _0x52049f(0x82), STATUS_LINE_VERSION = _0x52049f(0x11a), RULES_VERSION = _0x52049f(0x11a), GAL_CLI_RULES_CONTENT = _0x52049f(0x724) + _0x52049f(0x62f) + _0x52049f(0x5f6) + _0x52049f(0x162) + _0x52049f(0x677) + _0x52049f(0x1bf) + _0x52049f(0x4bc) + '\x20\x22' + RULES_VERSION + (_0x52049f(0xd7) + _0x52049f(0x2d0) + _0x52049f(0x85a) + _0x52049f(0x532) + _0x52049f(0x408) + _0x52049f(0x194) + _0x52049f(0x7c1) + _0x52049f(0x53f) + _0x52049f(0x4d3) + _0x52049f(0x708) + _0x52049f(0x52c) + _0x52049f(0x2ff) + _0x52049f(0x20d) + _0x52049f(0x2e0) + _0x52049f(0x746) + _0x52049f(0x4da) + _0x52049f(0x3b2) + _0x52049f(0x5f7) + _0x52049f(0x194) + _0x52049f(0x11c) + _0x52049f(0x2f8) + _0x52049f(0x36d) + _0x52049f(0x237) + _0x52049f(0x13c) + _0x52049f(0x3d7) + _0x52049f(0x7a3) + _0x52049f(0x4cd) + _0x52049f(0x747) + _0x52049f(0x6b2) + _0x52049f(0x6a6) + _0x52049f(0x2ff) + _0x52049f(0x689) + _0x52049f(0x556) + _0x52049f(0x12b) + _0x52049f(0x1ea) + _0x52049f(0x231) + _0x52049f(0x6ce) + _0x52049f(0x712) + _0x52049f(0x5c4) + _0x52049f(0x2c2) + _0x52049f(0x477) + _0x52049f(0x109) + _0x52049f(0x18e) + _0x52049f(0x630) + _0x52049f(0x60d) + _0x52049f(0x752) + _0x52049f(0x7a4) + _0x52049f(0x7d5) + _0x52049f(0x292) + _0x52049f(0x439) + _0x52049f(0xad) + _0x52049f(0x5d3) + _0x52049f(0x647) + _0x52049f(0x635) + _0x52049f(0x521) + _0x52049f(0x4a7) + _0x52049f(0x386) + _0x52049f(0x4f2) + _0x52049f(0x825) + _0x52049f(0x34e) + _0x52049f(0x789) + _0x52049f(0x466) + _0x52049f(0x3ce) + _0x52049f(0x59f) + _0x52049f(0x15a) + _0x52049f(0x7cd) + _0x52049f(0x758) + _0x52049f(0x69f) + _0x52049f(0x819) + _0x52049f(0x36c) + _0x52049f(0x415) + _0x52049f(0x3ca) + _0x52049f(0x426) + _0x52049f(0x3e3) + _0x52049f(0x61e) + _0x52049f(0x7f3) + _0x52049f(0x62d) + _0x52049f(0x56c) + _0x52049f(0x1a4) + _0x52049f(0x5fb) + _0x52049f(0x3fe) + _0x52049f(0x68b) + _0x52049f(0x335) + _0x52049f(0x37a) + _0x52049f(0x366) + _0x52049f(0x85a) + _0x52049f(0x13f) + _0x52049f(0x4ab) + _0x52049f(0x373) + _0x52049f(0x3a3) + _0x52049f(0x61e) + _0x52049f(0x420) + _0x52049f(0x215) + _0x52049f(0x5af) + _0x52049f(0x7f3) + _0x52049f(0x6b4) + _0x52049f(0x1c3) + _0x52049f(0x587) + _0x52049f(0x172) + _0x52049f(0x1c5) + _0x52049f(0x4fa) + _0x52049f(0x4fe) + _0x52049f(0x171) + _0x52049f(0x131) + _0x52049f(0x105) + _0x52049f(0x71) + _0x52049f(0x41f) + _0x52049f(0x38d) + _0x52049f(0x851) + _0x52049f(0x1bc) + _0x52049f(0x318) + _0x52049f(0x868) + _0x52049f(0x263) + _0x52049f(0x573) + _0x52049f(0x1ef)), HOOK_CONTENT = _0x52049f(0x1e4) + _0x52049f(0x656) + _0x52049f(0x602) + _0x52049f(0x38c) + _0x52049f(0x68f) + _0x52049f(0x45d) + _0x52049f(0x7d0) + _0x52049f(0x7e0) + _0x52049f(0x3af) + _0x52049f(0x65e) + _0x52049f(0x14c) + _0x52049f(0x78d) + _0x52049f(0x365) + _0x52049f(0x205) + _0x52049f(0x814) + _0x52049f(0x45c) + _0x52049f(0x2ed) + _0x52049f(0x24a) + '\x20' + HOOK_VERSION + (_0x52049f(0x536) + _0x52049f(0x872) + _0x52049f(0x618) + _0x52049f(0x412) + _0x52049f(0x425) + _0x52049f(0x30a) + _0x52049f(0x5ea) + _0x52049f(0x167) + _0x52049f(0x19a) + _0x52049f(0x55a) + _0x52049f(0x815) + _0x52049f(0x294) + _0x52049f(0x272) + _0x52049f(0x7ca) + _0x52049f(0x19d) + _0x52049f(0x321) + _0x52049f(0x3f9) + _0x52049f(0x73c) + _0x52049f(0x523) + _0x52049f(0x302) + _0x52049f(0x3b6) + _0x52049f(0x619) + _0x52049f(0x7ff) + _0x52049f(0x6a4) + _0x52049f(0x3f9) + _0x52049f(0xca) + _0x52049f(0x2c6) + _0x52049f(0x28b) + _0x52049f(0x4b2) + _0x52049f(0x8b) + _0x52049f(0x24d) + _0x52049f(0x64b) + _0x52049f(0x394) + _0x52049f(0x60b) + _0x52049f(0xbc) + _0x52049f(0x3b6) + _0x52049f(0x619) + _0x52049f(0x7ff) + _0x52049f(0x671) + _0x52049f(0x482) + _0x52049f(0x622) + _0x52049f(0x4ff) + _0x52049f(0x785) + _0x52049f(0x131) + _0x52049f(0x3d8) + _0x52049f(0x11e) + _0x52049f(0xf1) + _0x52049f(0x4b4) + _0x52049f(0x7ed) + _0x52049f(0x29d) + _0x52049f(0x516) + _0x52049f(0x687) + _0x52049f(0x7a8) + _0x52049f(0x6dd) + _0x52049f(0x5e4) + _0x52049f(0x4b7) + _0x52049f(0x28c) + _0x52049f(0x1c2) + _0x52049f(0x1fc) + _0x52049f(0x7f5) + _0x52049f(0x162) + _0x52049f(0x1e8) + _0x52049f(0x655) + _0x52049f(0xe5) + '\x22') + HOOK_VERSION + (_0x52049f(0xe8) + _0x52049f(0x222) + _0x52049f(0x77d) + _0x52049f(0xb5) + _0x52049f(0x70b) + _0x52049f(0x419) + _0x52049f(0x492) + _0x52049f(0x778) + _0x52049f(0x17f) + _0x52049f(0x59b) + _0x52049f(0x308) + _0x52049f(0x419) + _0x52049f(0x492) + _0x52049f(0x665) + _0x52049f(0xb3) + _0x52049f(0x4ec) + _0x52049f(0x7d) + _0x52049f(0x17f) + _0x52049f(0x59b) + _0x52049f(0x2c9) + _0x52049f(0x33a) + _0x52049f(0xc0) + _0x52049f(0x2b6) + _0x52049f(0x24e) + _0x52049f(0x77d) + _0x52049f(0xb5) + _0x52049f(0x104) + _0x52049f(0x78) + _0x52049f(0x38f) + _0x52049f(0x162) + _0x52049f(0x10d) + _0x52049f(0x1fe) + _0x52049f(0x4c3) + _0x52049f(0x492) + _0x52049f(0x12a) + _0x52049f(0x57e) + _0x52049f(0x5b4) + _0x52049f(0x239) + _0x52049f(0x837) + _0x52049f(0x1c4) + _0x52049f(0x601) + _0x52049f(0x5d8) + _0x52049f(0x6e2) + _0x52049f(0x3fc) + _0x52049f(0x429) + _0x52049f(0x5d7) + _0x52049f(0x392) + _0x52049f(0x2d1) + _0x52049f(0x4f0) + _0x52049f(0x108) + _0x52049f(0x347) + _0x52049f(0x1af) + _0x52049f(0x6e5) + _0x52049f(0x746) + _0x52049f(0x423) + _0x52049f(0x78) + _0x52049f(0x520) + _0x52049f(0x756) + _0x52049f(0x522) + _0x52049f(0x72a) + _0x52049f(0x3ee) + _0x52049f(0x7cf) + _0x52049f(0x3ba) + _0x52049f(0x287) + _0x52049f(0x1b9) + _0x52049f(0x66d) + _0x52049f(0x45e) + _0x52049f(0x2b3) + _0x52049f(0x579) + _0x52049f(0x56d) + _0x52049f(0x36b) + _0x52049f(0x7f) + _0x52049f(0x586) + _0x52049f(0x228) + _0x52049f(0x49a) + _0x52049f(0x330) + _0x52049f(0x64e) + _0x52049f(0x4f6) + _0x52049f(0x242) + _0x52049f(0x531) + _0x52049f(0x73d) + _0x52049f(0x6cf) + _0x52049f(0x168) + _0x52049f(0x4f7) + _0x52049f(0x2e7) + _0x52049f(0x596) + _0x52049f(0x3d2) + _0x52049f(0x285) + _0x52049f(0x72a) + _0x52049f(0x4c5) + _0x52049f(0x5a5) + _0x52049f(0x509) + _0x52049f(0x3d3) + _0x52049f(0x1fb) + _0x52049f(0x696) + _0x52049f(0x6d8) + _0x52049f(0x1ba) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x23b) + _0x52049f(0x21a) + _0x52049f(0x2b3) + _0x52049f(0x3cc) + _0x52049f(0x668) + _0x52049f(0xab) + _0x52049f(0xde) + _0x52049f(0x2f9) + _0x52049f(0x99) + _0x52049f(0x7d2) + _0x52049f(0x65a) + _0x52049f(0x804) + _0x52049f(0x55e) + _0x52049f(0x66) + _0x52049f(0x7b5) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x560) + _0x52049f(0x598) + _0x52049f(0x46b) + _0x52049f(0x510) + _0x52049f(0x3bd) + _0x52049f(0x3dc) + _0x52049f(0x553) + _0x52049f(0x43f) + _0x52049f(0x7fe) + _0x52049f(0x691) + _0x52049f(0x554) + _0x52049f(0x488) + _0x52049f(0x4e2) + _0x52049f(0x4aa) + _0x52049f(0x481) + _0x52049f(0x610) + _0x52049f(0x4af) + _0x52049f(0x377) + _0x52049f(0x183) + _0x52049f(0x3df) + _0x52049f(0x6a7) + _0x52049f(0xd9) + _0x52049f(0x77) + _0x52049f(0x38a) + _0x52049f(0x4ed) + _0x52049f(0x402) + _0x52049f(0x10b) + _0x52049f(0x609) + _0x52049f(0x697) + _0x52049f(0x337) + _0x52049f(0x2fa) + _0x52049f(0x6a0) + _0x52049f(0x650) + _0x52049f(0xe9) + _0x52049f(0x664) + _0x52049f(0x188) + _0x52049f(0x7fc) + _0x52049f(0x6df) + _0x52049f(0x480) + _0x52049f(0x1c0) + _0x52049f(0x843) + _0x52049f(0x446) + _0x52049f(0x644) + _0x52049f(0x470) + _0x52049f(0xb5) + _0x52049f(0x4e3) + _0x52049f(0x7fe) + _0x52049f(0x36f) + _0x52049f(0x859) + _0x52049f(0x60a) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + (_0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x865) + _0x52049f(0x842) + _0x52049f(0x1c9) + _0x52049f(0x31b) + _0x52049f(0x45e) + _0x52049f(0x2b3) + _0x52049f(0x579) + _0x52049f(0x5f5) + _0x52049f(0x3f1) + _0x52049f(0x7fa) + _0x52049f(0x80) + _0x52049f(0x80a) + _0x52049f(0x866) + _0x52049f(0x126) + _0x52049f(0x4ad) + _0x52049f(0x362) + _0x52049f(0x131) + _0x52049f(0x649) + _0x52049f(0x3f3) + _0x52049f(0x616) + _0x52049f(0x3c5) + _0x52049f(0x256) + _0x52049f(0x4df) + _0x52049f(0x6ff) + _0x52049f(0x14b) + _0x52049f(0x32e) + _0x52049f(0x43e) + _0x52049f(0x34d) + _0x52049f(0x259) + _0x52049f(0x3da) + _0x52049f(0x78e) + _0x52049f(0x5ee) + _0x52049f(0x161) + _0x52049f(0x18b) + _0x52049f(0x579) + _0x52049f(0x49d) + _0x52049f(0x193) + _0x52049f(0x1d4) + _0x52049f(0x6fb) + _0x52049f(0x2ea) + _0x52049f(0x803) + _0x52049f(0x54b) + _0x52049f(0x62f) + _0x52049f(0x206) + _0x52049f(0x555) + _0x52049f(0x1a7) + _0x52049f(0x1b1) + _0x52049f(0x640) + _0x52049f(0x1f0) + _0x52049f(0x406) + _0x52049f(0x876) + _0x52049f(0x50d) + _0x52049f(0x866) + _0x52049f(0x6e6) + _0x52049f(0x676) + _0x52049f(0x54d) + _0x52049f(0x123) + _0x52049f(0x241) + _0x52049f(0x6b4) + _0x52049f(0x3ba) + _0x52049f(0x5be) + _0x52049f(0x2c4) + _0x52049f(0x4ad) + _0x52049f(0x143) + _0x52049f(0xa5) + _0x52049f(0x6b3) + _0x52049f(0x368) + _0x52049f(0x3fa) + _0x52049f(0x839) + _0x52049f(0x76e) + _0x52049f(0x520) + _0x52049f(0x300) + _0x52049f(0x790) + _0x52049f(0x54c) + _0x52049f(0x716) + _0x52049f(0x6c) + _0x52049f(0x74c) + _0x52049f(0x4f3) + _0x52049f(0x760) + _0x52049f(0x5a3) + _0x52049f(0x3eb) + _0x52049f(0x780) + _0x52049f(0x227) + _0x52049f(0x147) + _0x52049f(0x2f2) + _0x52049f(0x633) + _0x52049f(0x585) + _0x52049f(0x68e) + _0x52049f(0x1fe) + _0x52049f(0x1f4) + _0x52049f(0x43e) + _0x52049f(0x22d) + _0x52049f(0x249) + _0x52049f(0x83d) + _0x52049f(0x72c) + _0x52049f(0x601) + _0x52049f(0x5a0) + _0x52049f(0x38f) + _0x52049f(0x64d) + _0x52049f(0x417) + _0x52049f(0x750) + _0x52049f(0x41e) + _0x52049f(0x4fd) + _0x52049f(0x3c0) + _0x52049f(0xa1) + _0x52049f(0x6c5) + _0x52049f(0x1eb) + _0x52049f(0x3a7) + _0x52049f(0x249) + _0x52049f(0x2ae) + _0x52049f(0x495) + _0x52049f(0x153) + _0x52049f(0x497) + _0x52049f(0x452) + _0x52049f(0x2c7) + _0x52049f(0x3d9) + _0x52049f(0x120) + _0x52049f(0x58c) + _0x52049f(0x7be) + _0x52049f(0x738) + _0x52049f(0x597) + _0x52049f(0x270) + _0x52049f(0x474) + _0x52049f(0x7e7) + _0x52049f(0x70a) + _0x52049f(0x58d) + _0x52049f(0x5ce) + _0x52049f(0xc6) + _0x52049f(0x348) + _0x52049f(0x120) + _0x52049f(0x58c) + _0x52049f(0x7be) + _0x52049f(0x738) + _0x52049f(0x759) + _0x52049f(0x6b9) + _0x52049f(0x502) + _0x52049f(0x23d) + _0x52049f(0x1ff) + _0x52049f(0xfa) + _0x52049f(0xb7) + _0x52049f(0x5dd) + _0x52049f(0x1ad) + _0x52049f(0x5ea) + _0x52049f(0x167) + _0x52049f(0x36a) + _0x52049f(0x73) + _0x52049f(0x6f8) + _0x52049f(0x249) + _0x52049f(0x72) + _0x52049f(0xe2) + _0x52049f(0x1e1) + _0x52049f(0x31c) + _0x52049f(0x5a8) + _0x52049f(0x877) + _0x52049f(0x797) + _0x52049f(0x5e7) + _0x52049f(0x71b) + _0x52049f(0x53b) + _0x52049f(0x33e) + _0x52049f(0x779) + _0x52049f(0x2eb) + _0x52049f(0x277) + _0x52049f(0x58e) + _0x52049f(0x7af) + _0x52049f(0x293) + _0x52049f(0x14a) + _0x52049f(0x6a1) + _0x52049f(0x265) + _0x52049f(0x443) + _0x52049f(0x45a) + _0x52049f(0x658) + _0x52049f(0x628) + _0x52049f(0x5d2) + _0x52049f(0x380) + _0x52049f(0x581) + _0x52049f(0x7b0) + _0x52049f(0x6db) + _0x52049f(0x3f4) + _0x52049f(0x587) + _0x52049f(0x154) + _0x52049f(0x864) + _0x52049f(0x620) + _0x52049f(0x69) + _0x52049f(0x342) + _0x52049f(0x6db) + _0x52049f(0x4ad) + _0x52049f(0x659) + _0x52049f(0x821))) + HOOK_VERSION + (_0x52049f(0x293) + _0x52049f(0x1ae) + _0x52049f(0x74c) + _0x52049f(0x13b) + _0x52049f(0x625) + _0x52049f(0x6db) + _0x52049f(0x582) + _0x52049f(0x3e8) + _0x52049f(0x1e5) + _0x52049f(0x461) + _0x52049f(0x270) + _0x52049f(0x135) + _0x52049f(0xbd) + _0x52049f(0x7cb) + _0x52049f(0x1fb) + _0x52049f(0x41b) + _0x52049f(0x54a) + _0x52049f(0x6db) + _0x52049f(0x22c) + _0x52049f(0x659) + _0x52049f(0x338) + _0x52049f(0x2e8) + _0x52049f(0x400) + _0x52049f(0x700) + _0x52049f(0x270) + _0x52049f(0x854) + _0x52049f(0x49a) + _0x52049f(0x20a) + _0x52049f(0x753) + _0x52049f(0x83) + _0x52049f(0x5d2) + _0x52049f(0x6d7) + _0x52049f(0x783) + _0x52049f(0x462) + _0x52049f(0xa6) + _0x52049f(0x79a) + _0x52049f(0x3b8) + _0x52049f(0x79c) + _0x52049f(0x773) + _0x52049f(0x107) + _0x52049f(0x58b) + _0x52049f(0x7ee) + _0x52049f(0xea) + _0x52049f(0x7b7) + _0x52049f(0x773) + _0x52049f(0x56e) + _0x52049f(0xc3) + _0x52049f(0x7c8) + _0x52049f(0x2d7) + _0x52049f(0x719) + _0x52049f(0x284) + _0x52049f(0x4b1) + _0x52049f(0x5ab) + _0x52049f(0x18b) + _0x52049f(0x348) + _0x52049f(0x120) + _0x52049f(0x58c) + _0x52049f(0x7be) + _0x52049f(0x738) + _0x52049f(0x5e9) + _0x52049f(0x378) + _0x52049f(0x4e6) + _0x52049f(0x49b) + _0x52049f(0x1d4) + _0x52049f(0x70e) + _0x52049f(0x6b9) + _0x52049f(0x5a0) + _0x52049f(0x116) + _0x52049f(0x56b) + _0x52049f(0x5d0) + _0x52049f(0x754) + _0x52049f(0x15d) + _0x52049f(0x1f7) + _0x52049f(0xf7) + _0x52049f(0x481) + _0x52049f(0xaf) + _0x52049f(0x27f) + _0x52049f(0x164) + _0x52049f(0x3ef) + _0x52049f(0x1ba) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x23b) + _0x52049f(0x4b4) + _0x52049f(0x7ed) + _0x52049f(0x29d) + _0x52049f(0x735) + _0x52049f(0x2a5) + _0x52049f(0x5a2) + _0x52049f(0x151) + _0x52049f(0x71d) + _0x52049f(0x82c) + _0x52049f(0x25e) + _0x52049f(0x3e7) + _0x52049f(0x60a) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x865) + _0x52049f(0x7f1) + _0x52049f(0x2a0) + _0x52049f(0x111) + _0x52049f(0x6ad) + _0x52049f(0x1be) + _0x52049f(0x4f3) + _0x52049f(0x153) + _0x52049f(0x497) + _0x52049f(0x76c) + _0x52049f(0x763) + _0x52049f(0x346) + _0x52049f(0x6d5) + _0x52049f(0x73f) + _0x52049f(0x2ee) + _0x52049f(0x355) + _0x52049f(0x25d) + _0x52049f(0x6d7) + _0x52049f(0x372) + _0x52049f(0x310) + _0x52049f(0x571) + _0x52049f(0x6c3) + _0x52049f(0x58a) + _0x52049f(0x229) + _0x52049f(0x7b3) + _0x52049f(0xb4) + _0x52049f(0x878) + _0x52049f(0x6c3) + _0x52049f(0x33f) + _0x52049f(0x7bd) + _0x52049f(0x69a) + _0x52049f(0x562) + _0x52049f(0xf3) + _0x52049f(0xeb) + _0x52049f(0x492) + _0x52049f(0x79b) + _0x52049f(0x186) + _0x52049f(0x83c) + _0x52049f(0x28a) + _0x52049f(0x93) + _0x52049f(0x38f) + _0x52049f(0x385) + _0x52049f(0x77b) + _0x52049f(0x593) + _0x52049f(0xff) + _0x52049f(0x612) + _0x52049f(0x487) + _0x52049f(0x291) + _0x52049f(0x6b6) + _0x52049f(0x112) + _0x52049f(0x74d) + _0x52049f(0x760) + _0x52049f(0x87b) + _0x52049f(0x1f2) + _0x52049f(0x227) + _0x52049f(0x147) + _0x52049f(0x2f2) + _0x52049f(0x2c8) + _0x52049f(0x2fd) + _0x52049f(0x6aa) + _0x52049f(0x794) + _0x52049f(0x30d) + _0x52049f(0x7db) + _0x52049f(0x73d) + _0x52049f(0x77f) + _0x52049f(0x6f4) + _0x52049f(0x186) + _0x52049f(0x392) + _0x52049f(0x2d1) + _0x52049f(0x316) + _0x52049f(0x77b) + _0x52049f(0x4d7) + _0x52049f(0x468) + _0x52049f(0xcd) + _0x52049f(0x5b3) + _0x52049f(0x85c) + _0x52049f(0x409) + _0x52049f(0x7c9) + (_0x52049f(0x283) + _0x52049f(0x2a2) + _0x52049f(0x303) + _0x52049f(0x153) + _0x52049f(0x7b) + _0x52049f(0x464) + _0x52049f(0x7cc) + _0x52049f(0x27d) + _0x52049f(0x5ba) + _0x52049f(0x317) + _0x52049f(0xfa) + _0x52049f(0xb7) + _0x52049f(0x101) + _0x52049f(0x319) + _0x52049f(0x575) + _0x52049f(0x705) + _0x52049f(0x6f0) + _0x52049f(0x55d) + _0x52049f(0x4c0) + _0x52049f(0x861) + _0x52049f(0x524) + _0x52049f(0x6f4) + _0x52049f(0x46e) + _0x52049f(0x703) + _0x52049f(0x43b) + _0x52049f(0x810) + _0x52049f(0x1c7) + _0x52049f(0xbb) + _0x52049f(0x4f5) + _0x52049f(0x298) + _0x52049f(0x2bc) + _0x52049f(0x23e) + _0x52049f(0x40c) + _0x52049f(0x806) + _0x52049f(0xe6) + _0x52049f(0x134) + _0x52049f(0x1e1) + _0x52049f(0x467) + _0x52049f(0x3b8) + _0x52049f(0x79c) + _0x52049f(0x5da) + _0x52049f(0x1f2) + _0x52049f(0x5ba) + _0x52049f(0x4f3) + _0x52049f(0x6db) + _0x52049f(0x38f) + _0x52049f(0x6a2) + _0x52049f(0x17a) + _0x52049f(0x70a) + _0x52049f(0x58d) + _0x52049f(0x5ce) + _0x52049f(0xc6) + _0x52049f(0x348) + _0x52049f(0x558) + _0x52049f(0x794) + _0x52049f(0x235) + _0x52049f(0x759) + _0x52049f(0x6b9) + _0x52049f(0x502) + _0x52049f(0x6db) + _0x52049f(0x38f) + _0x52049f(0x4ad) + _0x52049f(0x70f) + _0x52049f(0x4a1) + _0x52049f(0x672) + _0x52049f(0x3a1) + _0x52049f(0x475) + _0x52049f(0x305) + _0x52049f(0x307) + _0x52049f(0x5aa) + _0x52049f(0x187) + _0x52049f(0x654) + _0x52049f(0x7ee) + _0x52049f(0x63d) + _0x52049f(0x492) + _0x52049f(0x7a6) + _0x52049f(0x3c1) + _0x52049f(0xcc) + _0x52049f(0x765) + _0x52049f(0x58b) + _0x52049f(0x6db) + _0x52049f(0x452) + _0x52049f(0xe1) + _0x52049f(0x334) + _0x52049f(0x3cd) + _0x52049f(0x398) + _0x52049f(0x9c) + _0x52049f(0x497) + _0x52049f(0x6db) + _0x52049f(0x16d) + _0x52049f(0x1f2) + _0x52049f(0x812) + _0x52049f(0x85d) + _0x52049f(0x723) + _0x52049f(0x6a2) + _0x52049f(0x152) + _0x52049f(0x240) + _0x52049f(0xdf) + _0x52049f(0x1db) + _0x52049f(0x7f0) + _0x52049f(0x721) + _0x52049f(0x19f) + _0x52049f(0x270) + _0x52049f(0x6db) + _0x52049f(0xa6) + _0x52049f(0xb2) + _0x52049f(0x3d5) + _0x52049f(0x1fd) + _0x52049f(0x34f) + _0x52049f(0x213) + _0x52049f(0x869) + _0x52049f(0x6db) + _0x52049f(0x6db) + _0x52049f(0x6de) + _0x52049f(0x133) + _0x52049f(0x407) + _0x52049f(0x721) + _0x52049f(0x812) + _0x52049f(0x793) + _0x52049f(0x621) + _0x52049f(0xaa) + _0x52049f(0x53e) + _0x52049f(0x156) + _0x52049f(0x766) + _0x52049f(0x589) + _0x52049f(0x539) + _0x52049f(0xa0) + _0x52049f(0x6db) + _0x52049f(0x6db) + _0x52049f(0x62a) + _0x52049f(0x1f8) + _0x52049f(0x599) + _0x52049f(0x240) + _0x52049f(0x30e) + _0x52049f(0x1bd) + _0x52049f(0xec) + _0x52049f(0x6db) + _0x52049f(0x2e3) + _0x52049f(0x284) + _0x52049f(0x6db) + _0x52049f(0x218) + _0x52049f(0xd5) + _0x52049f(0x152) + _0x52049f(0x240) + _0x52049f(0xdf) + _0x52049f(0x667) + _0x52049f(0x852) + _0x52049f(0x21c) + _0x52049f(0x51f) + _0x52049f(0x37f) + _0x52049f(0x794) + _0x52049f(0x7ef) + _0x52049f(0x3f0) + _0x52049f(0x3c9) + _0x52049f(0x284) + _0x52049f(0x6db) + _0x52049f(0x42e) + _0x52049f(0x23d) + _0x52049f(0x270) + _0x52049f(0x218) + _0x52049f(0x699) + _0x52049f(0x110) + _0x52049f(0x493) + _0x52049f(0x40c) + _0x52049f(0x22a) + _0x52049f(0x5bd) + _0x52049f(0x762) + _0x52049f(0x5cc) + _0x52049f(0x4ac) + _0x52049f(0x69c) + _0x52049f(0xac) + _0x52049f(0x6a2) + _0x52049f(0x152) + _0x52049f(0x240) + _0x52049f(0x284) + _0x52049f(0x733) + _0x52049f(0x42c) + _0x52049f(0x84c) + _0x52049f(0x763) + _0x52049f(0xe1) + _0x52049f(0x3cf) + _0x52049f(0x220) + _0x52049f(0x629) + _0x52049f(0x628) + _0x52049f(0x57a) + _0x52049f(0x794) + _0x52049f(0x421) + _0x52049f(0x713) + _0x52049f(0x141) + _0x52049f(0x3d0) + _0x52049f(0x801) + _0x52049f(0x5de) + _0x52049f(0x1b6) + _0x52049f(0x1ba) + _0x52049f(0x4b0) + _0x52049f(0x6dd) + _0x52049f(0x3b9) + _0x52049f(0x34c) + _0x52049f(0x2b8) + _0x52049f(0x55f)) + (_0x52049f(0x313) + _0x52049f(0x7ac) + _0x52049f(0x2f1) + _0x52049f(0x3a2) + _0x52049f(0x111) + _0x52049f(0x6ad) + _0x52049f(0x1be) + _0x52049f(0x207) + _0x52049f(0x688) + _0x52049f(0x6ab) + _0x52049f(0x38b) + _0x52049f(0x3d3) + _0x52049f(0x1fb) + _0x52049f(0x696) + _0x52049f(0x6d8) + _0x52049f(0x1ba) + _0x52049f(0x857) + _0x52049f(0x26e) + _0x52049f(0x432) + _0x52049f(0x6c6) + _0x52049f(0x354) + _0x52049f(0x47f) + _0x52049f(0x5ef) + _0x52049f(0x306) + _0x52049f(0x196) + _0x52049f(0x7f1) + _0x52049f(0x2a0) + _0x52049f(0x88) + _0x52049f(0x1a3) + _0x52049f(0x84d) + _0x52049f(0x58b) + _0x52049f(0x3a2) + _0x52049f(0x2c7) + _0x52049f(0x3d9) + _0x52049f(0x5c9) + _0x52049f(0x40e) + _0x52049f(0x5a9) + _0x52049f(0x5dc) + _0x52049f(0x2dd) + _0x52049f(0x6d4) + _0x52049f(0x26f) + _0x52049f(0x137) + _0x52049f(0x58b) + _0x52049f(0x62a) + _0x52049f(0x7d3) + _0x52049f(0x770) + _0x52049f(0x322) + _0x52049f(0x5cb) + _0x52049f(0x6c2) + _0x52049f(0x74a) + _0x52049f(0x8a) + _0x52049f(0x360) + _0x52049f(0x1ed) + _0x52049f(0x29e) + _0x52049f(0x6b9) + _0x52049f(0x502) + _0x52049f(0x703) + _0x52049f(0x43b) + _0x52049f(0x34f) + _0x52049f(0x6fd) + _0x52049f(0x16f) + _0x52049f(0x28d) + _0x52049f(0x60e) + _0x52049f(0x46a) + _0x52049f(0x7ec) + _0x52049f(0x9e) + _0x52049f(0x744) + _0x52049f(0x71) + _0x52049f(0x4bf) + _0x52049f(0x26d) + _0x52049f(0x1b4) + _0x52049f(0x279) + _0x52049f(0x8e) + _0x52049f(0x2be) + _0x52049f(0x7f1) + _0x52049f(0x2a0) + _0x52049f(0x6e4) + _0x52049f(0x44f) + _0x52049f(0x542) + _0x52049f(0x4f3) + _0x52049f(0x153) + _0x52049f(0x497) + _0x52049f(0x760) + _0x52049f(0x2d2) + _0x52049f(0x459) + _0x52049f(0x542) + _0x52049f(0x5fa) + _0x52049f(0x485) + _0x52049f(0x5a0) + _0x52049f(0x218) + _0x52049f(0xa2) + _0x52049f(0x17d) + _0x52049f(0x86b) + _0x52049f(0x16e) + _0x52049f(0x34f) + _0x52049f(0x6fd) + _0x52049f(0x6af) + _0x52049f(0x121) + _0x52049f(0x63a) + _0x52049f(0x35f) + _0x52049f(0x1e3) + _0x52049f(0x770) + _0x52049f(0x322) + _0x52049f(0x79d) + _0x52049f(0x6d6) + _0x52049f(0x5c8) + _0x52049f(0x11b) + _0x52049f(0x6d2) + _0x52049f(0x275) + _0x52049f(0x528) + _0x52049f(0x628) + _0x52049f(0x6ee) + _0x52049f(0xa4) + _0x52049f(0x284) + _0x52049f(0x34f) + _0x52049f(0x67b) + _0x52049f(0x581) + _0x52049f(0x6c3) + _0x52049f(0x58a) + _0x52049f(0x508) + _0x52049f(0x310) + _0x52049f(0x639) + _0x52049f(0x5c2) + _0x52049f(0x1ba) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x23b) + _0x52049f(0x458) + _0x52049f(0x124) + _0x52049f(0x11d) + _0x52049f(0x605) + _0x52049f(0x48b) + _0x52049f(0x65b) + _0x52049f(0x6dc) + _0x52049f(0x48f) + _0x52049f(0x3b7) + _0x52049f(0x534) + _0x52049f(0x255) + _0x52049f(0x24f) + _0x52049f(0x820) + _0x52049f(0x60a) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x865) + _0x52049f(0x520) + _0x52049f(0x245) + _0x52049f(0x84) + _0x52049f(0x75) + _0x52049f(0x1e7) + _0x52049f(0x7bc) + _0x52049f(0xeb) + _0x52049f(0x492) + _0x52049f(0x4ae) + _0x52049f(0x59a) + _0x52049f(0x782) + _0x52049f(0x593) + _0x52049f(0xff) + _0x52049f(0x612) + _0x52049f(0x487) + _0x52049f(0x291) + _0x52049f(0x1e2) + _0x52049f(0x1e6) + _0x52049f(0x369) + _0x52049f(0x26c) + _0x52049f(0x772) + _0x52049f(0x5b8) + _0x52049f(0x7bf) + _0x52049f(0x22f) + _0x52049f(0x64c) + _0x52049f(0x40d) + _0x52049f(0x496) + _0x52049f(0x4d4) + _0x52049f(0x309) + _0x52049f(0x824) + _0x52049f(0x34f)) + (_0x52049f(0x6fd) + _0x52049f(0x6af) + _0x52049f(0x153) + _0x52049f(0x497) + _0x52049f(0x760) + _0x52049f(0xfd) + _0x52049f(0x55c) + _0x52049f(0x4f7) + _0x52049f(0x77e) + _0x52049f(0x6b0) + _0x52049f(0x788) + _0x52049f(0x858) + _0x52049f(0x476) + _0x52049f(0x42d) + _0x52049f(0x1a2) + _0x52049f(0x4c4) + _0x52049f(0x211) + _0x52049f(0xa0) + _0x52049f(0x1e1) + _0x52049f(0x73e) + _0x52049f(0x7e2) + _0x52049f(0x1c8) + _0x52049f(0x350) + _0x52049f(0x84b) + _0x52049f(0x9d) + _0x52049f(0x181) + _0x52049f(0x1cc) + _0x52049f(0x3ad) + _0x52049f(0x614) + _0x52049f(0x6c4) + _0x52049f(0x23a) + _0x52049f(0x284) + _0x52049f(0x153) + _0x52049f(0x497) + _0x52049f(0x749) + _0x52049f(0x5a1) + _0x52049f(0x659) + _0x52049f(0x290) + _0x52049f(0x3e4) + _0x52049f(0x5c1) + _0x52049f(0x6c9) + _0x52049f(0x53a) + _0x52049f(0xe7) + _0x52049f(0x434) + _0x52049f(0x23c) + _0x52049f(0x690) + _0x52049f(0x82a) + _0x52049f(0x3ae) + _0x52049f(0x669) + _0x52049f(0x795) + _0x52049f(0x684) + _0x52049f(0x875) + _0x52049f(0x2fb) + _0x52049f(0x24c) + _0x52049f(0x32c) + _0x52049f(0x5de) + _0x52049f(0x2cf) + _0x52049f(0xb4) + _0x52049f(0x81f) + _0x52049f(0x4b1) + _0x52049f(0x867) + _0x52049f(0x2a1) + _0x52049f(0x8d) + _0x52049f(0x5a1) + _0x52049f(0x659) + _0x52049f(0x57f) + _0x52049f(0x5cd) + _0x52049f(0x4b9) + _0x52049f(0x49f) + _0x52049f(0x5fa) + _0x52049f(0x485) + _0x52049f(0x541) + _0x52049f(0x117) + _0x52049f(0x31a) + _0x52049f(0x68) + _0x52049f(0x492) + _0x52049f(0x280) + _0x52049f(0x55b) + _0x52049f(0x543) + _0x52049f(0x6f) + _0x52049f(0x5f2) + _0x52049f(0x29a) + _0x52049f(0x879) + _0x52049f(0x4e0) + _0x52049f(0x81d) + _0x52049f(0x20c) + _0x52049f(0x6c1) + _0x52049f(0x390) + _0x52049f(0x7dd) + _0x52049f(0x284) + _0x52049f(0x3a7) + _0x52049f(0x715) + _0x52049f(0x7a0) + _0x52049f(0x79f) + _0x52049f(0x436) + _0x52049f(0x270) + _0x52049f(0x7de) + _0x52049f(0x166) + _0x52049f(0x19e) + _0x52049f(0x7a9) + _0x52049f(0x78f) + _0x52049f(0x592) + _0x52049f(0x6db) + _0x52049f(0x452) + _0x52049f(0x5c3) + _0x52049f(0x491) + _0x52049f(0x5e1) + _0x52049f(0x5f3) + _0x52049f(0x491) + _0x52049f(0x1a6) + _0x52049f(0x822) + _0x52049f(0x4c1) + _0x52049f(0x247) + _0x52049f(0x118) + _0x52049f(0x442) + _0x52049f(0x3f6) + _0x52049f(0x6db) + _0x52049f(0x452) + _0x52049f(0x5c3) + _0x52049f(0x491) + _0x52049f(0x855) + _0x52049f(0x5f3) + _0x52049f(0x491) + _0x52049f(0x2c5) + _0x52049f(0x340) + _0x52049f(0x270) + _0x52049f(0x42e) + _0x52049f(0x452) + _0x52049f(0xd4) + _0x52049f(0x4c1) + _0x52049f(0x77a) + _0x52049f(0x310) + _0x52049f(0x639) + _0x52049f(0x284) + _0x52049f(0x452) + _0x52049f(0x807) + _0x52049f(0x3f8) + _0x52049f(0x179) + _0x52049f(0x437) + _0x52049f(0xda) + _0x52049f(0x711) + _0x52049f(0x74e) + _0x52049f(0x28f) + _0x52049f(0x7b6) + _0x52049f(0x1fb) + _0x52049f(0x6ba) + _0x52049f(0x333) + _0x52049f(0xb4) + _0x52049f(0x81f) + _0x52049f(0x270) + _0x52049f(0x1d7) + _0x52049f(0x270) + _0x52049f(0x2f3) + _0x52049f(0xb3) + _0x52049f(0x472) + _0x52049f(0x356) + _0x52049f(0x1dc) + _0x52049f(0x96) + _0x52049f(0x714) + _0x52049f(0x6a) + _0x52049f(0x2b1) + _0x52049f(0x50f) + _0x52049f(0x7f9) + _0x52049f(0x192) + _0x52049f(0x270) + _0x52049f(0x62a) + _0x52049f(0x2e6) + _0x52049f(0x7e2) + _0x52049f(0x1c8) + _0x52049f(0x350) + _0x52049f(0x4ca) + _0x52049f(0x3d0) + _0x52049f(0x58a) + _0x52049f(0x508) + _0x52049f(0x310) + _0x52049f(0x639) + _0x52049f(0x7f7) + _0x52049f(0x703) + _0x52049f(0x43b) + _0x52049f(0x34f) + _0x52049f(0x6fd) + _0x52049f(0x16f) + _0x52049f(0x28d) + _0x52049f(0x39b) + _0x52049f(0x645) + _0x52049f(0x4ae) + _0x52049f(0x706) + _0x52049f(0x5fd) + _0x52049f(0x648) + _0x52049f(0x81c) + _0x52049f(0x351) + _0x52049f(0x20e) + _0x52049f(0x547) + _0x52049f(0x94) + _0x52049f(0x545) + _0x52049f(0x25f) + _0x52049f(0x796) + _0x52049f(0x314) + _0x52049f(0x182) + _0x52049f(0x445)) + (_0x52049f(0x1cb) + _0x52049f(0x100) + _0x52049f(0x134) + _0x52049f(0x68) + _0x52049f(0x492) + _0x52049f(0x4ae) + _0x52049f(0x59a) + _0x52049f(0x782) + _0x52049f(0x593) + _0x52049f(0xff) + _0x52049f(0x612) + _0x52049f(0x487) + _0x52049f(0x291) + _0x52049f(0x1e2) + _0x52049f(0x1e6) + _0x52049f(0x369) + _0x52049f(0x26c) + _0x52049f(0x772) + _0x52049f(0x5b8) + _0x52049f(0x284) + _0x52049f(0x3a7) + _0x52049f(0x715) + _0x52049f(0xa3) + _0x52049f(0x68a) + _0x52049f(0x118) + _0x52049f(0x270) + _0x52049f(0x327) + _0x52049f(0x64c) + _0x52049f(0x40d) + _0x52049f(0x496) + _0x52049f(0x4d4) + _0x52049f(0x309) + _0x52049f(0x824) + _0x52049f(0x58b) + _0x52049f(0x7c4) + _0x52049f(0x134) + _0x52049f(0x6db) + _0x52049f(0x121) + _0x52049f(0x375) + _0x52049f(0x4c6) + _0x52049f(0x70a) + _0x52049f(0x58d) + _0x52049f(0x5ce) + _0x52049f(0xc6) + _0x52049f(0x348) + _0x52049f(0x818) + _0x52049f(0x314) + _0x52049f(0x182) + _0x52049f(0x853) + _0x52049f(0x26b) + _0x52049f(0xa4) + _0x52049f(0x284) + _0x52049f(0x6db) + _0x52049f(0x49e) + _0x52049f(0x7e2) + _0x52049f(0x6d1) + _0x52049f(0x85f) + _0x52049f(0x739) + _0x52049f(0x3ff) + _0x52049f(0x682) + _0x52049f(0xb1) + _0x52049f(0xe3) + _0x52049f(0x25c) + _0x52049f(0x6fc) + _0x52049f(0x448) + _0x52049f(0x18f) + _0x52049f(0x18f) + _0x52049f(0xdb) + _0x52049f(0x4f3) + _0x52049f(0x6db) + _0x52049f(0x6f9) + _0x52049f(0x722) + _0x52049f(0x246) + _0x52049f(0x42f) + _0x52049f(0x436) + _0x52049f(0x270) + _0x52049f(0x3d0) + _0x52049f(0x270) + _0x52049f(0x1ff) + _0x52049f(0xfa) + _0x52049f(0x41c) + _0x52049f(0x4a8) + _0x52049f(0xa6) + _0x52049f(0x35e) + _0x52049f(0x236) + _0x52049f(0x274) + _0x52049f(0x58b) + _0x52049f(0x68) + _0x52049f(0x492) + _0x52049f(0x473) + _0x52049f(0x7a1) + _0x52049f(0x6fe) + _0x52049f(0x42a) + _0x52049f(0x4d6) + _0x52049f(0x122) + _0x52049f(0x81a) + _0x52049f(0x873) + _0x52049f(0x526) + _0x52049f(0x270) + _0x52049f(0x1ae) + _0x52049f(0x4a4) + _0x52049f(0xa7) + _0x52049f(0x5f4) + _0x52049f(0x270) + _0x52049f(0x18a) + _0x52049f(0x6e8) + _0x52049f(0x34a) + _0x52049f(0x4b8) + _0x52049f(0x6db) + _0x52049f(0x6d7) + _0x52049f(0x6db) + _0x52049f(0x460) + _0x52049f(0x14f) + _0x52049f(0x1f5) + _0x52049f(0x270) + _0x52049f(0x31f) + _0x52049f(0x58a) + _0x52049f(0x7c) + _0x52049f(0x607) + _0x52049f(0x63c) + _0x52049f(0x314) + _0x52049f(0x8f) + _0x52049f(0x741) + _0x52049f(0x4b5) + _0x52049f(0x768) + _0x52049f(0x6ed) + _0x52049f(0x504) + _0x52049f(0x2ef) + _0x52049f(0x139) + _0x52049f(0x7a0) + _0x52049f(0x59a) + _0x52049f(0x500) + _0x52049f(0xfc) + _0x52049f(0x209) + _0x52049f(0x7bb) + _0x52049f(0xd1) + _0x52049f(0x294) + _0x52049f(0x47b) + _0x52049f(0x397) + _0x52049f(0x6e) + _0x52049f(0x492) + _0x52049f(0x278) + _0x52049f(0x6c6) + _0x52049f(0x7ba) + _0x52049f(0xc7) + _0x52049f(0x746) + _0x52049f(0x5e0) + _0x52049f(0x72b) + _0x52049f(0x216) + _0x52049f(0x41d) + _0x52049f(0x6a5) + _0x52049f(0x18e) + _0x52049f(0x5b2) + _0x52049f(0x3a2) + _0x52049f(0x278) + _0x52049f(0x6c6) + _0x52049f(0x646) + _0x52049f(0x1a3) + _0x52049f(0x10c) + _0x52049f(0xf4) + _0x52049f(0x514) + _0x52049f(0x22b) + _0x52049f(0x522) + _0x52049f(0x72a) + _0x52049f(0x201) + _0x52049f(0x27c) + _0x52049f(0x50b) + _0x52049f(0x679) + _0x52049f(0x6ec) + _0x52049f(0xb5) + _0x52049f(0x97) + _0x52049f(0x7a) + _0x52049f(0x138) + _0x52049f(0x3e5) + _0x52049f(0x5cf) + _0x52049f(0x387) + _0x52049f(0x3bb) + _0x52049f(0x5a8) + _0x52049f(0x6cd) + _0x52049f(0x636) + _0x52049f(0x7bb) + _0x52049f(0x2b0) + _0x52049f(0x78a) + _0x52049f(0x517) + _0x52049f(0x3d4) + _0x52049f(0x492) + _0x52049f(0x542) + _0x52049f(0x83a) + _0x52049f(0x5a6) + _0x52049f(0x6e4) + _0x52049f(0x44f) + _0x52049f(0x278) + _0x52049f(0x39a) + _0x52049f(0x66a) + _0x52049f(0x35d) + _0x52049f(0xd6) + _0x52049f(0x61b) + _0x52049f(0x250) + _0x52049f(0x2cc) + _0x52049f(0x1f1)) + (_0x52049f(0x3c6) + _0x52049f(0x552) + _0x52049f(0x70) + _0x52049f(0xeb) + _0x52049f(0x492) + _0x52049f(0x302) + _0x52049f(0x19b) + _0x52049f(0x70c) + _0x52049f(0x3c6) + _0x52049f(0x552) + _0x52049f(0x800) + _0x52049f(0xdb) + _0x52049f(0x7bf) + _0x52049f(0x617) + _0x52049f(0x455) + _0x52049f(0x51b) + _0x52049f(0x517) + _0x52049f(0x2d9) + _0x52049f(0x4f3) + _0x52049f(0x847) + _0x52049f(0x82d) + _0x52049f(0x833) + _0x52049f(0x591) + _0x52049f(0x50a) + _0x52049f(0x5ea) + _0x52049f(0x517) + _0x52049f(0x1a8) + _0x52049f(0x4c7) + _0x52049f(0x257) + _0x52049f(0x5f0) + _0x52049f(0x71a) + _0x52049f(0x7d8) + _0x52049f(0x653) + _0x52049f(0x302) + _0x52049f(0x413) + _0x52049f(0x405) + _0x52049f(0x636) + _0x52049f(0x7bb) + _0x52049f(0x418) + _0x52049f(0x311) + _0x52049f(0x388) + _0x52049f(0x7ad) + _0x52049f(0x637) + _0x52049f(0x7bd) + _0x52049f(0x416) + _0x52049f(0x6e3) + _0x52049f(0x1ca) + _0x52049f(0x47a) + _0x52049f(0x73d) + _0x52049f(0xdd) + _0x52049f(0x5e2) + _0x52049f(0x186) + _0x52049f(0x392) + _0x52049f(0x2d1) + _0x52049f(0xc4) + _0x52049f(0x1e5) + _0x52049f(0x461) + _0x52049f(0x162) + _0x52049f(0x7c5) + _0x52049f(0x12a) + _0x52049f(0x57e) + _0x52049f(0x5b4) + _0x52049f(0x5a0) + _0x52049f(0x3a2) + _0x52049f(0x2c7) + _0x52049f(0x3d9) + _0x52049f(0x558) + _0x52049f(0x5e2) + _0x52049f(0x824) + _0x52049f(0x34f) + _0x52049f(0x6fd) + _0x52049f(0x6af) + _0x52049f(0x153) + _0x52049f(0x497) + _0x52049f(0x34f) + _0x52049f(0x533) + _0x52049f(0x570) + _0x52049f(0x325) + _0x52049f(0x253) + _0x52049f(0x72d) + _0x52049f(0x763) + _0x52049f(0x1d5) + _0x52049f(0x853) + _0x52049f(0x26b) + _0x52049f(0xa4) + _0x52049f(0x6c3) + _0x52049f(0x58a) + _0x52049f(0x508) + _0x52049f(0x310) + _0x52049f(0x639) + _0x52049f(0x5c2) + _0x52049f(0x106) + _0x52049f(0x123) + _0x52049f(0x86e) + _0x52049f(0x393) + _0x52049f(0x32f) + _0x52049f(0x7d7) + _0x52049f(0x5ad) + _0x52049f(0x734) + _0x52049f(0x4a3) + _0x52049f(0x2cd) + _0x52049f(0x2bf) + _0x52049f(0x214) + _0x52049f(0x65f) + _0x52049f(0x396) + _0x52049f(0x153) + _0x52049f(0x497) + _0x52049f(0x76c) + _0x52049f(0x763) + _0x52049f(0x6f5) + _0x52049f(0x13c) + _0x52049f(0x3d7) + _0x52049f(0x233) + _0x52049f(0x68c) + _0x52049f(0x434) + _0x52049f(0x23c) + _0x52049f(0x690) + _0x52049f(0x82a) + _0x52049f(0x3ae) + _0x52049f(0x537) + _0x52049f(0x3cb) + _0x52049f(0x284) + _0x52049f(0x123) + _0x52049f(0x86e) + _0x52049f(0x393) + _0x52049f(0x32f) + _0x52049f(0x7d7) + _0x52049f(0x801) + _0x52049f(0x5de) + _0x52049f(0x771) + _0x52049f(0x218) + _0x52049f(0x734) + _0x52049f(0x4a3) + _0x52049f(0x270) + _0x52049f(0x38f) + _0x52049f(0x3e0) + _0x52049f(0x75b) + _0x52049f(0x68d) + _0x52049f(0x746) + _0x52049f(0x787) + _0x52049f(0x5df) + _0x52049f(0x732) + _0x52049f(0x447) + _0x52049f(0x62e) + _0x52049f(0x578) + _0x52049f(0x3fd) + _0x52049f(0x270) + _0x52049f(0x80d) + _0x52049f(0x1e0) + _0x52049f(0x6e7) + _0x52049f(0x3b4) + _0x52049f(0x329) + _0x52049f(0x195) + _0x52049f(0x86a) + _0x52049f(0x62b) + _0x52049f(0x212) + _0x52049f(0x17e) + _0x52049f(0x565) + _0x52049f(0x19c) + _0x52049f(0x39a) + _0x52049f(0x264) + _0x52049f(0x248) + _0x52049f(0x131) + _0x52049f(0x761) + _0x52049f(0x2ce) + _0x52049f(0x81b) + _0x52049f(0x269) + _0x52049f(0x6cd) + _0x52049f(0x3ef) + _0x52049f(0x1ba) + _0x52049f(0x4b0) + _0x52049f(0x6a9) + _0x52049f(0x746) + _0x52049f(0x30c) + _0x52049f(0x5b2) + _0x52049f(0x281) + _0x52049f(0x7b4) + _0x52049f(0x4e5) + _0x52049f(0x3db) + _0x52049f(0x83e) + _0x52049f(0x31d) + _0x52049f(0x4c2) + _0x52049f(0x123) + _0x52049f(0x856) + _0x52049f(0x3bf) + _0x52049f(0x61a) + _0x52049f(0x86) + _0x52049f(0x4f3) + _0x52049f(0x5dd) + _0x52049f(0x37b) + _0x52049f(0x815) + _0x52049f(0x4d5) + _0x52049f(0x289) + _0x52049f(0x30c) + _0x52049f(0x1df) + _0x52049f(0x689) + _0x52049f(0x66e) + _0x52049f(0x1d7) + _0x52049f(0x270) + _0x52049f(0x3e4)) + (_0x52049f(0x5c1) + _0x52049f(0x87a) + _0x52049f(0x588) + _0x52049f(0x479) + _0x52049f(0x1de) + _0x52049f(0x98) + _0x52049f(0x96) + _0x52049f(0x714) + _0x52049f(0x6a) + _0x52049f(0x2b1) + _0x52049f(0x50f) + _0x52049f(0x7f9) + _0x52049f(0x192) + _0x52049f(0x270) + _0x52049f(0x1d5) + _0x52049f(0x6b5) + _0x52049f(0x6e3) + _0x52049f(0x1ca) + _0x52049f(0x826) + _0x52049f(0x1ff) + _0x52049f(0xfa) + _0x52049f(0xb7) + _0x52049f(0x452) + _0x52049f(0x1d5) + _0x52049f(0x384) + _0x52049f(0x1c4) + _0x52049f(0x4e4) + _0x52049f(0x2c0) + _0x52049f(0x3de) + _0x52049f(0x720) + _0x52049f(0x6d3) + _0x52049f(0x363) + _0x52049f(0x33b) + _0x52049f(0x2ac) + _0x52049f(0x75a) + _0x52049f(0x68) + _0x52049f(0x492) + _0x52049f(0x1f9) + _0x52049f(0x12f) + _0x52049f(0x66b) + _0x52049f(0x39f) + _0x52049f(0x3ff) + _0x52049f(0x682) + _0x52049f(0x67d) + _0x52049f(0x184) + _0x52049f(0x764) + _0x52049f(0x80f) + _0x52049f(0x3a0) + _0x52049f(0x81e) + _0x52049f(0x2c3) + _0x52049f(0x7b2) + _0x52049f(0x549) + _0x52049f(0x383) + _0x52049f(0x54e) + _0x52049f(0x5e8) + _0x52049f(0x5e8) + _0x52049f(0x511) + _0x52049f(0x5a0) + _0x52049f(0x4a9) + _0x52049f(0x119) + _0x52049f(0xf0) + _0x52049f(0x150) + _0x52049f(0x320) + _0x52049f(0x743) + _0x52049f(0x830) + _0x52049f(0x414) + _0x52049f(0xc5) + _0x52049f(0x223) + _0x52049f(0x367) + _0x52049f(0x1b3) + _0x52049f(0xc8) + _0x52049f(0x231) + _0x52049f(0x5f1) + _0x52049f(0x75c) + _0x52049f(0x363) + _0x52049f(0x5ca) + _0x52049f(0x5f2) + _0x52049f(0x264) + _0x52049f(0x248) + _0x52049f(0x131) + _0x52049f(0x761) + _0x52049f(0x2ce) + _0x52049f(0x33c) + _0x52049f(0x85e) + _0x52049f(0x428) + _0x52049f(0x6cd) + _0x52049f(0x3ef) + _0x52049f(0x1ba) + _0x52049f(0x4b0) + _0x52049f(0x7e5) + _0x52049f(0x4e9) + _0x52049f(0x652) + _0x52049f(0x4a2) + _0x52049f(0x4c9) + _0x52049f(0x281) + _0x52049f(0x7b4) + _0x52049f(0x4e5) + _0x52049f(0x10f) + _0x52049f(0x195) + _0x52049f(0x52b) + _0x52049f(0x384) + _0x52049f(0x1c4) + _0x52049f(0x269) + _0x52049f(0x72d) + _0x52049f(0x17d) + _0x52049f(0xd2) + _0x52049f(0x3fb) + _0x52049f(0x73d) + _0x52049f(0x568) + _0x52049f(0x4e9) + _0x52049f(0x21d) + _0x52049f(0x27a) + _0x52049f(0x1c4) + _0x52049f(0x269) + _0x52049f(0x72d) + _0x52049f(0x793) + _0x52049f(0x80e) + _0x52049f(0x19f) + _0x52049f(0x270) + _0x52049f(0x38f) + _0x52049f(0x73a) + _0x52049f(0x227) + _0x52049f(0x147) + _0x52049f(0x2f2) + _0x52049f(0x499) + _0x52049f(0x1fb) + _0x52049f(0x4de) + _0x52049f(0x1d6) + _0x52049f(0x270) + _0x52049f(0x9d) + _0x52049f(0x2de) + _0x52049f(0x3b8) + _0x52049f(0x79c) + _0x52049f(0x799) + _0x52049f(0x725) + _0x52049f(0x5a0) + _0x52049f(0x146) + _0x52049f(0x218) + _0x52049f(0x7ea) + _0x52049f(0x14d) + _0x52049f(0x870) + _0x52049f(0x2df) + _0x52049f(0x731) + _0x52049f(0x58b) + _0x52049f(0x4a9) + _0x52049f(0x119) + _0x52049f(0xf0) + _0x52049f(0x150) + _0x52049f(0x21b) + _0x52049f(0x4ee) + _0x52049f(0x269) + _0x52049f(0x6c8) + _0x52049f(0x4ea) + _0x52049f(0x513) + _0x52049f(0x5ac) + _0x52049f(0x52b) + _0x52049f(0x2d1) + _0x52049f(0x142) + _0x52049f(0x540) + _0x52049f(0x7a) + _0x52049f(0x87a) + _0x52049f(0x588) + _0x52049f(0x479) + _0x52049f(0x60f) + _0x52049f(0x4e9) + _0x52049f(0x251) + _0x52049f(0x6b) + _0x52049f(0x405) + _0x52049f(0x636) + _0x52049f(0xbe) + _0x52049f(0x7f4) + _0x52049f(0x538) + _0x52049f(0x678) + _0x52049f(0x28b) + _0x52049f(0x3ba) + _0x52049f(0x50e) + _0x52049f(0x5a5) + _0x52049f(0x583) + _0x52049f(0x450) + _0x52049f(0x23f) + _0x52049f(0x651) + _0x52049f(0x204) + _0x52049f(0xba) + _0x52049f(0x5f8) + _0x52049f(0x641) + _0x52049f(0x58b) + _0x52049f(0x80d) + _0x52049f(0x1e0) + _0x52049f(0x25b) + _0x52049f(0x3b4) + _0x52049f(0x31e) + _0x52049f(0x296) + _0x52049f(0x195) + _0x52049f(0x140) + _0x52049f(0x106) + _0x52049f(0x131) + _0x52049f(0x234) + _0x52049f(0x114) + _0x52049f(0x27b) + _0x52049f(0x463)) + (_0x52049f(0x28b) + _0x52049f(0x583) + _0x52049f(0x84f) + _0x52049f(0x51d) + _0x52049f(0x61f) + _0x52049f(0x466) + _0x52049f(0x17e) + _0x52049f(0x565) + _0x52049f(0x19c) + _0x52049f(0x6c6) + _0x52049f(0x6b7) + _0x52049f(0x1c4) + _0x52049f(0x2a9) + _0x52049f(0x6cb) + _0x52049f(0x449) + _0x52049f(0x46f) + _0x52049f(0x159) + _0x52049f(0x85) + _0x52049f(0x314) + _0x52049f(0x8f) + _0x52049f(0x84b) + _0x52049f(0x22b) + _0x52049f(0x391) + _0x52049f(0x72a) + _0x52049f(0x80b) + _0x52049f(0xf6) + _0x52049f(0x3f2) + _0x52049f(0x3c7) + _0x52049f(0x642) + _0x52049f(0x4ae) + _0x52049f(0x2d6) + _0x52049f(0x557) + _0x52049f(0x3a4) + _0x52049f(0x131) + _0x52049f(0x234) + _0x52049f(0x258) + _0x52049f(0x1ba) + _0x52049f(0x13d) + _0x52049f(0x6b1) + _0x52049f(0x7e1) + _0x52049f(0x575) + _0x52049f(0x210) + _0x52049f(0x6be) + _0x52049f(0x102) + _0x52049f(0x76f) + _0x52049f(0x57c) + _0x52049f(0x462) + _0x52049f(0x760) + _0x52049f(0x6b1) + _0x52049f(0x7e1) + _0x52049f(0x227) + _0x52049f(0x147) + _0x52049f(0x2f2) + _0x52049f(0x499) + _0x52049f(0x1fb) + _0x52049f(0x4de) + _0x52049f(0x1e2) + _0x52049f(0x1e6) + _0x52049f(0x546) + _0x52049f(0x224) + _0x52049f(0x4cb) + _0x52049f(0x423) + _0x52049f(0x74d) + _0x52049f(0x452) + _0x52049f(0x2c7) + _0x52049f(0x3d9) + _0x52049f(0x1ce) + _0x52049f(0x651) + _0x52049f(0x4e8) + _0x52049f(0x597) + _0x52049f(0x270) + _0x52049f(0x38f) + _0x52049f(0x575) + _0x52049f(0x505) + _0x52049f(0x770) + _0x52049f(0x322) + _0x52049f(0x5cb) + _0x52049f(0x6c2) + _0x52049f(0x74a) + _0x52049f(0x5d1) + _0x52049f(0x4cc) + _0x52049f(0x1f6) + _0x52049f(0x2bd) + _0x52049f(0x67f) + _0x52049f(0x270) + _0x52049f(0x2e4) + _0x52049f(0x12e) + _0x52049f(0x451) + _0x52049f(0x6f1) + _0x52049f(0x575) + _0x52049f(0x600) + _0x52049f(0x7d9) + _0x52049f(0x1d8) + _0x52049f(0x270) + _0x52049f(0x867) + _0x52049f(0x16a) + _0x52049f(0x328) + _0x52049f(0x86e) + _0x52049f(0x12e) + _0x52049f(0x2b4) + _0x52049f(0x404) + _0x52049f(0x15b) + _0x52049f(0x71c) + _0x52049f(0x62c) + _0x52049f(0x451) + _0x52049f(0x422) + _0x52049f(0x28e) + _0x52049f(0x62c) + _0x52049f(0x529) + _0x52049f(0x284) + _0x52049f(0x121) + _0x52049f(0x95) + _0x52049f(0xf5) + _0x52049f(0x7fb) + _0x52049f(0x332) + _0x52049f(0x2f0) + _0x52049f(0x46d) + _0x52049f(0x45b) + _0x52049f(0x57b) + _0x52049f(0x61d) + _0x52049f(0x3e6) + _0x52049f(0x7b1) + _0x52049f(0x76b) + _0x52049f(0x836) + _0x52049f(0x631) + _0x52049f(0x270) + _0x52049f(0x218) + _0x52049f(0x1d3) + _0x52049f(0x69e) + _0x52049f(0x5cc) + _0x52049f(0x76d) + _0x52049f(0x4f3) + _0x52049f(0x6db) + _0x52049f(0x576) + _0x52049f(0x358) + _0x52049f(0x774) + _0x52049f(0x435) + _0x52049f(0x4dc) + _0x52049f(0x6ca) + _0x52049f(0x48c) + _0x52049f(0x86c) + _0x52049f(0x2a8) + _0x52049f(0x63e) + _0x52049f(0x83f) + _0x52049f(0x7a5) + _0x52049f(0x44d) + _0x52049f(0x7b8) + _0x52049f(0x128) + _0x52049f(0x52e) + _0x52049f(0x86c) + _0x52049f(0x331) + _0x52049f(0x694) + _0x52049f(0x737) + _0x52049f(0x852) + _0x52049f(0x56f) + _0x52049f(0xf2) + _0x52049f(0x163) + _0x52049f(0x1c6) + _0x52049f(0x6bd) + _0x52049f(0x47c) + _0x52049f(0x626) + _0x52049f(0x323) + _0x52049f(0x577) + _0x52049f(0x663) + _0x52049f(0x6db) + _0x52049f(0x4b1) + _0x52049f(0x4a8) + _0x52049f(0x299) + _0x52049f(0x5de) + _0x52049f(0x58b) + _0x52049f(0x1aa) + _0x52049f(0x86c) + _0x52049f(0x4b3) + _0x52049f(0x1b7) + _0x52049f(0x456) + _0x52049f(0x374) + _0x52049f(0x41a) + _0x52049f(0x4a5) + _0x52049f(0x254) + _0x52049f(0x4e7) + _0x52049f(0x80d) + _0x52049f(0x1e0) + _0x52049f(0x24b) + _0x52049f(0x358) + _0x52049f(0x7cf) + _0x52049f(0x73b) + _0x52049f(0x413) + '\x0a')), STATUS_LINE_CONTENT = _0x52049f(0x1e4) + _0x52049f(0x656) + _0x52049f(0x602) + _0x52049f(0x1d0) + _0x52049f(0x3ea) + _0x52049f(0x623) + _0x52049f(0x403) + _0x52049f(0x326) + _0x52049f(0x35b) + _0x52049f(0x70d) + _0x52049f(0xb5) + _0x52049f(0x7d1) + _0x52049f(0x662) + _0x52049f(0x1ee) + _0x52049f(0x823) + _0x52049f(0x7c3) + _0x52049f(0x430) + _0x52049f(0x7f2) + _0x52049f(0x608) + _0x52049f(0x2b7) + _0x52049f(0x12d) + _0x52049f(0x39d) + _0x52049f(0x4d0) + _0x52049f(0x3b0) + _0x52049f(0x5f9) + _0x52049f(0x512) + _0x52049f(0x427) + _0x52049f(0xce) + _0x52049f(0x18d) + _0x52049f(0x2f7) + _0x52049f(0x4bd) + _0x52049f(0x14c) + _0x52049f(0x78d) + _0x52049f(0x813) + _0x52049f(0x1da) + _0x52049f(0xb8) + _0x52049f(0x34b) + _0x52049f(0x62f) + _0x52049f(0x65c) + _0x52049f(0x5c0) + STATUS_LINE_VERSION + (_0x52049f(0x465) + _0x52049f(0x2ad) + _0x52049f(0x6e0) + _0x52049f(0x252) + _0x52049f(0x17b) + _0x52049f(0x8c) + _0x52049f(0x353) + _0x52049f(0x1cd) + _0x52049f(0x67e) + _0x52049f(0x359) + _0x52049f(0x17b) + _0x52049f(0x871) + _0x52049f(0x828) + _0x52049f(0x6f6) + _0x52049f(0x638) + _0x52049f(0x44b) + _0x52049f(0x724) + _0x52049f(0xdc) + _0x52049f(0x40b) + _0x52049f(0x90) + _0x52049f(0x4fb) + _0x52049f(0x202)) + STATUS_LINE_VERSION + (_0x52049f(0x381) + _0x52049f(0x2ab) + _0x52049f(0x717) + _0x52049f(0x69d) + _0x52049f(0x777) + _0x52049f(0x69d) + _0x52049f(0x32d) + _0x52049f(0x2fc) + _0x52049f(0x802) + _0x52049f(0x632) + _0x52049f(0x1b5) + _0x52049f(0x6c0) + _0x52049f(0x66c) + _0x52049f(0x5b7) + _0x52049f(0x173) + _0x52049f(0x2e5) + _0x52049f(0x15c) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x865) + _0x52049f(0x129) + _0x52049f(0x82b) + _0x52049f(0x438) + _0x52049f(0xfe) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x379) + _0x52049f(0x20f) + _0x52049f(0x10d) + _0x52049f(0x1fe) + _0x52049f(0xc2) + _0x52049f(0x382) + _0x52049f(0x3e9) + _0x52049f(0x5d7) + _0x52049f(0x584) + _0x52049f(0x78c) + _0x52049f(0x775) + _0x52049f(0x6ea) + _0x52049f(0x40e) + _0x52049f(0x5a9) + _0x52049f(0x81) + _0x52049f(0x1f3) + _0x52049f(0x2a7) + _0x52049f(0x155) + _0x52049f(0x1fe) + _0x52049f(0x5ec) + _0x52049f(0x33c) + _0x52049f(0x844) + _0x52049f(0x401) + _0x52049f(0x37c) + _0x52049f(0x76a) + _0x52049f(0x566) + _0x52049f(0x1c2) + _0x52049f(0x75e) + _0x52049f(0x808) + _0x52049f(0x411) + _0x52049f(0x49c) + _0x52049f(0x4b0) + _0x52049f(0x6dd) + _0x52049f(0x5e4) + _0x52049f(0x4b7) + _0x52049f(0x13a) + _0x52049f(0x5ae) + _0x52049f(0x834) + _0x52049f(0x1ab) + _0x52049f(0x2a4) + _0x52049f(0x6db) + _0x52049f(0x507) + _0x52049f(0x2e8) + _0x52049f(0x832) + _0x52049f(0x132) + _0x52049f(0x710) + _0x52049f(0xcd) + _0x52049f(0x9a) + _0x52049f(0x471) + _0x52049f(0x125) + _0x52049f(0x7a2) + _0x52049f(0x4d1) + _0x52049f(0x873) + _0x52049f(0x136) + _0x52049f(0x324) + _0x52049f(0x6db) + _0x52049f(0x9d) + _0x52049f(0x5db) + _0x52049f(0x745) + _0x52049f(0x7c6) + _0x52049f(0xc9) + _0x52049f(0x312) + _0x52049f(0x1fb) + _0x52049f(0x2f5) + _0x52049f(0x7dc) + _0x52049f(0x1a1) + _0x52049f(0x5a4) + _0x52049f(0x698) + _0x52049f(0x13e) + _0x52049f(0x5fc) + _0x52049f(0x301) + _0x52049f(0x6db) + _0x52049f(0x7b3) + _0x52049f(0xb4) + _0x52049f(0x695) + _0x52049f(0x364) + _0x52049f(0x3a5) + _0x52049f(0x178) + _0x52049f(0x767) + _0x52049f(0x270) + _0x52049f(0x453) + _0x52049f(0xbb) + _0x52049f(0x498) + _0x52049f(0x3ba) + _0x52049f(0x315) + _0x52049f(0x454) + _0x52049f(0x26e) + _0x52049f(0xf9) + _0x52049f(0x786) + _0x52049f(0x7eb) + _0x52049f(0x80c) + _0x52049f(0x564) + _0x52049f(0x3a6) + _0x52049f(0x48a) + _0x52049f(0x727) + _0x52049f(0x60c) + _0x52049f(0x838) + _0x52049f(0x3c3) + _0x52049f(0x6f2) + _0x52049f(0xef) + _0x52049f(0x1ae) + _0x52049f(0x794) + _0x52049f(0x5b6) + _0x52049f(0x727) + _0x52049f(0x59d) + _0x52049f(0x674) + _0x52049f(0x345) + _0x52049f(0x624) + _0x52049f(0x3ed) + _0x52049f(0x3ac) + _0x52049f(0x1f2) + _0x52049f(0x423) + _0x52049f(0x208) + _0x52049f(0x22e) + _0x52049f(0x319) + _0x52049f(0x3a6) + _0x52049f(0x260) + _0x52049f(0x850) + _0x52049f(0x137) + _0x52049f(0x5b1) + _0x52049f(0x6db) + _0x52049f(0x35b) + _0x52049f(0x127) + _0x52049f(0x6eb) + _0x52049f(0x805) + _0x52049f(0x270) + _0x52049f(0x675) + _0x52049f(0x39c) + _0x52049f(0x1a9) + _0x52049f(0x43a) + _0x52049f(0x219) + _0x52049f(0x5b1) + _0x52049f(0x6db) + _0x52049f(0x544) + _0x52049f(0x270) + _0x52049f(0x177) + _0x52049f(0x39e) + _0x52049f(0x685) + _0x52049f(0x794) + _0x52049f(0x30d) + _0x52049f(0x4ce) + _0x52049f(0x137) + _0x52049f(0x5b1) + _0x52049f(0x6db) + _0x52049f(0x5c6) + _0x52049f(0x40c) + _0x52049f(0x9f) + _0x52049f(0x33d) + _0x52049f(0x670) + _0x52049f(0x5b1) + (_0x52049f(0x6db) + _0x52049f(0x1ae) + _0x52049f(0x794) + _0x52049f(0x3d6) + _0x52049f(0xae) + _0x52049f(0x835) + _0x52049f(0xd5) + _0x52049f(0x11f) + _0x52049f(0x750) + _0x52049f(0xa9) + _0x52049f(0x6b8) + _0x52049f(0x190) + _0x52049f(0x6db) + _0x52049f(0x6db) + _0x52049f(0x3ba) + _0x52049f(0x1d9) + _0x52049f(0x1cf) + _0x52049f(0x197) + _0x52049f(0x40c) + _0x52049f(0x30f) + _0x52049f(0x519) + _0x52049f(0x1e9) + _0x52049f(0x551) + _0x52049f(0x840) + _0x52049f(0x21e) + _0x52049f(0x2f8) + _0x52049f(0x1a5) + _0x52049f(0x6ef) + _0x52049f(0x6db) + _0x52049f(0x6db) + _0x52049f(0x5fe) + _0x52049f(0x52d) + _0x52049f(0x7ae) + _0x52049f(0x5bb) + _0x52049f(0x91) + _0x52049f(0x74c) + _0x52049f(0x7c7) + _0x52049f(0x271) + _0x52049f(0x270) + _0x52049f(0x6db) + _0x52049f(0x6db) + _0x52049f(0x15e) + _0x52049f(0x6a2) + _0x52049f(0x52f) + _0x52049f(0x831) + _0x52049f(0x395) + _0x52049f(0x2b2) + _0x52049f(0x6db) + _0x52049f(0x6db) + _0x52049f(0x6db) + _0x52049f(0xe1) + _0x52049f(0x203) + _0x52049f(0x6bb) + _0x52049f(0x63f) + _0x52049f(0x6b8) + _0x52049f(0xae) + _0x52049f(0x506) + _0x52049f(0xd5) + _0x52049f(0x45f) + _0x52049f(0x2af) + _0x52049f(0x410) + _0x52049f(0x324) + _0x52049f(0x7c6) + _0x52049f(0x336) + _0x52049f(0x7a7) + _0x52049f(0xb0) + _0x52049f(0x221) + _0x52049f(0x64f) + _0x52049f(0x590) + _0x52049f(0x5ff) + _0x52049f(0x270) + _0x52049f(0x35a) + _0x52049f(0x79e) + _0x52049f(0x37c) + _0x52049f(0xa9) + _0x52049f(0x6bc) + _0x52049f(0x746) + _0x52049f(0x74b) + _0x52049f(0x5d4) + _0x52049f(0x7c0) + _0x52049f(0x151) + _0x52049f(0x5bf) + _0x52049f(0x746) + _0x52049f(0x143) + _0x52049f(0x2d4) + _0x52049f(0x158) + _0x52049f(0x2d3) + _0x52049f(0x15f) + _0x52049f(0x530) + _0x52049f(0x270) + _0x52049f(0x849) + _0x52049f(0x550) + _0x52049f(0x84a) + _0x52049f(0x169) + _0x52049f(0x160) + _0x52049f(0x89) + _0x52049f(0x304) + _0x52049f(0x6db) + _0x52049f(0x34f) + _0x52049f(0x64a) + _0x52049f(0x5eb) + _0x52049f(0x137) + _0x52049f(0x5b1) + _0x52049f(0x6db) + _0x52049f(0x9d) + _0x52049f(0x3e2) + _0x52049f(0x72f) + _0x52049f(0x185) + _0x52049f(0x3fc) + _0x52049f(0x429) + _0x52049f(0x82e) + _0x52049f(0x71f) + _0x52049f(0x37d) + _0x52049f(0x324) + _0x52049f(0x7c6) + _0x52049f(0x336) + _0x52049f(0x7a7) + _0x52049f(0xb0) + _0x52049f(0x221) + _0x52049f(0x64f) + _0x52049f(0x590) + _0x52049f(0x5ff) + _0x52049f(0x270) + _0x52049f(0x372) + _0x52049f(0x310) + _0x52049f(0x862) + _0x52049f(0x364) + _0x52049f(0xf8) + _0x52049f(0x7e9) + _0x52049f(0x2ca) + _0x52049f(0x37e) + _0x52049f(0x270) + _0x52049f(0x453) + _0x52049f(0x36e) + _0x52049f(0x412) + _0x52049f(0x10e) + _0x52049f(0x27e) + _0x52049f(0x845) + _0x52049f(0x837) + _0x52049f(0x1c4) + _0x52049f(0x2bb) + _0x52049f(0x174) + _0x52049f(0x5a1) + _0x52049f(0x595) + _0x52049f(0x829) + _0x52049f(0x47d) + _0x52049f(0x1ae) + _0x52049f(0x5e3) + _0x52049f(0x778) + _0x52049f(0x1f3) + _0x52049f(0x44a) + _0x52049f(0x17c) + _0x52049f(0x1d2) + _0x52049f(0x191) + _0x52049f(0x12a) + _0x52049f(0x57e) + _0x52049f(0x5b4) + _0x52049f(0x270) + _0x52049f(0x849) + _0x52049f(0x10a) + _0x52049f(0x43c) + _0x52049f(0x704) + _0x52049f(0x89) + _0x52049f(0x304) + _0x52049f(0x6db) + _0x52049f(0x34f) + _0x52049f(0x64a) + _0x52049f(0x5eb) + _0x52049f(0x137) + _0x52049f(0x5b1) + _0x52049f(0x6db) + _0x52049f(0x9d) + _0x52049f(0x3e2) + _0x52049f(0x72f) + _0x52049f(0x2da) + _0x52049f(0x1bb) + _0x52049f(0x603) + _0x52049f(0x71f) + _0x52049f(0x37d) + _0x52049f(0x324) + _0x52049f(0x7c6) + _0x52049f(0x336) + _0x52049f(0x7a7) + _0x52049f(0xb0) + _0x52049f(0x221) + _0x52049f(0x64f) + _0x52049f(0x590) + _0x52049f(0x5ff) + _0x52049f(0x270) + _0x52049f(0x372) + _0x52049f(0x310) + _0x52049f(0x862) + _0x52049f(0x364) + _0x52049f(0x32a) + _0x52049f(0x84e) + _0x52049f(0x7f8) + _0x52049f(0x4f8) + _0x52049f(0x32b) + _0x52049f(0xb6) + _0x52049f(0xcb)) + (_0x52049f(0x270) + _0x52049f(0x21f) + _0x52049f(0x43d) + _0x52049f(0x7e) + _0x52049f(0x151) + _0x52049f(0x13c) + _0x52049f(0x3ba) + _0x52049f(0x315) + _0x52049f(0x580) + _0x52049f(0x115) + _0x52049f(0x751) + _0x52049f(0x75d) + _0x52049f(0x7b9) + _0x52049f(0x252) + _0x52049f(0x17b) + _0x52049f(0x8c) + _0x52049f(0x353) + _0x52049f(0x1cd) + _0x52049f(0x67e) + _0x52049f(0x67c) + _0x52049f(0x657) + _0x52049f(0x3dd) + _0x52049f(0x742) + _0x52049f(0xce) + _0x52049f(0x170) + _0x52049f(0x3be) + _0x52049f(0x67c) + _0x52049f(0x16c) + _0x52049f(0x574) + _0x52049f(0x5d4) + _0x52049f(0x53d) + _0x52049f(0x484) + _0x52049f(0x51a) + _0x52049f(0x130) + _0x52049f(0x361) + _0x52049f(0x6ae) + _0x52049f(0x28c) + _0x52049f(0x1c2) + _0x52049f(0x1d1) + _0x52049f(0x199) + _0x52049f(0x681) + _0x52049f(0x267) + _0x52049f(0x13a) + _0x52049f(0x1be) + _0x52049f(0x304) + _0x52049f(0x6db) + _0x52049f(0x273) + _0x52049f(0x6bf) + _0x52049f(0x157) + _0x52049f(0x6db) + _0x52049f(0x62a) + _0x52049f(0x7aa) + _0x52049f(0x53d) + _0x52049f(0x22e) + _0x52049f(0x841) + _0x52049f(0x7e3) + _0x52049f(0x604) + _0x52049f(0x4a0) + _0x52049f(0x148) + _0x52049f(0x6c6) + _0x52049f(0x7ba) + _0x52049f(0x76) + _0x52049f(0x225) + _0x52049f(0x3a8) + _0x52049f(0x270) + _0x52049f(0x3ab) + _0x52049f(0xb9) + _0x52049f(0xe0) + _0x52049f(0x594) + _0x52049f(0xc1) + _0x52049f(0x781) + _0x52049f(0x72e) + _0x52049f(0x353) + _0x52049f(0x58f) + _0x52049f(0x218) + _0x52049f(0x4a6) + _0x52049f(0x148) + _0x52049f(0x6c6) + _0x52049f(0x730) + _0x52049f(0x145) + _0x52049f(0x225) + _0x52049f(0x71e) + _0x52049f(0x35c) + _0x52049f(0x5d5) + _0x52049f(0x6d9) + _0x52049f(0x270) + _0x52049f(0x372) + _0x52049f(0x310) + _0x52049f(0x7e4) + _0x52049f(0x2fe) + _0x52049f(0x486) + _0x52049f(0x29f) + _0x52049f(0x3c4) + _0x52049f(0x2ec) + _0x52049f(0x748) + _0x52049f(0x7d6) + _0x52049f(0x4eb) + _0x52049f(0x613) + _0x52049f(0x6d0) + _0x52049f(0x144) + _0x52049f(0x195) + _0x52049f(0x846) + _0x52049f(0x7cd) + _0x52049f(0x798) + _0x52049f(0x1ae) + _0x52049f(0x7b4) + _0x52049f(0x7ba) + _0x52049f(0x7e9) + _0x52049f(0x2ca) + _0x52049f(0x2f4) + _0x52049f(0x270) + _0x52049f(0x849) + _0x52049f(0x10a) + _0x52049f(0x2db) + _0x52049f(0x6db) + _0x52049f(0x62a) + _0x52049f(0x7aa) + _0x52049f(0x7f6) + _0x52049f(0x4f4) + _0x52049f(0x3b4) + _0x52049f(0x501) + _0x52049f(0x3c8) + _0x52049f(0x7da) + _0x52049f(0x5b0) + _0x52049f(0x4b0) + _0x52049f(0xd0) + _0x52049f(0x746) + _0x52049f(0x30c) + _0x52049f(0x1df) + _0x52049f(0x3c2) + _0x52049f(0x503) + _0x52049f(0x3ec) + _0x52049f(0x846) + _0x52049f(0x7cd) + _0x52049f(0x798) + _0x52049f(0x1e1) + _0x52049f(0x424) + _0x52049f(0x75f) + _0x52049f(0x1ec) + _0x52049f(0x244) + _0x52049f(0x1b8) + _0x52049f(0x5d6) + _0x52049f(0x123) + _0x52049f(0x341) + _0x52049f(0x692) + _0x52049f(0x3bf) + _0x52049f(0x61a) + _0x52049f(0x86) + _0x52049f(0x26a) + _0x52049f(0x6db) + _0x52049f(0x62a) + _0x52049f(0x7aa) + _0x52049f(0x7f6) + _0x52049f(0x634) + _0x52049f(0x3b4) + _0x52049f(0x2dc) + _0x52049f(0x5a7) + _0x52049f(0x59e) + _0x52049f(0x53d) + _0x52049f(0x791) + _0x52049f(0x85f) + _0x52049f(0xd3) + _0x52049f(0x5ac) + _0x52049f(0x131) + _0x52049f(0x811) + _0x52049f(0x433) + _0x52049f(0x72e) + _0x52049f(0x353) + _0x52049f(0x58f) + _0x52049f(0x576) + _0x52049f(0x701) + _0x52049f(0x86d) + _0x52049f(0x720) + _0x52049f(0x75f) + _0x52049f(0x457) + _0x52049f(0x5d9) + _0x52049f(0x6c7) + _0x52049f(0x440) + _0x52049f(0x270) + _0x52049f(0x2b5) + _0x52049f(0x50c) + _0x52049f(0x79) + _0x52049f(0x5b1) + _0x52049f(0x6db) + _0x52049f(0x615) + _0x52049f(0x2ae) + _0x52049f(0x494) + _0x52049f(0x606) + _0x52049f(0x42b) + _0x52049f(0x701) + _0x52049f(0x86d) + _0x52049f(0x849) + _0x52049f(0x478) + _0x52049f(0x165) + _0x52049f(0x1fa) + _0x52049f(0x4be) + _0x52049f(0x3b3) + _0x52049f(0x548) + _0x52049f(0x6db) + _0x52049f(0x218)) + (_0x52049f(0x615) + _0x52049f(0x2ba) + _0x52049f(0x6db) + _0x52049f(0x6db) + _0x52049f(0x34f) + _0x52049f(0x740) + _0x52049f(0x44c) + _0x52049f(0x5c7) + _0x52049f(0x707) + _0x52049f(0x4e9) + _0x52049f(0x2e9) + _0x52049f(0x863) + _0x52049f(0x2ec) + _0x52049f(0x748) + _0x52049f(0x483) + _0x52049f(0x28b) + _0x52049f(0x757) + _0x52049f(0x627) + _0x52049f(0x238) + _0x52049f(0x7b3) + _0x52049f(0xb4) + _0x52049f(0x2e1) + _0x52049f(0x2a3) + _0x52049f(0x370) + _0x52049f(0x5b1) + _0x52049f(0x52a) + _0x52049f(0x270) + _0x52049f(0x6e1) + _0x52049f(0x51c) + _0x52049f(0x56a) + _0x52049f(0x7ab) + _0x52049f(0x12c) + _0x52049f(0x40a) + _0x52049f(0x3e1) + _0x52049f(0x112) + _0x52049f(0x67a) + _0x52049f(0x74f) + _0x52049f(0x848) + _0x52049f(0x6a8) + _0x52049f(0x324) + _0x52049f(0x6db) + _0x52049f(0x3a9) + _0x52049f(0x444) + _0x52049f(0x569) + _0x52049f(0x1a0) + _0x52049f(0x5ed) + _0x52049f(0x389) + _0x52049f(0x83b) + _0x52049f(0x38e) + _0x52049f(0x288) + _0x52049f(0x6db) + _0x52049f(0x9b) + _0x52049f(0x43d) + _0x52049f(0x198) + _0x52049f(0x6f3) + _0x52049f(0x29c) + _0x52049f(0x6db) + _0x52049f(0x7e6) + _0x52049f(0x189) + _0x52049f(0x25a) + _0x52049f(0x769) + _0x52049f(0x4d8) + _0x52049f(0x3ba) + _0x52049f(0x1d9) + _0x52049f(0x2f6) + _0x52049f(0x666) + _0x52049f(0x567) + _0x52049f(0x6db) + _0x52049f(0x5b0) + _0x52049f(0x48d) + _0x52049f(0x63b) + _0x52049f(0x559) + _0x52049f(0x176) + _0x52049f(0x525) + _0x52049f(0x7fd) + _0x52049f(0xcf) + _0x52049f(0x785) + _0x52049f(0x270) + _0x52049f(0x1e1) + _0x52049f(0x424) + _0x52049f(0x189) + _0x52049f(0x87) + _0x52049f(0x6db) + _0x52049f(0x6db) + _0x52049f(0x1b0) + _0x52049f(0x7d4) + _0x52049f(0x4c8) + _0x52049f(0x20b) + _0x52049f(0x748) + _0x52049f(0x6db) + _0x52049f(0x4d2) + _0x52049f(0x673) + _0x52049f(0x288) + _0x52049f(0x18c) + _0x52049f(0x399) + _0x52049f(0x7a7) + _0x52049f(0xb0) + _0x52049f(0x221) + _0x52049f(0x776) + _0x52049f(0x270) + _0x52049f(0x6e1) + _0x52049f(0x718) + _0x52049f(0x67) + _0x52049f(0x5c5) + _0x52049f(0x266) + _0x52049f(0x254) + _0x52049f(0xbf) + _0x52049f(0x286) + _0x52049f(0x7e8) + _0x52049f(0x6fa) + _0x52049f(0x5e6) + _0x52049f(0x809) + _0x52049f(0x6db) + _0x52049f(0x4d2) + _0x52049f(0x673) + _0x52049f(0x324) + _0x52049f(0x7c6) + _0x52049f(0x262) + _0x52049f(0x349) + _0x52049f(0x431) + _0x52049f(0x6db) + _0x52049f(0x47e) + _0x52049f(0x441) + _0x52049f(0x611) + _0x52049f(0x230) + _0x52049f(0x4e1) + _0x52049f(0x729) + _0x52049f(0x44e) + _0x52049f(0x69b) + _0x52049f(0x4d9) + _0x52049f(0x561) + _0x52049f(0x6f8) + _0x52049f(0x6db) + _0x52049f(0x344) + _0x52049f(0x696) + _0x52049f(0x827) + _0x52049f(0x282) + _0x52049f(0x5e5) + _0x52049f(0x5b5) + _0x52049f(0x816) + _0x52049f(0x30b) + _0x52049f(0x5b1) + _0x52049f(0x2b9) + _0x52049f(0x680)));
29
- function installHook() {
30
- const _0x330039 = {
31
- _0x524000: 0x357,
32
- _0x427421: 0x585,
33
- _0x45a73d: 0x624,
34
- _0x42f15c: 0x357,
35
- _0x5d9485: 0x240,
36
- _0xa214e8: 0x357,
37
- _0x9ee105: 0x686,
38
- _0x5d2de1: 0x4f1,
39
- _0x13b43a: 0x1c1,
40
- _0x4ac11f: 0x728,
41
- _0x1e4ed2: 0xe1,
42
- _0x2c2985: 0x66f,
43
- _0x4ff2ec: 0x175,
44
- _0x343047: 0x792,
45
- _0x19f4ec: 0x518,
46
- _0x90f43d: 0x78b,
47
- _0x30882: 0x469,
48
- _0x29fb51: 0x792,
49
- _0x4b101e: 0x518,
50
- _0x45c2dc: 0x14e,
51
- _0x246dca: 0x103,
52
- _0x5b6b06: 0x211,
53
- _0x4b9c52: 0x65d,
54
- _0x422c29: 0x18b,
55
- _0xadb219: 0x348,
56
- _0x547358: 0x683,
57
- _0x40e279: 0x6ac,
58
- _0x346109: 0x469,
59
- _0x1489b3: 0x352,
60
- _0x3d374b: 0x77e,
61
- _0x28f57e: 0x14e,
62
- _0x4cebcd: 0x4db,
63
- _0x594c70: 0x65,
64
- _0x318ccd: 0x736,
65
- _0x52e702: 0x240,
66
- _0x1b1611: 0x4db,
67
- _0x2ea923: 0x65,
68
- _0x5cdee4: 0x736,
69
- _0x2c8441: 0x4ba,
70
- _0xc3dfba: 0x4db,
71
- _0x3a640b: 0x736,
72
- _0x2db651: 0x5cc,
73
- _0x1dd8fc: 0x65,
74
- _0x13f035: 0x736,
75
- _0x2b5c42: 0x3f7,
76
- _0x5e736d: 0x240,
77
- _0x4c0f6: 0x205,
78
- _0x5652d7: 0x814,
79
- _0x579f62: 0x240,
80
- _0x182b02: 0x814,
81
- _0x401c7c: 0x240,
82
- _0x2397a5: 0x814,
83
- _0x13cf7e: 0x2d8,
84
- _0x3f7f3a: 0x240,
85
- _0x361f4b: 0x814,
86
- _0x312fbb: 0x643,
87
- _0x45da0e: 0x82f,
88
- _0x54d7b4: 0x18b,
89
- _0x40bb40: 0x2e7,
90
- _0x3bb956: 0xfb,
91
- _0x4255d5: 0x7ce,
92
- _0x38ecb1: 0x16b,
93
- _0x2864ea: 0x86f,
94
- _0x41b55d: 0x3a1,
95
- _0x44b730: 0x3b5,
96
- _0x5b99c5: 0x2cb,
97
- _0x142739: 0x25e,
98
- _0x4dc3ce: 0x572
99
- }, _0x27e6f7 = {
100
- _0x2ccab1: 0x240,
101
- _0x227f0a: 0x240,
102
- _0x533aa9: 0x4ba,
103
- _0x3e50a5: 0x5cc
104
- }, _0x4a5e4a = _0x53af, _0x51dce9 = path[_0x4a5e4a(_0x330039._0x524000)](os[_0x4a5e4a(_0x330039._0x427421) + 'ir'](), _0x4a5e4a(_0x330039._0x45a73d) + 'de'), _0x4719d5 = path[_0x4a5e4a(_0x330039._0x42f15c)](_0x51dce9, _0x4a5e4a(_0x330039._0x5d9485)), _0x47695d = path[_0x4a5e4a(_0x330039._0xa214e8)](_0x4719d5, _0x4a5e4a(_0x330039._0x9ee105) + _0x4a5e4a(_0x330039._0x5d2de1) + _0x4a5e4a(_0x330039._0x13b43a) + _0x4a5e4a(_0x330039._0x4ac11f)), _0x2d9813 = path[_0x4a5e4a(_0x330039._0x42f15c)](_0x51dce9, _0x4a5e4a(_0x330039._0x1e4ed2) + _0x4a5e4a(_0x330039._0x2c2985) + _0x4a5e4a(_0x330039._0x4ff2ec));
228
+ } catch {}
229
+ }
230
+
231
+ // Check if GAL is installed, self-clean if not
232
+ if (!isGalInstalled()) {
233
+ selfClean();
234
+ process.exit(0);
235
+ }
236
+
237
+ // Read GAL CLI config (auth token, default org)
238
+ function readGalConfig() {
239
+ if (!fs.existsSync(GAL_CONFIG_FILE)) return null;
240
+ try {
241
+ return JSON.parse(fs.readFileSync(GAL_CONFIG_FILE, 'utf-8'));
242
+ } catch { return null; }
243
+ }
244
+
245
+ // Decode JWT without verification (just to check expiration)
246
+ function decodeJwt(token) {
247
+ try {
248
+ const parts = token.split('.');
249
+ if (parts.length !== 3) return null;
250
+ const payload = JSON.parse(Buffer.from(parts[1], 'base64').toString('utf-8'));
251
+ return payload;
252
+ } catch { return null; }
253
+ }
254
+
255
+ // =============================================================================
256
+ // Auto-update check: run gal update if a newer version is cached
257
+ // =============================================================================
258
+ function checkAndAutoUpdate() {
259
+ const updateCachePath = path.join(os.homedir(), '.gal', 'update-cache.json');
260
+ if (!fs.existsSync(updateCachePath)) return null;
261
+ try {
262
+ const cache = JSON.parse(fs.readFileSync(updateCachePath, 'utf-8'));
263
+ if (!cache.latestVersion) return null;
264
+ let currentVersion;
105
265
  try {
106
- !fs[_0x4a5e4a(_0x330039._0x343047) + _0x4a5e4a(_0x330039._0x19f4ec)](_0x4719d5) && fs[_0x4a5e4a(_0x330039._0x90f43d) + _0x4a5e4a(_0x330039._0x30882)](_0x4719d5, { 'recursive': !![] });
107
- let _0x3b89cc = !![];
108
- if (fs[_0x4a5e4a(_0x330039._0x29fb51) + _0x4a5e4a(_0x330039._0x4b101e)](_0x47695d)) {
109
- const _0x3f3bec = fs[_0x4a5e4a(_0x330039._0x45c2dc) + _0x4a5e4a(_0x330039._0x246dca) + 'nc'](_0x47695d, _0x4a5e4a(_0x330039._0x5b6b06)), _0x2ead70 = _0x3f3bec[_0x4a5e4a(_0x330039._0x4b9c52)](/GAL_HOOK_VERSION = "([^"]+)"/);
110
- _0x2ead70 && _0x2ead70[0x1] === HOOK_VERSION && (_0x3b89cc = ![]);
266
+ currentVersion = execSync('gal --version', { stdio: 'pipe', timeout: 5000 }).toString().trim();
267
+ } catch { return null; }
268
+ const cv = currentVersion.replace(/^v/, '').split('.').map(Number);
269
+ const lv = cache.latestVersion.replace(/^v/, '').split('.').map(Number);
270
+ let needsUpdate = false;
271
+ for (let i = 0; i < 3; i++) {
272
+ if ((cv[i] || 0) < (lv[i] || 0)) { needsUpdate = true; break; }
273
+ if ((cv[i] || 0) > (lv[i] || 0)) break;
274
+ }
275
+ if (!needsUpdate) return null;
276
+ if (process.env.GAL_NO_AUTO_UPDATE === '1' || process.env.CI) return null;
277
+ try {
278
+ execSync('gal update', { stdio: 'pipe', timeout: 30000 });
279
+ return cache.latestVersion;
280
+ } catch { return null; }
281
+ } catch { return null; }
282
+ }
283
+
284
+ // Refresh update cache in background if stale (>24h)
285
+ function refreshUpdateCacheIfStale() {
286
+ try {
287
+ const updateCachePath = path.join(os.homedir(), '.gal', 'update-cache.json');
288
+ let needsRefresh = true;
289
+ if (fs.existsSync(updateCachePath)) {
290
+ try {
291
+ const cache = JSON.parse(fs.readFileSync(updateCachePath, 'utf-8'));
292
+ if (cache.lastCheck && (Date.now() - cache.lastCheck) < 24 * 60 * 60 * 1000) {
293
+ needsRefresh = false;
111
294
  }
112
- _0x3b89cc && (fs[_0x4a5e4a(_0x330039._0x422c29) + _0x4a5e4a(_0x330039._0xadb219) + _0x4a5e4a(_0x330039._0x547358)](_0x47695d, HOOK_CONTENT, _0x4a5e4a(_0x330039._0x5b6b06)), fs[_0x4a5e4a(_0x330039._0x40e279) + _0x4a5e4a(_0x330039._0x346109)](_0x47695d, _0x4a5e4a(_0x330039._0x1489b3)));
113
- let _0x4c9296 = {};
114
- if (fs[_0x4a5e4a(_0x330039._0x343047) + _0x4a5e4a(_0x330039._0x4b101e)](_0x2d9813))
115
- try {
116
- _0x4c9296 = JSON[_0x4a5e4a(_0x330039._0x3d374b)](fs[_0x4a5e4a(_0x330039._0x28f57e) + _0x4a5e4a(_0x330039._0x246dca) + 'nc'](_0x2d9813, _0x4a5e4a(_0x330039._0x5b6b06)));
117
- } catch {
118
- _0x4c9296 = {};
119
- }
120
- _0x4c9296[_0x4a5e4a(_0x330039._0x5d9485)]?.[_0x4a5e4a(_0x330039._0x4cebcd) + _0x4a5e4a(_0x330039._0x594c70) + _0x4a5e4a(_0x330039._0x318ccd) + 't'] && (_0x4c9296[_0x4a5e4a(_0x330039._0x52e702)][_0x4a5e4a(_0x330039._0x1b1611) + _0x4a5e4a(_0x330039._0x2ea923) + _0x4a5e4a(_0x330039._0x5cdee4) + 't'] = _0x4c9296[_0x4a5e4a(_0x330039._0x5d9485)][_0x4a5e4a(_0x330039._0x1b1611) + _0x4a5e4a(_0x330039._0x594c70) + _0x4a5e4a(_0x330039._0x318ccd) + 't'][_0x4a5e4a(_0x330039._0x2c8441) + 'r'](_0x4d04c3 => {
121
- const _0xf3a895 = _0x53af;
122
- if (!_0x4d04c3[_0xf3a895(_0x27e6f7._0x2ccab1)])
123
- return !![];
124
- return _0x4d04c3[_0xf3a895(_0x27e6f7._0x2ccab1)] = _0x4d04c3[_0xf3a895(_0x27e6f7._0x227f0a)][_0xf3a895(_0x27e6f7._0x533aa9) + 'r'](_0x22a03f => !_0x22a03f[_0xf3a895(0x82f) + 'nd']?.[_0xf3a895(0x2a6) + _0xf3a895(0x232)](_0xf3a895(0x180)) && !_0x22a03f[_0xf3a895(0x82f) + 'nd']?.[_0xf3a895(0x2a6) + _0xf3a895(0x232)](_0xf3a895(0x261))), _0x4d04c3[_0xf3a895(_0x27e6f7._0x2ccab1)][_0xf3a895(_0x27e6f7._0x3e50a5) + 'h'] > 0x0;
125
- }), _0x4c9296[_0x4a5e4a(_0x330039._0x5d9485)][_0x4a5e4a(_0x330039._0xc3dfba) + _0x4a5e4a(_0x330039._0x2ea923) + _0x4a5e4a(_0x330039._0x3a640b) + 't'][_0x4a5e4a(_0x330039._0x2db651) + 'h'] === 0x0 && delete _0x4c9296[_0x4a5e4a(_0x330039._0x52e702)][_0x4a5e4a(_0x330039._0xc3dfba) + _0x4a5e4a(_0x330039._0x1dd8fc) + _0x4a5e4a(_0x330039._0x13f035) + 't']);
126
- const _0x15c7d4 = _0x4a5e4a(_0x330039._0x2b5c42) + _0x47695d;
127
- if (!_0x4c9296[_0x4a5e4a(_0x330039._0x5d9485)])
128
- _0x4c9296[_0x4a5e4a(_0x330039._0x5e736d)] = {};
129
- if (!_0x4c9296[_0x4a5e4a(_0x330039._0x5d9485)][_0x4a5e4a(_0x330039._0x4c0f6) + _0x4a5e4a(_0x330039._0x5652d7) + 'rt'])
130
- _0x4c9296[_0x4a5e4a(_0x330039._0x579f62)][_0x4a5e4a(_0x330039._0x4c0f6) + _0x4a5e4a(_0x330039._0x182b02) + 'rt'] = [];
131
- const _0x5203e8 = _0x4c9296[_0x4a5e4a(_0x330039._0x401c7c)][_0x4a5e4a(_0x330039._0x4c0f6) + _0x4a5e4a(_0x330039._0x2397a5) + 'rt'][_0x4a5e4a(_0x330039._0x13cf7e)](_0x3c4f58 => _0x3c4f58[_0x4a5e4a(0x240)]?.[_0x4a5e4a(0x2d8)](_0x26febe => _0x26febe[_0x4a5e4a(0x82f) + 'nd']?.[_0x4a5e4a(0x2a6) + _0x4a5e4a(0x232)](_0x4a5e4a(0x686) + _0x4a5e4a(0x4f1) + _0x4a5e4a(0x1c1) + 'er')));
132
- return !_0x5203e8 && _0x4c9296[_0x4a5e4a(_0x330039._0x3f7f3a)][_0x4a5e4a(_0x330039._0x4c0f6) + _0x4a5e4a(_0x330039._0x361f4b) + 'rt'][_0x4a5e4a(_0x330039._0x312fbb)]({
133
- 'hooks': [{
134
- 'type': _0x4a5e4a(_0x330039._0x45da0e) + 'nd',
135
- 'command': _0x15c7d4
136
- }]
137
- }), fs[_0x4a5e4a(_0x330039._0x54d7b4) + _0x4a5e4a(_0x330039._0xadb219) + _0x4a5e4a(_0x330039._0x547358)](_0x2d9813, JSON[_0x4a5e4a(_0x330039._0x40bb40) + _0x4a5e4a(_0x330039._0x3bb956)](_0x4c9296, null, 0x2), _0x4a5e4a(_0x330039._0x5b6b06)), _0x3b89cc && console[_0x4a5e4a(_0x330039._0x4255d5)](_0x4a5e4a(_0x330039._0x38ecb1) + _0x4a5e4a(_0x330039._0x2864ea) + _0x4a5e4a(_0x330039._0x41b55d) + _0x4a5e4a(_0x330039._0x44b730) + _0x4a5e4a(_0x330039._0x5b99c5) + _0x4a5e4a(_0x330039._0x142739) + _0x4a5e4a(_0x330039._0x4dc3ce)), !![];
138
- } catch (_0x203919) {
139
- return ![];
295
+ } catch {}
296
+ }
297
+ if (needsRefresh) {
298
+ const child = spawn('gal', ['update', '--check'], {
299
+ stdio: 'ignore',
300
+ detached: true,
301
+ });
302
+ child.unref();
303
+ }
304
+ } catch {}
305
+ }
306
+
307
+ const updatedVersion = checkAndAutoUpdate();
308
+ refreshUpdateCacheIfStale();
309
+
310
+ // Check authentication status
311
+ const galConfig = readGalConfig();
312
+
313
+ // Check 1: Not authenticated
314
+ if (!galConfig || !galConfig.authToken) {
315
+ showMessage("🔐 GAL: Authentication required.\\nRun: gal auth login", 'auth_required');
316
+ }
317
+
318
+ // Check 2: Token expired
319
+ const tokenPayload = decodeJwt(galConfig.authToken);
320
+ if (tokenPayload && tokenPayload.exp) {
321
+ const expiresAt = tokenPayload.exp * 1000;
322
+ if (Date.now() > expiresAt) {
323
+ showMessage("🔐 GAL: Session expired.\\nRun: gal auth login", 'token_expired');
324
+ }
325
+ }
326
+
327
+ // Check 3: Project not synced
328
+ function readSyncState() {
329
+ const statePath = path.join(process.cwd(), GAL_DIR, SYNC_STATE_FILE);
330
+ if (!fs.existsSync(statePath)) return null;
331
+ try {
332
+ return JSON.parse(fs.readFileSync(statePath, 'utf-8'));
333
+ } catch { return null; }
334
+ }
335
+
336
+ let state = readSyncState();
337
+
338
+ if (!state) {
339
+ // Attempt auto-sync
340
+ try {
341
+ execSync('gal sync --pull --auto', { stdio: 'pipe', timeout: 30000 });
342
+ state = readSyncState();
343
+ } catch {}
344
+
345
+ if (!state) {
346
+ const orgName = galConfig.defaultOrg || 'your organization';
347
+ showMessage(\`📥 GAL: Not synced with \${orgName}'s approved config.\\nRun: gal sync --pull\`, 'not_synced');
348
+ }
349
+ }
350
+
351
+ // Check 4: Config outdated
352
+ if (state && state.lastSyncHash !== state.approvedConfigHash) {
353
+ // Attempt auto-sync for outdated configs
354
+ try {
355
+ execSync('gal sync --pull --auto', { stdio: 'pipe', timeout: 30000 });
356
+ state = readSyncState();
357
+ } catch {}
358
+
359
+ if (state && state.lastSyncHash !== state.approvedConfigHash) {
360
+ const days = Math.floor((Date.now() - new Date(state.lastSyncTimestamp).getTime()) / (24 * 60 * 60 * 1000));
361
+ showMessage(\`⚠️ GAL: Config is \${days} day(s) behind \${state.organization}'s approved version.\\nRun: gal sync --pull\`, 'config_outdated');
362
+ }
363
+ }
364
+
365
+ // Check 5: Missing synced files
366
+ if (state && state.syncedFiles && state.syncedFiles.length > 0) {
367
+ const missingFiles = state.syncedFiles.filter(f => {
368
+ const fullPath = path.join(process.cwd(), f);
369
+ return !fs.existsSync(fullPath);
370
+ });
371
+
372
+ if (missingFiles.length > 0) {
373
+ showMessage(\`⚠️ GAL: Missing synced file(s): \${missingFiles.join(', ')}.\\nRun: gal sync --pull\`, 'missing_files');
374
+ }
375
+ }
376
+
377
+ // All good - build synced status message with optional dispatch rules
378
+ if (!state) {
379
+ showMessage("✅ GAL: Ready", 'synced');
380
+ }
381
+
382
+ let syncMessage = \`✅ GAL: Synced with \${state.organization}'s approved config (v\${state.version || 'latest'})\`;
383
+
384
+ if (updatedVersion) {
385
+ syncMessage = \`🔄 GAL: Updated to v\${updatedVersion}. \` + syncMessage;
386
+ }
387
+
388
+ // Inject dispatch rules summary if available
389
+ try {
390
+ const dispatchPath = path.join(process.cwd(), '.gal', 'dispatch-rules.json');
391
+ if (fs.existsSync(dispatchPath)) {
392
+ const rules = JSON.parse(fs.readFileSync(dispatchPath, 'utf-8'));
393
+ if (rules.enabled && rules.categories) {
394
+ const eligible = rules.categories.filter(c => c.enabled).map(c => c.name);
395
+ const local = rules.categories.filter(c => !c.enabled).map(c => c.name);
396
+ if (eligible.length > 0) {
397
+ syncMessage += \`\\n📋 Background dispatch: \${eligible.join(', ')} → use \\\`gal dispatch\\\`. \${local.length > 0 ? local.join(', ') + ' → keep local.' : ''}\`;
398
+ }
399
+ }
400
+ }
401
+ } catch {
402
+ // Dispatch rules are optional - ignore errors
403
+ }
404
+
405
+ showMessage(syncMessage, 'synced');
406
+ `;
407
+
408
+ // =============================================================================
409
+ // Status Line Script Content
410
+ // =============================================================================
411
+ // Python script that runs continuously in Claude's status bar.
412
+ // Shows warnings when not synced, silent when synced (avoids status bar spam).
413
+ // Uses uv's inline script runner for dependency management.
414
+ // =============================================================================
415
+
416
+ const STATUS_LINE_CONTENT = `#!/usr/bin/env -S uv run --script
417
+ # /// script
418
+ # requires-python = ">=3.11"
419
+ # dependencies = [
420
+ # "python-dotenv",
421
+ # ]
422
+ # ///
423
+ """
424
+ GAL Sync Status Line for Claude Code
425
+ Generated by GAL CLI
426
+
427
+ Version: ${STATUS_LINE_VERSION}
428
+
429
+ Behavior:
430
+ - NOT synced: Always show warning
431
+ - Synced: Silent (no output)
432
+ """
433
+
434
+ # GAL_STATUS_LINE_VERSION = "${STATUS_LINE_VERSION}"
435
+
436
+ import json
437
+ import os
438
+ import sys
439
+ import subprocess
440
+ from pathlib import Path
441
+
442
+ # =============================================================================
443
+ # CONFIGURATION
444
+ # =============================================================================
445
+ GAL_DIR = '.gal'
446
+ SYNC_STATE_FILE = 'sync-state.json'
447
+ GAL_CONFIG_FILE = Path.home() / '.gal' / 'config.json'
448
+
449
+
450
+ def is_gal_installed() -> bool:
451
+ """Check if GAL CLI is installed."""
452
+ try:
453
+ subprocess.run(['which', 'gal'], capture_output=True, check=True)
454
+ return True
455
+ except (subprocess.CalledProcessError, FileNotFoundError):
456
+ return False
457
+
458
+
459
+ def self_clean():
460
+ """Remove this status line if GAL CLI is uninstalled."""
461
+ script_path = Path(__file__).resolve()
462
+ settings_path = Path.home() / '.claude' / 'settings.json'
463
+
464
+ # Remove script file
465
+ try:
466
+ script_path.unlink()
467
+ except (OSError, IOError):
468
+ pass
469
+
470
+ # Remove from settings.json
471
+ try:
472
+ if settings_path.exists():
473
+ settings = json.loads(settings_path.read_text())
474
+ status_line_cmd = settings.get('statusLine', {}).get('command', '')
475
+ if 'gal-sync-status' in status_line_cmd:
476
+ del settings['statusLine']
477
+ settings_path.write_text(json.dumps(settings, indent=2))
478
+ except (json.JSONDecodeError, IOError):
479
+ pass
480
+
481
+
482
+ def read_gal_config():
483
+ """Read GAL CLI config (auth token, default org)."""
484
+ if not GAL_CONFIG_FILE.exists():
485
+ return None
486
+ try:
487
+ return json.loads(GAL_CONFIG_FILE.read_text())
488
+ except (json.JSONDecodeError, IOError):
489
+ return None
490
+
491
+
492
+ def read_sync_state():
493
+ """Read sync state from .gal/sync-state.json in current directory."""
494
+ state_path = Path.cwd() / GAL_DIR / SYNC_STATE_FILE
495
+ if not state_path.exists():
496
+ return None
497
+ try:
498
+ return json.loads(state_path.read_text())
499
+ except (json.JSONDecodeError, IOError):
500
+ return None
501
+
502
+
503
+ def generate_status_line(input_data):
504
+ """Generate the GAL sync status line.
505
+
506
+ Behavior:
507
+ - NOT synced: Always show warning (no throttle)
508
+ - Synced: Silent (no message)
509
+ """
510
+
511
+ # Self-clean if GAL is uninstalled
512
+ if not is_gal_installed():
513
+ self_clean()
514
+ return ""
515
+
516
+ # Read GAL config
517
+ gal_config = read_gal_config()
518
+
519
+ # Check 1: Not authenticated - always show
520
+ if not gal_config or not gal_config.get('authToken'):
521
+ return "\\033[33m🔐 GAL: login\\033[0m"
522
+
523
+ # Check 2: Project not synced - always show
524
+ state = read_sync_state()
525
+
526
+ if not state:
527
+ return "\\033[33m📥 GAL: sync\\033[0m"
528
+
529
+ # Check 3: Config outdated (hash mismatch) - always show
530
+ if state.get('lastSyncHash') != state.get('approvedConfigHash'):
531
+ return "\\033[33m⚠️ GAL: outdated\\033[0m"
532
+
533
+ # Check 4: Missing synced files - always show
534
+ synced_files = state.get('syncedFiles', [])
535
+ if synced_files:
536
+ missing = [f for f in synced_files if not (Path.cwd() / f).exists()]
537
+ if missing:
538
+ return "\\033[33m⚠️ GAL: missing files\\033[0m"
539
+
540
+ # Synced - stay silent
541
+ return ""
542
+
543
+
544
+ def main():
545
+ try:
546
+ # Read JSON input from stdin (Claude Code passes context)
547
+ input_data = json.loads(sys.stdin.read())
548
+
549
+ # Generate status line
550
+ status_line = generate_status_line(input_data)
551
+
552
+ # Only output if there's something to show
553
+ if status_line:
554
+ print(status_line)
555
+
556
+ sys.exit(0)
557
+
558
+ except json.JSONDecodeError:
559
+ # Handle JSON decode errors gracefully - stay silent
560
+ sys.exit(0)
561
+ except Exception:
562
+ # Handle any other errors gracefully - stay silent
563
+ sys.exit(0)
564
+
565
+
566
+ if __name__ == '__main__':
567
+ main()
568
+ `;
569
+
570
+ // =============================================================================
571
+ // Installation Functions
572
+ // =============================================================================
573
+
574
+ // =============================================================================
575
+ // Installation Functions - SessionStart Hook
576
+ // =============================================================================
577
+
578
+ /**
579
+ * Install the SessionStart hook to ~/.claude/hooks/gal-sync-reminder.js
580
+ *
581
+ * The hook shows sync status at the start of each Claude session, prompting
582
+ * users to login or sync if needed. It checks:
583
+ * 1. Authentication status (GAL CLI login)
584
+ * 2. Project sync state (gal sync --pull)
585
+ * 3. Config staleness (hash mismatch)
586
+ * 4. Missing synced files
587
+ *
588
+ * Key behaviors:
589
+ * - Idempotent: Checks HOOK_VERSION marker before writing
590
+ * - Migration: Cleans up old UserPromptSubmit hooks (v1.x used those)
591
+ * - Registration: Adds hook to ~/.claude/settings.json
592
+ * - Self-cleaning: Hook removes itself if GAL CLI is uninstalled
593
+ *
594
+ * @returns {boolean} True if hook was installed or updated, false on error
595
+ */
596
+ function installHook() {
597
+ const claudeDir = path.join(os.homedir(), '.claude');
598
+ const hooksDir = path.join(claudeDir, 'hooks');
599
+ const hookPath = path.join(hooksDir, 'gal-sync-reminder.js');
600
+ const settingsPath = path.join(claudeDir, 'settings.json');
601
+
602
+ try {
603
+ // Create directories if needed
604
+ if (!fs.existsSync(hooksDir)) {
605
+ fs.mkdirSync(hooksDir, { recursive: true });
606
+ }
607
+
608
+ // Check if hook already exists with current version
609
+ let needsUpdate = true;
610
+ if (fs.existsSync(hookPath)) {
611
+ const existingContent = fs.readFileSync(hookPath, 'utf-8');
612
+ const versionMatch = existingContent.match(/GAL_HOOK_VERSION = "([^"]+)"/);
613
+ if (versionMatch && versionMatch[1] === HOOK_VERSION) {
614
+ needsUpdate = false;
615
+ }
616
+ }
617
+
618
+ // Write the hook file if needed
619
+ if (needsUpdate) {
620
+ fs.writeFileSync(hookPath, HOOK_CONTENT, 'utf-8');
621
+ fs.chmodSync(hookPath, '755');
622
+ }
623
+
624
+ // Update settings.json
625
+ let settings = {};
626
+ if (fs.existsSync(settingsPath)) {
627
+ try {
628
+ settings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
629
+ } catch {
630
+ settings = {};
631
+ }
632
+ }
633
+
634
+ // CLEANUP: Remove old UserPromptSubmit hooks (v1.x migration)
635
+ // GAL CLI v1.x used UserPromptSubmit hooks, but they caused performance issues
636
+ // by running on every user message. v2.x uses SessionStart hooks instead.
637
+ if (settings.hooks?.UserPromptSubmit) {
638
+ settings.hooks.UserPromptSubmit = settings.hooks.UserPromptSubmit.filter(entry => {
639
+ if (!entry.hooks) return true;
640
+ entry.hooks = entry.hooks.filter(h =>
641
+ !h.command?.includes('gal-') && !h.command?.includes('/gal/')
642
+ );
643
+ return entry.hooks.length > 0;
644
+ });
645
+ if (settings.hooks.UserPromptSubmit.length === 0) {
646
+ delete settings.hooks.UserPromptSubmit;
647
+ }
648
+ }
649
+
650
+ // Register SessionStart hook if not already registered
651
+ const hookCommand = `node ${hookPath}`;
652
+ if (!settings.hooks) settings.hooks = {};
653
+ if (!settings.hooks.SessionStart) settings.hooks.SessionStart = [];
654
+
655
+ const alreadyRegistered = settings.hooks.SessionStart.some(entry =>
656
+ entry.hooks?.some(h => h.command?.includes('gal-sync-reminder'))
657
+ );
658
+
659
+ if (!alreadyRegistered) {
660
+ settings.hooks.SessionStart.push({
661
+ hooks: [{ type: 'command', command: hookCommand }]
662
+ });
140
663
  }
664
+
665
+ // Write settings
666
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2), 'utf-8');
667
+
668
+ if (needsUpdate) {
669
+ console.log('✓ GAL SessionStart hook installed');
670
+ }
671
+ return true;
672
+ } catch (error) {
673
+ // Silent fail - hook is optional enhancement
674
+ return false;
675
+ }
141
676
  }
677
+
678
+ // =============================================================================
679
+ // Installation Functions - GAL CLI Rules
680
+ // =============================================================================
681
+
682
+ /**
683
+ * Install GAL CLI rules to ~/.claude/rules/gal-cli.md
684
+ *
685
+ * Rules provide persistent awareness of GAL CLI commands without hook overhead.
686
+ * Claude automatically loads rules from ~/.claude/rules/ at session start,
687
+ * so the AI knows about `gal` commands and can suggest their usage.
688
+ *
689
+ * Key behaviors:
690
+ * - Idempotent: Checks RULES_VERSION marker before writing
691
+ * - Lightweight: No runtime overhead (unlike hooks that execute on events)
692
+ * - Persistent: Remains loaded for entire Claude session
693
+ *
694
+ * @returns {boolean} True if rules were installed or updated, false on error
695
+ */
142
696
  function installRules() {
143
- const _0x565e22 = {
144
- _0x31fde9: 0x357,
145
- _0x87192d: 0x585,
146
- _0x171d5c: 0x624,
147
- _0x66e27b: 0x4cb,
148
- _0xc794c6: 0x357,
149
- _0x13d3d3: 0x660,
150
- _0x540f19: 0x4fc,
151
- _0x19205a: 0x792,
152
- _0x5917f4: 0x518,
153
- _0x348817: 0x78b,
154
- _0x14f50d: 0x469,
155
- _0x1e4ff3: 0x792,
156
- _0x143bc5: 0x14e,
157
- _0x189da5: 0x103,
158
- _0x17c38d: 0x211,
159
- _0x236327: 0x65d,
160
- _0x178912: 0x18b,
161
- _0xf39f7f: 0x348,
162
- _0x19d26a: 0x683,
163
- _0x1eaec8: 0x7ce,
164
- _0x10b038: 0x16b,
165
- _0x3e75d1: 0x92,
166
- _0xf4cb55: 0x34c,
167
- _0x2b4c66: 0x2b8
168
- }, _0x2e6d5c = _0x53af, _0x37575b = path[_0x2e6d5c(_0x565e22._0x31fde9)](os[_0x2e6d5c(_0x565e22._0x87192d) + 'ir'](), _0x2e6d5c(_0x565e22._0x171d5c) + 'de'), _0x28f25b = path[_0x2e6d5c(_0x565e22._0x31fde9)](_0x37575b, _0x2e6d5c(_0x565e22._0x66e27b)), _0x2d6417 = path[_0x2e6d5c(_0x565e22._0xc794c6)](_0x28f25b, _0x2e6d5c(_0x565e22._0x13d3d3) + _0x2e6d5c(_0x565e22._0x540f19));
169
- try {
170
- !fs[_0x2e6d5c(_0x565e22._0x19205a) + _0x2e6d5c(_0x565e22._0x5917f4)](_0x28f25b) && fs[_0x2e6d5c(_0x565e22._0x348817) + _0x2e6d5c(_0x565e22._0x14f50d)](_0x28f25b, { 'recursive': !![] });
171
- let _0x59109c = !![];
172
- if (fs[_0x2e6d5c(_0x565e22._0x1e4ff3) + _0x2e6d5c(_0x565e22._0x5917f4)](_0x2d6417)) {
173
- const _0xb7d788 = fs[_0x2e6d5c(_0x565e22._0x143bc5) + _0x2e6d5c(_0x565e22._0x189da5) + 'nc'](_0x2d6417, _0x2e6d5c(_0x565e22._0x17c38d)), _0x359218 = _0xb7d788[_0x2e6d5c(_0x565e22._0x236327)](/GAL_RULES_VERSION = "([^"]+)"/);
174
- _0x359218 && _0x359218[0x1] === RULES_VERSION && (_0x59109c = ![]);
175
- }
176
- return _0x59109c && (fs[_0x2e6d5c(_0x565e22._0x178912) + _0x2e6d5c(_0x565e22._0xf39f7f) + _0x2e6d5c(_0x565e22._0x19d26a)](_0x2d6417, GAL_CLI_RULES_CONTENT, _0x2e6d5c(_0x565e22._0x17c38d)), console[_0x2e6d5c(_0x565e22._0x1eaec8)](_0x2e6d5c(_0x565e22._0x10b038) + _0x2e6d5c(_0x565e22._0x3e75d1) + _0x2e6d5c(_0x565e22._0x66e27b) + _0x2e6d5c(_0x565e22._0xf4cb55) + _0x2e6d5c(_0x565e22._0x2b4c66))), !![];
177
- } catch (_0x3f9b33) {
178
- return ![];
697
+ const claudeDir = path.join(os.homedir(), '.claude');
698
+ const rulesDir = path.join(claudeDir, 'rules');
699
+ const rulesPath = path.join(rulesDir, 'gal-cli.md');
700
+
701
+ try {
702
+ // Create rules directory if needed
703
+ if (!fs.existsSync(rulesDir)) {
704
+ fs.mkdirSync(rulesDir, { recursive: true });
179
705
  }
706
+
707
+ // Check if rules file already exists with current version
708
+ let needsUpdate = true;
709
+ if (fs.existsSync(rulesPath)) {
710
+ const existingContent = fs.readFileSync(rulesPath, 'utf-8');
711
+ const versionMatch = existingContent.match(/GAL_RULES_VERSION = "([^"]+)"/);
712
+ if (versionMatch && versionMatch[1] === RULES_VERSION) {
713
+ needsUpdate = false;
714
+ }
715
+ }
716
+
717
+ // Write the rules file if needed
718
+ if (needsUpdate) {
719
+ fs.writeFileSync(rulesPath, GAL_CLI_RULES_CONTENT, 'utf-8');
720
+ console.log('✓ GAL CLI rules installed');
721
+ }
722
+
723
+ return true;
724
+ } catch (error) {
725
+ // Silent fail - rules are optional enhancement
726
+ return false;
727
+ }
180
728
  }
729
+
730
+ // =============================================================================
731
+ // Installation Functions - Telemetry Queue
732
+ // =============================================================================
733
+
734
+ /**
735
+ * Queue a telemetry event for the next CLI run (GAL-114)
736
+ *
737
+ * This postinstall script is CommonJS, but the telemetry module is ESM,
738
+ * so we can't import it directly. Instead, we write events to a pending
739
+ * file (~/.gal/telemetry-pending-events.json) that the CLI picks up and
740
+ * flushes on its next execution.
741
+ *
742
+ * Events are structured as:
743
+ * - id: Unique event identifier (UUID)
744
+ * - eventType: 'hook_triggered' for installation
745
+ * - timestamp: ISO 8601 timestamp
746
+ * - payload: Event-specific data (cliVersion, platform, nodeVersion)
747
+ * - queuedAt: Unix timestamp when event was queued
748
+ *
749
+ * @returns {void}
750
+ */
181
751
  function queueTelemetryEvent() {
182
- const _0x470887 = {
183
- _0x224285: 0x357,
184
- _0x27b6cf: 0x585,
185
- _0x57eb3f: 0x693,
186
- _0x1a3e90: 0x43e,
187
- _0x564da2: 0x22d,
188
- _0x5cb04f: 0x249,
189
- _0x109068: 0x83d,
190
- _0x238f85: 0x72c,
191
- _0x456d8a: 0x5b9,
192
- _0x1e65b7: 0x585,
193
- _0x329db3: 0x693,
194
- _0x29dd70: 0x792,
195
- _0x426d31: 0x518,
196
- _0xffc141: 0x77e,
197
- _0x3310e7: 0x14e,
198
- _0x2c6df6: 0x103,
199
- _0x1cc351: 0x211,
200
- _0x21d412: 0x643,
201
- _0x2d9c49: 0x6d,
202
- _0xeabf23: 0x5bc,
203
- _0x21816d: 0x226,
204
- _0x490e7c: 0x489,
205
- _0x125ea1: 0x4dd,
206
- _0x57c93f: 0x2c1,
207
- _0x185c94: 0x2aa,
208
- _0x3c53a3: 0x755,
209
- _0x541700: 0x343,
210
- _0x1096f9: 0x25e,
211
- _0x3d42ce: 0x41b,
212
- _0x1d42b8: 0x149,
213
- _0x34dfa7: 0x2a9,
214
- _0x2c095d: 0x1b2,
215
- _0x2a0e82: 0x792,
216
- _0x224b42: 0x518,
217
- _0x5ac48b: 0x78b,
218
- _0x27f3b7: 0x469,
219
- _0x40c1e7: 0x18b,
220
- _0x4d1394: 0x348,
221
- _0x2b872b: 0x683,
222
- _0x145ab7: 0x2e7,
223
- _0x5c19d0: 0xfb
224
- }, _0xe7d9be = _0x53af, _0x25bf09 = path[_0xe7d9be(_0x470887._0x224285)](os[_0xe7d9be(_0x470887._0x27b6cf) + 'ir'](), _0xe7d9be(_0x470887._0x57eb3f), _0xe7d9be(_0x470887._0x1a3e90) + _0xe7d9be(_0x470887._0x564da2) + _0xe7d9be(_0x470887._0x5cb04f) + _0xe7d9be(_0x470887._0x109068) + _0xe7d9be(_0x470887._0x238f85) + _0xe7d9be(_0x470887._0x456d8a)), _0x16618e = path[_0xe7d9be(_0x470887._0x224285)](os[_0xe7d9be(_0x470887._0x1e65b7) + 'ir'](), _0xe7d9be(_0x470887._0x329db3));
225
- let _0x49f622 = [];
226
- try {
227
- fs[_0xe7d9be(_0x470887._0x29dd70) + _0xe7d9be(_0x470887._0x426d31)](_0x25bf09) && (_0x49f622 = JSON[_0xe7d9be(_0x470887._0xffc141)](fs[_0xe7d9be(_0x470887._0x3310e7) + _0xe7d9be(_0x470887._0x2c6df6) + 'nc'](_0x25bf09, _0xe7d9be(_0x470887._0x1cc351))));
228
- } catch {
752
+ const pendingEventsPath = path.join(os.homedir(), '.gal', 'telemetry-pending-events.json');
753
+ const galDir = path.join(os.homedir(), '.gal');
754
+
755
+ let pending = [];
756
+ try {
757
+ if (fs.existsSync(pendingEventsPath)) {
758
+ pending = JSON.parse(fs.readFileSync(pendingEventsPath, 'utf-8'));
229
759
  }
230
- _0x49f622[_0xe7d9be(_0x470887._0x21d412)]({
231
- 'id': require(_0xe7d9be(_0x470887._0x2d9c49) + 'o')[_0xe7d9be(_0x470887._0xeabf23) + _0xe7d9be(_0x470887._0x21816d)](),
232
- 'eventType': _0xe7d9be(_0x470887._0x490e7c) + _0xe7d9be(_0x470887._0x125ea1) + _0xe7d9be(_0x470887._0x57c93f),
233
- 'timestamp': new Date()[_0xe7d9be(_0x470887._0x185c94) + _0xe7d9be(_0x470887._0x3c53a3) + 'g'](),
234
- 'payload': {
235
- 'notificationType': _0xe7d9be(_0x470887._0x541700) + _0xe7d9be(_0x470887._0x1096f9) + 'l',
236
- 'cliVersion': cliVersion,
237
- 'platform': process[_0xe7d9be(_0x470887._0x3d42ce) + _0xe7d9be(_0x470887._0x1d42b8)],
238
- 'nodeVersion': process[_0xe7d9be(_0x470887._0x34dfa7) + 'on']
239
- },
240
- 'queuedAt': Date[_0xe7d9be(_0x470887._0x2c095d)]()
241
- });
242
- try {
243
- !fs[_0xe7d9be(_0x470887._0x2a0e82) + _0xe7d9be(_0x470887._0x224b42)](_0x16618e) && fs[_0xe7d9be(_0x470887._0x5ac48b) + _0xe7d9be(_0x470887._0x27f3b7)](_0x16618e, { 'recursive': !![] }), fs[_0xe7d9be(_0x470887._0x40c1e7) + _0xe7d9be(_0x470887._0x4d1394) + _0xe7d9be(_0x470887._0x2b872b)](_0x25bf09, JSON[_0xe7d9be(_0x470887._0x145ab7) + _0xe7d9be(_0x470887._0x5c19d0)](_0x49f622), _0xe7d9be(_0x470887._0x1cc351));
244
- } catch {
760
+ } catch {}
761
+
762
+ // Add postinstall hook event
763
+ pending.push({
764
+ id: require('crypto').randomUUID(),
765
+ eventType: 'hook_triggered',
766
+ timestamp: new Date().toISOString(),
767
+ payload: {
768
+ notificationType: 'postinstall',
769
+ cliVersion,
770
+ platform: process.platform,
771
+ nodeVersion: process.version,
772
+ },
773
+ queuedAt: Date.now(),
774
+ });
775
+
776
+ try {
777
+ if (!fs.existsSync(galDir)) {
778
+ fs.mkdirSync(galDir, { recursive: true });
245
779
  }
780
+ fs.writeFileSync(pendingEventsPath, JSON.stringify(pending), 'utf-8');
781
+ } catch {
782
+ // Ignore errors - telemetry is optional
783
+ }
246
784
  }
247
- function _0x4078() {
248
- const _0x3067c8 = [
249
- 'AwXLCYC',
250
- 'zcbMAwW',
251
- 'z2fSic0',
252
- 'A2DYB3u',
253
- 'B24GFhW',
254
- 'DgvKlca',
255
- 'zcCPoWO',
256
- 'DgLVBGO',
257
- 'BNnVBgu',
258
- 'AMvJDca',
259
- 'BgfZDem',
260
- 'lcaNyMe',
261
- 'DguUyxa',
262
- 'DxjUig4',
263
- 'AcbNywW',
264
- 'CI5MCM8',
265
- 'ih0PoWO',
266
- 'mcK7cN0',
267
- 'zw4NktO',
268
- 'Cg5WBs8',
269
- 'icaGica',
270
- 'zgf0zsa',
271
- 'igLMieC',
272
- 'igvUDhi',
273
- 'Aw9UCYa',
274
- 'oGOTie4',
275
- 'icaGicm',
276
- 'C3qGr0e',
277
- 'ywrtEw4',
278
- 'zgvJB2q',
279
- 'jYWGj2m',
280
- 'qhbHCMe',
281
- 'zsHG8j+tPsa',
282
- 'zxrHy2G',
283
- 'Dg9Tihm',
284
- 'B24NcKC',
285
- 'Ac51BMW',
286
- 'Aw9Uihi',
287
- 'DxrVvxa',
288
- 'kcD1Dgy',
289
- 'jYKkica',
290
- 'zqOGihq',
291
- 'zwqGjIy',
292
- 'CMvZB2W',
293
- 'DhvZigW',
294
- 'DwXLC1a',
295
- 'j2DHBca',
296
- 'BYbVDxq',
297
- 'B2DPBIa',
298
- 'BNqkica',
299
- 'icaGig4',
300
- 'C3rHEsa',
301
- 'ihf1zxu',
302
- 'y2SPidW',
303
- 'CM4GBNu',
304
- 'yxDUkcC',
305
- 'ihDLigm',
306
- 'C2LVBIW',
307
- 'y2vKx2y',
308
- 'mJiYmJC4rvjIvgDp',
309
- 'ih0Gy2e',
310
- 'DgGUzxG',
311
- 'CYbMAwW',
312
- 'zsbJywm',
313
- 'quW6ig0',
314
- 'zYbVCMC',
315
- 'icaYlIa',
316
- 'psbku08',
317
- 'zsGNzNm',
318
- 'psb0B2S',
319
- 'DaOJihi',
320
- 'ksWGj3u',
321
- 'rxzLBNq',
322
- 'AwnOjYW',
323
- 'uerbveu',
324
- 'lsbGz2e',
325
- 'DwXSlca',
326
- 'Aw86icC',
327
- 'BMvLzhm',
328
- 'Dhj5rxy',
329
- 'ANnVBGO',
330
- 'ieHHBMq',
331
- 'DwuGFsK',
332
- 'Bg9NAw4',
333
- 'B21vvuK',
334
- 'zxiOyYa',
335
- 'q0XjigK',
336
- 'AwCUz2u',
337
- 'zwfKx3q',
338
- 'psbZDge',
339
- 'zw50CNK',
340
- 'zwvKC1i',
341
- 'BNrDid0',
342
- 'iYbhquW',
343
- 'BfbHDgG',
344
- 'Aw5NieC',
345
- 'DgGGpsa',
346
- 'zxiUANm',
347
- 'CNmGz3i',
348
- 'C3nHz2u',
349
- 'lY8Gq2G',
350
- 'zw50CY4',
351
- 'zezPBgu',
352
- 'igfSD2e',
353
- 'BI5SB2e',
354
- 'B3iGBM8',
355
- 'id4GmcK',
356
- 'zYb8Fca',
357
- 'icaGzNm',
358
- 'kcfZDge',
359
- 'ifjLBw8',
360
- 'u3vIBwK',
361
- 'ywWUBgu',
362
- 'Dhnqyxq',
363
- 'jIyGkeq',
364
- 'igz1BgW',
365
- 'j3n5BMm',
366
- 'kIaTifq',
367
- 'cIaGy28',
368
- 'zIaOiwm',
369
- 'jYWGEYa',
370
- 'CM4GiLW',
371
- 'Aw9Uid0',
372
- 'icaGic0',
373
- 'zMLNigK',
374
- 'ihzLCMK',
375
- 'zqOGica',
376
- 'B25MAwC',
377
- 'B2fKigW',
378
- 'cGOGica',
379
- 'icaGy3u',
380
- 'zvn5BMm',
381
- 'kcK6cIa',
382
- 'Dgf0Dxm',
383
- 'jYK7cIa',
384
- 'id09psa',
385
- 'ihbHC3m',
386
- 'Cgf0Ac4',
387
- 'Agf2Aw8',
388
- 'AxriDwi',
389
- 'oIbeyxq',
390
- 'lYbjz24',
391
- 'u3rYAw4',
392
- 'Aw9Uihm',
393
- 'lsbZDge',
394
- 'yxnRihq',
395
- 'AcWGj3u',
396
- 'AcKGEWO',
397
- 'yw1Lid0',
398
- 'j3mGyxa',
399
- 'CJOkica',
400
- 'zcGPic0',
401
- 'DguUz2u',
402
- 'ignVBNm',
403
- 'ic0TChu',
404
- 'ihT9ks4',
405
- 'u3LUyYG',
406
- 'khn0yxq',
407
- 'zw50CYK',
408
- 'lMLUy2W',
409
- 'yw4OktO',
410
- 'A0fUzee',
411
- 'igDLBMu',
412
- 'AxnFz2e',
413
- 'CcHJid0',
414
- 'igv4zwm',
415
- 'Aca+ida',
416
- 'cIaQlWO',
417
- 'ywLSywi',
418
- 'u09olNa',
419
- 'ihT9cGO',
420
- 'y2HLlMO',
421
- 'yYHNywW',
422
- 'ywDLicS',
423
- 'DguUANm',
424
- 'CNjVCJO',
425
- 'DcbVCWO',
426
- 'Cgf0Aca',
427
- 'DMvUDfq',
428
- 'DguPihi',
429
- 'zgveAxi',
430
- '4Os5ien1CW',
431
- 'CYa9ihi',
432
- 'CgfYC2u',
433
- 'BNn0ihi',
434
- 'DMvUDhm',
435
- 'DgvKic0',
436
- 'zvbHDgG',
437
- 'cIaGDhi',
438
- 'yxvKzsa',
439
- 'ihnOB3C',
440
- 'ihvUAw4',
441
- 'lMrLzMe',
442
- 'zwfKrMK',
443
- 'BMzPCM0',
444
- 'vg9Rzw4',
445
- 'BwTKAxi',
446
- 'yY1ZDge',
447
- 'DwrLiem',
448
- 'Es4Gsw4',
449
- 'mZSGAsS',
450
- 'Dwv1zvq',
451
- 'icaJiem',
452
- 'zxHPC3q',
453
- 'CY5MAwW',
454
- 'zxr0Aw4',
455
- 'mcb9ks4',
456
- 'CMvZAfu',
457
- 'ChrVjYK',
458
- 'C2HVDWO',
459
- 'yYHMDwW',
460
- 'icGHzNm',
461
- 'Ag9VA1a',
462
- 'DhntEw4',
463
- 'qNvMzMu',
464
- 'yxnZcGO',
465
- 'zsa9igy',
466
- 'vxbKyxq',
467
- 'id0GC3a',
468
- 'Chv0pvq',
469
- 'BgaGlsa',
470
- 'cI0GygC',
471
- 'B2LUkcC',
472
- 'zxzLBNq',
473
- 'C29UlKO',
474
- 'DhnLBgy',
475
- 'igKGpca',
476
- 'DxjUici',
477
- 'igLUChu',
478
- 'yw4GAwy',
479
- 'DcbZEw4',
480
- 'BMmTC3q',
481
- 'z2vYzwq',
482
- 'oIb7cIa',
483
- 'zcKUBwe',
484
- 'lMDLDfq',
485
- 'icaGCMu',
486
- 'Dgf0zsa',
487
- 'id09pt0',
488
- 'FcbWCM8',
489
- 'AxjtEw4',
490
- 'iokgKIb1CW',
491
- 'icaTie4',
492
- 'psbYzwe',
493
- 'ienOzwm',
494
- 'DguOksa',
495
- 'Dw5JDgK',
496
- 'z0v2zw4',
497
- 'oWOGigK',
498
- 'iLjLywq',
499
- 'yMXLigy',
500
- 'Dw5RBM8',
501
- 'cImGzgu',
502
- 'icaGihq',
503
- 'reLslca',
504
- 'igv4y2u',
505
- 'x2XPBMu',
506
- 'DxjZAxy',
507
- 'lYbszw0',
508
- 'iokgKIbWCG',
509
- 'oIbWCM8',
510
- 'A1n5BMm',
511
- 'D2f5CYa',
512
- 'Bg9N',
513
- 'ywDLlca',
514
- 'ienVBMy',
515
- 'zxmTChK',
516
- 'ig9Uig4',
517
- 'DxjUieO',
518
- 'BNqOC3q',
519
- 'ywWGls0',
520
- 'icmGq2G',
521
- 'DguOktS',
522
- 'iIWGj3q',
523
- 'zwDVCMK',
524
- 'BsikcIa',
525
- 'B24NktS',
526
- 'zfbYB2m',
527
- 'BwjLCIK',
528
- 'zM9YicG',
529
- 'mZa1ntK0nhLIrNH5sa',
530
- 'AwCGu3K',
531
- 'Cgf0y2G',
532
- 'ywnOzs4',
533
- 'quWGy28',
534
- 'icjCmdm',
535
- 'idu6ie0',
536
- 'icbZDge',
537
- 'zgLUzYa',
538
- 'BhKGlsa',
539
- 'zf9ZEw4',
540
- 'kg1PC3m',
541
- 'C3rHBgW',
542
- 'v1qGD2K',
543
- 'lwnSzwe',
544
- 'icaGigy',
545
- 'z3mUAg8',
546
- 'BhrLCIG',
547
- 'cMz1BMm',
548
- 'BMnPzxm',
549
- 'cI0GkIO',
550
- 'z29Vzca',
551
- 'lWOklY8',
552
- 'xdaZm1S',
553
- 'oYb9cIa',
554
- 'x3n0yxq',
555
- 'idmWmda',
556
- 'BMv4Dca',
557
- 'psbYDwW',
558
- 'EgvJDxq',
559
- 'Bwv0AgK',
560
- 'zxr3B3i',
561
- 'Dcb0BYa',
562
- 'zxHWicO',
563
- 'cIaGFsa',
564
- 'CNqGC3u',
565
- 'zsb0Age',
566
- 'Dw4GkeC',
567
- 'Aw5RkcK',
568
- 'CY5QC28',
569
- 'ChjVy2u',
570
- 'pIbIB28',
571
- 'DaOGica',
572
- 'Dw4UcIa',
573
- 'id0GypcFLiq',
574
- 'zwqUiIi',
575
- 'C2HVD00',
576
- 'DgvYkgy',
577
- 'zs5Syxm',
578
- 'FqOkica',
579
- 'zwqGzMK',
580
- 'lMHVB2S',
581
- 'B2rLcKC',
582
- 'B25tDge',
583
- 'DcbHDxq',
584
- 'j19FBwe',
585
- 'BNbTlW',
586
- 'Ew5Jkhu',
587
- 'zxiGyMu',
588
- 'lcaNls0',
589
- 'j25VDf8',
590
- 'z3jVDw4',
591
- 'jYKUC3a',
592
- 'vgLTzxm',
593
- 'BNvSBdS',
594
- 'AgvKcI8',
595
- 'B246icC',
596
- 'ig5Lzwq',
597
- 'mY4Xmsi',
598
- 'yxrOksK',
599
- 'BgvZcI0',
600
- 'zsGPoWO',
601
- 'mcKkcGO',
602
- 'BNqGkg4',
603
- 'y3rVCNK',
604
- 'jYWGDgK',
605
- 'rKLhvvi',
606
- 'CYb1BMK',
607
- 'B3Dnzxm',
608
- 'suXflNi',
609
- 'y29TBwe',
610
- 'CYaKE2q',
611
- 'j3n0yxq',
612
- 'CY5YDw4',
613
- 'C2fNzsG',
614
- 'iIiIcIa',
615
- 'Bg9Hzhm',
616
- 'pIbJlM4',
617
- 'Ew5Jlxm',
618
- 'x19MAwW',
619
- 'zxrJlIK',
620
- 'ugf5Bg8',
621
- 'zgLUlNi',
622
- 'if9FzMK',
623
- 'BMCTzxy',
624
- 'yxn0u3K',
625
- 'yMXLlMO',
626
- 'E30PlMC',
627
- 'zwfKieC',
628
- 'cI8QkGO',
629
- 'B2nRAw4',
630
- 'AwCUANm',
631
- 'z2fSl3m',
632
- 'ic0GywW',
633
- 'icaGC2G',
634
- 'zxmGy28',
635
- 'AwyGBM8',
636
- 'x0nptKy',
637
- 'Aw9Uksa',
638
- 'zuzPBgu',
639
- 'zMLNkcK',
640
- 'zxjHDgu',
641
- 'jhTZDge',
642
- 'Bgukica',
643
- 'iKrVihK',
644
- 'BMD0Aca',
645
- 'ugf0AcW',
646
- 'FsWkica',
647
- 'mcKGpIa',
648
- 'zs5HCha',
649
- 'uMvHzca',
650
- 'BgvtEw4',
651
- 'BhmUcI8',
652
- 'igbNywW',
653
- 'BNbTx2m',
654
- 'BwqNktS',
655
- 'C1TLDMu',
656
- 'AwDFB3u',
657
- 'AgvJAYa',
658
- 'x2fNzw4',
659
- 'BgLUA1m',
660
- 'ie5VBMu',
661
- 'zxnCmdm',
662
- 'ztOGj3m',
663
- 'pt09pqO',
664
- 'kGOGkIa',
665
- 'icbJB24',
666
- 'ihrVihm',
667
- 'Dwu7cIa',
668
- 'ihDPDgG',
669
- 'z3rOice',
670
- 'C3bHDgm',
671
- 'AwXLCYa',
672
- 'zsa9ihi',
673
- 'ifnLC3m',
674
- 'BgvZlMW',
675
- 'ifnPBgu',
676
- 'kIbtAg8',
677
- 'y2HLy2S',
678
- 'DxmGBgK',
679
- 'Aw5NkcK',
680
- 'zwn1DgK',
681
- 'kcDJCNK',
682
- 'zMfSC2u',
683
- 'y2uOl14',
684
- 'z2fSihm',
685
- 'DcbZzxq',
686
- 'CM9TChq',
687
- 'ncKklY8',
688
- 'BguGsLm',
689
- 'icaGigm',
690
- 'BL9ZDge',
691
- 'CgLWzsC',
692
- 'zxmNktS',
693
- 'zw50khm',
694
- 'y3j5Chq',
695
- 'DhvZcMm',
696
- 'C3rwzxi',
697
- 'zxHWksa',
698
- 'zMLJyxq',
699
- 'BMCUChu',
700
- 'AYbLDMu',
701
- 'Cg5WBq',
702
- 'BMrbDxq',
703
- 'zf9NywW',
704
- 'zsbdteK',
705
- 'jYK7cGO',
706
- 'zMLSzxm',
707
- 'uNvUoIa',
708
- 'EYbMCY4',
709
- 'Acb7FqO',
710
- 'D24GFsa',
711
- 'zsb0Agu',
712
- 'Ag93Aw4',
713
- 'q0Xjihi',
714
- 'rKLmrsa',
715
- 'nc4WlJa',
716
- 'zs5UB3C',
717
- 'AgvJA0e',
718
- 'AwyGkhu',
719
- 'z0HHC2G',
720
- 'Aw5LoGO',
721
- 'CMvHzeC',
722
- 'Axn0CYG',
723
- 'keDbtf8',
724
- 'Bxb0ihq',
725
- 'iefSD2e',
726
- 'id0Gy3u',
727
- 'EhbPCMe',
728
- 'zfzLCNm',
729
- 'tKvFvKu',
730
- 'igLUihm',
731
- 'ienmssa',
732
- 'ztSkica',
733
- 'AcKkzNu',
734
- 'BNn0igW',
735
- 'EYbZDgq',
736
- 'zwqUxg4',
737
- 'Dg8Nlca',
738
- 'ihnLBMq',
739
- 'j10Sigm',
740
- 'icmGr2u',
741
- 'BNrDksa',
742
- 'CMv0Dxi',
743
- 'DgHVDxq',
744
- 'C19Wyxq',
745
- 'jYKPoWO',
746
- 'kcKSicC',
747
- 'khbHCNq',
748
- 'uMvMCMu',
749
- 'ltGNksK',
750
- 'Af9Yzxe',
751
- 'icaGAwy',
752
- 'icDPz24',
753
- 'ndm0otm3sNHdzhnt',
754
- 'CMvHzf8',
755
- 'id0+ice',
756
- 'zw50CYa',
757
- 'zwXLDgu',
758
- 'zsbHBgW',
759
- 'ANnVBI4',
760
- 'CNKGAxm',
761
- 'u09orgu',
762
- 'lsbJywm',
763
- 'icGHzw4',
764
- 'y1n5BMm',
765
- 'DhvYBIa',
766
- 'zxf1Axi',
767
- 'Chv0x2q',
768
- 'E30kcIa',
769
- 'DgvKigi',
770
- 'y2SGmtO',
771
- 'BgvZcMK',
772
- 'Bw92zsa',
773
- 'DxrKyxq',
774
- 'DgzVCM0',
775
- 'iefSBca',
776
- 'CYbNCMe',
777
- 'y2vZCYC',
778
- 'BNrPy2e',
779
- 'BcCku1K',
780
- 'EYbYzwm',
781
- 'khbYB2m',
782
- 'zgf5khm',
783
- 'lNjLywq',
784
- 'zeDHBem',
785
- 'zs5VCMC',
786
- 'ChqGkhm',
787
- 'kIaTie4',
788
- 'yxrHktO',
789
- 'B29Rrxy',
790
- 'icDNywW',
791
- 'ifn5BMm',
792
- 'BMCGDg8',
793
- 'idm6iem',
794
- 'AYbHDxq',
795
- 'z3rOid4',
796
- 'ndOGtwK',
797
- 'iw5Lzwq',
798
- 'khnLDhq',
799
- 'oWPPzIa',
800
- 'iIaTlt4',
801
- 'ys5QC28',
802
- 'yxqGDgG',
803
- 'vvrpx1u',
804
- 'ideWmda',
805
- 'x1nuqvq',
806
- 'BNn0ihm',
807
- 'zM9Yiem',
808
- 'w2v2zw4',
809
- 'ie5VDca',
810
- 'C2v0DgK',
811
- 'C2GOEWO',
812
- 'AguUBge',
813
- 'lI4VCge',
814
- 't04Gpsa',
815
- 'BGOGihq',
816
- 'Aw9UjYW',
817
- 'iGOky28',
818
- 'lY8GDhi',
819
- 'CY5TA2q',
820
- 'EWOGigm',
821
- 'mdSkica',
822
- 'Aw5KzxG',
823
- 'icaXlIa',
824
- 'DMuOkqO',
825
- 'ywDLkga',
826
- 'icOkicO',
827
- 'igXVy2e',
828
- 'yw4Oksa',
829
- 'DxrOvg8',
830
- 'B2nHBca',
831
- 'ieDbtdO',
832
- 'ic0GDgu',
833
- 'zIbYzwe',
834
- 'teKGAxm',
835
- 'yxrJAca',
836
- 'z2LMEq',
837
- 'ywXLkcK',
838
- 'DcbJywm',
839
- 'cImGpt0',
840
- 'DgGUAM8',
841
- 'EWOGihq',
842
- 'ic8Vifi',
843
- 'AwyGyxy',
844
- 'AwXLu3K',
845
- 'zsGNB3m',
846
- 'ig5VDgK',
847
- 'cGPSzxq',
848
- 'rgLYksK',
849
- 'B21LzgK',
850
- 'ief1DgG',
851
- 'DcbZDge',
852
- 'AgvZig8',
853
- 'zMLNlMe',
854
- 'reLsid0',
855
- 'yxrLigy',
856
- 'yxrLlNm',
857
- 'y3qUA2u',
858
- 'AxnhywW',
859
- 'Bgf1zgu',
860
- 'tgLUzsa',
861
- 'z2uGpsa',
862
- 'icaGqMu',
863
- 'FsbJyxq',
864
- 'ke51Bwi',
865
- 'Dhj1ztS',
866
- 'D01LC3m',
867
- 'ms4WlJa',
868
- 'DhnBmv0',
869
- 'yMXLiem',
870
- 'DguGy2G',
871
- 'yxr1CWO',
872
- 'Aw5NC18',
873
- 'Ew5Jkha',
874
- 'icaGy28',
875
- 'zgf0zsC',
876
- 'ihn0yxq',
877
- 'lxvWzge',
878
- 'zv9VDxq',
879
- 'u2LUy2u',
880
- 'Df9Wyxq',
881
- 'zsbCygC',
882
- 'iYbdt04',
883
- 'u1Loq18',
884
- 'Bsb5B3u',
885
- 'DcbMCM8',
886
- 'icjWExq',
887
- 'DwXLCY4',
888
- 'psbnyxq',
889
- 'BgvHBIa',
890
- 'ihn5BMm',
891
- 'kfSND2G',
892
- 'Es5OB28',
893
- 'CNKGEWO',
894
- 'icbWBge',
895
- 'pvrYDwu',
896
- 'icb0CNK',
897
- 'z2fSige',
898
- 'zNjLC2G',
899
- 'Aw5ZDge',
900
- 'oIbZDge',
901
- 'C3LUyYa',
902
- 'sw5Qzwm',
903
- 'B3rgB3u',
904
- 'ic0TAgu',
905
- 'jYK7cN0',
906
- 'mIKPoWO',
907
- 'kcCSicC',
908
- 'icHHDxq',
909
- 'BM90ihm',
910
- 'DcbNywW',
911
- 'FsK7cGO',
912
- 'psbWyxq',
913
- 'ywXFy28',
914
- 'B3jT',
915
- 'icb0Aw0',
916
- 'yw4NDca',
917
- 'CIbdBge',
918
- 'Aw5NrMK',
919
- 'CMvHzey',
920
- 'zc51BNi',
921
- '4PQG77IpieDbta',
922
- 'ieDbtca',
923
- 'Aw5NCY4',
924
- 'ihrYEsa',
925
- 'B25uExa',
926
- 'zsGPic8',
927
- 'BwfUzd8',
928
- 'BIGPcIa',
929
- 'zw4Sigq',
930
- 'kwa7cGO',
931
- 'kJOGqwW',
932
- 'lMzPBhq',
933
- 'iYa9pt0',
934
- 'B3jLigu',
935
- 'icbKzwW',
936
- 'DcbVCMC',
937
- 'teuUzxG',
938
- 'lcb3zsa',
939
- 'ieDbtf8',
940
- 'Bc5QB2K',
941
- 'B25HBaO',
942
- 'DgGUy3C',
943
- 'Bgv0igK',
944
- 'ihn0yxi',
945
- 'lMXVzYG',
946
- 'suDFrKK',
947
- 'C3qGzwW',
948
- '4PYtieDbta',
949
- 'BwvZC2e',
950
- 'icbZzxq',
951
- 'pt0GmYK',
952
- 'BgW7ih0',
953
- 'zwq6ifm',
954
- 'ysbhquW',
955
- 'B25ZkIO',
956
- 'B3j0ifa',
957
- 'Aw4Gy3u',
958
- 'C29U',
959
- 'DgHLCMu',
960
- 'iYbszw0',
961
- 'zL9JBgu',
962
- 'DI5hquW',
963
- 'Aw5NCYa',
964
- 'BMnLzdO',
965
- 'kcKGlYa',
966
- 'CY5Szw4',
967
- 'FsDZige',
968
- 'psbYzxe',
969
- 'z2fSlq',
970
- 'BIbUDwW',
971
- 'q2fJAgu',
972
- 'igeGsLm',
973
- 'ierHDgu',
974
- 'zhmOr0e',
975
- 'yxrOid0',
976
- 'BwL0j10',
977
- 'B29Rigu',
978
- 'DhvZx2W',
979
- 'icaGigq',
980
- 'D3jPDgu',
981
- 'icbLEgm',
982
- 'ifn0yxq',
983
- 'zw50Awm',
984
- 'idyWicO',
985
- 'ksKkica',
986
- 'sviGlYa',
987
- 'mcb9ktS',
988
- 'igeGCgu',
989
- 'DMfPBge',
990
- 'Ew5Jzwq',
991
- 'ig9YzYK',
992
- 'id0GC2u',
993
- 'zsbZDge',
994
- 'igLMig4',
995
- 'DdOkicO',
996
- 'zxnbDca',
997
- 'zwqGy28',
998
- 'B21WDca',
999
- 'id0GmdS',
1000
- 'id0+ihS',
1001
- 'B24UBg8',
1002
- 'zxnZrxi',
1003
- 'y2HLuge',
1004
- 'ywXdB24',
1005
- 'DMvYEsO',
1006
- 'zcCSicC',
1007
- 'mcKPihS',
1008
- 'BMqGzMW',
1009
- 'CMvKlLW',
1010
- 'rxjYB3i',
1011
- 'lY8GrgK',
1012
- 'icaGDhi',
1013
- 'q29Kzs8',
1014
- 'zgqGC2u',
1015
- 'icaGihm',
1016
- 'jY5NywW',
1017
- 'icbWCMK',
1018
- 'DxnOzxm',
1019
- 'BM93',
1020
- 'E3n0yxq',
1021
- 'Dg8Gy2G',
1022
- 'zxnZcMy',
1023
- 'ihT9cN0',
1024
- 'zxmGyxi',
1025
- 'y0HHC2G',
1026
- 'icaVlYa',
1027
- 'cGOVlYa',
1028
- 'yxrLx3a',
1029
- 'B3uGD2e',
1030
- 'DgGGpIa',
1031
- 'BgXLzcG',
1032
- 'x1zfuLm',
1033
- 'DxqGyMW',
1034
- 'zw1PBMq',
1035
- 'DgfSBgu',
1036
- 'tM90Awy',
1037
- 'Dgf0zs4',
1038
- 'oIbxAgu',
1039
- 'BIGNlca',
1040
- 'lY8GuMu',
1041
- 'Bgf0zxm',
1042
- 'icOGuxu',
1043
- 'y1n0yxq',
1044
- 'BguOksa',
1045
- 'BdSkica',
1046
- 'B3CGD2e',
1047
- 'Ew5Jkgq',
1048
- 'zv9JBwq',
1049
- 'lvmGDxy',
1050
- 'zaOGica',
1051
- 'r0fmx0q',
1052
- 'kgvSAwC',
1053
- 'BMrPBMC',
1054
- 'C3rHDgu',
1055
- 'lcbMktS',
1056
- 'Dhj5ihS',
1057
- 'zxmPihS',
1058
- 'C19SAw4',
1059
- 'zw5LCMe',
1060
- 'Df0UzMK',
1061
- 'DguNlca',
1062
- 'zw52',
1063
- 'ic0Tyxu',
1064
- 'yxrLzca',
1065
- 'zxnZywC',
1066
- 'icaGigK',
1067
- 'lcaNlMC',
1068
- 'zca9ieO',
1069
- 'iYeVDxm',
1070
- 'zxnZlMm',
1071
- 'ywWNlca',
1072
- 'B1vWzge',
1073
- 'se9ps18',
1074
- 'DhvZtgK',
1075
- 'CIbVCMC',
1076
- 'ktSkcIa',
1077
- 'DcGNBge',
1078
- 'r19gsuW',
1079
- 'psaIpJ0',
1080
- 'DZ8IcG',
1081
- 'DhmGBMu',
1082
- 'jIb0B2S',
1083
- 'DgLUz3m',
1084
- 'psbqyxq',
1085
- 'BcCSicC',
1086
- 'zwyOktS',
1087
- 'yxrOlca',
1088
- 'CNjVCNm',
1089
- 'DxjUigu',
1090
- 'zgf5CYa',
1091
- 'zcGPic8',
1092
- 'y2vZCY4',
1093
- 'zc4kicO',
1094
- 'B29RCYK',
1095
- 'icCUz2e',
1096
- 'icb9igm',
1097
- 'mZGWmZGXmeHqENHwuG',
1098
- 'kclWN5sqieC',
1099
- 'id0GiG',
1100
- 'BMDZx3a',
1101
- 'y2GGCNu',
1102
- 'u2vZC2K',
1103
- 'icOGCMu',
1104
- 'ksKGEWO',
1105
- 'jWOkica',
1106
- 'oWOklY8',
1107
- 'DwvKqxq',
1108
- 'BgLUzsK',
1109
- 'BgL0kcC',
1110
- 'quKGywC',
1111
- 'C3rHBgu',
1112
- 'cKDbtf8',
1113
- 'CYbZDw0',
1114
- 'DxrMltG',
1115
- 'z05HBwu',
1116
- 'CM4GDhi',
1117
- 'Bxb0ige',
1118
- 'zwXWyca',
1119
- 'zwnRide',
1120
- 'CNqGq2W',
1121
- 'icbPzIa',
1122
- 'CNjVCIK',
1123
- 'ifrLBgu',
1124
- 'oIbnAxm',
1125
- 'pt09ida',
1126
- 'z0zPBgu',
1127
- 'zxqOj2m',
1128
- 'iIiIr2u',
1129
- 'DgGSieO',
1130
- 'y29Kzuu',
1131
- 'BNn0igy',
1132
- 'ksbIzwG',
1133
- 'yxrJAc0',
1134
- 'x2nVBMy',
1135
- 'Bvvvsuq',
1136
- 'ugf0Aca',
1137
- 'C2fNzqO',
1138
- 'Acb7cIa',
1139
- 'CY5OB28',
1140
- 'EWOGihm',
1141
- 'ig5Vzgu',
1142
- 'zxrYEs0',
1143
- 'icaJifi',
1144
- 'zIaOiwy',
1145
- 'B3rOzxi',
1146
- 'yw5PEMe',
1147
- 'zgvZ',
1148
- 'BcaTlwe',
1149
- 'twvZC2e',
1150
- 'z3nqyxq',
1151
- 'zhnszwy',
1152
- 'ygDHBca',
1153
- 'zw50cIa',
1154
- 'id0Gj3m',
1155
- 'CNnPB24',
1156
- 'pt0klY8',
1157
- 'zgLVoIa',
1158
- 'icaGFqO',
1159
- 'B20GC2u',
1160
- 'BMfSigq',
1161
- 'Ag9VA3m',
1162
- 'DxmGlsa',
1163
- 'DcHZDge',
1164
- 'q3vYC28',
1165
- 'C3rtEw4',
1166
- 'Aw9Uigm',
1167
- 'zwzYzxm',
1168
- 'DguGpsa',
1169
- 'oIbNywW',
1170
- 'CgvUzgK',
1171
- 'C2LVBJO',
1172
- 'zsHZEw4',
1173
- 'kcK7cIa',
1174
- 'BYbZEw4',
1175
- 'BNn0ig8',
1176
- 'CYbJywm',
1177
- 'BLbHEwW',
1178
- 'z19MAwW',
1179
- 't1qGC3K',
1180
- 'CY5Yzwe',
1181
- 'zxjYB3i',
1182
- 'Aw9UigK',
1183
- 'CYbJB24',
1184
- 'igDHBca',
1185
- 'z2u7cN0',
1186
- 'icOGzgK',
1187
- 'Aw5Lid0',
1188
- 'zsGI4PYfia',
1189
- 'C3rdAgu',
1190
- 'BM9YzsC',
1191
- 'BNn0ywW',
1192
- 'BIbYzwy',
1193
- 'ChqGzMK',
1194
- 'l2DHBc8',
1195
- 'ChqGrxG',
1196
- 'Ew5JigC',
1197
- 'xg5sDw4',
1198
- 'CdOGBMu',
1199
- 'y29Kzsa',
1200
- 'x2DHBf8',
1201
- 'nte1ndu2yxLjuxDb',
1202
- 'C3LUy2u',
1203
- 'jYK6cIa',
1204
- 'icD1Dgy',
1205
- 'DguTy2e',
1206
- 'ANvZDca',
1207
- 'r0fmiem',
1208
- 'DwXSoWO',
1209
- 'cIaGica',
1210
- 'x2nTzdO',
1211
- 'y2f0zwq',
1212
- 'ihnLBgy',
1213
- 'CMvZAcK',
1214
- 'C2u2ncC',
1215
- 'CIbMB3i',
1216
- 'j2HVB2S',
1217
- 'z2fSq28',
1218
- 'zwnRigu',
1219
- 'CYa9ihm',
1220
- 'yokCHsbhqq',
1221
- 'quW6iee',
1222
- 'kgHVB2S',
1223
- 'CM9Tic4',
1224
- 'ig9WDgK',
1225
- 'BhyGpsa',
1226
- 'AwyGkhm',
1227
- 'AwyGx18',
1228
- 'B3zLigG',
1229
- 'oWOGica',
1230
- 'DgvTtwu',
1231
- 'y2vMDwW',
1232
- 'CYKGEWO',
1233
- 'kqOkica',
1234
- 'yYbMB3i',
1235
- 'BgvUyw0',
1236
- 'BMnLzca',
1237
- 'Dw5PBNm',
1238
- 'cN0kcI8',
1239
- 'yxaOyYa',
1240
- 'jZeNihW',
1241
- 'B24Gpsa',
1242
- 'zgLYkcK',
1243
- 'AgvSCga',
1244
- 'jYWkica',
1245
- 'AgvUDgK',
1246
- 'C3rLChm',
1247
- 'iIWGj3m',
1248
- 'BYb0ywS',
1249
- 'zw50CMK',
1250
- 'ih0kFsa',
1251
- 'CMvWBge',
1252
- 'zsbLzMy',
1253
- 'Aw5LcIa',
1254
- 'BMLUzZO',
1255
- 'rsWGj3u',
1256
- 'oIbSB2C',
1257
- 'DgLVBIa',
1258
- 'C3qGy3y',
1259
- 'B29Rigy',
1260
- 'zgvMig0',
1261
- 'EtOkica',
1262
- 'DMuGAg8',
1263
- 'Aw5JBhu',
1264
- 'Ac5OB20',
1265
- 'AdOGjhS',
1266
- 'DMvYC2K',
1267
- 'Dg9ju08',
1268
- 'Cg9YDca',
1269
- 'AwDiyxm',
1270
- 'yxzPB3i',
1271
- 'BMCGpsa',
1272
- 'igLUzgu',
1273
- 'AYaYoIa',
1274
- 'lcb0Aw0',
1275
- 'zsDDcIa',
1276
- 'Bwv0CNK',
1277
- 'y2f0zwC',
1278
- 'AwyGC3K',
1279
- 'ktSky28',
1280
- 'iYaGica',
1281
- 'ywXSzwq',
1282
- 'ig1HAw4',
1283
- 'BMC6cIa',
1284
- 'ANnVBIa',
1285
- 'zxmGzNi',
1286
- 'j3v0zI0',
1287
- 'DgLVBIK',
1288
- 'ief0Dgu',
1289
- 'Ew5Jsge',
1290
- 'zxjLza',
1291
- 'AcbSB2C',
1292
- 'DgfTCcK',
1293
- 'Bsb0Agu',
1294
- 'mcKPigi',
1295
- 'B3qGC3K',
1296
- 'zNmUzxG',
1297
- 'BIHJBge',
1298
- 'j2nOAwW',
1299
- 'y19ZDge',
1300
- 'B29RigK',
1301
- 'B2fKicy',
1302
- 'cIaGlY8',
1303
- 'BgXGlca',
1304
- 'ihSGCMu',
1305
- 'cGPuAgu',
1306
- 'lMPVAw4',
1307
- 'DcbWyxi',
1308
- 'zwzHDwW',
1309
- 'Acb0B2S',
1310
- 'zwn0lG',
1311
- 'zwrwzxi',
1312
- 'ztOGDhi',
1313
- 'C29Tzq',
1314
- 'CMvZqxq',
1315
- 'zhmOC3q',
1316
- 'Dgu6cIa',
1317
- 'B3v0zge',
1318
- 'ksbYzxq',
1319
- 'BIaHzNm',
1320
- 'zw5NDgG',
1321
- 'zw50igm',
1322
- 'iIikcGO',
1323
- 'tMv4Dca',
1324
- 'icaGFsK',
1325
- 'AwyGkhi',
1326
- 'yxrOcGO',
1327
- 'DxjUigm',
1328
- 'C3rYAw4',
1329
- 'CM9Jzxm',
1330
- 'zYbMAwW',
1331
- 'zsbMAwW',
1332
- 'ExbLoIa',
1333
- 'm1SWBsi',
1334
- 'kIbwzxi',
1335
- 'C3rKAw8',
1336
- 'ktSkCMu',
1337
- 'DgvNB3i',
1338
- 'ig5VDaO',
1339
- 'Ac5QB2K',
1340
- 'icbLEgu',
1341
- 'DguOkqO',
1342
- 'q2fSBgu',
1343
- 'zsHPBNa',
1344
- 'DxmGtgK',
1345
- 'B21Tyw4',
1346
- 'teKGDg8',
1347
- 'CYbHBgW',
1348
- 'lNrYAw0',
1349
- 'cMLTCg8',
1350
- 'DwrLrgK',
1351
- 'm1SZm20',
1352
- 'B3zLzca',
1353
- 'Aw9Uihe',
1354
- 'B3iPoGO',
1355
- 'zxHWAxi',
1356
- 'AwXLcIa',
1357
- 'ktOkica',
1358
- 'icDvC2u',
1359
- 'zMf1Bhq',
1360
- 'CLbYB20',
1361
- 'j3bHDgG',
1362
- 'ywnOzva',
1363
- 'yxqGC2u',
1364
- 'Aw5FxYC',
1365
- 'ig91Dgq',
1366
- 'z3mUANm',
1367
- 'lMXLBMC',
1368
- 'CY5Nzxq',
1369
- 'zxr1CM4',
1370
- 'uhjVAMu',
1371
- 'DwjWCM8',
1372
- 'zI1JBgu',
1373
- 'CgrHDgu',
1374
- 'CYbSAw4',
1375
- 'kgnSyxu',
1376
- 'oYb9igm',
1377
- 'BNqGBwu',
1378
- 'zw1VDMu',
1379
- 'zxiPoWO',
1380
- 'zxvLige',
1381
- 'zdOGCMu',
1382
- 'BMniyxm',
1383
- 'uMvHzhK',
1384
- 'FqOGih0',
1385
- 'oIbdB24',
1386
- 'Dg8GBg8',
1387
- 'yxjZzsG',
1388
- 'B2nHBc4',
1389
- 'kqOGica',
1390
- 'CNnLkgy',
1391
- 'ic8VlYa',
1392
- 'AwyGkgy',
1393
- 'AwDPyMW',
1394
- 'tM90ihm',
1395
- 'zIbNzw4',
1396
- 'BMuOAw4',
1397
- 'icaGFsa',
1398
- 'DcbZExm',
1399
- 'C2vUzca',
1400
- 'BMntDge',
1401
- 'DwvuzwW',
1402
- 'AfXGlIa',
1403
- 'zxmUy2e',
1404
- 'ssKGCMu',
1405
- 'BMDZlMG',
1406
- 'B3v0ihm',
1407
- 'ChqGkgO',
1408
- 'lIbuAgK',
1409
- 'B246iha',
1410
- 'z2vZihq',
1411
- 'zf9WCM8',
1412
- 'zenVBMy',
1413
- 'j2nVBMy',
1414
- 'Ac5LEgK',
1415
- 'icaGigu',
1416
- 'cN0kcMy',
1417
- 'CMvHAZS',
1418
- 'zs5Nzxq',
1419
- 'CNqNlaO',
1420
- 'Cg9ZDgK',
1421
- 'ihn5CY4',
1422
- 'ksaVicC',
1423
- 'j3DOAwm',
1424
- 'CIGPlca',
1425
- 'rMLSzvm',
1426
- 'y2vWDgK',
1427
- 'zwq6ihq',
1428
- 'EsbhquW',
1429
- 'igLUC3q',
1430
- 'zxrYEqO',
1431
- 'icOQq28',
1432
- 'ihjLDhu',
1433
- 'DfzLCNm',
1434
- 'zcbPzIa',
1435
- 'nZu1',
1436
- 'ExmGC2G',
1437
- 'kgf1DgG',
1438
- 'oIaNAwC',
1439
- 'ihvWzge',
1440
- 'AM9PBG',
1441
- 'y01LC3m',
1442
- 'cI0Gu3K',
1443
- 'icaGiha',
1444
- 'C2nYAxa',
1445
- 'DcGNyxu',
1446
- 'B2TLBIK',
1447
- 'icHUzwu',
1448
- 'yxLSB2e',
1449
- 'q09orKK',
1450
- 'AwyGr0e',
1451
- 'CYbYDw4',
1452
- 'ChjVDMu',
1453
- 'cGOkzgu',
1454
- 'B2rLicG',
1455
- 'lcbYDw4',
1456
- 'Aw5Kicq',
1457
- 'lcbZEw4',
1458
- 'j3vWzge',
1459
- 'DcbOB28',
1460
- 'B3jLihm',
1461
- 'zM9Yzsa',
1462
- 'zhmklsa',
1463
- 'ywqGC3K',
1464
- 'AYbJywW',
1465
- 'ywLUkcK',
1466
- 'zgv0zwm',
1467
- 'icaGihi',
1468
- 'CIbGz2e',
1469
- 'Aw9UywW',
1470
- 'BNn0igm',
1471
- 'BMzPzW',
1472
- 'lY8GAw4',
1473
- 't04UC3q',
1474
- 'pt09pt0',
1475
- 'Ew50yxG',
1476
- 'DhrLBxa',
1477
- 'cMrLzIa',
1478
- 'zxH0kcK',
1479
- 'DguOktO',
1480
- 'zxrLihm',
1481
- 'icaGCge',
1482
- 'iGOkAw0',
1483
- 'tKnFu1q',
1484
- 'ksaVicG',
1485
- 'icyMihm',
1486
- 'ignSyxu',
1487
- 'zwHHDMK',
1488
- 'lcaNyxu',
1489
- 'y3qGBM8',
1490
- 'ExmUC3q',
1491
- 'ihjLywq',
1492
- 'BIGPoWO',
1493
- 'BM9KzqO',
1494
- 'yxnRoIa',
1495
- 'zwfKkcK',
1496
- 'y29UC3q',
1497
- 'yxaOtNu',
1498
- 'Ew5Jtwu',
1499
- 'ihbHDgG',
1500
- 'zwfKu3K',
1501
- 'lsbdB24',
1502
- 'DxnmAw4',
1503
- 'Ew5JcIa',
1504
- 'BIbZDge',
1505
- 'lLTLDMu',
1506
- 'zxb0igO',
1507
- 'BMzPzY4',
1508
- 'lYbszwy',
1509
- 'DcaOt1m',
1510
- 'Ag9Ulwq',
1511
- 'B3zLigy',
1512
- 'B3iOkeq',
1513
- 'Dfn5BMm',
1514
- 'Aw9Uu3q',
1515
- 'AwyGkce',
1516
- 'Bca8y28',
1517
- 'lIbGicS',
1518
- 'zIbZzwW',
1519
- 'ihnJCMK',
1520
- 'igXLDca',
1521
- 'AwCOkqO',
1522
- 'Aw5WDxq',
1523
- 'quWGC3q',
1524
- 'iYbdAgu',
1525
- 'icDZzxq',
1526
- 'icbSzxq',
1527
- 'BwvVDxq',
1528
- 'BMmGsg8',
1529
- 'iIWkiYa',
1530
- 'B3jNlwe',
1531
- 'B25ZlGO',
1532
- 'EgLZDhm',
1533
- 'r0fmoIa',
1534
- 'yxj0igG',
1535
- 'zwqG4OAsia',
1536
- 'BMv3zxi',
1537
- 'lMv4Axm',
1538
- 'quWGAxm',
1539
- 'C3rHDhu',
1540
- 'DgHFCMu',
1541
- 'C1DPDgG',
1542
- 'q2XHDwq',
1543
- 'AwXLBNq',
1544
- 'CM92zwq',
1545
- 'BwvKAxi',
1546
- 'ig9MigG',
1547
- 'kgHHC2G',
1548
- 'zv9Fks4',
1549
- 'Aw5Cmdm',
1550
- 'yxvKzsC',
1551
- 'zw5qyxK',
1552
- 'DgvKihq',
1553
- 'mdmZwZa',
1554
- 'DMvUDf0',
1555
- 'BMCGyw4',
1556
- 'mdaGFsK',
1557
- 'oIbrDwu',
1558
- 'B29RCZ8',
1559
- 'ifjLCxu',
1560
- 'BMDZuge',
1561
- 'icaGih0',
1562
- 'Bg9Hzca',
1563
- 'EYbZExm',
1564
- 'icbWCM8',
1565
- 'CMvKcMm',
1566
- 'Dhj5lMG',
1567
- 'z3mGpsa',
1568
- 'ls1WDwW',
1569
- 'zwqGC3q',
1570
- 'Axn0C1m',
1571
- 'CMvJDgW',
1572
- 'yxrLlMW',
1573
- 'zsbJB24',
1574
- 'DgXLkqO',
1575
- 'C2GGit0',
1576
- 't04GzMK',
1577
- 'ig9Yz04',
1578
- 'Aw4Gkem',
1579
- 'BIbQC28',
1580
- 'BgaGy28',
1581
- 'zxHLy1m',
1582
- 'DxrOigW',
1583
- 'BMfIBgu',
1584
- 'BgvKcI8',
1585
- 'ihbYB2m',
1586
- 'qvrfx0y',
1587
- 'ihj1BIa',
1588
- 'zgLUz0u',
1589
- 'yxrJAcK',
1590
- 'zguNic8',
1591
- 'kg1LC3m',
1592
- 'icb9cN0',
1593
- 'B2TZw2u',
1594
- 'ihrOzsa',
1595
- 'ifvWzge',
1596
- 'DxnSEsa',
1597
- 'BM90Awy',
1598
- 'uMvZDge',
1599
- 'AZSGFqO',
1600
- 'BM9Kzsa',
1601
- 'C3mUzw4',
1602
- 'z2LUcIa',
1603
- 'y2vKlca',
1604
- 'idaPihS',
1605
- 'tf9dt04',
1606
- 'Aw9UjZS',
1607
- 'ihvUC3u',
1608
- 'yxrLlM4',
1609
- 'CY52zxi',
1610
- 'B24NcGO',
1611
- 'igzSDxm',
1612
- 'Axb0cIm',
1613
- 'B3jPzxm',
1614
- 'cIaGFqO',
1615
- 'EhqGzxG',
1616
- 'A3mGpsa',
1617
- 'igLZige',
1618
- 'cGOGic8',
1619
- 'BsbZDgq',
1620
- 'vvnFteK',
1621
- 'DhrPBMC',
1622
- 'C3rZu3K',
1623
- 'quXFq08',
1624
- 'mtq0sgDSB1ji',
1625
- 'BNq9mIK',
1626
- 'BdOkica',
1627
- 'BMmGC3q',
1628
- 'zwqNktS',
1629
- 'yxLZFsa',
1630
- 'CNvUBMK',
1631
- 'B24GCMu',
1632
- 'AxiGpsa',
1633
- 'AYaZoIa',
1634
- 'jYK7cMm',
1635
- 'ic0GAwC',
1636
- 'CgXHDgy',
1637
- 'E30kica',
1638
- 'oIboB3q',
1639
- 'AM9PBIG',
1640
- 'Aw9Ulca',
1641
- 'pIaTlwG',
1642
- 'z3mSig4',
1643
- 'zwqPlM0',
1644
- 'lMPZB24',
1645
- 'zIbZDge',
1646
- 'yxr1CYa',
1647
- 'EsbGz2e',
1648
- 'iGPhquW',
1649
- 'DgrHDgu',
1650
- 'rKLhx0y',
1651
- 'z2fSjYW',
1652
- 'BIbZEw4',
1653
- 'lNDYAxq',
1654
- 'yxrLq2e',
1655
- 'FqOGica',
1656
- 'Aca9igy',
1657
- 'CgvUzgu',
1658
- 'B246cIa',
1659
- 'teKGy28',
1660
- 'BgvZic0',
1661
- 'ihSGC3q',
1662
- 'psbGxg4',
1663
- 'ywXZztS',
1664
- 'x05px0e',
1665
- 'qvrjt04',
1666
- 'ic0Gu2u',
1667
- 'lcbjt0u',
1668
- 'DgnOihS',
1669
- 'DgvFCge',
1670
- 'BMvYyxq',
1671
- 'DgvSzw0',
1672
- 'kg5Vig4',
1673
- 'lcbBxsK',
1674
- 'yw5KBgu',
1675
- 'igjYzwe',
1676
- 'DYbeyxq',
1677
- 'x2rHDge',
1678
- 'swztDge',
1679
- 'zYb0Agu',
1680
- 'j3LVDxi',
1681
- 'idi0icO',
1682
- 'icDSyxq',
1683
- 'Ac5JD2q',
1684
- 'iIiIcGO',
1685
- 'mdmZwZm',
1686
- 'lcaNkx0',
1687
- 'ywnLzNu',
1688
- 'zuP3DcG',
1689
- 'B3b0Aw8',
1690
- 'zw5HyMW',
1691
- 'igLMicG',
1692
- 'iIiIuMu',
1693
- 'zsbPzIa',
1694
- 'DguUBM8',
1695
- 'zsbVChq',
1696
- 'DcGNC3K',
1697
- 'ief1Dg8',
1698
- 'DhmGpsa',
1699
- 'zsGPlNq',
1700
- 'AwX0zxi',
1701
- 'CNqPcIa',
1702
- 'kIbhquW',
1703
- 'ihrLBgu',
1704
- 'Aw5NCYW',
1705
- 'ignOAwW',
1706
- 'D2qOksW',
1707
- 'Esb7cIa',
1708
- 'tdOGu3K',
1709
- 'Dw5SAw4',
1710
- 'cGPczwG',
1711
- 'yxrPB24',
1712
- 'zIaOzNm',
1713
- 'BgvZjYW',
1714
- 'u3LUyW',
1715
- 'B2rLieO',
1716
- 'AYbYDw4',
1717
- 'ndv4D2vRz3C',
1718
- 'AwvZlMy',
1719
- 'yxrOktS',
1720
- 'zxn0j30',
1721
- 'ig9Yihi',
1722
- 'yxb0Dxi',
1723
- 'kcDNywW',
1724
- 'y2HPBgq',
1725
- 'icbWzw4',
1726
- 'yxj0jYW',
1727
- 'yYH1Cgq',
1728
- 'Aw5Gic0',
1729
- 'DcaOuge',
1730
- 'lxb1BgW',
1731
- 'zsGPihS',
1732
- 'y2f0Aw8',
1733
- 'jYdIHPiGAW',
1734
- 'lIiIiGO',
1735
- 'icaJieG',
1736
- 'ihrVA2u',
1737
- 'D2L0Ag8',
1738
- 'BgvTzxq',
1739
- 'icOGlsa',
1740
- 'icmGu3K',
1741
- 'icaJifm',
1742
- 'DcGNlIC',
1743
- '8j+uKcbhquW',
1744
- 'lMHVBwu',
1745
- 'ihnVihC',
1746
- 'Ag9VA18',
1747
- 'ChrFCge',
1748
- 'CNvUigC',
1749
- 'BMqGzgK',
1750
- 't25SEsa',
1751
- 'BgLUzq',
1752
- 'AwyGysa',
1753
- 'mZG0nZaYnuLkDwDkrG',
1754
- 'xsb8Fca',
1755
- 'B25ZDca',
1756
- 'ExmOC2u',
1757
- 'w2yGzM8',
1758
- 'w107cIa',
1759
- 'BMmODxa',
1760
- 'EWOGica',
1761
- 'DgHPCYa',
1762
- 'BIHWCM8',
1763
- 'icbXDwu',
1764
- 'zNKOCgu',
1765
- 'icaIiIi',
1766
- 'DhmGDg8',
1767
- 'AwyGkgm',
1768
- 'lcaNjYK',
1769
- 'icaGigC',
1770
- 'CYa9ifS',
1771
- 'y2vKigy',
1772
- 'DguPihS',
1773
- 'DgrPBZO',
1774
- 'BM9Yzsa',
1775
- 'BM90igC',
1776
- 'cImJiei',
1777
- 'icb9cIa',
1778
- 'icbZAg8',
1779
- 'DwuGDgu',
1780
- 'BhbGig8',
1781
- 'Aca9pt0',
1782
- 'igHVB2S',
1783
- 'DxbKyxq',
1784
- 'zw50CWO',
1785
- 'q2HLy2S',
1786
- 'ih0kica',
1787
- '4OAsihbYBW',
1788
- 'AcbYDwW',
1789
- 'ifnLBgy',
1790
- 'ignOzwm',
1791
- 'Cgf0Aa',
1792
- 'ssbPCYa',
1793
- 'CNvLlaO',
1794
- 'kc9EDI8',
1795
- 'zMLSDgu',
1796
- 'C3rHCNq',
1797
- 'su9oid0',
1798
- 'BMuGzM8',
1799
- 'igyPlMu',
1800
- 'Aw9UicG',
1801
- 'zNmUDw4',
1802
- 'C1vWzge',
1803
- 'AcaHpt0',
1804
- 'BcC7cMm',
1805
- 'DgGSicC',
1806
- 'oIbTzxm',
1807
- 'ywnOzsa',
1808
- 'BLj1BJO',
1809
- 'yxr1C18',
1810
- 'AwXLCWO',
1811
- 'Aw9UoWO',
1812
- 'CNvSzxm',
1813
- 'yxrJAfa',
1814
- 'rg93BMW',
1815
- 'B24kica',
1816
- 'x3vZzxi',
1817
- 'B3rLBNy',
1818
- 'CNvLlca',
1819
- 'C3LZlMu',
1820
- 'BMfNAw4',
1821
- 'zgf0zum',
1822
- 'BY1ZEw4',
1823
- 'ifSNDxa',
1824
- 'lcaNCNu',
1825
- 'CMf0zv8',
1826
- 'ihn0yxK',
1827
- 'DxjHDgK',
1828
- 'vxnLCLa',
1829
- '8j+tIYbcywm',
1830
- 'DhjPz2C',
1831
- 'y3DKkcK',
1832
- 'Dgv4DcW',
1833
- 'DI8SicC',
1834
- 'igvYCM8',
1835
- 'zsbXDwu',
1836
- 'Aw5Nig4',
1837
- 'BgfZDfm',
1838
- 'jIyGC3q',
1839
- 'CMLUz2K',
1840
- 'CWP9cGO',
1841
- 'y2Hqyxq',
1842
- 'AxnZAw4',
1843
- 'zsHZktO',
1844
- 'zwnRidi',
1845
- 'lcbZCge',
1846
- 'CYbHBMq',
1847
- 'C2LUzYa',
1848
- 'ierVD24',
1849
- 'kg9ZlMG',
1850
- 'Ew5Jlxi',
1851
- 'B3iGuNu',
1852
- 'ksb7cIa',
1853
- 'mZnT8j+tPsa',
1854
- 'Ag9VAYa',
1855
- 'Euv2zw4',
1856
- 'sLnptI4',
1857
- 'DxnFBgK',
1858
- 'mtbXAxPkuha',
1859
- 'BIb5B3u',
1860
- 'uLnjt04',
1861
- 'BgKUBwq',
1862
- 'B3mUAg8',
1863
- 'ihnLzsa',
1864
- 'B29KiokgKG',
1865
- 'zuLMu3q',
1866
- 'C3LUy1W',
1867
- 'ksK7cIa',
1868
- 'ig1PC20',
1869
- 'zgf0zsG',
1870
- 'CYa9ieO',
1871
- 'zhvTChm',
1872
- 'ihn1yNa',
1873
- 'Acb7ihi',
1874
- 'FsKPoWO',
1875
- 'tdOGu2u',
1876
- 'DxrOzw4',
1877
- 'BMnLzf8',
1878
- 'B24UcIa',
1879
- 'CYbTzxm',
1880
- 'zw91DdO',
1881
- 'CYbPBIa',
1882
- 'mtaWmcK',
1883
- 'lY8kiIi',
1884
- 'icr7BwK',
1885
- 'A2vUksa',
1886
- 'BNbT',
1887
- 'ihjLBw8',
1888
- 'igv4CgK',
1889
- 'C1n5BMm',
1890
- 'kcDZDge',
1891
- 'zwXMlwm',
1892
- 'DYGPid4',
1893
- 'ifjLywq',
1894
- 'DguUB3i',
1895
- 'C0XPBMu',
1896
- 'ksbKzwW',
1897
- 'zNvUy3q',
1898
- 'yw5KCWO',
1899
- 'Ag93twu',
1900
- 'B2TLBIa',
1901
- 'Ew5Jkhi',
1902
- 'j3mGC28',
1903
- 'j10SihS',
1904
- 'BgWTBwu',
1905
- 'ks50B1m',
1906
- 'BMfTzsK',
1907
- 'ihrYEtO',
1908
- 'rMLSzxm',
1909
- 'lwfWChi',
1910
- 'ywWTC3K',
1911
- 'ywWGzgK',
1912
- 'Aw5NC1S',
1913
- 'ks4IiIi',
1914
- 'DhvZktS',
1915
- 'ycbdteK',
1916
- 'CM4GsLm',
1917
- 'ihzLCNm',
1918
- 'zgLZDa',
1919
- 'cIaQcIa',
1920
- 'oIaZmda',
1921
- 'lsbIDwK',
1922
- 'j2DHBc0',
1923
- 'lxzLCNm',
1924
- 'rcGPlaO',
1925
- 'DgfKyxq',
1926
- 'iGOkica',
1927
- 'Ac5JB20',
1928
- 'B3iGBwe',
1929
- 'kx0Uxg4',
1930
- 'ks5Tyxa',
1931
- 'Dg9Rzw4',
1932
- 'lMXHDgu',
1933
- 'CgfZCWO',
1934
- 'BMn0Aw8',
1935
- 'j2rPC3a',
1936
- 'icG+mJq',
1937
- 'kcLDcIa',
1938
- 'Aw1LkcK',
1939
- 'B3jTlaO',
1940
- 'Dcb0Agu',
1941
- 'zwXLBwu',
1942
- 'CMLUz30',
1943
- 'mJqGkIa',
1944
- 'C2TPCha',
1945
- 'DcbhquW',
1946
- 'BMuNlca',
1947
- 'Bg9Hzc4',
1948
- 'Dgv4Dca',
1949
- 'zxnZksW',
1950
- 'ywrZige',
1951
- 'zYbMCM8',
1952
- 'C2LVBN0',
1953
- 'Ew5Jkhm',
1954
- 'DcbPzIa',
1955
- 'ic0GtM8',
1956
- 'y2fJAgu',
1957
- 'AguGpsa',
1958
- 'CNKGEYa',
1959
- 'quWTmte',
1960
- 'lcbZzwW',
1961
- 'pt09cI8',
1962
- 'ihnPBgu',
1963
- 'BgzdBgu',
1964
- 'lNb5',
1965
- 'iGOGica',
1966
- 'ChbYB3y',
1967
- 'Bf9PBNm',
1968
- 'DgePcGO',
1969
- 'BNn0ig0',
1970
- 'id0GANm',
1971
- 'iePtt04',
1972
- 'y2GGEWO',
1973
- 'rgLZy28',
1974
- 'DcbIzwy',
1975
- 'rgLYlca',
1976
- 'pIaWid8',
1977
- 't04UCge',
1978
- 'ihrYDwu',
1979
- 'BgvK',
1980
- 'ywWGBM8',
1981
- 'z2uPcIa',
1982
- 'ihj1Bgu',
1983
- 'icbZEw4',
1984
- 'jYa6icC',
1985
- 'BML6yxq',
1986
- 'igv2zw4',
1987
- 'Awz5khm',
1988
- 'kgmGpt4',
1989
- 'BgukDhi',
1990
- 'ignOyw4',
1991
- 'u1rbveu',
1992
- 'B24UCMu',
1993
- 'zs4kcIa',
1994
- 'EwXVywq',
1995
- 'ign3zdO',
1996
- 'D2L0Aca',
1997
- 'icDZEw4',
1998
- 'Ag9Tzwq',
1999
- 'zYbTzxm',
2000
- 'AwnHDgK',
2001
- 'Ew5Jic0',
2002
- 'DwrLCYG',
2003
- 'ignHDgm',
2004
- 'ihSkica',
2005
- 'zw5KAw4',
2006
- 'tI5Wyxi',
2007
- 'x3rYAwC',
2008
- 'B3Ckica',
2009
- 'ieLprxi',
2010
- 'iVcFLjaGr0e',
2011
- 'kYKGEWO',
2012
- 'id0GCge',
2013
- 'yxv0Agu',
2014
- 'igrPCMu',
2015
- 'z2LMEsG',
2016
- 'AcKPihS',
2017
- 'lYbiB28',
2018
- 'BNrYEs4',
2019
- 'zunHy2G',
2020
- 'DwLYzsG',
2021
- 'lMnQCW',
2022
- 'ugf0Ac4',
2023
- 'mZnBmg0',
2024
- 'AxjLzcO',
2025
- 'ktSkica',
2026
- 'CNjLBNq',
2027
- 'B2SGAwy',
2028
- 'DcbWzw4',
2029
- 'CM9Ylca',
2030
- 'C2fNzsa',
2031
- 'ywqGpsa',
2032
- 'DgvKxda',
2033
- 'CxvPCMu',
2034
- 'tKzjr18',
2035
- 'ChrtDwi',
2036
- 'icbMCY4',
2037
- 'C3nPBMC',
2038
- 'cGPPzIa',
2039
- 'BgXLzc4',
2040
- 'zMLYC3q',
2041
- 'icaGiYa',
2042
- 'oGOGica',
2043
- 'yxrLzaO',
2044
- 'lwnSAs4',
2045
- 'x0zjteu',
2046
- 'xYa9psa',
2047
- 'z3nFCge',
2048
- 'yIbPBxa',
2049
- 'C29UjYK',
2050
- 'ANnVBG',
2051
- 'ugf0AcK',
2052
- 'yxr1CYC',
2053
- 'CMfUzg8',
2054
- 'A3mGFhW',
2055
- 'CYbMCM8',
2056
- 'q0Xjigm',
2057
- 'Aw9UoIa',
2058
- 'Ew5JkcC',
2059
- 'oYb9cN0',
2060
- 'kgn2w2K',
2061
- 'BcbHDxq',
2062
- 't04Gzgu',
2063
- 'AwyGC2u',
2064
- 'm23IMQdVUi8GrW',
2065
- 'BsHWyxi',
2066
- 'Ew5JkeC',
2067
- 'zcb2zxi',
2068
- 'zNmUCMu',
2069
- 'BgvUz3q',
2070
- 'CgXHy2u',
2071
- 'C2uOzNm',
2072
- 'B2DPBIi',
2073
- 'icaGic8',
2074
- 'kgrPC3a',
2075
- 'kcKScIa',
2076
- 'igf2ywK',
2077
- 'icaGiIi',
2078
- 'DgHuB2S',
2079
- 'jYKGit0',
2080
- 'suXfid0',
2081
- 'oWPJB24',
2082
- 'BMnLzey',
2083
- 'yYHZzxq',
2084
- 'BIbuCNu',
2085
- 'rKLmrsK',
2086
- 'ic8Viee',
2087
- 'y2f0y2G',
2088
- 'DwX0t3i',
2089
- 'kcK7cGO',
2090
- 'mcKGpca',
2091
- 'Dgf0zva',
2092
- 'Dgf0zv8',
2093
- 'quWGq0W',
2094
- 'BMfTzv8',
2095
- 'C2LSzw4',
2096
- 'lNjHBMq',
2097
- 'nJaGkIa',
2098
- 'AcWGsLm',
2099
- 'C3nPB24',
2100
- 'BMukica',
2101
- 'BcCGlYa',
2102
- 'ywrZkhm',
2103
- 'C3rLywq',
2104
- 'BIWGzgu',
2105
- 'yxv0Aca',
2106
- 'DgLVBN0',
2107
- 'C2LVBI4',
2108
- 'kgX2w2K',
2109
- 'B3jLjYW',
2110
- 'DcbMB3i',
2111
- 'cJWHls0',
2112
- 'cImJiee',
2113
- 'zIaOixm',
2114
- 'xqOJic8',
2115
- 'lNnWBgK',
2116
- 'kJOGswy',
2117
- 'BMrfCNi',
2118
- 'AguGAw4',
2119
- 'AwyGj2C',
2120
- 'CM9YktO',
2121
- 'CY5Jyxq',
2122
- 'ANnVBIC',
2123
- 'l2vUDIa',
2124
- 'yxrOlNi',
2125
- 'BMzPzWO',
2126
- 'zwnRoIa',
2127
- 'CIbMigK',
2128
- 'FqOky28',
2129
- 'id0GwWO',
2130
- 'BIbUzxG',
2131
- 'lYa9pt0',
2132
- 'zMLNig8',
2133
- 'ugf0AcG',
2134
- 'AxrOieC',
2135
- 'lYbezwm',
2136
- 'ycWGj20',
2137
- 'CNKGzxy',
2138
- 'igfUEsa',
2139
- 'Aw4OB3m',
2140
- 'oIbqCM8',
2141
- 'ign1CNi',
2142
- 'BwLZC2K',
2143
- 'Aw4Gq2W',
2144
- 'zIaOrge',
2145
- 'D3mGC3K',
2146
- 'ChjVBxa',
2147
- 'q29UzMK',
2148
- 'khrVA2u',
2149
- 'y2THz2u',
2150
- 'icfJlMu',
2151
- 'Bw1HBMq',
2152
- 'z2fUAxO',
2153
- 'zxnZAw8',
2154
- 'DgvYkgG',
2155
- 'qwXSigC',
2156
- 'ls1Zy3i',
2157
- 'lMnSyxu',
2158
- 'DhvZlaO',
2159
- 'zwvWigW',
2160
- 'EsbZAwW',
2161
- 'DhjPBMC',
2162
- 'u09olNm',
2163
- 'icbYzxq',
2164
- 'icr7B3i',
2165
- 'pt4GyY4',
2166
- 'u2vSzI0',
2167
- 'ig9Yz2e',
2168
- 'ienmsqO',
2169
- 'yxrLihC',
2170
- 'yw1LktS',
2171
- 'yNbYB2m',
2172
- 'BIHVCY4',
2173
- 'mZnT4PQG77Ipia',
2174
- 'ignVBw0',
2175
- 'FqOklY8',
2176
- 'y2vKcMy',
2177
- 'Chv0kqO',
2178
- 'ig51BgW',
2179
- 'BNn0iha',
2180
- 'B3v0Chu',
2181
- 'BNn0ihu',
2182
- 'B3iGkgm',
2183
- 'zwXPz2K',
2184
- 'CML0zv8',
2185
- 'ig9UigK',
2186
- 'Dgf0zsK',
2187
- 'BYb2jhS',
2188
- 'ChvZAa',
2189
- 'ihvZzxi',
2190
- 'CMvZAca',
2191
- 'FhWGiwC',
2192
- 'BgfIBgu',
2193
- 'igjHy2S',
2194
- 'AhjVBM8',
2195
- 'CM4GtM8',
2196
- 'yWOGkIa',
2197
- 'CY5LEgK',
2198
- 'igDHBeq',
2199
- 'zw1LDhi',
2200
- 'CNjVCIW',
2201
- 'CYb0BWO',
2202
- 'AxnWyxq',
2203
- 'zYbZEw4',
2204
- 'B2TLBL8',
2205
- 'oWOkica',
2206
- 'vKvsu0K',
2207
- 'CI9IAw4',
2208
- 'DgHYB3q',
2209
- 'B0Ltt1m',
2210
- 'vMvYC2K',
2211
- 'zxH0ihi',
2212
- 'ywWGDxa',
2213
- 'cLzLCNm',
2214
- 'Bwf0y2G',
2215
- 'B2SGzM8',
2216
- 'DxrVlxm',
2217
- 'z2fSlwm',
2218
- 'BMuGAw4',
2219
- 'DgHVBIa',
2220
- 'j31GoWO',
2221
- 'ywnRigG',
2222
- 'EYbLEgu',
2223
- 'DxrFzge',
2224
- 'Df0UBgu',
2225
- 'DwuGzxy',
2226
- 'oIa1mda',
2227
- 'yxv0Afq',
2228
- 'Ac5MBg8',
2229
- 'yxrOBgK',
2230
- 'uxvLDwu',
2231
- 'z3mkica',
2232
- 'BMDZlMO',
2233
- 'C3rZkcK',
2234
- 'C3LUyWO',
2235
- 'j1nLC3m',
2236
- 'EgL0kda',
2237
- 'Ag9TzsG',
2238
- 'zxHJzxa',
2239
- 'Bsb7C3q',
2240
- 'uLvmrvm',
2241
- 'BgqGC3K',
2242
- 'DgLJyxq',
2243
- 'ienVzgu',
2244
- 'CM4GCge',
2245
- 'icHUBYa',
2246
- 'lsbUzxC',
2247
- 'CM5PBMC',
2248
- 'ocCPktS',
2249
- 'kcKk',
2250
- 'B3qGAxm',
2251
- 'B3COksa',
2252
- 'Ew5J',
2253
- 'Dg9tDhi',
2254
- 'CM9Tihm',
2255
- 'z2fSlxm',
2256
- 'DMvZigK',
2257
- 'icbZzwW',
2258
- 'y29UzMK',
2259
- 'C2GGpsa',
2260
- 'CMuGywi',
2261
- 'DxrVjYW',
2262
- 'igDHBem',
2263
- 'AxiOksW',
2264
- 'lYOQcIa',
2265
- 'j3bPCgu',
2266
- 'AYbHy2m',
2267
- 'kcDHCha',
2268
- 'lMDHBa',
2269
- 'jhTSB2m',
2270
- 'rMfSC2u',
2271
- 'zxHPDcG',
2272
- 'DcbYDw4',
2273
- 'rMLSzu4',
2274
- 'ke9IAMu',
2275
- 'B24GC2u',
2276
- 'BgX5ic0',
2277
- 'idaPigq',
2278
- 'Aw1WB3i',
2279
- 'AwjSzs4',
2280
- 'AguGDxm',
2281
- 'B3DZihu',
2282
- 'zxn0yw0',
2283
- 'ihnLDhq',
2284
- 'ntaXntq2Ahn3zu5U',
2285
- 'CMuTBg8',
2286
- 'igf1DgG',
2287
- 'igfWChi',
2288
- 'BguGDgG',
2289
- 'BNrLEhq',
2290
- 'idq6iem',
2291
- 'CIWGj3m',
2292
- 'zKnSzwe',
2293
- 'y2HTB2q',
2294
- 'sw5ZDge',
2295
- 'tcbPCYa',
2296
- 'BgW7cIa',
2297
- 'kgzZlNi',
2298
- 'DcbKAxm',
2299
- 'yxrLC3q',
2300
- 'DwLYzwq',
2301
- 'u3LUyYa',
2302
- 'id0GCMu',
2303
- 'lcaNlMm',
2304
- 'khyKE3m',
2305
- 'Dgv4DcG',
2306
- 'DgyTocC',
2307
- 'zw52lKm',
2308
- 'yxrOlNC',
2309
- 'z2fSx2m',
2310
- 'jYKGkYa',
2311
- 'BwfYEsa',
2312
- 'x2nSzwe',
2313
- 'CM9Tiha',
2314
- 'lICPlM0',
2315
- 'ywrgAwW',
2316
- 'oWOGih0',
2317
- 'zw50vMu',
2318
- 'lMDHBcC',
2319
- 'BMzPzYa'
2320
- ];
2321
- _0x4078 = function () {
2322
- return _0x3067c8;
2323
- };
2324
- return _0x4078();
2325
- }
785
+
786
+ // =============================================================================
787
+ // Installation Functions - Status Line Script
788
+ // =============================================================================
789
+
790
+ /**
791
+ * Install the status line script to ~/.claude/status_lines/gal-sync-status.py
792
+ *
793
+ * The status line script runs continuously in Claude's status bar, showing
794
+ * sync warnings when the project is not synced with the org's approved config.
795
+ * Silent when synced (avoids status bar spam).
796
+ *
797
+ * Key behaviors:
798
+ * - Idempotent: Checks STATUS_LINE_VERSION marker before writing
799
+ * - Respectful: Won't overwrite user's existing custom statusLine
800
+ * - Registration: Adds to ~/.claude/settings.json statusLine field
801
+ * - Self-cleaning: Script removes itself if GAL CLI is uninstalled
802
+ *
803
+ * @returns {boolean} True if status line was installed or updated, false on error
804
+ */
2326
805
  function installStatusLine() {
2327
- const _0x18672b = {
2328
- _0x4b97fa: 0x357,
2329
- _0x9f1b8: 0x585,
2330
- _0x1ac7ec: 0x624,
2331
- _0x571c68: 0x3ba,
2332
- _0x59d5a6: 0x1d9,
2333
- _0x1018b7: 0x686,
2334
- _0x3c1022: 0x837,
2335
- _0x2216a6: 0x74c,
2336
- _0x3028eb: 0x563,
2337
- _0x546a0c: 0x357,
2338
- _0x1fb2e0: 0xe1,
2339
- _0x2e0ef2: 0x66f,
2340
- _0x5467c3: 0x175,
2341
- _0x1039dc: 0x792,
2342
- _0x1cd4eb: 0x518,
2343
- _0x369f39: 0x77e,
2344
- _0x7ab69d: 0x14e,
2345
- _0x33705b: 0x103,
2346
- _0x5ce644: 0x211,
2347
- _0x209572: 0x51e,
2348
- _0xb31ba1: 0x82f,
2349
- _0xa2c068: 0x82f,
2350
- _0x1dada9: 0x2a6,
2351
- _0x41cc22: 0x232,
2352
- _0x25f229: 0x686,
2353
- _0x22fd9e: 0x837,
2354
- _0x4bbf22: 0x74c,
2355
- _0x45da9b: 0x7ce,
2356
- _0x2c18c8: 0x77c,
2357
- _0x59eebb: 0x6e9,
2358
- _0x23153a: 0x74c,
2359
- _0x557390: 0x113,
2360
- _0x18ba4a: 0x371,
2361
- _0xa1161: 0x6cc,
2362
- _0x433461: 0x54f,
2363
- _0x392223: 0x726,
2364
- _0x1b66aa: 0x3aa,
2365
- _0x11f5e2: 0x425,
2366
- _0x20cdf4: 0x48e,
2367
- _0x50fc1b: 0x792,
2368
- _0xbb285a: 0x518,
2369
- _0x17ef7f: 0x78b,
2370
- _0x142854: 0x469,
2371
- _0x3b07a5: 0x792,
2372
- _0x10e28: 0x518,
2373
- _0x42b6d9: 0x14e,
2374
- _0x4cf84a: 0x65d,
2375
- _0xd2af2e: 0x82f,
2376
- _0x3d3cf6: 0x2a6,
2377
- _0x408594: 0x232,
2378
- _0x174118: 0x686,
2379
- _0x503567: 0x837,
2380
- _0x1e88d8: 0x18b,
2381
- _0x15f51a: 0x348,
2382
- _0x43163e: 0x683,
2383
- _0x50d6a2: 0x6ac,
2384
- _0x27f29d: 0x352,
2385
- _0x2cce11: 0x3ba,
2386
- _0x128aa1: 0x51e,
2387
- _0x3fefd6: 0x82f,
2388
- _0x5796da: 0x18b,
2389
- _0x55bc4e: 0x2e7,
2390
- _0x597638: 0xfb,
2391
- _0x4e5375: 0x7ce,
2392
- _0x4f6688: 0x16b,
2393
- _0x40f242: 0x123,
2394
- _0x4b6265: 0x874,
2395
- _0x3a5fad: 0x661,
2396
- _0x10e52b: 0x7eb
2397
- }, _0x4ec121 = _0x53af, _0x5a767e = path[_0x4ec121(_0x18672b._0x4b97fa)](os[_0x4ec121(_0x18672b._0x9f1b8) + 'ir'](), _0x4ec121(_0x18672b._0x1ac7ec) + 'de'), _0x22232f = path[_0x4ec121(_0x18672b._0x4b97fa)](_0x5a767e, _0x4ec121(_0x18672b._0x571c68) + _0x4ec121(_0x18672b._0x59d5a6) + 'es'), _0x244dd0 = path[_0x4ec121(_0x18672b._0x4b97fa)](_0x22232f, _0x4ec121(_0x18672b._0x1018b7) + _0x4ec121(_0x18672b._0x3c1022) + _0x4ec121(_0x18672b._0x2216a6) + _0x4ec121(_0x18672b._0x3028eb)), _0x3c9767 = path[_0x4ec121(_0x18672b._0x546a0c)](_0x5a767e, _0x4ec121(_0x18672b._0x1fb2e0) + _0x4ec121(_0x18672b._0x2e0ef2) + _0x4ec121(_0x18672b._0x5467c3));
2398
- try {
2399
- let _0x3c4737 = {};
2400
- if (fs[_0x4ec121(_0x18672b._0x1039dc) + _0x4ec121(_0x18672b._0x1cd4eb)](_0x3c9767))
2401
- try {
2402
- _0x3c4737 = JSON[_0x4ec121(_0x18672b._0x369f39)](fs[_0x4ec121(_0x18672b._0x7ab69d) + _0x4ec121(_0x18672b._0x33705b) + 'nc'](_0x3c9767, _0x4ec121(_0x18672b._0x5ce644)));
2403
- } catch {
2404
- _0x3c4737 = {};
2405
- }
2406
- if (_0x3c4737[_0x4ec121(_0x18672b._0x571c68) + _0x4ec121(_0x18672b._0x209572)]?.[_0x4ec121(_0x18672b._0xb31ba1) + 'nd'] && !_0x3c4737[_0x4ec121(_0x18672b._0x571c68) + _0x4ec121(_0x18672b._0x209572)][_0x4ec121(_0x18672b._0xa2c068) + 'nd'][_0x4ec121(_0x18672b._0x1dada9) + _0x4ec121(_0x18672b._0x41cc22)](_0x4ec121(_0x18672b._0x25f229) + _0x4ec121(_0x18672b._0x22fd9e) + _0x4ec121(_0x18672b._0x4bbf22)))
2407
- return console[_0x4ec121(_0x18672b._0x45da9b)](_0x4ec121(_0x18672b._0x2c18c8) + _0x4ec121(_0x18672b._0x59eebb) + _0x4ec121(_0x18672b._0x23153a) + _0x4ec121(_0x18672b._0x557390) + _0x4ec121(_0x18672b._0x18ba4a) + _0x4ec121(_0x18672b._0xa1161) + _0x4ec121(_0x18672b._0x433461) + _0x4ec121(_0x18672b._0x392223) + _0x4ec121(_0x18672b._0x1b66aa) + _0x4ec121(_0x18672b._0x11f5e2) + _0x4ec121(_0x18672b._0x20cdf4)), ![];
2408
- !fs[_0x4ec121(_0x18672b._0x50fc1b) + _0x4ec121(_0x18672b._0xbb285a)](_0x22232f) && fs[_0x4ec121(_0x18672b._0x17ef7f) + _0x4ec121(_0x18672b._0x142854)](_0x22232f, { 'recursive': !![] });
2409
- let _0x18f97d = !![];
2410
- if (fs[_0x4ec121(_0x18672b._0x3b07a5) + _0x4ec121(_0x18672b._0x10e28)](_0x244dd0)) {
2411
- const _0x1dee92 = fs[_0x4ec121(_0x18672b._0x42b6d9) + _0x4ec121(_0x18672b._0x33705b) + 'nc'](_0x244dd0, _0x4ec121(_0x18672b._0x5ce644)), _0x2bd51e = _0x1dee92[_0x4ec121(_0x18672b._0x4cf84a)](/GAL_STATUS_LINE_VERSION = "([^"]+)"/);
2412
- _0x2bd51e && _0x2bd51e[0x1] === STATUS_LINE_VERSION && (_0x3c4737[_0x4ec121(_0x18672b._0x571c68) + _0x4ec121(_0x18672b._0x209572)]?.[_0x4ec121(_0x18672b._0xd2af2e) + 'nd']?.[_0x4ec121(_0x18672b._0x3d3cf6) + _0x4ec121(_0x18672b._0x408594)](_0x4ec121(_0x18672b._0x174118) + _0x4ec121(_0x18672b._0x503567) + _0x4ec121(_0x18672b._0x4bbf22)) && (_0x18f97d = ![]));
806
+ const claudeDir = path.join(os.homedir(), '.claude');
807
+ const statusLinesDir = path.join(claudeDir, 'status_lines');
808
+ const scriptPath = path.join(statusLinesDir, 'gal-sync-status.py');
809
+ const settingsPath = path.join(claudeDir, 'settings.json');
810
+
811
+ try {
812
+ // Check existing settings for custom statusLine
813
+ let settings = {};
814
+ if (fs.existsSync(settingsPath)) {
815
+ try {
816
+ settings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
817
+ } catch {
818
+ settings = {};
819
+ }
820
+ }
821
+
822
+ // Don't overwrite user's custom statusLine (respect user's existing config)
823
+ if (settings.statusLine?.command && !settings.statusLine.command.includes('gal-sync-status')) {
824
+ console.log('ℹ Custom statusLine detected, skipping GAL status line');
825
+ return false;
826
+ }
827
+
828
+ // Create directories if needed
829
+ if (!fs.existsSync(statusLinesDir)) {
830
+ fs.mkdirSync(statusLinesDir, { recursive: true });
831
+ }
832
+
833
+ // Check if script already exists with current version
834
+ let needsUpdate = true;
835
+ if (fs.existsSync(scriptPath)) {
836
+ const existingContent = fs.readFileSync(scriptPath, 'utf-8');
837
+ const versionMatch = existingContent.match(/GAL_STATUS_LINE_VERSION = "([^"]+)"/);
838
+ if (versionMatch && versionMatch[1] === STATUS_LINE_VERSION) {
839
+ // Also check if it's registered in settings
840
+ if (settings.statusLine?.command?.includes('gal-sync-status')) {
841
+ needsUpdate = false;
2413
842
  }
2414
- return _0x18f97d && (fs[_0x4ec121(_0x18672b._0x1e88d8) + _0x4ec121(_0x18672b._0x15f51a) + _0x4ec121(_0x18672b._0x43163e)](_0x244dd0, STATUS_LINE_CONTENT, _0x4ec121(_0x18672b._0x5ce644)), fs[_0x4ec121(_0x18672b._0x50d6a2) + _0x4ec121(_0x18672b._0x142854)](_0x244dd0, _0x4ec121(_0x18672b._0x27f29d)), _0x3c4737[_0x4ec121(_0x18672b._0x2cce11) + _0x4ec121(_0x18672b._0x128aa1)] = {
2415
- 'type': _0x4ec121(_0x18672b._0x3fefd6) + 'nd',
2416
- 'command': _0x244dd0
2417
- }, fs[_0x4ec121(_0x18672b._0x5796da) + _0x4ec121(_0x18672b._0x15f51a) + _0x4ec121(_0x18672b._0x43163e)](_0x3c9767, JSON[_0x4ec121(_0x18672b._0x55bc4e) + _0x4ec121(_0x18672b._0x597638)](_0x3c4737, null, 0x2), _0x4ec121(_0x18672b._0x5ce644)), console[_0x4ec121(_0x18672b._0x4e5375)](_0x4ec121(_0x18672b._0x4f6688) + _0x4ec121(_0x18672b._0x40f242) + _0x4ec121(_0x18672b._0x4b6265) + _0x4ec121(_0x18672b._0x3a5fad) + _0x4ec121(_0x18672b._0x10e52b) + 'ed')), !![];
2418
- } catch (_0x3213f6) {
2419
- return ![];
843
+ }
844
+ }
845
+
846
+ // Write the script file if needed
847
+ if (needsUpdate) {
848
+ fs.writeFileSync(scriptPath, STATUS_LINE_CONTENT, 'utf-8');
849
+ fs.chmodSync(scriptPath, '755');
850
+
851
+ // Register in settings.json
852
+ settings.statusLine = {
853
+ type: 'command',
854
+ command: scriptPath
855
+ };
856
+
857
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2), 'utf-8');
858
+ console.log('✓ GAL status line installed');
2420
859
  }
860
+
861
+ return true;
862
+ } catch (error) {
863
+ // Silent fail - status line is optional enhancement
864
+ return false;
865
+ }
2421
866
  }
867
+
2422
868
  function detectPackageManager() {
2423
- const _0x118feb = {
2424
- _0x43bdfd: 0x1dd,
2425
- _0x245d1b: 0x85b,
2426
- _0x323930: 0x746,
2427
- _0xd5c71a: 0x4cf,
2428
- _0x4570ef: 0x860,
2429
- _0x1dd532: 0x4bb,
2430
- _0x3a91c3: 0x3bc,
2431
- _0x9bf2ad: 0x6da,
2432
- _0x4761d2: 0x74,
2433
- _0x1edf84: 0x817,
2434
- _0x207279: 0x515,
2435
- _0x158750: 0x7c2
2436
- }, _0x476ae2 = _0x53af, _0x115b6c = process[_0x476ae2(_0x118feb._0x43bdfd)][_0x476ae2(_0x118feb._0x245d1b) + _0x476ae2(_0x118feb._0x323930) + _0x476ae2(_0x118feb._0xd5c71a) + _0x476ae2(_0x118feb._0x4570ef) + 't'] || '';
2437
- if (_0x115b6c[_0x476ae2(_0x118feb._0x1dd532) + _0x476ae2(_0x118feb._0x3a91c3)](_0x476ae2(_0x118feb._0x9bf2ad)))
2438
- return _0x476ae2(_0x118feb._0x4761d2);
2439
- if (_0x115b6c[_0x476ae2(_0x118feb._0x1dd532) + _0x476ae2(_0x118feb._0x3a91c3)](_0x476ae2(_0x118feb._0x1edf84)))
2440
- return _0x476ae2(_0x118feb._0x207279);
2441
- return _0x476ae2(_0x118feb._0x158750) + 'wn';
2442
- }
2443
- function _0x53af(_0x2ac867, _0x5452ea) {
2444
- _0x2ac867 = _0x2ac867 - 0x65;
2445
- const _0x407873 = _0x4078();
2446
- let _0x53afa4 = _0x407873[_0x2ac867];
2447
- if (_0x53af['CYHQSX'] === undefined) {
2448
- var _0x10085e = function (_0x5473a6) {
2449
- const _0x139cae = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';
2450
- let _0x51dce9 = '', _0x4719d5 = '';
2451
- for (let _0x47695d = 0x0, _0x2d9813, _0x3b89cc, _0x4c9296 = 0x0; _0x3b89cc = _0x5473a6['charAt'](_0x4c9296++); ~_0x3b89cc && (_0x2d9813 = _0x47695d % 0x4 ? _0x2d9813 * 0x40 + _0x3b89cc : _0x3b89cc, _0x47695d++ % 0x4) ? _0x51dce9 += String['fromCharCode'](0xff & _0x2d9813 >> (-0x2 * _0x47695d & 0x6)) : 0x0) {
2452
- _0x3b89cc = _0x139cae['indexOf'](_0x3b89cc);
2453
- }
2454
- for (let _0x15c7d4 = 0x0, _0x5203e8 = _0x51dce9['length']; _0x15c7d4 < _0x5203e8; _0x15c7d4++) {
2455
- _0x4719d5 += '%' + ('00' + _0x51dce9['charCodeAt'](_0x15c7d4)['toString'](0x10))['slice'](-0x2);
2456
- }
2457
- return decodeURIComponent(_0x4719d5);
2458
- };
2459
- _0x53af['HtepCb'] = _0x10085e, _0x53af['yPVSWW'] = {}, _0x53af['CYHQSX'] = !![];
2460
- }
2461
- const _0x290392 = _0x407873[0x0], _0x2aa324 = _0x2ac867 + _0x290392, _0xf5edc4 = _0x53af['yPVSWW'][_0x2aa324];
2462
- return !_0xf5edc4 ? (_0x53afa4 = _0x53af['HtepCb'](_0x53afa4), _0x53af['yPVSWW'][_0x2aa324] = _0x53afa4) : _0x53afa4 = _0xf5edc4, _0x53afa4;
869
+ const userAgent = process.env.npm_config_user_agent || '';
870
+
871
+ if (userAgent.startsWith('pnpm/')) {
872
+ return 'pnpm';
873
+ }
874
+
875
+ if (userAgent.startsWith('npm/')) {
876
+ return 'npm';
877
+ }
878
+
879
+ return 'unknown';
2463
880
  }
881
+
2464
882
  function recordInstallMetadata() {
2465
- const _0x215371 = {
2466
- _0x36844a: 0x357,
2467
- _0x4ec2b0: 0x585,
2468
- _0x135f3d: 0x693,
2469
- _0x469160: 0x792,
2470
- _0x5d5be: 0x518,
2471
- _0x3d4b27: 0x78b,
2472
- _0x250d55: 0x469,
2473
- _0xfcc4d0: 0x74,
2474
- _0x3ae307: 0x515,
2475
- _0x2e7184: 0x7c2,
2476
- _0x1d759f: 0x535,
2477
- _0x5c1eec: 0xed,
2478
- _0x43db31: 0x59c,
2479
- _0x416bf2: 0x357,
2480
- _0x5167ba: 0x13a,
2481
- _0x2ab6bf: 0x527,
2482
- _0x3faa6c: 0x53c,
2483
- _0x3e1f3f: 0xd8,
2484
- _0x134e4d: 0x2aa,
2485
- _0x387ea3: 0x755,
2486
- _0x196e8a: 0x41b,
2487
- _0x406e74: 0x149,
2488
- _0x3057b8: 0x18b,
2489
- _0x4ad412: 0x348,
2490
- _0x1b3b90: 0x683,
2491
- _0x3dc4cc: 0x2e7,
2492
- _0x525c6c: 0xfb,
2493
- _0x59ee46: 0x211
2494
- }, _0xdc9877 = _0x53af;
2495
- try {
2496
- const _0x28cec6 = path[_0xdc9877(_0x215371._0x36844a)](os[_0xdc9877(_0x215371._0x4ec2b0) + 'ir'](), _0xdc9877(_0x215371._0x135f3d));
2497
- !fs[_0xdc9877(_0x215371._0x469160) + _0xdc9877(_0x215371._0x5d5be)](_0x28cec6) && fs[_0xdc9877(_0x215371._0x3d4b27) + _0xdc9877(_0x215371._0x250d55)](_0x28cec6, { 'recursive': !![] });
2498
- const _0x1db4f7 = detectPackageManager(), _0x50db35 = _0x1db4f7 === _0xdc9877(_0x215371._0xfcc4d0) ? _0xdc9877(_0x215371._0xfcc4d0) : _0x1db4f7 === _0xdc9877(_0x215371._0x3ae307) ? _0xdc9877(_0x215371._0x3ae307) : _0xdc9877(_0x215371._0x2e7184) + 'wn', _0x233199 = path[_0xdc9877(_0x215371._0x36844a)](__dirname, '..', _0xdc9877(_0x215371._0x1d759f), _0xdc9877(_0x215371._0x5c1eec) + _0xdc9877(_0x215371._0x43db31)), _0x1a13cc = path[_0xdc9877(_0x215371._0x416bf2)](_0x28cec6, _0xdc9877(_0x215371._0x5167ba) + _0xdc9877(_0x215371._0x2ab6bf) + _0xdc9877(_0x215371._0x3faa6c) + _0xdc9877(_0x215371._0x3e1f3f) + 'n'), _0x354daf = {
2499
- 'binaryPath': _0x233199,
2500
- 'installedAt': new Date()[_0xdc9877(_0x215371._0x134e4d) + _0xdc9877(_0x215371._0x387ea3) + 'g'](),
2501
- 'method': _0x50db35,
2502
- 'packageManager': _0x1db4f7,
2503
- 'platform': process[_0xdc9877(_0x215371._0x196e8a) + _0xdc9877(_0x215371._0x406e74)],
2504
- 'version': cliVersion
2505
- };
2506
- fs[_0xdc9877(_0x215371._0x3057b8) + _0xdc9877(_0x215371._0x4ad412) + _0xdc9877(_0x215371._0x1b3b90)](_0x1a13cc, JSON[_0xdc9877(_0x215371._0x3dc4cc) + _0xdc9877(_0x215371._0x525c6c)](_0x354daf, null, 0x2), _0xdc9877(_0x215371._0x59ee46));
2507
- } catch {
883
+ try {
884
+ const galDir = path.join(os.homedir(), '.gal');
885
+ if (!fs.existsSync(galDir)) {
886
+ fs.mkdirSync(galDir, { recursive: true });
2508
887
  }
888
+
889
+ const packageManager = detectPackageManager();
890
+ const method = packageManager === 'pnpm' ? 'pnpm' : packageManager === 'npm' ? 'npm' : 'unknown';
891
+ const binaryPath = path.join(__dirname, '..', 'dist', 'index.cjs');
892
+ const metadataPath = path.join(galDir, 'install-metadata.json');
893
+ const metadata = {
894
+ binaryPath,
895
+ installedAt: new Date().toISOString(),
896
+ method,
897
+ packageManager,
898
+ platform: process.platform,
899
+ version: cliVersion,
900
+ };
901
+
902
+ fs.writeFileSync(metadataPath, JSON.stringify(metadata, null, 2), 'utf-8');
903
+ } catch {
904
+ // Silent fail - metadata is best-effort only
905
+ }
2509
906
  }
907
+
908
+ // =============================================================================
909
+ // Main
910
+ // =============================================================================
911
+
2510
912
  function main() {
2511
- const _0x47f649 = {
2512
- _0x37ca14: 0x7ce,
2513
- _0x1d51cd: 0x3f5,
2514
- _0x33278c: 0x217,
2515
- _0x32585f: 0x784,
2516
- _0xc84f24: 0x1ac,
2517
- _0x32f1d4: 0x243,
2518
- _0x3f51d9: 0x276,
2519
- _0x72d297: 0x57d,
2520
- _0x3827a1: 0x339,
2521
- _0x9424fd: 0x297,
2522
- _0x135ec7: 0x29b,
2523
- _0x219b21: 0x2d5,
2524
- _0x100259: 0x7ce,
2525
- _0x48cb71: 0x2e2,
2526
- _0x54e11f: 0x295,
2527
- _0x2e5bf9: 0xee,
2528
- _0x44dc7c: 0x138,
2529
- _0x661220: 0x3e5,
2530
- _0x97de89: 0x6f7,
2531
- _0x1e3f37: 0x742,
2532
- _0x3cc52a: 0x109,
2533
- _0x3d75aa: 0x18e,
2534
- _0x50db05: 0x630,
2535
- _0x15d4ef: 0x60d,
2536
- _0x14b9ad: 0x752,
2537
- _0x35a656: 0x7ce,
2538
- _0x5d2f16: 0x709,
2539
- _0x3a6700: 0x87a,
2540
- _0x22cfdb: 0x588,
2541
- _0x152308: 0x479,
2542
- _0x460869: 0x4ef,
2543
- _0xa28dd3: 0x3d1,
2544
- _0x1ff12f: 0x3b1,
2545
- _0x13efd2: 0x565,
2546
- _0x587042: 0x19c,
2547
- _0x406cf8: 0x376,
2548
- _0x388d54: 0x7ce
2549
- }, _0x45a200 = _0x53af;
2550
- recordInstallMetadata();
2551
- const _0x4debb5 = installHook(), _0x3da103 = installRules(), _0x26af7e = installStatusLine();
2552
- queueTelemetryEvent(), (_0x4debb5 || _0x3da103 || _0x26af7e) && (console[_0x45a200(_0x47f649._0x37ca14)](''), console[_0x45a200(_0x47f649._0x37ca14)](_0x45a200(_0x47f649._0x1d51cd) + _0x45a200(_0x47f649._0x33278c) + _0x45a200(_0x47f649._0x32585f) + _0x45a200(_0x47f649._0xc84f24) + _0x45a200(_0x47f649._0x32f1d4) + _0x45a200(_0x47f649._0x3f51d9) + _0x45a200(_0x47f649._0x72d297) + _0x45a200(_0x47f649._0x3827a1) + _0x45a200(_0x47f649._0x9424fd) + _0x45a200(_0x47f649._0x135ec7) + _0x45a200(_0x47f649._0x219b21)), console[_0x45a200(_0x47f649._0x37ca14)](''), console[_0x45a200(_0x47f649._0x100259)](_0x45a200(_0x47f649._0x48cb71) + _0x45a200(_0x47f649._0x54e11f) + ':'), console[_0x45a200(_0x47f649._0x100259)](_0x45a200(_0x47f649._0x2e5bf9) + _0x45a200(_0x47f649._0x44dc7c) + _0x45a200(_0x47f649._0x661220) + _0x45a200(_0x47f649._0x97de89) + _0x45a200(_0x47f649._0x1e3f37) + _0x45a200(_0x47f649._0x3cc52a) + _0x45a200(_0x47f649._0x3d75aa) + _0x45a200(_0x47f649._0x50db05) + _0x45a200(_0x47f649._0x15d4ef) + _0x45a200(_0x47f649._0x14b9ad)), console[_0x45a200(_0x47f649._0x35a656)](_0x45a200(_0x47f649._0x5d2f16) + _0x45a200(_0x47f649._0x3a6700) + _0x45a200(_0x47f649._0x22cfdb) + _0x45a200(_0x47f649._0x152308) + _0x45a200(_0x47f649._0x1e3f37) + _0x45a200(_0x47f649._0x460869) + _0x45a200(_0x47f649._0xa28dd3) + _0x45a200(_0x47f649._0x1ff12f) + _0x45a200(_0x47f649._0x13efd2) + _0x45a200(_0x47f649._0x587042) + _0x45a200(_0x47f649._0x406cf8)), console[_0x45a200(_0x47f649._0x388d54)](''));
913
+ recordInstallMetadata();
914
+ const hookInstalled = installHook();
915
+ const rulesInstalled = installRules();
916
+ const statusLineInstalled = installStatusLine();
917
+
918
+ // Queue telemetry event (GAL-114)
919
+ queueTelemetryEvent();
920
+
921
+ if (hookInstalled || rulesInstalled || statusLineInstalled) {
922
+ console.log('');
923
+ console.log('Restart Claude Code/Cursor for changes to take effect.');
924
+ console.log('');
925
+ console.log('Next steps:');
926
+ console.log(' 1. gal auth login - Authenticate with GitHub');
927
+ console.log(' 2. gal sync --pull - Download org-approved config');
928
+ console.log('');
929
+ }
2553
930
  }
2554
- main();
931
+
932
+ main();