@trohde/earos 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/assets/init/.agents/skills/earos-assess/SKILL.md +2 -2
- package/assets/init/.agents/skills/earos-assess/references/output-templates.md +61 -67
- package/assets/init/.agents/skills/earos-calibrate/SKILL.md +1 -1
- package/assets/init/.agents/skills/earos-calibrate/references/calibration-protocol.md +1 -1
- package/assets/init/.agents/skills/earos-create/references/validation-checklist.md +2 -2
- package/assets/init/.agents/skills/earos-profile-author/SKILL.md +1 -1
- package/assets/init/CLAUDE.md +46 -8
- package/assets/init/README.md +5 -6
- package/assets/init/core/core-meta-rubric.yaml +1 -1
- package/assets/init/docs/getting-started.md +20 -42
- package/assets/init/docs/onboarding/agent-assisted.md +2 -4
- package/assets/init/docs/onboarding/first-assessment.md +9 -9
- package/assets/init/docs/onboarding/governed-review.md +26 -20
- package/assets/init/docs/onboarding/overview.md +36 -36
- package/assets/init/docs/onboarding/scaling-optimization.md +2 -4
- package/assets/init/docs/profile-authoring-guide.md +1 -1
- package/assets/init/docs/terminology.md +4 -4
- package/assets/init/profiles/reference-architecture.yaml +1 -1
- package/assets/init/standard/EAROS.md +6 -16
- package/bin.js +1 -1
- package/dist/assets/{_basePickBy-tjzli7kg.js → _basePickBy-PmSUrUsK.js} +1 -1
- package/dist/assets/{_baseUniq-BDIo3mC7.js → _baseUniq-HuZouVIz.js} +1 -1
- package/dist/assets/{arc-BNok2G7z.js → arc-CJFxtF3d.js} +1 -1
- package/dist/assets/{architectureDiagram-2XIMDMQ5-BfsgXkPf.js → architectureDiagram-2XIMDMQ5-XA-oU2UG.js} +1 -1
- package/dist/assets/{blockDiagram-WCTKOSBZ-CHbtvtwm.js → blockDiagram-WCTKOSBZ-Oxp-wAST.js} +1 -1
- package/dist/assets/{c4Diagram-IC4MRINW-DbyeYqk4.js → c4Diagram-IC4MRINW-D8m5hQH9.js} +1 -1
- package/dist/assets/channel-SoktpVBQ.js +1 -0
- package/dist/assets/{chunk-4BX2VUAB-y_kN5vwb.js → chunk-4BX2VUAB-D2kBTn2O.js} +1 -1
- package/dist/assets/{chunk-55IACEB6-nKxG4YB4.js → chunk-55IACEB6-Dxqrf5oZ.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-G8-DaCn0.js → chunk-FMBD7UC4-DoOEFFQC.js} +1 -1
- package/dist/assets/{chunk-JSJVCQXG-CSg9GaGK.js → chunk-JSJVCQXG-BerphV2K.js} +1 -1
- package/dist/assets/{chunk-KX2RTZJC-Cvc1NNLo.js → chunk-KX2RTZJC-CxUAqT05.js} +1 -1
- package/dist/assets/{chunk-NQ4KR5QH-BdgusETF.js → chunk-NQ4KR5QH-fCqZgFkU.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-C3Be-8_s.js → chunk-QZHKN3VN-HlpHnJEy.js} +1 -1
- package/dist/assets/{chunk-WL4C6EOR-BYx-KVJV.js → chunk-WL4C6EOR-D9yxAHyd.js} +1 -1
- package/dist/assets/classDiagram-VBA2DB6C-BT2AdZTe.js +1 -0
- package/dist/assets/classDiagram-v2-RAHNMMFH-BT2AdZTe.js +1 -0
- package/dist/assets/clone-DOjIfi5r.js +1 -0
- package/dist/assets/{cose-bilkent-S5V4N54A-WC4p5ck2.js → cose-bilkent-S5V4N54A-F5xOBvqW.js} +1 -1
- package/dist/assets/{dagre-KLK3FWXG-DFuXM_09.js → dagre-KLK3FWXG-CD3BTpHv.js} +1 -1
- package/dist/assets/{diagram-E7M64L7V-CY5dFsoB.js → diagram-E7M64L7V-C3D9MCay.js} +1 -1
- package/dist/assets/{diagram-IFDJBPK2-CdbIPwKf.js → diagram-IFDJBPK2-zJBVM-GK.js} +1 -1
- package/dist/assets/{diagram-P4PSJMXO-Dj-Y2TLI.js → diagram-P4PSJMXO-BrmFZOLB.js} +1 -1
- package/dist/assets/{erDiagram-INFDFZHY-CRxURSRx.js → erDiagram-INFDFZHY-aSMhKiV2.js} +1 -1
- package/dist/assets/{flowDiagram-PKNHOUZH-DVdG_DX2.js → flowDiagram-PKNHOUZH-DwgX7l8F.js} +1 -1
- package/dist/assets/{ganttDiagram-A5KZAMGK-u-F-vtEM.js → ganttDiagram-A5KZAMGK-C57Hz6QW.js} +1 -1
- package/dist/assets/{gitGraphDiagram-K3NZZRJ6-9hE1rUxw.js → gitGraphDiagram-K3NZZRJ6-CuchqqGh.js} +1 -1
- package/dist/assets/{graph-DGzCagqF.js → graph-CPFGBV5J.js} +1 -1
- package/dist/assets/{index-RCn_0Vmo.js → index-DMt1cpG6.js} +124 -124
- package/dist/assets/{infoDiagram-LFFYTUFH-Doiw2_yz.js → infoDiagram-LFFYTUFH-Dd_5tfX7.js} +1 -1
- package/dist/assets/{ishikawaDiagram-PHBUUO56-CideeqfA.js → ishikawaDiagram-PHBUUO56-DwosSEvT.js} +1 -1
- package/dist/assets/{journeyDiagram-4ABVD52K-CEM9jUEi.js → journeyDiagram-4ABVD52K-BuCxcsX0.js} +1 -1
- package/dist/assets/{kanban-definition-K7BYSVSG-v1WwkrFT.js → kanban-definition-K7BYSVSG-DF_1UCkW.js} +1 -1
- package/dist/assets/{layout-BJNRwUHc.js → layout-DIcS6m1g.js} +1 -1
- package/dist/assets/{linear-CBgec4jE.js → linear-BXkwBhoJ.js} +1 -1
- package/dist/assets/{mindmap-definition-YRQLILUH-DpVEEU6a.js → mindmap-definition-YRQLILUH-DcDvYagd.js} +1 -1
- package/dist/assets/{pieDiagram-SKSYHLDU-DykxPoNT.js → pieDiagram-SKSYHLDU-BmeDeWDM.js} +1 -1
- package/dist/assets/{quadrantDiagram-337W2JSQ-vjyZoEP1.js → quadrantDiagram-337W2JSQ-3zfjULUM.js} +1 -1
- package/dist/assets/{requirementDiagram-Z7DCOOCP-CTyxfX0q.js → requirementDiagram-Z7DCOOCP-B2wQMJpq.js} +1 -1
- package/dist/assets/{sankeyDiagram-WA2Y5GQK-D4D8fO6M.js → sankeyDiagram-WA2Y5GQK-__kKlCTq.js} +1 -1
- package/dist/assets/{sequenceDiagram-2WXFIKYE-3z1v9Ki2.js → sequenceDiagram-2WXFIKYE-B7O81Vih.js} +1 -1
- package/dist/assets/{stateDiagram-RAJIS63D-DObK1vcA.js → stateDiagram-RAJIS63D-CcJaDrAK.js} +1 -1
- package/dist/assets/stateDiagram-v2-FVOUBMTO-B2goOPt-.js +1 -0
- package/dist/assets/{timeline-definition-YZTLITO2-0soOlZ-G.js → timeline-definition-YZTLITO2-DSaQQqIU.js} +1 -1
- package/dist/assets/{treemap-KZPCXAKY-Bv1wLSGh.js → treemap-KZPCXAKY-9Hcrd8XD.js} +1 -1
- package/dist/assets/{vennDiagram-LZ73GAT5-BujcJNFn.js → vennDiagram-LZ73GAT5-BqHNyca2.js} +1 -1
- package/dist/assets/{xychartDiagram-JWTSCODW--HI8jfYV.js → xychartDiagram-JWTSCODW-BqeYf6Fk.js} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/assets/channel-CuTGY8al.js +0 -1
- package/dist/assets/classDiagram-VBA2DB6C-DcC3mUiW.js +0 -1
- package/dist/assets/classDiagram-v2-RAHNMMFH-DcC3mUiW.js +0 -1
- package/dist/assets/clone-DsLdz8K1.js +0 -1
- package/dist/assets/stateDiagram-v2-FVOUBMTO-DnTjW8rz.js +0 -1
|
@@ -35,16 +35,16 @@ This creates a complete EAROS workspace with rubric files, JSON schemas, agent s
|
|
|
35
35
|
|
|
36
36
|
## Understanding the Workspace
|
|
37
37
|
|
|
38
|
+

