xoonya 2.1.0 → 2.3.0
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/CARRIED_HANDOFF_DEMO.md +60 -0
- package/EXAMPLE_PATHS.md +53 -0
- package/OPERATIONS_RUNBOOK.md +50 -0
- package/OPERATOR_START_HERE.md +67 -0
- package/PARTNER_READY_PATH.md +67 -0
- package/PROGRAM_COMPLETE_RELEASE.md +52 -0
- package/PROGRAM_STATUS.md +57 -0
- package/PUBLIC_DEMO_SCRIPT.md +79 -0
- package/PUBLISH_PLAN.md +7 -5
- package/README.md +27 -0
- package/RELEASE_CHECKLIST.md +8 -2
- package/RELEASE_NOTES.md +18 -8
- package/START_HERE.md +28 -0
- package/WHY_XYTARA_XOONYA.md +43 -0
- package/bin/xoonya-release.js +1181 -1
- package/examples/integration_boundary_walkthrough.js +37 -0
- package/examples/package_quickstart.js +1007 -0
- package/examples/partner_proof_walkthrough.js +68 -0
- package/examples/proof_review_walkthrough.js +66 -0
- package/examples/review_carried_handoff.js +72 -0
- package/lib/bridge_intelligence.js +102 -0
- package/lib/governance_intelligence.js +108 -0
- package/lib/phase_10_closeout_pack.js +45 -0
- package/lib/phase_10_completion_pack.js +76 -0
- package/lib/phase_10_decision_record_pack.js +54 -0
- package/lib/phase_10_decision_resolution_pack.js +53 -0
- package/lib/phase_10_demand_signal_adapters_proof_pack.js +74 -0
- package/lib/phase_10_ecosystem_backlog_triage_proof_pack.js +74 -0
- package/lib/phase_10_freeze_baseline_pack.js +67 -0
- package/lib/phase_10_freeze_review_pack.js +64 -0
- package/lib/phase_10_gate_pack.js +57 -0
- package/lib/phase_10_long_tail_continuity_pack.js +80 -0
- package/lib/phase_10_long_tail_ecosystem_pack.js +68 -0
- package/lib/phase_10_niche_extension_registry_proof_pack.js +74 -0
- package/lib/phase_1_claude_mcp_pack.js +60 -0
- package/lib/phase_1_claude_mcp_proof_pack.js +57 -0
- package/lib/phase_1_ecosystem_pack.js +51 -0
- package/lib/phase_1_openai_codex_pack.js +60 -0
- package/lib/phase_1_openai_codex_proof_pack.js +57 -0
- package/lib/phase_2_base_proof_pack.js +71 -0
- package/lib/phase_2_base_usdc_proof_pack.js +72 -0
- package/lib/phase_2_closeout_pack.js +65 -0
- package/lib/phase_2_completion_pack.js +113 -0
- package/lib/phase_2_decision_record_pack.js +66 -0
- package/lib/phase_2_decision_resolution_pack.js +69 -0
- package/lib/phase_2_eth_proof_pack.js +70 -0
- package/lib/phase_2_evm_base_proof_pack.js +73 -0
- package/lib/phase_2_evm_proof_pack.js +71 -0
- package/lib/phase_2_flip_preview_pack.js +60 -0
- package/lib/phase_2_freeze_review_pack.js +99 -0
- package/lib/phase_2_gate_pack.js +77 -0
- package/lib/phase_2_payment_rails_pack.js +71 -0
- package/lib/phase_2_usdc_proof_pack.js +71 -0
- package/lib/phase_3_brc_proof_pack.js +81 -0
- package/lib/phase_3_bsv_teranode_proof_pack.js +81 -0
- package/lib/phase_3_closeout_pack.js +62 -0
- package/lib/phase_3_completion_pack.js +92 -0
- package/lib/phase_3_decision_record_pack.js +64 -0
- package/lib/phase_3_decision_resolution_pack.js +69 -0
- package/lib/phase_3_freeze_baseline_pack.js +67 -0
- package/lib/phase_3_freeze_review_pack.js +80 -0
- package/lib/phase_3_gate_pack.js +76 -0
- package/lib/phase_3_metanet_proof_pack.js +81 -0
- package/lib/phase_3_native_bsv_pack.js +89 -0
- package/lib/phase_3_native_continuity_pack.js +82 -0
- package/lib/phase_4_attestation_proof_pack.js +75 -0
- package/lib/phase_4_closeout_pack.js +45 -0
- package/lib/phase_4_completion_pack.js +82 -0
- package/lib/phase_4_decision_record_pack.js +54 -0
- package/lib/phase_4_decision_resolution_pack.js +45 -0
- package/lib/phase_4_erc8004_proof_pack.js +76 -0
- package/lib/phase_4_freeze_baseline_pack.js +67 -0
- package/lib/phase_4_freeze_review_pack.js +68 -0
- package/lib/phase_4_gate_pack.js +58 -0
- package/lib/phase_4_identity_registry_proof_pack.js +75 -0
- package/lib/phase_4_identity_trust_pack.js +73 -0
- package/lib/phase_4_trust_continuity_pack.js +86 -0
- package/lib/phase_5_antelope_proof_pack.js +76 -0
- package/lib/phase_5_closeout_pack.js +44 -0
- package/lib/phase_5_completion_pack.js +82 -0
- package/lib/phase_5_decision_record_pack.js +54 -0
- package/lib/phase_5_decision_resolution_pack.js +45 -0
- package/lib/phase_5_freeze_baseline_pack.js +67 -0
- package/lib/phase_5_freeze_review_pack.js +68 -0
- package/lib/phase_5_gate_pack.js +58 -0
- package/lib/phase_5_major_rails_continuity_pack.js +86 -0
- package/lib/phase_5_major_rails_pack.js +74 -0
- package/lib/phase_5_proton_xpr_proof_pack.js +76 -0
- package/lib/phase_5_solana_proof_pack.js +76 -0
- package/lib/phase_6_autogen_proof_pack.js +74 -0
- package/lib/phase_6_closeout_pack.js +46 -0
- package/lib/phase_6_completion_pack.js +77 -0
- package/lib/phase_6_decision_record_pack.js +54 -0
- package/lib/phase_6_decision_resolution_pack.js +53 -0
- package/lib/phase_6_framework_continuity_pack.js +81 -0
- package/lib/phase_6_framework_runtime_pack.js +68 -0
- package/lib/phase_6_freeze_baseline_pack.js +68 -0
- package/lib/phase_6_freeze_review_pack.js +65 -0
- package/lib/phase_6_gate_pack.js +59 -0
- package/lib/phase_6_langchain_proof_pack.js +74 -0
- package/lib/phase_6_langgraph_proof_pack.js +74 -0
- package/lib/phase_6_semantic_kernel_proof_pack.js +74 -0
- package/lib/phase_7_closeout_pack.js +45 -0
- package/lib/phase_7_completion_pack.js +85 -0
- package/lib/phase_7_decision_record_pack.js +53 -0
- package/lib/phase_7_decision_resolution_pack.js +53 -0
- package/lib/phase_7_event_system_continuity_pack.js +89 -0
- package/lib/phase_7_event_system_pack.js +76 -0
- package/lib/phase_7_freeze_baseline_pack.js +74 -0
- package/lib/phase_7_freeze_review_pack.js +65 -0
- package/lib/phase_7_gate_pack.js +58 -0
- package/lib/phase_7_kafka_proof_pack.js +76 -0
- package/lib/phase_7_mqtt_proof_pack.js +76 -0
- package/lib/phase_7_nats_proof_pack.js +76 -0
- package/lib/phase_7_webhook_event_bus_proof_pack.js +76 -0
- package/lib/phase_8_closeout_pack.js +46 -0
- package/lib/phase_8_completion_pack.js +82 -0
- package/lib/phase_8_decision_record_pack.js +54 -0
- package/lib/phase_8_decision_resolution_pack.js +53 -0
- package/lib/phase_8_external_receipt_import_proof_pack.js +74 -0
- package/lib/phase_8_external_result_import_proof_pack.js +74 -0
- package/lib/phase_8_freeze_baseline_pack.js +71 -0
- package/lib/phase_8_freeze_review_pack.js +64 -0
- package/lib/phase_8_gate_pack.js +58 -0
- package/lib/phase_8_proof_bridge_continuity_pack.js +86 -0
- package/lib/phase_8_proof_bridges_pack.js +72 -0
- package/lib/phase_8_proof_bundle_normalization_proof_pack.js +74 -0
- package/lib/phase_9_closeout_pack.js +46 -0
- package/lib/phase_9_completion_pack.js +82 -0
- package/lib/phase_9_custody_refs_proof_pack.js +74 -0
- package/lib/phase_9_decision_record_pack.js +54 -0
- package/lib/phase_9_decision_resolution_pack.js +53 -0
- package/lib/phase_9_freeze_baseline_pack.js +71 -0
- package/lib/phase_9_freeze_review_pack.js +64 -0
- package/lib/phase_9_gate_pack.js +58 -0
- package/lib/phase_9_operator_accounting_bridges_proof_pack.js +74 -0
- package/lib/phase_9_treasury_connectivity_pack.js +72 -0
- package/lib/phase_9_treasury_continuity_pack.js +86 -0
- package/lib/phase_9_treasury_destinations_proof_pack.js +74 -0
- package/lib/phase_program_pack.js +47 -0
- package/lib/release_center.js +924 -0
- package/lib/release_history.js +1 -1
- package/lib/review_intelligence.js +100 -0
- package/lib/trust_intelligence.js +106 -0
- package/package.json +11 -1
- package/server.js +1862 -88
package/lib/release_history.js
CHANGED
|
@@ -11,7 +11,7 @@ function buildReleaseHistory() {
|
|
|
11
11
|
release_track: "public_release",
|
|
12
12
|
history: [
|
|
13
13
|
{
|
|
14
|
-
version: "2.
|
|
14
|
+
version: "2.2.0",
|
|
15
15
|
channel: "public_release",
|
|
16
16
|
maturity_posture: "launch_ready",
|
|
17
17
|
headline: "public proof-spine release-candidate with release-center, announcement, and candidate rehearsal surfaces",
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const packageJson = require("../package.json");
|
|
4
|
+
const proofSdk = require("../proof_sdk");
|
|
5
|
+
|
|
6
|
+
function classifyReviewBurdenState(queueSummary, openCaseCount) {
|
|
7
|
+
const reviewCount = Number(queueSummary.review_count || 0);
|
|
8
|
+
const disputeCount = Number(queueSummary.dispute_count || 0);
|
|
9
|
+
if (reviewCount >= 5 || disputeCount >= 3 || openCaseCount >= 3) return "high";
|
|
10
|
+
if (reviewCount >= 3 || disputeCount >= 2 || openCaseCount >= 2) return "moderate";
|
|
11
|
+
return "light";
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function classifyDisputeRiskState(disputeCount, openCaseCount) {
|
|
15
|
+
if (disputeCount >= 3 || openCaseCount >= 3) return "high";
|
|
16
|
+
if (disputeCount >= 1 || openCaseCount >= 1) return "watch";
|
|
17
|
+
return "low";
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function classifyBridgeDependencyState(bridgeSummary) {
|
|
21
|
+
if (bridgeSummary.capability_count >= 8 && bridgeSummary.profile_count >= 3) return "strong";
|
|
22
|
+
if (bridgeSummary.capability_count >= 4 && bridgeSummary.profile_count >= 2) return "working";
|
|
23
|
+
return "thin";
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function buildReviewIntelligencePack(input) {
|
|
27
|
+
const payload = input && typeof input === "object" && !Array.isArray(input) ? input : {};
|
|
28
|
+
const governanceDashboard = proofSdk.summarizeGovernanceDashboard(payload);
|
|
29
|
+
const governanceDisputes = proofSdk.summarizeGovernanceDisputes(payload);
|
|
30
|
+
const governanceOperatorView = proofSdk.summarizeGovernanceOperatorView(payload);
|
|
31
|
+
const bridgeSummary = proofSdk.summarizeBridgeCenter();
|
|
32
|
+
|
|
33
|
+
const reviewBurdenState = classifyReviewBurdenState(
|
|
34
|
+
governanceDashboard.queue_summary,
|
|
35
|
+
governanceDisputes.open_case_count
|
|
36
|
+
);
|
|
37
|
+
const disputeRiskState = classifyDisputeRiskState(
|
|
38
|
+
governanceDashboard.queue_summary.dispute_count,
|
|
39
|
+
governanceDisputes.open_case_count
|
|
40
|
+
);
|
|
41
|
+
const bridgeDependencyState = classifyBridgeDependencyState(bridgeSummary);
|
|
42
|
+
|
|
43
|
+
let nextBestAction = "continue_review_path";
|
|
44
|
+
if (disputeRiskState === "high") {
|
|
45
|
+
nextBestAction = "escalate_dispute_review";
|
|
46
|
+
} else if (reviewBurdenState === "high") {
|
|
47
|
+
nextBestAction = "prioritize_governance_queue";
|
|
48
|
+
} else if (bridgeDependencyState === "thin") {
|
|
49
|
+
nextBestAction = "strengthen_bridge_review_posture";
|
|
50
|
+
} else if (disputeRiskState === "watch" || reviewBurdenState === "moderate") {
|
|
51
|
+
nextBestAction = "inspect_governance_dashboard";
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return {
|
|
55
|
+
ok: true,
|
|
56
|
+
product: packageJson.name,
|
|
57
|
+
category: "proof-review-intelligence-pack",
|
|
58
|
+
review_burden_state: reviewBurdenState,
|
|
59
|
+
dispute_risk_state: disputeRiskState,
|
|
60
|
+
bridge_dependency_state: bridgeDependencyState,
|
|
61
|
+
recommended_review_lane: "governance_and_result_package_review",
|
|
62
|
+
next_best_action: nextBestAction,
|
|
63
|
+
explanation_signals: {
|
|
64
|
+
review_count: Number(governanceDashboard.queue_summary.review_count || 0),
|
|
65
|
+
dispute_count: Number(governanceDashboard.queue_summary.dispute_count || 0),
|
|
66
|
+
signoff_ready_count: Number(governanceDashboard.queue_summary.signoff_ready_count || 0),
|
|
67
|
+
open_case_count: Number(governanceDisputes.open_case_count || 0),
|
|
68
|
+
case_count: Number(governanceDisputes.case_count || 0),
|
|
69
|
+
attention_ref_count: Array.isArray(governanceOperatorView.attention_refs) ? governanceOperatorView.attention_refs.length : 0,
|
|
70
|
+
bridge_capability_count: bridgeSummary.capability_count,
|
|
71
|
+
bridge_profile_count: bridgeSummary.profile_count
|
|
72
|
+
},
|
|
73
|
+
linked_surfaces: {
|
|
74
|
+
governance_dashboard_ref: "/v1/proof-center/governance/dashboard",
|
|
75
|
+
governance_operator_view_ref: "/v1/proof-center/governance/operator-view",
|
|
76
|
+
governance_disputes_summary_ref: "/v1/proof-center/governance/disputes/summary",
|
|
77
|
+
governance_review_link_ref: "/v1/proof-center/governance/review-link",
|
|
78
|
+
bridge_summary_ref: "/v1/proof-center/bridge/summary"
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function summarizeReviewIntelligencePack(input) {
|
|
84
|
+
const pack = buildReviewIntelligencePack(input);
|
|
85
|
+
return {
|
|
86
|
+
ok: true,
|
|
87
|
+
product: pack.product,
|
|
88
|
+
category: pack.category,
|
|
89
|
+
review_burden_state: pack.review_burden_state,
|
|
90
|
+
dispute_risk_state: pack.dispute_risk_state,
|
|
91
|
+
bridge_dependency_state: pack.bridge_dependency_state,
|
|
92
|
+
next_best_action: pack.next_best_action,
|
|
93
|
+
signal_count: Object.keys(pack.explanation_signals).length
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
module.exports = {
|
|
98
|
+
buildReviewIntelligencePack,
|
|
99
|
+
summarizeReviewIntelligencePack
|
|
100
|
+
};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const packageJson = require("../package.json");
|
|
4
|
+
const proofSdk = require("../proof_sdk");
|
|
5
|
+
|
|
6
|
+
function classifyProofReadinessState(proofCenterSummary, proofLoopSummary, resultPackageHandoffSummary) {
|
|
7
|
+
if (
|
|
8
|
+
proofCenterSummary.helper_count >= 5
|
|
9
|
+
&& proofLoopSummary.loop_count >= 2
|
|
10
|
+
&& resultPackageHandoffSummary.source_ref_count >= 3
|
|
11
|
+
) {
|
|
12
|
+
return "strong";
|
|
13
|
+
}
|
|
14
|
+
if (proofCenterSummary.helper_count >= 3 && proofLoopSummary.loop_count >= 1) {
|
|
15
|
+
return "working";
|
|
16
|
+
}
|
|
17
|
+
return "early";
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function classifyBridgeConfidenceState(bridgeSummary) {
|
|
21
|
+
if (bridgeSummary.capability_count >= 8 && bridgeSummary.profile_count >= 3) return "strong";
|
|
22
|
+
if (bridgeSummary.capability_count >= 4 && bridgeSummary.profile_count >= 2) return "working";
|
|
23
|
+
return "early";
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function classifyGovernanceBurdenState(governanceSummary) {
|
|
27
|
+
if (governanceSummary.capability_count >= 10) return "active_review_ready";
|
|
28
|
+
if (governanceSummary.capability_count >= 6) return "moderate";
|
|
29
|
+
return "light";
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function buildTrustIntelligencePack() {
|
|
33
|
+
const proofCenterSummary = proofSdk.summarizeDefaultProofCenter();
|
|
34
|
+
const proofLoopSummary = proofSdk.summarizeDefaultProofLoops();
|
|
35
|
+
const resultPackageHandoffSummary = proofSdk.summarizeInteractionResultPackageHandoffCenter();
|
|
36
|
+
const bridgeSummary = proofSdk.summarizeBridgeCenter();
|
|
37
|
+
const governanceSummary = proofSdk.summarizeGovernanceCenter();
|
|
38
|
+
|
|
39
|
+
const proofReadinessState = classifyProofReadinessState(
|
|
40
|
+
proofCenterSummary,
|
|
41
|
+
proofLoopSummary,
|
|
42
|
+
resultPackageHandoffSummary
|
|
43
|
+
);
|
|
44
|
+
const bridgeConfidenceState = classifyBridgeConfidenceState(bridgeSummary);
|
|
45
|
+
const governanceBurdenState = classifyGovernanceBurdenState(governanceSummary);
|
|
46
|
+
|
|
47
|
+
let nextBestAction = "continue_reviewable_proof_posture";
|
|
48
|
+
if (proofReadinessState !== "strong") {
|
|
49
|
+
nextBestAction = "strengthen_proof_loop_entry";
|
|
50
|
+
} else if (bridgeConfidenceState !== "strong") {
|
|
51
|
+
nextBestAction = "strengthen_bridge_profile_posture";
|
|
52
|
+
} else if (governanceBurdenState === "active_review_ready") {
|
|
53
|
+
nextBestAction = "promote_governance_review_path";
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return {
|
|
57
|
+
ok: true,
|
|
58
|
+
product: packageJson.name,
|
|
59
|
+
category: "proof-trust-intelligence-pack",
|
|
60
|
+
proof_readiness_state: proofReadinessState,
|
|
61
|
+
bridge_confidence_state: bridgeConfidenceState,
|
|
62
|
+
governance_burden_state: governanceBurdenState,
|
|
63
|
+
recommended_review_motion: "lead_with_result_package_handoff_review",
|
|
64
|
+
next_best_action: nextBestAction,
|
|
65
|
+
explanation_signals: {
|
|
66
|
+
proof_helper_count: proofCenterSummary.helper_count,
|
|
67
|
+
proof_route_count: proofCenterSummary.route_count,
|
|
68
|
+
proof_loop_count: proofLoopSummary.loop_count,
|
|
69
|
+
result_package_source_ref_count: resultPackageHandoffSummary.source_ref_count,
|
|
70
|
+
bridge_capability_count: bridgeSummary.capability_count,
|
|
71
|
+
bridge_profile_count: bridgeSummary.profile_count,
|
|
72
|
+
governance_capability_count: governanceSummary.capability_count
|
|
73
|
+
},
|
|
74
|
+
linked_surfaces: {
|
|
75
|
+
proof_center_summary_ref: "/v1/proof-center/summary",
|
|
76
|
+
proof_loops_summary_ref: "/v1/proof-center/default-loops/summary",
|
|
77
|
+
result_package_handoff_summary_ref: "/v1/proof-center/result-package-handoff/summary",
|
|
78
|
+
bridge_summary_ref: "/v1/proof-center/bridge/summary",
|
|
79
|
+
governance_summary_ref: "/v1/proof-center/governance/summary"
|
|
80
|
+
},
|
|
81
|
+
generated_from: {
|
|
82
|
+
proof_bundle_version: proofCenterSummary.proof_bundle_version,
|
|
83
|
+
bridge_center_ref: bridgeSummary.center_ref,
|
|
84
|
+
governance_center_ref: governanceSummary.center_ref
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function summarizeTrustIntelligencePack() {
|
|
90
|
+
const pack = buildTrustIntelligencePack();
|
|
91
|
+
return {
|
|
92
|
+
ok: true,
|
|
93
|
+
product: pack.product,
|
|
94
|
+
category: pack.category,
|
|
95
|
+
proof_readiness_state: pack.proof_readiness_state,
|
|
96
|
+
bridge_confidence_state: pack.bridge_confidence_state,
|
|
97
|
+
governance_burden_state: pack.governance_burden_state,
|
|
98
|
+
next_best_action: pack.next_best_action,
|
|
99
|
+
signal_count: Object.keys(pack.explanation_signals).length
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
module.exports = {
|
|
104
|
+
buildTrustIntelligencePack,
|
|
105
|
+
summarizeTrustIntelligencePack
|
|
106
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xoonya",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "Deterministic proof SDK for canonical events, receipts, proof bundles, and verification.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -37,7 +37,17 @@
|
|
|
37
37
|
"PUBLISH_PLAN.md",
|
|
38
38
|
".env.example",
|
|
39
39
|
"README.md",
|
|
40
|
+
"PROGRAM_STATUS.md",
|
|
41
|
+
"OPERATOR_START_HERE.md",
|
|
42
|
+
"OPERATIONS_RUNBOOK.md",
|
|
43
|
+
"PROGRAM_COMPLETE_RELEASE.md",
|
|
44
|
+
"WHY_XYTARA_XOONYA.md",
|
|
45
|
+
"CARRIED_HANDOFF_DEMO.md",
|
|
46
|
+
"PARTNER_READY_PATH.md",
|
|
47
|
+
"EXAMPLE_PATHS.md",
|
|
48
|
+
"PUBLIC_DEMO_SCRIPT.md",
|
|
40
49
|
"START_HERE.md",
|
|
50
|
+
"examples/",
|
|
41
51
|
"FINAL_CONTRACT.md",
|
|
42
52
|
"SERVICE_CONTRACT.md",
|
|
43
53
|
"TERMINOLOGY.md",
|