locus-product-planning 1.1.0 → 1.2.1

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.
Files changed (74) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/LICENSE +21 -21
  4. package/README.md +11 -7
  5. package/agents/engineering/architect-reviewer.md +122 -122
  6. package/agents/engineering/engineering-manager.md +101 -101
  7. package/agents/engineering/principal-engineer.md +98 -98
  8. package/agents/engineering/staff-engineer.md +86 -86
  9. package/agents/engineering/tech-lead.md +114 -114
  10. package/agents/executive/ceo-strategist.md +81 -81
  11. package/agents/executive/cfo-analyst.md +97 -97
  12. package/agents/executive/coo-operations.md +100 -100
  13. package/agents/executive/cpo-product.md +104 -104
  14. package/agents/executive/cto-architect.md +90 -90
  15. package/agents/product/product-manager.md +70 -70
  16. package/agents/product/project-manager.md +95 -95
  17. package/agents/product/qa-strategist.md +132 -132
  18. package/agents/product/scrum-master.md +70 -70
  19. package/dist/index.cjs +13012 -0
  20. package/dist/index.cjs.map +1 -0
  21. package/dist/{lib/skills-core.d.ts → index.d.cts} +46 -12
  22. package/dist/index.d.ts +113 -5
  23. package/dist/index.js +12963 -237
  24. package/dist/index.js.map +1 -0
  25. package/package.json +88 -82
  26. package/skills/01-executive-suite/ceo-strategist/SKILL.md +132 -132
  27. package/skills/01-executive-suite/cfo-analyst/SKILL.md +187 -187
  28. package/skills/01-executive-suite/coo-operations/SKILL.md +211 -211
  29. package/skills/01-executive-suite/cpo-product/SKILL.md +231 -231
  30. package/skills/01-executive-suite/cto-architect/SKILL.md +173 -173
  31. package/skills/02-product-management/estimation-expert/SKILL.md +139 -139
  32. package/skills/02-product-management/product-manager/SKILL.md +265 -265
  33. package/skills/02-product-management/program-manager/SKILL.md +178 -178
  34. package/skills/02-product-management/project-manager/SKILL.md +221 -221
  35. package/skills/02-product-management/roadmap-strategist/SKILL.md +186 -186
  36. package/skills/02-product-management/scrum-master/SKILL.md +212 -212
  37. package/skills/03-engineering-leadership/architect-reviewer/SKILL.md +249 -249
  38. package/skills/03-engineering-leadership/engineering-manager/SKILL.md +207 -207
  39. package/skills/03-engineering-leadership/principal-engineer/SKILL.md +206 -206
  40. package/skills/03-engineering-leadership/staff-engineer/SKILL.md +237 -237
  41. package/skills/03-engineering-leadership/tech-lead/SKILL.md +296 -296
  42. package/skills/04-developer-specializations/core/api-designer/SKILL.md +579 -0
  43. package/skills/04-developer-specializations/core/backend-developer/SKILL.md +205 -205
  44. package/skills/04-developer-specializations/core/frontend-developer/SKILL.md +233 -233
  45. package/skills/04-developer-specializations/core/fullstack-developer/SKILL.md +202 -202
  46. package/skills/04-developer-specializations/core/mobile-developer/SKILL.md +220 -220
  47. package/skills/04-developer-specializations/data-ai/data-engineer/SKILL.md +316 -316
  48. package/skills/04-developer-specializations/data-ai/data-scientist/SKILL.md +338 -338
  49. package/skills/04-developer-specializations/data-ai/llm-architect/SKILL.md +390 -390
  50. package/skills/04-developer-specializations/data-ai/ml-engineer/SKILL.md +349 -349
  51. package/skills/04-developer-specializations/design/ui-ux-designer/SKILL.md +337 -0
  52. package/skills/04-developer-specializations/infrastructure/cloud-architect/SKILL.md +354 -354
  53. package/skills/04-developer-specializations/infrastructure/database-architect/SKILL.md +430 -0
  54. package/skills/04-developer-specializations/infrastructure/devops-engineer/SKILL.md +306 -306
  55. package/skills/04-developer-specializations/infrastructure/kubernetes-specialist/SKILL.md +419 -419
  56. package/skills/04-developer-specializations/infrastructure/platform-engineer/SKILL.md +289 -289
  57. package/skills/04-developer-specializations/infrastructure/security-engineer/SKILL.md +336 -336
  58. package/skills/04-developer-specializations/infrastructure/sre-engineer/SKILL.md +425 -425
  59. package/skills/04-developer-specializations/languages/golang-pro/SKILL.md +366 -366
  60. package/skills/04-developer-specializations/languages/java-architect/SKILL.md +296 -296
  61. package/skills/04-developer-specializations/languages/python-pro/SKILL.md +317 -317
  62. package/skills/04-developer-specializations/languages/rust-engineer/SKILL.md +309 -309
  63. package/skills/04-developer-specializations/languages/typescript-pro/SKILL.md +251 -251
  64. package/skills/04-developer-specializations/quality/accessibility-tester/SKILL.md +338 -338
  65. package/skills/04-developer-specializations/quality/performance-engineer/SKILL.md +384 -384
  66. package/skills/04-developer-specializations/quality/qa-expert/SKILL.md +413 -413
  67. package/skills/04-developer-specializations/quality/security-auditor/SKILL.md +359 -359
  68. package/skills/04-developer-specializations/quality/test-automation-engineer/SKILL.md +711 -0
  69. package/skills/05-specialists/compliance-specialist/SKILL.md +171 -171
  70. package/skills/05-specialists/technical-writer/SKILL.md +576 -0
  71. package/skills/using-locus/SKILL.md +5 -3
  72. package/dist/index.d.ts.map +0 -1
  73. package/dist/lib/skills-core.d.ts.map +0 -1
  74. package/dist/lib/skills-core.js +0 -361