|
|
39
|
+
|
|
38
40
|
The `earos init` command creates a structured directory containing:
|
|
39
41
|
|
|
40
42
|
- **Rubric files** --- the core meta-rubric and all built-in profiles and overlays (YAML)
|
|
41
43
|
- **JSON schemas** --- for validating rubrics, evaluation records, and artifact documents
|
|
42
|
-
- **Agent skills** --- 10 pre-configured skills for AI-assisted evaluation (in `.
|
|
44
|
+
- **Agent skills** --- 10 pre-configured skills for AI-assisted evaluation (in `.agents/skills/`)
|
|
43
45
|
- **AGENTS.md** --- agent-agnostic instructions for AI tools like Cursor, Copilot, and Windsurf
|
|
44
46
|
- **Manifest** --- an inventory of all available rubrics
|
|
45
47
|
|
|
46
|
-

|
|
47
|
-
|
|
48
48
|
## The Core Meta-Rubric
|
|
49
49
|
|
|
50
50
|
The core meta-rubric (`EAROS-CORE-002`) is the universal foundation. It applies to every architecture artifact regardless of type. It defines **9 dimensions** with **10 criteria**:
|
|
@@ -80,6 +80,8 @@ Every criterion uses the same ordinal scale:
|
|
|
80
80
|
|
|
81
81
|
## Walkthrough: Scoring Your First Artifact
|
|
82
82
|
|
|
83
|
+

|
|
84
|
+
|
|
83
85
|
Follow these steps for each of the 10 criteria:
|
|
84
86
|
|
|
85
87
|
1. **Read the criterion question and scoring guide.** Open the core rubric YAML and find the criterion. Read the `question`, the `description`, and all five levels of the `scoring_guide`.
|
|
@@ -92,21 +94,19 @@ Follow these steps for each of the 10 criteria:
|
|
|
92
94
|
|
|
93
95
|
5. **Move to the next criterion.** Repeat for all 10 criteria.
|
|
94
96
|
|
|
95
|
-

|
|
96
|
-
|
|
97
97
|
## Understanding Gates
|
|
98
98
|
|
|
99
99
|
Not all criteria are equal. Some have **gates** --- threshold controls that can block a passing status regardless of how well you score on everything else.
|
|
100
100
|
|
|
101
101
|
| Gate Severity | What Happens |
|
|
102
102
|
|---------------|-------------|
|
|
103
|
-
| **Critical** | If the score is below the gate threshold, the artifact is
|
|
103
|
+
| **Critical** | If the score is below the gate threshold, the artifact is blocked from passing. The `failure_effect` determines the outcome --- typically **Reject**, or **Not Reviewable** when evidence is too incomplete to score. |
|
|
104
104
|
| **Major** | A low score caps the maximum achievable status (e.g., cannot pass above Conditional Pass). |
|
|
105
105
|
| **Advisory** | A low score triggers a recommendation but does not block any status. |
|
|
106
106
|
|
|
107
|
-
In the core rubric, **SCP-01** (Scope and boundary clarity)
|
|
107
|
+
In the core rubric, two criteria have **critical** gates: **SCP-01** (Scope and boundary clarity) — if the scope is so unclear that the artifact cannot be reviewed (score < 2), the result is "Not Reviewable" regardless of all other scores; and **CMP-01** (Standards and policy compliance) — if mandatory control compliance cannot be determined, the result is "Reject". **STK-01** (Stakeholder and purpose fit) and **TRC-01** (Traceability) have **major** gates.
|
|
108
108
|
|
|
109
|
-
> **Rule: Gates before averages.** Always check gate criteria first. If a critical gate fails, stop --- the result is Reject. Only then compute the weighted average for the remaining status thresholds.
|
|
109
|
+
> **Rule: Gates before averages.** Always check gate criteria first. If a critical gate fails, stop --- the result is determined by the gate's `failure_effect` (Reject or Not Reviewable). Only then compute the weighted average for the remaining status thresholds.
|
|
110
110
|
|
|
111
111
|
## Interpreting Your Results
|
|
112
112
|
|
|
@@ -120,7 +120,7 @@ After scoring all criteria and checking gates, compute the weighted average acro
|
|
|
120
120
|
| **Reject** | Any critical gate failure, or mandatory control breach |
|
|
121
121
|
| **Not Reviewable** | Evidence too incomplete to score responsibly |
|
|
122
122
|
|
|
123
|
-

|
|
124
124
|
|
|
125
125
|
A Conditional Pass is not a failure --- it means the artifact is close but needs specific, named improvements before it is decision-ready. Record those improvements as actions in the evaluation record.
|
|
126
126
|
|
|
@@ -12,31 +12,37 @@ At Level 2, you used the core rubric and produced evidence-backed scores. At Lev
|
|
|
12
12
|
2. **Overlays** inject cross-cutting concerns (security, data governance, regulatory) based on context
|
|
13
13
|
3. **Calibration** ensures that different reviewers on your team produce substantially similar scores for the same artifact
|
|
14
14
|
|
|
15
|
+

|
|
16
|
+
|
|
15
17
|
## Choosing a Profile
|
|
16
18
|
|
|
17
|
-
The core meta-rubric's 10 criteria are universal --- they apply to every architecture artifact. But a reference architecture has different quality expectations than an ADR, and a capability map is evaluated differently than a roadmap. Profiles add
|
|
19
|
+
The core meta-rubric's 10 criteria are universal --- they apply to every architecture artifact. But a reference architecture has different quality expectations than an ADR, and a capability map is evaluated differently than a roadmap. Profiles add artifact-specific criteria on top of the core --- typically 3 to 9, depending on the artifact type.
|
|
20
|
+
|
|
21
|
+
| Profile | Artifact Type | Status | What It Adds |
|
|
22
|
+
|---------|--------------|--------|-------------|
|
|
23
|
+
| `solution-architecture.yaml` | Solution designs, HLDs, LLDs | Approved | Implementation specificity, integration patterns, deployment readiness |
|
|
24
|
+
| `reference-architecture.yaml` | Reference architectures, platform blueprints | Draft | Architectural views, pattern reusability, adoption guidance, evolution strategy |
|
|
25
|
+
| `adr.yaml` | Architecture Decision Records | Approved | Decision context, options analysis, consequence tracking, revisit triggers |
|
|
26
|
+
| `capability-map.yaml` | Capability maps, business architecture | Approved | Capability decomposition, business alignment, gap analysis |
|
|
27
|
+
| `roadmap.yaml` | Architecture roadmaps, transition plans | Draft | Sequencing, dependency management, milestone definition, risk on timeline |
|
|
18
28
|
|
|
19
|
-
|
|
20
|
-
|---------|--------------|-------------|
|
|
21
|
-
| `solution-architecture.yaml` | Solution designs, HLDs, LLDs | Implementation specificity, integration patterns, deployment readiness |
|
|
22
|
-
| `reference-architecture.yaml` | Reference architectures, platform blueprints | Architectural views, pattern reusability, adoption guidance, evolution strategy |
|
|
23
|
-
| `adr.yaml` | Architecture Decision Records | Decision context, options analysis, consequence tracking, revisit triggers |
|
|
24
|
-
| `capability-map.yaml` | Capability maps, business architecture | Capability decomposition, business alignment, gap analysis |
|
|
25
|
-
| `roadmap.yaml` | Architecture roadmaps, transition plans | Sequencing, dependency management, milestone definition, risk on timeline |
|
|
29
|
+
> **Status key:** *Approved* profiles have been calibrated and are ready for governed use. *Draft* profiles are usable but have not completed the full calibration process (see [Calibrating with Your Team](#calibrating-with-your-team)).
|
|
26
30
|
|
|
27
|
-
Every profile declares `inherits: [EAROS-CORE-002]`. This means when you evaluate a reference architecture, you score it against all 10 core criteria **plus** the profile's additional criteria ---
|
|
31
|
+
Every profile declares `inherits: [EAROS-CORE-002]`. This means when you evaluate a reference architecture, you score it against all 10 core criteria **plus** the profile's additional criteria --- 13--19 criteria total depending on the profile.
|
|
28
32
|
|
|
29
33
|
> **How to choose:** Match the profile to the artifact's declared type. If the artifact does not fit any built-in profile, use the core rubric alone. Creating custom profiles is covered in [Scaling and Optimization](scaling-optimization.md).
|
|
30
34
|
|
|
31
35
|
## Applying Overlays
|
|
32
36
|
|
|
37
|
+

|
|
38
|
+
|
|
33
39
|
Overlays inject cross-cutting concerns that apply across artifact types. Unlike profiles, overlays are applied **based on context**, not based on artifact type.
|
|
34
40
|
|
|
35
|
-
| Overlay | Apply When... |
|
|
36
|
-
|
|
37
|
-
| **Security** (`security.yaml`) | The design touches authentication, authorization, encryption, personal data, or network boundaries |
|
|
38
|
-
| **Data Governance** (`data-governance.yaml`) | The artifact describes data flows, data retention, data classification, or data lineage |
|
|
39
|
-
| **Regulatory** (`regulatory.yaml`) | The artifact operates in a regulated domain: payments, healthcare, financial reporting, privacy |
|
|
41
|
+
| Overlay | Status | Apply When... |
|
|
42
|
+
|---------|--------|--------------|
|
|
43
|
+
| **Security** (`security.yaml`) | Approved | The design touches authentication, authorization, encryption, personal data, or network boundaries |
|
|
44
|
+
| **Data Governance** (`data-governance.yaml`) | Approved | The artifact describes data flows, data retention, data classification, or data lineage |
|
|
45
|
+
| **Regulatory** (`regulatory.yaml`) | Draft | The artifact operates in a regulated domain: payments, healthcare, financial reporting, privacy |
|
|
40
46
|
|
|
41
47
|
Overlays are additive --- they append criteria to the base rubric (core + profile). They cannot remove or weaken gates from the base. An overlay's critical gate adds to the gate model; it does not replace it.
|
|
42
48
|
|
|
@@ -71,7 +77,7 @@ Observed evidence is always preferred. If you find yourself relying heavily on i
|
|
|
71
77
|
|
|
72
78
|
## The Three Evaluation Types
|
|
73
79
|
|
|
74
|
-
EAROS distinguishes three distinct judgment types that
|
|
80
|
+
EAROS distinguishes three distinct judgment types that should not be collapsed into a single opaque score:
|
|
75
81
|
|
|
76
82
|
| Type | Question It Answers | Example |
|
|
77
83
|
|------|-------------------|---------|
|
|
@@ -81,6 +87,10 @@ EAROS distinguishes three distinct judgment types that must never be merged into
|
|
|
81
87
|
|
|
82
88
|
These are related but distinct. A beautifully written, complete document can describe an architecturally unsound system. A technically excellent architecture can be documented in an unmaintainable artifact. Collapsing these into one score hides critical information.
|
|
83
89
|
|
|
90
|
+
In practice, EAROS criteria map to these three types through the dimension structure --- the narrative summary in the evaluation record should address all three perspectives. The rubric's criterion scores provide the evidence base; the narrative synthesizes them into these three distinct judgments.
|
|
91
|
+
|
|
92
|
+

|
|
93
|
+
|
|
84
94
|
## Calibrating with Your Team
|
|
85
95
|
|
|
86
96
|
Calibration is what transforms individual scoring into a team capability. Without it, "a score of 3" means something different to each reviewer.
|
|
@@ -101,10 +111,6 @@ Calibration is what transforms individual scoring into a team capability. Withou
|
|
|
101
111
|
|
|
102
112
|
7. **Update decision trees.** Where disagreements clustered, refine the `decision_tree` for those criteria to reduce future ambiguity.
|
|
103
113
|
|
|
104
|
-

|
|
105
|
-
|
|
106
|
-

|
|
107
|
-
|
|
108
114
|
## Setting Up a Review Cadence
|
|
109
115
|
|
|
110
116
|
Governed review is not a one-time activity. Establish a regular rhythm:
|
|
@@ -123,7 +129,7 @@ For more on evaluation record structure, see the [Getting Started guide](../gett
|
|
|
123
129
|
- [ ] You have completed a calibration exercise with kappa > 0.70
|
|
124
130
|
- [ ] Overlays are applied based on context (not arbitrarily or never)
|
|
125
131
|
- [ ] Evaluation records are structured and conform to `evaluation.schema.json`
|
|
126
|
-
- [ ] The three
|
|
132
|
+
- [ ] The evaluation narrative addresses all three perspectives: artifact quality, architectural fitness, and governance fit
|
|
127
133
|
|
|
128
134
|
## Next Steps
|
|
129
135
|
|
|
@@ -15,57 +15,57 @@ EAROS applies these lessons to a specific domain: architecture artifact evaluati
|
|
|
15
15
|
|
|
16
16
|
## The Five Levels
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|-------|------|-------------|---------------|------------------------|------------------|
|
|
20
|
-
| **1** | **Ad Hoc** | No formal review process. Evaluation quality depends entirely on who happens to review the artifact. Different reviewers apply different mental models, and feedback is inconsistent and unreproducible. | Informal peer review, tribal knowledge | None (this is the baseline state) | You recognize the problem: reviews are inconsistent and reviewer-dependent |
|
|
21
|
-
| **2** | **Rubric-Based** | The core rubric is adopted. Every assessment uses the same 9 dimensions and 10 criteria with the 0--4 scoring scale. Evidence is cited for every score. Results are reproducible across reviewers. | Manual scoring against core meta-rubric, evidence citation for every score, gate checking | Core meta-rubric, scoring sheets, 0--4 scale | At least one complete assessment using the core rubric with evidence for every score |
|
|
22
|
-
| **3** | **Governed** | Artifact-specific profiles and context-driven overlays are in use. Teams are calibrated against reference examples. The RULERS protocol ensures evidence-anchored scoring. Evaluation records are structured and auditable. | Profile and overlay selection, RULERS protocol, team calibration exercises, structured evaluation records | Profiles, overlays, calibration, RULERS protocol, evidence classes | Calibration exercise completed with Cohen's kappa > 0.70; profiles matched to artifact types |
|
|
23
|
-
| **4** | **Hybrid** | AI agents augment human reviewers. Both evaluate independently and reconcile disagreements against level descriptors. Metrics track inter-rater reliability between human and agent evaluators. | Human + AI agent independent evaluation, challenge pass, disagreement resolution, reliability tracking | Agent skills, DAG evaluation flow, challenge pass, hybrid mode | Human-agent disagreements routinely resolved; inter-rater reliability tracked |
|
|
24
|
-
| **5** | **Optimized** | Architecture evaluation is continuous and integrated into delivery workflows. Calibration happens automatically. Executive reporting provides portfolio-level quality visibility. Rubrics are governed assets with version control and change management. | CI/CD integration, continuous calibration, custom profile creation, executive reporting, fitness functions | Executive reporting, fitness functions, Wasserstein calibration, custom profiles | Evaluation integrated into pipelines; calibration drift monitored; portfolio-level reporting operational |
|
|
18
|
+
### Level 1 --- Ad Hoc
|
|
25
19
|
|
|
26
|
-
|
|
20
|
+
No formal review process. Evaluation quality depends entirely on who happens to review the artifact. Different reviewers apply different mental models, and feedback is inconsistent and unreproducible.
|
|
27
21
|
|
|
28
|
-
|
|
22
|
+
- **Key practices:** Informal peer review, tribal knowledge
|
|
23
|
+
- **EAROS capabilities:** None (this is the baseline state)
|
|
24
|
+
- **You are here when:** You recognize the problem --- reviews are inconsistent and reviewer-dependent
|
|
29
25
|
|
|
30
|
-
### Level
|
|
26
|
+
### Level 2 --- Rubric-Based
|
|
31
27
|
|
|
32
|
-
|
|
33
|
-
- [ ] Do two reviewers produce substantially similar feedback on the same artifact?
|
|
34
|
-
- [ ] Can you explain what "good" looks like for an architecture artifact in your organization?
|
|
28
|
+
The core rubric is adopted. Every assessment uses the same 9 dimensions and 10 criteria with the 0--4 scoring scale. Evidence is cited for every score. Results are reproducible across reviewers.
|
|
35
29
|
|
|
36
|
-
|
|
30
|
+
- **Key practices:** Manual scoring against core meta-rubric, evidence citation for every score, gate checking
|
|
31
|
+
- **EAROS capabilities:** Core meta-rubric, scoring sheets, 0--4 scale
|
|
32
|
+
- **You are here when:** You have completed at least one assessment using the core rubric with evidence for every score
|
|
37
33
|
|
|
38
|
-
|
|
39
|
-
- [ ] Every score has a cited evidence reference (not just "seems adequate")
|
|
40
|
-
- [ ] You can explain the difference between a score of 2 and 3 for any criterion
|
|
41
|
-
- [ ] You check gates before computing averages
|
|
34
|
+
> **Guide:** [Your First Assessment](first-assessment.md) walks you through this transition.
|
|
42
35
|
|
|
43
|
-
### Level 3
|
|
36
|
+
### Level 3 --- Governed
|
|
44
37
|
|
|
45
|
-
-
|
|
46
|
-
- [ ] You apply overlays based on context (security, data governance, regulatory)
|
|
47
|
-
- [ ] Your team has completed a calibration exercise with inter-rater agreement measured
|
|
48
|
-
- [ ] Evidence is classified as observed, inferred, or external
|
|
49
|
-
- [ ] Artifact quality, architectural fitness, and governance fit are reported separately
|
|
38
|
+
Artifact-specific profiles and context-driven overlays are in use. Teams are calibrated against reference examples. The RULERS protocol ensures evidence-anchored scoring. Evaluation records are structured and auditable.
|
|
50
39
|
|
|
51
|
-
|
|
40
|
+
- **Key practices:** Profile and overlay selection, RULERS protocol, team calibration exercises, structured evaluation records
|
|
41
|
+
- **EAROS capabilities:** Profiles, overlays, calibration, RULERS protocol, evidence classes
|
|
42
|
+
- **You are here when:** Your team has completed a calibration exercise with Cohen's kappa > 0.70 and profiles are matched to artifact types
|
|
52
43
|
|
|
53
|
-
|
|
54
|
-
- [ ] Human and agent evaluations are compared and reconciled
|
|
55
|
-
- [ ] A challenge pass reviews the highest and lowest scores for every evaluation
|
|
56
|
-
- [ ] You track inter-rater reliability metrics between human and agent evaluators
|
|
44
|
+
> **Guide:** [Governed Review](governed-review.md) walks you through this transition.
|
|
57
45
|
|
|
58
|
-
### Level
|
|
46
|
+
### Level 4 --- Hybrid
|
|
59
47
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
48
|
+
AI agents augment human reviewers. Both evaluate independently and reconcile disagreements against level descriptors. Metrics track inter-rater reliability between human and agent evaluators.
|
|
49
|
+
|
|
50
|
+
- **Key practices:** Human + AI agent independent evaluation, challenge pass, disagreement resolution, reliability tracking
|
|
51
|
+
- **EAROS capabilities:** Agent skills, DAG evaluation flow, challenge pass, hybrid mode
|
|
52
|
+
- **You are here when:** Human-agent disagreements are routinely resolved and inter-rater reliability is tracked
|
|
53
|
+
|
|
54
|
+
> **Guide:** [Agent-Assisted Evaluation](agent-assisted.md) walks you through this transition.
|
|
55
|
+
|
|
56
|
+
### Level 5 --- Optimized
|
|
57
|
+
|
|
58
|
+
Architecture evaluation is continuous and integrated into delivery workflows. Calibration happens automatically. Executive reporting provides portfolio-level quality visibility. Rubrics are governed assets with version control and change management.
|
|
59
|
+
|
|
60
|
+
- **Key practices:** CI/CD integration, continuous calibration, custom profile creation, executive reporting, fitness functions
|
|
61
|
+
- **EAROS capabilities:** Executive reporting, fitness functions, Wasserstein calibration, custom profiles
|
|
62
|
+
- **You are here when:** Evaluation is integrated into pipelines, calibration drift is monitored, and portfolio-level reporting is operational
|
|
63
|
+
|
|
64
|
+
> **Guide:** [Scaling and Optimization](scaling-optimization.md) walks you through this transition.
|
|
65
65
|
|
|
66
66
|
## How to Use This Guide
|
|
67
67
|
|
|
68
|
-
The onboarding guide is organized as
|
|
68
|
+
The onboarding guide is organized as four transition guides, one for each level transition:
|
|
69
69
|
|
|
70
70
|
1. [Your First Assessment](first-assessment.md) --- Level 1 to 2: Ad Hoc to Rubric-Based
|
|
71
71
|
2. [Governed Review](governed-review.md) --- Level 2 to 3: Rubric-Based to Governed
|
|
@@ -46,7 +46,7 @@ The RULERS protocol uses the Wasserstein distance to measure how far an agent's
|
|
|
46
46
|
|
|
47
47
|
### Maintaining the gold set
|
|
48
48
|
|
|
49
|
-
The gold set (`calibration/gold-set/`)
|
|
49
|
+
The gold set (`calibration/gold-set/`) is where your organization places reference artifacts with known scores. Start with the benchmark in `examples/aws-event-driven-order-processing/` and add your own. As your standards evolve, the gold set must evolve too. Add new reference artifacts periodically and retire outdated ones. Every gold-set artifact needs scores from at least 2 calibrated human reviewers.
|
|
50
50
|
|
|
51
51
|
## Creating Custom Profiles
|
|
52
52
|
|
|
@@ -60,7 +60,7 @@ The five built-in profiles (solution-architecture, reference-architecture, adr,
|
|
|
60
60
|
|
|
61
61
|
3. **Start from the template.** Copy `templates/new-profile.template.yaml` and set the required fields: `kind: profile`, `inherits: [EAROS-CORE-002]`, and `design_method`.
|
|
62
62
|
|
|
63
|
-
4. **Write
|
|
63
|
+
4. **Write up to 12 criteria.** Each criterion needs all required fields: `question`, `description`, `scoring_guide` (all 5 levels), `required_evidence`, `anti_patterns`, `examples.good`, `examples.bad`, `decision_tree`, and `remediation_hints`.
|
|
64
64
|
|
|
65
65
|
5. **Calibrate before production.** Score 3--5 representative artifacts with 2+ reviewers. Target kappa > 0.70.
|
|
66
66
|
|
|
@@ -121,8 +121,6 @@ Individual evaluations tell you about one artifact. Aggregated evaluations tell
|
|
|
121
121
|
- Which teams consistently produce higher-quality artifacts (and what practices they follow)
|
|
122
122
|
- Whether quality improves after remediation actions are completed
|
|
123
123
|
|
|
124
|
-

|
|
125
|
-
|
|
126
124
|
## Measuring Adoption
|
|
127
125
|
|
|
128
126
|
At Level 5, you track KPIs for architecture review maturity itself:
|
|
@@ -24,7 +24,7 @@ Profiles extend the Core Meta-Rubric for specific artifact types. This guide exp
|
|
|
24
24
|
## Profile Rules
|
|
25
25
|
|
|
26
26
|
- Inherit the core scale (0-4) and status model unless approved exception
|
|
27
|
-
- Add no more than
|
|
27
|
+
- Add no more than 12 specific criteria (most built-in profiles use 3–9)
|
|
28
28
|
- Map every criterion to a dimension
|
|
29
29
|
- Define evidence anchors, gate types, and applicability rules
|
|
30
30
|
- Include examples, anti-patterns, and remediation hints
|
|
@@ -41,13 +41,13 @@ The rule that disagreements of exactly one score level (e.g., 3 vs. 4) are treat
|
|
|
41
41
|
The universal evaluation foundation (`core/core-meta-rubric.yaml`, `rubric_id: EAROS-CORE-002`) defining nine dimensions and ten criteria applied to every architecture artifact regardless of type. All profiles inherit from the core. Used in: Section 5.1, all profile `inherits` fields.
|
|
42
42
|
|
|
43
43
|
**Profile**
|
|
44
|
-
An artifact-type extension that inherits the core meta-rubric and adds
|
|
44
|
+
An artifact-type extension that inherits the core meta-rubric and adds criteria specific to a particular artifact type (e.g., solution architecture, reference architecture, ADR). Profiles use `kind: profile` and must declare `inherits: [EAROS-CORE-002]`. Used in: Section 5.2, `profiles/` directory.
|
|
45
45
|
|
|
46
46
|
**Overlay**
|
|
47
47
|
A set of cross-cutting criteria injected on top of any core+profile combination, independent of artifact type. Overlays address concerns that recur across artifact types (security, data governance, regulatory compliance). They use `kind: overlay`, `artifact_type: any`, and `scoring.method: append_to_base_rubric`. Applied by context, not artifact type; they cannot remove or weaken base gates. Used in: Section 5.3, `overlays/` directory.
|
|
48
48
|
|
|
49
49
|
**Gate**
|
|
50
|
-
A criterion-level enforcement mechanism that prevents a poor score on a critical criterion being masked by high scores elsewhere. Gates are evaluated before any weighted average is computed. Gate severities: `none`, `advisory`, `major`, `critical` — a critical gate failure
|
|
50
|
+
A criterion-level enforcement mechanism that prevents a poor score on a critical criterion being masked by high scores elsewhere. Gates are evaluated before any weighted average is computed. Gate severities: `none`, `advisory`, `major`, `critical` — a critical gate failure blocks a passing status regardless of the average --- the specific outcome (`Reject` or `Not Reviewable`) depends on the criterion's `failure_effect`. Used in: Section 7.3, all rubric YAML `gate` fields.
|
|
51
51
|
|
|
52
52
|
**Evidence anchor**
|
|
53
53
|
A direct pointer to the specific excerpt, diagram, section, or reference in the artifact that supports a score. Required for every scored criterion under the RULERS protocol. Anchors are classified as `observed`, `inferred`, or `external`. "The artifact seems to address this" is not a valid evidence anchor. Used in: Section 10.1, all evaluation record `evidence_anchor` fields.
|
|
@@ -56,7 +56,7 @@ A direct pointer to the specific excerpt, diagram, section, or reference in the
|
|
|
56
56
|
The type of evidence behind a score: `observed` (directly quoted from the artifact), `inferred` (reasonably interpreted but not explicitly stated), or `external` (based on a standard or policy outside the artifact). Observed > inferred > external in credibility. Evidence class is mandatory in every evaluation record. Used in: Section 10.3, `outputs.require_evidence_class`.
|
|
57
57
|
|
|
58
58
|
**RULERS protocol**
|
|
59
|
-
An evidence-anchoring scoring procedure from the RULERS framework (2026) that requires extracting a direct quote or reference from the artifact before assigning any score. If no evidence can be found, the criterion is
|
|
59
|
+
An evidence-anchoring scoring procedure from the RULERS framework (2026) that requires extracting a direct quote or reference from the artifact before assigning any score. If no evidence can be found, the criterion is scored 0 (Absent) — never scored from impression alone. N/A is reserved for criteria that genuinely do not apply (see **N/A policy**). Addresses three LLM evaluation failure modes: instability under prompt variations, unverifiable reasoning, and distributional misalignment. Used in: Section 7 (agent mode), `earos-assess` skill.
|
|
60
60
|
|
|
61
61
|
**DAG evaluation flow**
|
|
62
62
|
The directed acyclic graph of eight ordered steps that agents must follow when evaluating an artifact: `structural_validation → content_extraction → criterion_scoring → cross_reference_validation → dimension_aggregation → challenge_pass → calibration → status_determination`. Steps cannot be skipped or reordered. Used in: Section 15 (agent operating pattern), `earos-assess` skill.
|
|
@@ -80,7 +80,7 @@ The authoritative inventory at the repo root listing every core rubric, profile,
|
|
|
80
80
|
The five possible outcomes of an EaROS evaluation: `Pass` (no critical gate failure, overall ≥ 3.2, no dimension < 2.0), `Conditional Pass` (overall 2.4–3.19), `Rework Required` (overall < 2.4 or repeated weak dimensions), `Reject` (critical gate failure or mandatory control breach), `Not Reviewable` (insufficient evidence to score). Gates are evaluated first; averages are computed second. Used in: Section 7.4.
|
|
81
81
|
|
|
82
82
|
**Three evaluation types**
|
|
83
|
-
The three distinct
|
|
83
|
+
The three distinct evaluation perspectives that should not be collapsed into a single opaque score: (1) **artifact quality** — is the artifact complete, coherent, and fit for purpose? (2) **architectural fitness** — does the described architecture appear sound relative to business drivers and quality attributes? (3) **governance fit** — does it comply with mandatory standards and controls? A complete, well-written artifact can describe an architecturally unsound system. These perspectives are addressed in the evaluation narrative (`decision_summary`) rather than as separately scored structured fields. Used in: Section 1 (Purpose), evaluation narratives.
|
|
84
84
|
|
|
85
85
|
**N/A policy**
|
|
86
86
|
The rule that a criterion may be scored N/A only when it genuinely does not apply in the artifact's scope or context, and that every N/A must be accompanied by a written justification. N/A criteria are excluded from the score denominator. N/A cannot be used to avoid a hard criterion. Used in: Section 7.1, all evaluation records.
|
|
@@ -420,7 +420,7 @@ change_log:
|
|
|
420
420
|
date: "2026-03-18"
|
|
421
421
|
author: "Thomas Rohde"
|
|
422
422
|
changes:
|
|
423
|
-
- Initial reference architecture profile
|
|
423
|
+
- Initial reference architecture profile
|
|
424
424
|
- 9 criteria across 6 dimensions (19 total when combined with the 10 core criteria)
|
|
425
425
|
- Designed using pattern_library method
|
|
426
426
|
- Incorporates golden path, diagram-as-code, and operational readiness research
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# Enterprise Architecture Rubric Operational Standard (EAROS)
|
|
2
2
|
|
|
3
|
-
*
|
|
4
|
-
Status: Draft for review
|
|
3
|
+
*Status: Draft for review
|
|
5
4
|
Audience: Enterprise architects, architecture boards, design authorities, reviewers, and LLM/automation teams*
|
|
6
5
|
|
|
7
6
|
> See [docs/terminology.md](../docs/terminology.md) for definitions of all technical terms used in this standard.
|
|
@@ -29,18 +28,9 @@ This standard assumes a simple but important distinction:
|
|
|
29
28
|
These must not be collapsed into one opaque score. They are related but distinct judgments.
|
|
30
29
|
|
|
31
30
|
|
|
32
|
-
###
|
|
31
|
+
### Research foundations
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
1. **Strengthened design foundations** with explicit alignment to Microsoft's LLM-Rubric (ACL 2024), the RULERS framework (2026), and the CARO confusion-aware rubric optimization approach.
|
|
37
|
-
2. **New principle on artifact machine-readability** (Principle 8), establishing requirements for structured, parseable artifact formats.
|
|
38
|
-
3. **Expanded scoring guidance** with discussion of the 0–3 vs 0–4 scale tradeoff based on empirical evidence.
|
|
39
|
-
4. **Enhanced agentic operating pattern** with DAG-based evaluation flow, the RULERS evidence-anchoring protocol, and calibrated aggregation.
|
|
40
|
-
5. **New section on artifact format requirements** (Section 12) covering ArchiMate exchange format, ADR machine-readable formats, diagram-as-code, and metadata conventions.
|
|
41
|
-
6. **Expanded calibration methodology** with explicit inter-rater reliability targets and weighted kappa benchmarks.
|
|
42
|
-
7. **New section on rubric design for AI agents** (Section 13) with seven empirically grounded design principles.
|
|
43
|
-
8. **Updated references** with 63 additional sources.
|
|
33
|
+
This standard incorporates findings from a comprehensive research programme covering 63 sources across academic literature, industry frameworks, and emerging AI evaluation methods. Key foundations include alignment to Microsoft's LLM-Rubric (ACL 2024), the RULERS framework, and the CARO confusion-aware rubric optimization approach.
|
|
44
34
|
|
|
45
35
|
## 2. Design foundations
|
|
46
36
|
|
|
@@ -292,7 +282,7 @@ Do **not** multiply score by confidence. A low-confidence evaluation and a poor
|
|
|
292
282
|
|
|
293
283
|
Empirical research on LLM-based evaluation suggests that smaller scales (0–3) produce higher inter-rater reliability between AI agents and human reviewers. The 0–3 scale reduces the ambiguous middle zone that plagues wider scales.
|
|
294
284
|
|
|
295
|
-
However, the 0–4 scale
|
|
285
|
+
However, the 0–4 scale was chosen deliberately to distinguish between "good" (adequate with minor gaps) and "strong" (fully addressed and decision-ready). This distinction matters in architecture governance because the gap between "adequate" and "excellent" is precisely where reviewer judgment adds most value.
|
|
296
286
|
|
|
297
287
|
**Recommended approach:** Retain the 0–4 scale for human and hybrid evaluation modes. For fully agentic evaluation, organisations may optionally collapse to a 0–3 scale by merging levels 3 and 4, provided the rubric profiles define the mapping explicitly. Any scale collapse must be recorded in the evaluation metadata.
|
|
298
288
|
|
|
@@ -1187,9 +1177,9 @@ The enterprise standard should be:
|
|
|
1187
1177
|
|
|
1188
1178
|
All architecture rubrics shall be managed as governed, versioned, evidence-based evaluation assets composed from a common core meta-rubric, artifact-specific profiles, and context overlays. All scoring shall be explainable, evidence-linked, calibrated, and suitable for both human and agent-assisted application.
|
|
1189
1179
|
|
|
1190
|
-
## 33. Recommended next deliverables
|
|
1180
|
+
## 33. Recommended next deliverables
|
|
1191
1181
|
|
|
1192
|
-
To operationalize this standard, create these next
|
|
1182
|
+
To operationalize this standard, create these next:
|
|
1193
1183
|
|
|
1194
1184
|
1. core-meta-rubric.yaml
|
|
1195
1185
|
2. solution-architecture.yaml
|
package/bin.js
CHANGED
|
@@ -84,7 +84,7 @@ Usage:
|
|
|
84
84
|
earos Open the editor in your browser
|
|
85
85
|
earos <file.yaml> Open the editor with a file pre-loaded
|
|
86
86
|
earos init [dir] [--icons] Scaffold a new EAROS workspace (default: current dir)
|
|
87
|
-
earos validate <file.yaml> Validate
|
|
87
|
+
earos validate <file.yaml> Validate any EAROS YAML — rubric, evaluation, or artifact (exit 0/1)
|
|
88
88
|
earos export <file.yaml> Export artifact YAML as Word document (.docx)
|
|
89
89
|
earos manifest Regenerate earos.manifest.yaml
|
|
90
90
|
earos manifest add <file> Add a file to the manifest
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{e as x,c as O,g as m,k as P,h as p,j as w,l as c,m as A,n as I,t as N,o as _}from"./_baseUniq-
|
|
1
|
+
import{e as x,c as O,g as m,k as P,h as p,j as w,l as c,m as A,n as I,t as N,o as _}from"./_baseUniq-HuZouVIz.js";import{aV as g,aC as $,aW as E,aX as F,aY as M,aZ as b,a_ as B,a$ as T,b0 as y,b1 as S}from"./index-DMt1cpG6.js";var C=/\s/;function G(n){for(var r=n.length;r--&&C.test(n.charAt(r)););return r}var H=/^\s+/;function L(n){return n&&n.slice(0,G(n)+1).replace(H,"")}var o=NaN,R=/^[-+]0x[0-9a-f]+$/i,W=/^0b[01]+$/i,X=/^0o[0-7]+$/i,Y=parseInt;function q(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=L(n);var t=W.test(n);return t||X.test(n)?Y(n.slice(2),t?2:8):R.test(n)?o:+n}var v=1/0,z=17976931348623157e292;function K(n){if(!n)return n===0?n:0;if(n=q(n),n===v||n===-v){var r=n<0?-1:1;return r*z}return n===n?n:0}function Z(n){var r=K(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var l=Object.prototype,D=l.hasOwnProperty,dn=$(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=F(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||M(h,l[u])&&!D.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function J(n){return function(r,t,i){var a=Object(r);if(!b(r)){var f=m(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var Q=Math.max;function U(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:Z(t);return a<0&&(a=Q(i+a,0)),p(n,m(r),a)}var hn=J(U);function V(n,r){var t=-1,i=b(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=B(n)?c:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!x(e):t(e,s)))var s=e,d=f}return d}function on(n){return n&&n.length?tn(n,T,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=I(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=N(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:y(r[a+1])?[]:{})}S(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=_(n,e);t(s,e)&&an(f,I(e,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,Z as j,un as l,gn as m,K as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{bi as E,bj as Rn,a_ as T,bk as w,aZ as sn,bl as xn,bm as mn,bn as Cn,bo as un,bp as x,aX as B,bq as Mn,br as on,bs as Fn,bt as S,bg as gn,bu as R,aV as ln,bv as Dn,bw as D,bx as Gn,by as Bn,bz as _,b1 as Un,bA as Nn,aY as Kn,bB as X,bC as jn,bD as Hn,b0 as qn,a$ as cn,be as Yn,bE as C}from"./index-RCn_0Vmo.js";var Zn="[object Symbol]";function U(n){return typeof n=="symbol"||E(n)&&Rn(n)==Zn}function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(U(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function N(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||U(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=Cn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:N(n,r)?[n]:fr(ar(n))}function m(n){if(typeof n=="string"||U(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[m(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,B(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,br=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return br.call(n,r)}))}:hn;function dr(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Mn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,B,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Er(n){return k?Object(k.call(n)):{}}var Sr="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",mr="[object Symbol]",Cr="[object ArrayBuffer]",Mr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Br="[object Int16Array]",Ur="[object Int32Array]",Nr="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function qr(n,r,e){var t=n.constructor;switch(r){case Cr:return on(n);case Sr:case Ir:return new t(+n);case Mr:return Or(n,e);case Fr:case Dr:case Gr:case Br:case Ur:case Nr:case Kr:case jr:case Hr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case mr:return Er(n)}}var Yr="[object Map]";function Zr(n){return E(n)&&S(n)==Yr}var nn=R&&R.isMap,Xr=nn?gn(nn):Zr,Jr="[object Set]";function Qr(n){return E(n)&&S(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",En="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",be="[object DataView]",de="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[be]=g[re]=g[ee]=g[de]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[En]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function M(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,b=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=S(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==En||o==$n||c&&!f){if(a=u||c?{}:Bn(n),!s)return u?Ar(n,lr(a,n)):dr(n,gr(a,n))}else{if(!g[o])return f?n:{};a=qr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(d){a.add(M(d,r,e,d,n,i))}):Xr(n)&&n.forEach(function(d,p){a.set(p,M(d,r,e,p,n,i))});var A=b?u?yr:G:u?B:$,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Un(a,p,M(d,r,e,p,n,i))}),a}var _e="__lodash_hash_undefined__";function Ee(n){return this.__data__.set(n,_e),this}function Se(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Nn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Ee;I.prototype.has=Se;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function Sn(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,f,i){var a=e&Pe,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Ie(r,function(p,O){if(!Sn(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,me="[object Boolean]",Ce="[object Date]",Me="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Be="[object Set]",Ue="[object String]",Ne="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case me:case Ce:case De:return Kn(+n,+r);case Me:return n.name==r.name&&n.message==r.message;case Ge:case Ue:return n==r+"";case Fe:var s=Le;case Be:var u=tℜif(s||(s=H),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=xe,a.set(n,r);var l=In(s(n),s(r),t,f,i,a);return a.delete(n),l;case Ne:if(F)return F.call(n)==F.call(r)}return!1}var qe=1,Ye=Object.prototype,Ze=Ye.hasOwnProperty;function Xe(n,r,e,t,f,i){var a=e&qe,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:Ze.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Je=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Qe=Object.prototype,an=Qe.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:S(n),b=s?fn:S(r);u=u==tn?L:u,b=b==tn?L:b;var l=u==L,o=b==L,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new _),a||jn(n)?In(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Je)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new _),f(y,d,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,f,i)):!1}function q(n,r,e,t,f){return n===r?!0:n==null||r==null||!E(n)&&!E(r)?n!==n&&r!==r:We(n,r,e,t,q,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?q(b,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,Pn(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=m(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&qn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return N(n)&&Pn(r)?vn(m(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):q(r,t,ft|at)}}function ut(n){return function(r){return r==null?void 0:r[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return N(n)?ut(m(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Yn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Y=ct(lt);function bt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Y;return e(n,bt(r))}function dt(n,r){var e=[];return Y(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:dt;return e(n,Ln(r))}function pt(n,r){return bn(r,function(e){return n[e]})}function Et(n){return n==null?[]:pt(n,$(n))}function St(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function It(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,Y)}var yt=1/0,Tt=C&&1/H(new C([,-0]))[1]==yt?function(n){return new C(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var b=r?null:Tt(n);if(b)return H(b);a=!1,f=Sn,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,dt as B,Ie as C,Xn as D,I as S,Pt as a,M as b,Ot as c,$t as d,U as e,_t as f,Ln as g,Jn as h,St as i,Y as j,$ as k,bn as l,tt as m,An as n,yn as o,bt as p,lt as q,It as r,it as s,m as t,ar as u,Et as v,Vn as w,Sn as x,zn as y,yr as z};
|
|
1
|
+
import{bi as E,bj as Rn,a_ as T,bk as w,aZ as sn,bl as xn,bm as mn,bn as Cn,bo as un,bp as x,aX as B,bq as Mn,br as on,bs as Fn,bt as S,bg as gn,bu as R,aV as ln,bv as Dn,bw as D,bx as Gn,by as Bn,bz as _,b1 as Un,bA as Nn,aY as Kn,bB as X,bC as jn,bD as Hn,b0 as qn,a$ as cn,be as Yn,bE as C}from"./index-DMt1cpG6.js";var Zn="[object Symbol]";function U(n){return typeof n=="symbol"||E(n)&&Rn(n)==Zn}function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(U(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function N(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||U(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=Cn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:N(n,r)?[n]:fr(ar(n))}function m(n){if(typeof n=="string"||U(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[m(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,B(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,br=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return br.call(n,r)}))}:hn;function dr(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Mn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,B,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Er(n){return k?Object(k.call(n)):{}}var Sr="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",mr="[object Symbol]",Cr="[object ArrayBuffer]",Mr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Br="[object Int16Array]",Ur="[object Int32Array]",Nr="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function qr(n,r,e){var t=n.constructor;switch(r){case Cr:return on(n);case Sr:case Ir:return new t(+n);case Mr:return Or(n,e);case Fr:case Dr:case Gr:case Br:case Ur:case Nr:case Kr:case jr:case Hr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case mr:return Er(n)}}var Yr="[object Map]";function Zr(n){return E(n)&&S(n)==Yr}var nn=R&&R.isMap,Xr=nn?gn(nn):Zr,Jr="[object Set]";function Qr(n){return E(n)&&S(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",En="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",be="[object DataView]",de="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[be]=g[re]=g[ee]=g[de]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[En]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function M(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,b=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=S(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==En||o==$n||c&&!f){if(a=u||c?{}:Bn(n),!s)return u?Ar(n,lr(a,n)):dr(n,gr(a,n))}else{if(!g[o])return f?n:{};a=qr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(d){a.add(M(d,r,e,d,n,i))}):Xr(n)&&n.forEach(function(d,p){a.set(p,M(d,r,e,p,n,i))});var A=b?u?yr:G:u?B:$,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Un(a,p,M(d,r,e,p,n,i))}),a}var _e="__lodash_hash_undefined__";function Ee(n){return this.__data__.set(n,_e),this}function Se(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Nn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Ee;I.prototype.has=Se;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function Sn(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,f,i){var a=e&Pe,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Ie(r,function(p,O){if(!Sn(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,me="[object Boolean]",Ce="[object Date]",Me="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Be="[object Set]",Ue="[object String]",Ne="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case me:case Ce:case De:return Kn(+n,+r);case Me:return n.name==r.name&&n.message==r.message;case Ge:case Ue:return n==r+"";case Fe:var s=Le;case Be:var u=tℜif(s||(s=H),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=xe,a.set(n,r);var l=In(s(n),s(r),t,f,i,a);return a.delete(n),l;case Ne:if(F)return F.call(n)==F.call(r)}return!1}var qe=1,Ye=Object.prototype,Ze=Ye.hasOwnProperty;function Xe(n,r,e,t,f,i){var a=e&qe,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:Ze.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Je=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Qe=Object.prototype,an=Qe.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:S(n),b=s?fn:S(r);u=u==tn?L:u,b=b==tn?L:b;var l=u==L,o=b==L,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new _),a||jn(n)?In(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Je)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new _),f(y,d,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,f,i)):!1}function q(n,r,e,t,f){return n===r?!0:n==null||r==null||!E(n)&&!E(r)?n!==n&&r!==r:We(n,r,e,t,q,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?q(b,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,Pn(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=m(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&qn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return N(n)&&Pn(r)?vn(m(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):q(r,t,ft|at)}}function ut(n){return function(r){return r==null?void 0:r[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return N(n)?ut(m(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Yn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Y=ct(lt);function bt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Y;return e(n,bt(r))}function dt(n,r){var e=[];return Y(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:dt;return e(n,Ln(r))}function pt(n,r){return bn(r,function(e){return n[e]})}function Et(n){return n==null?[]:pt(n,$(n))}function St(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function It(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,Y)}var yt=1/0,Tt=C&&1/H(new C([,-0]))[1]==yt?function(n){return new C(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var b=r?null:Tt(n);if(b)return H(b);a=!1,f=Sn,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,dt as B,Ie as C,Xn as D,I as S,Pt as a,M as b,Ot as c,$t as d,U as e,_t as f,Ln as g,Jn as h,St as i,Y as j,$ as k,bn as l,tt as m,An as n,yn as o,bt as p,lt as q,It as r,it as s,m as t,ar as u,Et as v,Vn as w,Sn as x,zn as y,yr as z};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./index-
|
|
1
|
+
import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./index-DMt1cpG6.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(fn(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,F=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<rn)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(on((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|