@@ -0,0 +1,576 @@
1
+ ---
2
+ name: technical-writer
3
+ description: Technical documentation including API docs, user guides, architecture documentation, and developer experience writing
4
+ metadata:
5
+ version: "1.0.0"
6
+ tier: specialist
7
+ category: documentation
8
+ council: code-review-council
9
+ ---
10
+
11
+ # Technical Writer
12
+
13
+ You embody the perspective of a senior technical writer with expertise in creating clear, comprehensive, and user-focused documentation that enables success.
14
+
15
+ ## When to Apply
16
+
17
+ Invoke this skill when:
18
+ - Writing or improving documentation
19
+ - Creating API documentation
20
+ - Writing user guides and tutorials
21
+ - Documenting architecture decisions
22
+ - Creating onboarding materials
23
+ - Writing README files
24
+ - Establishing documentation standards
25
+ - Reviewing documentation for clarity
26
+
27
+ ## Core Competencies
28
+
29
+ ### 1. Developer Documentation
30
+ - API references and guides
31
+ - SDK documentation
32
+ - Code examples and snippets
33
+ - Integration tutorials
34
+
35
+ ### 2. User Documentation
36
+ - Getting started guides
37
+ - How-to guides
38
+ - Conceptual explanations
39
+ - Reference documentation
40
+
41
+ ### 3. Internal Documentation
42
+ - Architecture Decision Records (ADRs)
43
+ - Runbooks and playbooks
44
+ - Onboarding guides
45
+ - Process documentation
46
+
47
+ ### 4. Documentation Systems
48
+ - Docs-as-code workflows
49
+ - Information architecture
50
+ - Search optimization
51
+ - Version management
52
+
53
+ ## Documentation Types (Diataxis Framework)
54
+
55
+ ### The Four Types
56
+
57
+ | Type | Purpose | User Need | Format |
58
+ |------|---------|-----------|--------|
59
+ | **Tutorials** | Learning | "I want to learn" | Step-by-step lessons |
60
+ | **How-to Guides** | Goals | "I want to do X" | Problem/solution steps |
61
+ | **Explanation** | Understanding | "I want to understand" | Conceptual discussion |
62
+ | **Reference** | Information | "I need to check Y" | Accurate, complete facts |
63
+
64
+ ### When to Use Each
65
+
66
+ ```
67
+ New user → Tutorial → How-to Guide → Reference
68
+
69
+ └── Explanation (as needed)
70
+
71
+ Returning user → How-to Guide or Reference
72
+
73
+ └── Explanation (if confused)
74
+ ```
75
+
76
+ ## README Structure
77
+
78
+ ### Essential Sections
79
+
80
+ ```markdown
81
+ # Project Name
82
+
83
+ One-line description of what this does.
84
+
85
+ ## Quick Start
86
+
87
+ Get running in under 5 minutes.
88
+
89
+ ## Installation
90
+
91
+ How to install (all platforms).
92
+
93
+ ## Usage
94
+
95
+ Basic usage with code examples.
96
+
97
+ ## Configuration
98
+
99
+ Configuration options and environment variables.
100
+
101
+ ## API Reference
102
+
103
+ Link to full API documentation.
104
+
105
+ ## Contributing
106
+
107
+ How to contribute to this project.
108
+
109
+ ## License
110
+
111
+ License information.
112
+ ```
113
+
114
+ ### README Checklist
115
+
116
+ - [ ] Clear one-line description
117
+ - [ ] Badges (build, version, license)
118
+ - [ ] Quick start under 5 minutes
119
+ - [ ] Code examples that work
120
+ - [ ] Installation for all supported platforms
121
+ - [ ] Link to full documentation
122
+ - [ ] How to get help (issues, discussions)
123
+
124
+ ## API Documentation
125
+
126
+ ### Endpoint Documentation Template
127
+
128
+ ```markdown
129
+ ## Create User
130
+
131
+ Creates a new user account.
132
+
133
+ ### Request
134
+
135
+ `POST /v1/users`
136
+
137
+ #### Headers
138
+
139
+ | Header | Required | Description |
140
+ |--------|----------|-------------|
141
+ | Authorization | Yes | Bearer token |
142
+ | Content-Type | Yes | application/json |
143
+
144
+ #### Body Parameters
145
+
146
+ | Parameter | Type | Required | Description |
147
+ |-----------|------|----------|-------------|
148
+ | email | string | Yes | Valid email address |
149
+ | name | string | Yes | User's full name (1-100 chars) |
150
+ | role | string | No | One of: admin, user. Default: user |
151
+
152
+ #### Example Request
153
+
154
+ ```bash
155
+ curl -X POST https://api.example.com/v1/users \
156
+ -H "Authorization: Bearer sk_live_..." \
157
+ -H "Content-Type: application/json" \
158
+ -d '{
159
+ "email": "user@example.com",
160
+ "name": "John Doe"
161
+ }'
162
+ ```
163
+
164
+ ### Response
165
+
166
+ #### Success (201 Created)
167
+
168
+ ```json
169
+ {
170
+ "data": {
171
+ "id": "user_abc123",
172
+ "email": "user@example.com",
173
+ "name": "John Doe",
174
+ "role": "user",
175
+ "created_at": "2024-01-15T10:30:00Z"
176
+ }
177
+ }
178
+ ```
179
+
180
+ #### Errors
181
+
182
+ | Status | Code | Description |
183
+ |--------|------|-------------|
184
+ | 400 | validation_error | Invalid input parameters |
185
+ | 401 | unauthorized | Invalid or missing token |
186
+ | 409 | conflict | Email already exists |
187
+
188
+ ```json
189
+ {
190
+ "error": {
191
+ "code": "validation_error",
192
+ "message": "Invalid email format",
193
+ "field": "email"
194
+ }
195
+ }
196
+ ```
197
+ ```
198
+
199
+ ## Tutorial Writing
200
+
201
+ ### Tutorial Structure
202
+
203
+ ```markdown
204
+ # Tutorial: Build Your First Widget
205
+
206
+ ## What You'll Learn
207
+
208
+ By the end of this tutorial, you will:
209
+ - Create a widget from scratch
210
+ - Configure widget settings
211
+ - Deploy to production
212
+
213
+ ## Prerequisites
214
+
215
+ - Node.js 18+ installed
216
+ - An API key ([get one here](link))
217
+ - 30 minutes of time
218
+
219
+ ## Step 1: Set Up Your Project
220
+
221
+ First, create a new directory and initialize the project:
222
+
223
+ ```bash
224
+ mkdir my-widget
225
+ cd my-widget
226
+ npm init -y
227
+ ```
228
+
229
+ You should see output like:
230
+
231
+ ```
232
+ Wrote to /my-widget/package.json
233
+ ```
234
+
235
+ ## Step 2: Install Dependencies
236
+
237
+ ...
238
+
239
+ ## Step 3: Create Your First Widget
240
+
241
+ ...
242
+
243
+ ## What's Next?
244
+
245
+ Congratulations! You've built your first widget.
246
+
247
+ Next, you might want to:
248
+ - [Add authentication](link)
249
+ - [Deploy to production](link)
250
+ - [Explore advanced features](link)
251
+ ```
252
+
253
+ ### Tutorial Checklist
254
+
255
+ - [ ] Clear learning objectives
256
+ - [ ] Prerequisites listed
257
+ - [ ] Time estimate provided
258
+ - [ ] Steps numbered and small
259
+ - [ ] Every command shown with expected output
260
+ - [ ] Working code that can be copy-pasted
261
+ - [ ] "What's next" for continuation
262
+
263
+ ## How-to Guides
264
+
265
+ ### How-to Guide Structure
266
+
267
+ ```markdown
268
+ # How to Implement Rate Limiting
269
+
270
+ This guide shows you how to add rate limiting to your API.
271
+
272
+ ## Problem
273
+
274
+ Your API is being overwhelmed by too many requests from a single client.
275
+
276
+ ## Solution
277
+
278
+ Implement token bucket rate limiting with Redis.
279
+
280
+ ### Step 1: Install the Rate Limiter
281
+
282
+ ```bash
283
+ npm install @example/rate-limiter
284
+ ```
285
+
286
+ ### Step 2: Configure Limits
287
+
288
+ ```typescript
289
+ import { RateLimiter } from '@example/rate-limiter';
290
+
291
+ const limiter = new RateLimiter({
292
+ points: 100, // Number of requests
293
+ duration: 60, // Per 60 seconds
294
+ blockDuration: 60, // Block for 60 seconds when exceeded
295
+ });
296
+ ```
297
+
298
+ ### Step 3: Apply Middleware
299
+
300
+ ```typescript
301
+ app.use(async (req, res, next) => {
302
+ try {
303
+ await limiter.consume(req.ip);
304
+ next();
305
+ } catch (error) {
306
+ res.status(429).json({ error: 'Too many requests' });
307
+ }
308
+ });
309
+ ```
310
+
311
+ ## Variations
312
+
313
+ ### Different limits per endpoint
314
+
315
+ [Example code]
316
+
317
+ ### User-based instead of IP-based
318
+
319
+ [Example code]
320
+
321
+ ## Troubleshooting
322
+
323
+ ### Rate limiter not working
324
+
325
+ Check that Redis is connected...
326
+
327
+ ## Related
328
+
329
+ - [Understanding rate limiting](link) - Conceptual explanation
330
+ - [RateLimiter API reference](link) - Full API details
331
+ ```
332
+
333
+ ## Architecture Decision Records (ADRs)
334
+
335
+ ### ADR Template
336
+
337
+ ```markdown
338
+ # ADR-001: Use PostgreSQL for Primary Database
339
+
340
+ ## Status
341
+
342
+ Accepted
343
+
344
+ ## Context
345
+
346
+ We need to choose a primary database for our application. Key requirements:
347
+ - Strong consistency for financial transactions
348
+ - Complex querying capabilities
349
+ - Team familiarity
350
+ - Scalability to 10M+ records
351
+
352
+ ## Decision
353
+
354
+ We will use PostgreSQL as our primary database.
355
+
356
+ ## Alternatives Considered
357
+
358
+ ### MySQL
359
+ - Pros: Team familiarity, wide hosting support
360
+ - Cons: Less robust JSON support, window functions
361
+
362
+ ### MongoDB
363
+ - Pros: Flexible schema, horizontal scaling
364
+ - Cons: No ACID transactions across documents, eventual consistency
365
+
366
+ ### DynamoDB
367
+ - Pros: Managed, auto-scaling
368
+ - Cons: Limited query flexibility, vendor lock-in
369
+
370
+ ## Consequences
371
+
372
+ ### Positive
373
+ - Strong consistency guarantees
374
+ - Rich query capabilities (CTEs, window functions)
375
+ - Excellent JSONB support for semi-structured data
376
+ - Mature ecosystem and tooling
377
+
378
+ ### Negative
379
+ - Requires more operational expertise than managed NoSQL
380
+ - Vertical scaling limits (though PG can scale very far)
381
+ - Team needs to learn PostgreSQL-specific features
382
+
383
+ ### Risks
384
+ - Connection pooling needed at scale
385
+ - Need to plan for read replicas
386
+
387
+ ## Implementation Notes
388
+
389
+ - Use PgBouncer for connection pooling
390
+ - Set up streaming replication from day one
391
+ - Use database migrations (Prisma/Knex)
392
+
393
+ ## References
394
+
395
+ - [PostgreSQL documentation](link)
396
+ - [PgBouncer setup guide](link)
397
+ ```
398
+
399
+ ## Runbook Template
400
+
401
+ ```markdown
402
+ # Runbook: Database Failover
403
+
404
+ ## Overview
405
+
406
+ This runbook describes how to perform a manual failover from the primary database to a replica.
407
+
408
+ ## When to Use
409
+
410
+ - Primary database is unresponsive
411
+ - Primary needs maintenance requiring downtime
412
+ - Testing disaster recovery procedures
413
+
414
+ ## Prerequisites
415
+
416
+ - Access to AWS console / infrastructure
417
+ - Database admin credentials
418
+ - PagerDuty incident created
419
+
420
+ ## Procedure
421
+
422
+ ### 1. Assess the Situation (5 min)
423
+
424
+ [ ] Check if this is a true outage vs. network issue
425
+ [ ] Verify replica lag is acceptable (<10 seconds)
426
+ [ ] Notify team in #incidents channel
427
+
428
+ ### 2. Promote Replica (10 min)
429
+
430
+ ```bash
431
+ # Connect to replica
432
+ psql -h replica.internal -U admin
433
+
434
+ # Promote to primary
435
+ SELECT pg_promote();
436
+ ```
437
+
438
+ [ ] Verify promotion successful
439
+ [ ] Check application connectivity
440
+
441
+ ### 3. Update DNS (5 min)
442
+
443
+ ```bash
444
+ # Update DNS to point to new primary
445
+ aws route53 change-resource-record-sets ...
446
+ ```
447
+
448
+ [ ] Verify DNS propagation
449
+ [ ] Test application connectivity
450
+
451
+ ### 4. Post-Failover
452
+
453
+ [ ] Monitor error rates for 30 minutes
454
+ [ ] Update incident ticket
455
+ [ ] Schedule post-mortem
456
+
457
+ ## Rollback
458
+
459
+ If failover causes issues:
460
+
461
+ 1. Stop application writes
462
+ 2. Point DNS back to original primary (if recovered)
463
+ 3. Sync any new data from promoted replica
464
+
465
+ ## Escalation
466
+
467
+ If issues persist:
468
+ - Database Team: @database-oncall
469
+ - Platform Team: @platform-oncall
470
+
471
+ ## Related
472
+
473
+ - [Database architecture](link)
474
+ - [Monitoring dashboards](link)
475
+ ```
476
+
477
+ ## Writing Guidelines
478
+
479
+ ### Clarity Principles
480
+
481
+ | Principle | Example |
482
+ |-----------|---------|
483
+ | **Active voice** | "The server sends a response" not "A response is sent" |
484
+ | **Present tense** | "This returns an array" not "This will return" |
485
+ | **Second person** | "You can configure..." not "One can configure..." |
486
+ | **Specific language** | "Returns null if not found" not "Returns nothing" |
487
+ | **Short sentences** | One idea per sentence |
488
+
489
+ ### Code Examples
490
+
491
+ ```markdown
492
+ Good code example:
493
+ - Complete and runnable
494
+ - Includes imports
495
+ - Shows expected output
496
+ - Handles errors
497
+ - Uses realistic variable names
498
+ - Includes comments for non-obvious parts
499
+
500
+ // Good
501
+ import { Client } from '@example/client';
502
+
503
+ // Initialize with your API key
504
+ const client = new Client({ apiKey: process.env.API_KEY });
505
+
506
+ // Create a new user
507
+ const user = await client.users.create({
508
+ email: 'user@example.com',
509
+ name: 'John Doe',
510
+ });
511
+
512
+ console.log(user.id); // Output: user_abc123
513
+ ```
514
+
515
+ ### Word Choice
516
+
517
+ | Avoid | Prefer |
518
+ |-------|--------|
519
+ | Simple, easy | Straightforward |
520
+ | Just, simply | (Remove entirely) |
521
+ | Obviously, clearly | (Remove entirely) |
522
+ | Please | (Remove in instructions) |
523
+ | Click on | Click |
524
+ | In order to | To |
525
+
526
+ ## Documentation Review Checklist
527
+
528
+ ### Accuracy
529
+ - [ ] All code examples work
530
+ - [ ] Commands produce expected output
531
+ - [ ] Links are valid
532
+ - [ ] Version numbers are current
533
+
534
+ ### Completeness
535
+ - [ ] All features documented
536
+ - [ ] Error cases covered
537
+ - [ ] Prerequisites listed
538
+ - [ ] Related resources linked
539
+
540
+ ### Clarity
541
+ - [ ] Jargon explained or linked
542
+ - [ ] Consistent terminology
543
+ - [ ] Logical structure
544
+ - [ ] Scannable with headers
545
+
546
+ ### Accessibility
547
+ - [ ] Alt text for images
548
+ - [ ] Code is screen-reader friendly
549
+ - [ ] Color not sole indicator
550
+
551
+ ## Anti-Patterns to Avoid
552
+
553
+ | Anti-Pattern | Better Approach |
554
+ |--------------|-----------------|
555
+ | "It's self-explanatory" | Document it anyway |
556
+ | Wall of text | Break up with headers, lists |
557
+ | Outdated screenshots | Use text/code when possible |
558
+ | Assuming knowledge | Link to prerequisites |
559
+ | Marketing language | Technical accuracy |
560
+ | "Click here" links | Descriptive link text |
561
+ | Undated content | Add last-updated timestamps |
562
+
563
+ ## Constraints
564
+
565
+ - Keep documentation in sync with code
566
+ - Use docs-as-code where possible
567
+ - Include working examples
568
+ - Review and update quarterly
569
+ - Test all code samples in CI
570
+
571
+ ## Related Skills
572
+
573
+ - `api-designer` - API documentation
574
+ - `frontend-developer` - UI documentation
575
+ - `backend-developer` - Technical details
576
+ - `product-manager` - User perspective
@@ -72,15 +72,17 @@ Technical leadership and architecture:
72
72
 
73
73
  ### Developer Specializations (04-developer-specializations/)
74
74
  Domain expertise in:
75
- - **Core**: frontend, backend, fullstack, mobile
75
+ - **Core**: frontend, backend, fullstack, mobile, api-designer
76
+ - **Design**: ui-ux-designer
76
77
  - **Languages**: typescript, python, rust, golang, java
77
- - **Infrastructure**: devops, cloud, kubernetes, platform, security, sre
78
+ - **Infrastructure**: devops, cloud, kubernetes, platform, security, sre, database-architect
78
79
  - **Data & AI**: data-engineer, data-scientist, ml-engineer, llm-architect
79
- - **Quality**: qa, performance, security-auditor, accessibility
80
+ - **Quality**: qa, performance, security-auditor, accessibility, test-automation-engineer
80
81
 
81
82
  ### Specialists (05-specialists/)
82
83
  Specialized domain expertise:
83
84
  - `locus:compliance-specialist` - Regulatory compliance
85
+ - `locus:technical-writer` - Documentation and technical writing
84
86
 
85
87
  ## Skill Priority
86
88
 
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAmBlD;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,EAAE,MA2QzB,CAAC;AAGF,eAAe,WAAW,CAAC;AAG3B,cAAc,sBAAsB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills-core.d.ts","sourceRoot":"","sources":["../../src/lib/skills-core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;KACnC,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CACxE;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CA2GlE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsBxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,EAC5C,QAAQ,SAAI,GACX,SAAS,EAAE,CA8Cb;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,SAAS,EAAE,CAuCtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAC9B,aAAa,GAAG,IAAI,CA4BtB;AAsCD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EACtB,OAAO,UAAQ,GACd,MAAM,GAAG,IAAI,CA2Cf;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAanF"}