{
  "$schema": "https://uipkge.dev/schema/registry-item.json",
  "name": "personal-finance-budget",
  "title": "Personal Finance Budget",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-angular/blocks/personal-finance-budget/personal-finance-budget.component.ts",
      "content": "import { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport {\n  Calendar,\n  CheckCircle2,\n  Clock,\n  CreditCard,\n  Film,\n  FolderPlus,\n  HeartPulse,\n  Home,\n  Laptop,\n  LucideAngularModule,\n  PiggyBank,\n  Plane,\n  Plus,\n  ShieldCheck,\n  ShoppingCart,\n  TrendingUp,\n  UtensilsCrossed,\n  Wallet,\n  Zap,\n} from 'lucide-angular'\nimport { cn } from '@/lib/utils'\nimport { UiBadgeComponent } from '@/ui/badge/badge.component'\nimport { UiButtonComponent } from '@/ui/button/button.component'\nimport {\n  UiCardComponent,\n  UiCardContentComponent,\n  UiCardDescriptionComponent,\n  UiCardHeaderComponent,\n  UiCardTitleComponent,\n} from '@/ui/card/card.component'\nimport { UiProgressComponent } from '@/ui/progress/progress.component'\nimport {\n  UiTableBodyComponent,\n  UiTableCellComponent,\n  UiTableComponent,\n  UiTableHeadComponent,\n  UiTableHeaderComponent,\n  UiTableRowComponent,\n} from '@/ui/table/table.component'\n\ntype EnvelopeStatus = 'healthy' | 'warning' | 'completed' | 'on-track'\n\ninterface EnvelopeCategory {\n  id: string\n  name: string\n  icon: unknown\n  budgeted: number\n  spent: number\n  note: string\n  status: EnvelopeStatus\n  statusLabel: string\n  isSavings?: boolean\n}\n\ninterface EnvelopeSection {\n  id: string\n  title: string\n  description: string\n  icon: unknown\n  totalBudgeted: number\n  totalSpent: number\n  categories: EnvelopeCategory[]\n}\n\nconst sections: EnvelopeSection[] = [\n  {\n    id: 'immediate-obligations',\n    title: 'Immediate Obligations',\n    description: 'Non-negotiable fixed living expenses and essential monthly bills.',\n    icon: Home,\n    totalBudgeted: 3750,\n    totalSpent: 3550,\n    categories: [\n      {\n        id: 'cat-housing',\n        name: 'Housing & Rent',\n        icon: Home,\n        budgeted: 2400,\n        spent: 2400,\n        note: 'Mortgage, HOA fee & insurance · Auto-paid Aug 1',\n        status: 'completed',\n        statusLabel: 'Paid in Full',\n      },\n      {\n        id: 'cat-utilities',\n        name: 'Utilities & Internet',\n        icon: Zap,\n        budgeted: 350,\n        spent: 320,\n        note: 'Electric ($185), Water ($75), Fiber ($60)',\n        status: 'healthy',\n        statusLabel: 'Healthy',\n      },\n      {\n        id: 'cat-groceries',\n        name: 'Groceries & Household',\n        icon: ShoppingCart,\n        budgeted: 800,\n        spent: 650,\n        note: 'Trader Joe’s & weekly produce · $15.00/day left',\n        status: 'healthy',\n        statusLabel: 'Healthy',\n      },\n      {\n        id: 'cat-health',\n        name: 'Health & Medical',\n        icon: HeartPulse,\n        budgeted: 200,\n        spent: 180,\n        note: 'Prescription copays & health membership',\n        status: 'healthy',\n        statusLabel: 'Healthy',\n      },\n    ],\n  },\n  {\n    id: 'lifestyle-discretionary',\n    title: 'Lifestyle & Discretionary',\n    description: 'Variable lifestyle choices, dining, entertainment, and digital subscriptions.',\n    icon: UtensilsCrossed,\n    totalBudgeted: 700,\n    totalSpent: 625,\n    categories: [\n      {\n        id: 'cat-dining',\n        name: 'Dining Out & Cafes',\n        icon: UtensilsCrossed,\n        budgeted: 400,\n        spent: 380,\n        note: 'Restaurants, coffee & takeout · $20.00 left for 10 days',\n        status: 'warning',\n        statusLabel: 'Near Limit',\n      },\n      {\n        id: 'cat-entertainment',\n        name: 'Entertainment & Leisure',\n        icon: Film,\n        budgeted: 200,\n        spent: 150,\n        note: 'Cinema tickets, gaming pass & weekend outings',\n        status: 'healthy',\n        statusLabel: 'Healthy',\n      },\n      {\n        id: 'cat-tech',\n        name: 'Tech & Subscriptions',\n        icon: Laptop,\n        budgeted: 100,\n        spent: 95,\n        note: 'iCloud, Spotify, GitHub Pro, ChatGPT Plus',\n        status: 'warning',\n        statusLabel: 'Near Limit',\n      },\n    ],\n  },\n  {\n    id: 'savings-investments',\n    title: 'Savings Goals & Investments',\n    description: 'Dedicated wealth accumulation, emergency reserve, and planned sinking funds.',\n    icon: PiggyBank,\n    totalBudgeted: 1583,\n    totalSpent: 1483,\n    categories: [\n      {\n        id: 'cat-emergency',\n        name: 'Emergency Fund',\n        icon: ShieldCheck,\n        budgeted: 500,\n        spent: 500,\n        note: 'High-yield cash reserve · Total balance: $18,500.00',\n        status: 'completed',\n        statusLabel: 'Goal Met',\n        isSavings: true,\n      },\n      {\n        id: 'cat-roth',\n        name: 'Roth IRA Contribution',\n        icon: TrendingUp,\n        budgeted: 583,\n        spent: 583,\n        note: 'Broad-market index ETF · 2026 cap pacing ($7,000/yr)',\n        status: 'completed',\n        statusLabel: 'Maxed Monthly',\n        isSavings: true,\n      },\n      {\n        id: 'cat-vacation',\n        name: 'Vacation & Travel Fund',\n        icon: Plane,\n        budgeted: 500,\n        spent: 400,\n        note: 'Tokyo autumn trip 2027 · $3,400.00 of $5,000.00 goal',\n        status: 'on-track',\n        statusLabel: '80% Funded',\n        isSavings: true,\n      },\n    ],\n  },\n]\n\nfunction formatCurrency(amount: number): string {\n  return `$${amount.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`\n}\n\n/**\n * PersonalFinanceBudget -- the React block, 1:1: zero-based monthly budget header with\n * assignment pill, four overview cards (income, budgeted/spent, savings, month pace),\n * envelope category tables grouped by section with progress and health badges, and a\n * zero-based allocation philosophy footer.\n */\n@Component({\n  changeDetection: ChangeDetectionStrategy.Eager,\n  selector: 'ui-personal-finance-budget, [ui-personal-finance-budget]',\n  standalone: true,\n  // React renders the root <div> itself: the host stays out of layout and `class` goes to the root.\n  host: { '[attr.class]': '\"contents\"' },\n  imports: [\n    LucideAngularModule,\n    UiBadgeComponent,\n    UiButtonComponent,\n    UiCardComponent,\n    UiCardContentComponent,\n    UiCardDescriptionComponent,\n    UiCardHeaderComponent,\n    UiCardTitleComponent,\n    UiProgressComponent,\n    UiTableComponent,\n    UiTableBodyComponent,\n    UiTableCellComponent,\n    UiTableHeadComponent,\n    UiTableHeaderComponent,\n    UiTableRowComponent,\n  ],\n  template: `\n    <div data-slot=\"personal-finance-budget\" [class]=\"rootClass\">\n      <div class=\"flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between\">\n        <div class=\"space-y-1.5\">\n          <div class=\"flex flex-wrap items-center gap-2.5\">\n            <h1 class=\"text-foreground text-2xl font-bold tracking-tight sm:text-3xl\">Monthly Zero-Based Budget</h1>\n            <div\n              class=\"bg-muted text-foreground border-border flex items-center gap-1 rounded-md border px-2 py-0.5 text-xs font-semibold\"\n            >\n              <lucide-icon [img]=\"Calendar\" class=\"text-muted-foreground size-3.5\" />\n              <span>August 2026</span>\n            </div>\n          </div>\n          <div class=\"flex flex-wrap items-center gap-2 pt-0.5\">\n            <div\n              class=\"border-success/20 bg-success/10 text-success inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 text-xs font-medium\"\n            >\n              <lucide-icon [img]=\"CheckCircle2\" class=\"size-3.5 shrink-0\" />\n              <span\n                >To be Budgeted: <strong class=\"font-semibold tabular-nums\">$0.00</strong> · Every dollar assigned!</span\n              >\n            </div>\n            <span class=\"text-muted-foreground hidden text-xs sm:inline\">Zero-Based Envelope Method</span>\n          </div>\n        </div>\n        <div class=\"flex items-center gap-2\">\n          <button ui-button variant=\"outline\" size=\"sm\" class=\"gap-1.5 shadow-xs\">\n            <lucide-icon [img]=\"FolderPlus\" class=\"text-muted-foreground size-4\" />\n            <span>Add Category</span>\n          </button>\n          <button ui-button size=\"sm\" class=\"gap-1.5 shadow-xs\">\n            <lucide-icon [img]=\"Plus\" class=\"size-4\" />\n            <span>Add Expense</span>\n          </button>\n        </div>\n      </div>\n\n      <div class=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n        <div ui-card class=\"flex flex-col justify-between shadow-xs\">\n          <div ui-card-header class=\"pb-2\">\n            <div class=\"flex items-center justify-between gap-2\">\n              <div class=\"flex items-center gap-2\">\n                <div\n                  aria-hidden=\"true\"\n                  class=\"border-success/20 bg-success/10 text-success flex size-8 shrink-0 items-center justify-center rounded-lg border shadow-xs\"\n                >\n                  <lucide-icon [img]=\"Wallet\" class=\"size-4\" />\n                </div>\n                <h3 ui-card-title class=\"text-muted-foreground text-xs font-medium\">Total Monthly Income</h3>\n              </div>\n              <span ui-badge variant=\"success\" class=\"text-xs\">100% Assigned</span>\n            </div>\n          </div>\n          <div ui-card-content class=\"space-y-2\">\n            <div>\n              <div class=\"text-foreground text-2xl font-bold tracking-tight tabular-nums\">$8,500.00</div>\n              <p class=\"text-muted-foreground mt-0.5 text-xs\">2 Inflow streams (Salary & Freelance)</p>\n            </div>\n            <div class=\"border-border/60 text-muted-foreground flex items-center justify-between border-t pt-2 text-xs\">\n              <span>Unassigned Pool</span>\n              <span class=\"text-success font-semibold tabular-nums\">$0.00</span>\n            </div>\n          </div>\n        </div>\n\n        <div ui-card class=\"flex flex-col justify-between shadow-xs\">\n          <div ui-card-header class=\"pb-2\">\n            <div class=\"flex items-center justify-between gap-2\">\n              <div class=\"flex items-center gap-2\">\n                <div\n                  aria-hidden=\"true\"\n                  class=\"bg-muted text-muted-foreground border-border flex size-8 shrink-0 items-center justify-center rounded-lg border shadow-xs\"\n                >\n                  <lucide-icon [img]=\"CreditCard\" class=\"size-4\" />\n                </div>\n                <h3 ui-card-title class=\"text-muted-foreground text-xs font-medium\">Budgeted & Spent</h3>\n              </div>\n              <span ui-badge variant=\"warning\" class=\"text-xs tabular-nums\">80.5% Spent</span>\n            </div>\n          </div>\n          <div ui-card-content class=\"space-y-2\">\n            <div>\n              <div class=\"flex items-baseline gap-1 text-2xl font-bold tracking-tight\">\n                <span class=\"text-foreground tabular-nums\">$6,840.00</span>\n                <span class=\"text-muted-foreground text-xs font-normal tabular-nums\">/ $8,500.00</span>\n              </div>\n              <div class=\"mt-2 space-y-1\">\n                <ui-progress [value]=\"80.5\" class=\"[&_[data-slot=progress-indicator]]:bg-warning h-2\" />\n              </div>\n            </div>\n            <div class=\"border-border/60 text-muted-foreground flex items-center justify-between border-t pt-2 text-xs\">\n              <span>Remaining in Envelopes</span>\n              <span class=\"text-foreground font-medium tabular-nums\">$1,660.00</span>\n            </div>\n          </div>\n        </div>\n\n        <div ui-card class=\"flex flex-col justify-between shadow-xs\">\n          <div ui-card-header class=\"pb-2\">\n            <div class=\"flex items-center justify-between gap-2\">\n              <div class=\"flex items-center gap-2\">\n                <div\n                  aria-hidden=\"true\"\n                  class=\"border-success/20 bg-success/10 text-success flex size-8 shrink-0 items-center justify-center rounded-lg border shadow-xs\"\n                >\n                  <lucide-icon [img]=\"PiggyBank\" class=\"size-4\" />\n                </div>\n                <h3 ui-card-title class=\"text-muted-foreground text-xs font-medium\">Savings Allocated</h3>\n              </div>\n              <span ui-badge variant=\"success\" class=\"text-xs tabular-nums\">19.5% Rate</span>\n            </div>\n          </div>\n          <div ui-card-content class=\"space-y-2\">\n            <div>\n              <div class=\"text-foreground text-2xl font-bold tracking-tight tabular-nums\">$1,660.00</div>\n              <div class=\"mt-2 space-y-1\">\n                <ui-progress [value]=\"89.3\" class=\"[&_[data-slot=progress-indicator]]:bg-success h-2\" />\n              </div>\n            </div>\n            <div class=\"border-border/60 text-muted-foreground flex items-center justify-between border-t pt-2 text-xs\">\n              <span>Funded to Date</span>\n              <span class=\"text-success font-semibold tabular-nums\">$1,483.00 (89.3%)</span>\n            </div>\n          </div>\n        </div>\n\n        <div ui-card class=\"flex flex-col justify-between shadow-xs\">\n          <div ui-card-header class=\"pb-2\">\n            <div class=\"flex items-center justify-between gap-2\">\n              <div class=\"flex items-center gap-2\">\n                <div\n                  aria-hidden=\"true\"\n                  class=\"bg-muted text-muted-foreground border-border flex size-8 shrink-0 items-center justify-center rounded-lg border shadow-xs\"\n                >\n                  <lucide-icon [img]=\"Clock\" class=\"size-4\" />\n                </div>\n                <h3 ui-card-title class=\"text-muted-foreground text-xs font-medium\">Month Pace</h3>\n              </div>\n              <span ui-badge variant=\"outline\" class=\"text-xs font-normal tabular-nums\">Day 21 of 31</span>\n            </div>\n          </div>\n          <div ui-card-content class=\"space-y-2\">\n            <div>\n              <div class=\"text-foreground text-2xl font-bold tracking-tight tabular-nums\">10 Days left</div>\n              <div class=\"mt-2 space-y-1\">\n                <ui-progress [value]=\"67.7\" class=\"h-2\" />\n              </div>\n            </div>\n            <div class=\"border-border/60 text-muted-foreground flex items-center justify-between border-t pt-2 text-xs\">\n              <span>Cycle Elapsed</span>\n              <span class=\"text-foreground font-medium tabular-nums\">67.7% of month</span>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"space-y-6\">\n        @for (section of sections; track section.id) {\n          <div ui-card class=\"overflow-hidden shadow-xs\">\n            <div ui-card-header class=\"bg-muted/20 border-border border-b py-4\">\n              <div class=\"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between\">\n                <div class=\"space-y-0.5\">\n                  <div class=\"flex items-center gap-2\">\n                    <lucide-icon [img]=\"asIcon(section.icon)\" class=\"text-muted-foreground size-4 shrink-0\" />\n                    <h3 ui-card-title class=\"text-base font-semibold\">{{ section.title }}</h3>\n                  </div>\n                  <p ui-card-description class=\"text-xs\">{{ section.description }}</p>\n                </div>\n                <div class=\"flex items-center gap-3 text-xs\">\n                  <div\n                    class=\"bg-background border-border flex items-center gap-2 rounded-md border px-3 py-1.5 shadow-2xs\"\n                  >\n                    <span class=\"text-muted-foreground\">Subtotal:</span>\n                    <span class=\"text-foreground font-semibold tabular-nums\">{{ format(section.totalSpent) }}</span>\n                    <span class=\"text-muted-foreground\">/</span>\n                    <span class=\"text-muted-foreground font-medium tabular-nums\">{{\n                      format(section.totalBudgeted)\n                    }}</span>\n                  </div>\n                </div>\n              </div>\n            </div>\n            <div ui-card-content class=\"p-0\">\n              <div class=\"overflow-x-auto\">\n                <table ui-table>\n                  <thead ui-table-header>\n                    <tr ui-table-row class=\"hover:bg-transparent\">\n                      <th ui-table-head class=\"min-w-[240px] text-xs font-semibold\">Envelope Category</th>\n                      <th ui-table-head class=\"text-right text-xs font-semibold\">\n                        {{ section.id === 'savings-investments' ? 'Monthly Target' : 'Budgeted' }}\n                      </th>\n                      <th ui-table-head class=\"text-right text-xs font-semibold\">\n                        {{ section.id === 'savings-investments' ? 'Funded to Date' : 'Spent to Date' }}\n                      </th>\n                      <th ui-table-head class=\"text-right text-xs font-semibold\">\n                        {{ section.id === 'savings-investments' ? 'Remaining to Goal' : 'Available Balance' }}\n                      </th>\n                      <th ui-table-head class=\"min-w-[180px] text-xs font-semibold\">Progress & Pace</th>\n                      <th ui-table-head class=\"w-[110px] text-right text-xs font-semibold\">Status</th>\n                    </tr>\n                  </thead>\n                  <tbody ui-table-body>\n                    @for (cat of section.categories; track cat.id) {\n                      <tr ui-table-row class=\"hover:bg-muted/40 transition-colors\">\n                        <td ui-table-cell class=\"py-3.5\">\n                          <div class=\"flex items-start gap-3\">\n                            <div\n                              aria-hidden=\"true\"\n                              class=\"bg-muted text-muted-foreground border-border mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg border shadow-xs\"\n                            >\n                              <lucide-icon [img]=\"asIcon(cat.icon)\" class=\"size-4\" />\n                            </div>\n                            <div class=\"space-y-0.5\">\n                              <p class=\"text-foreground text-xs font-semibold\">{{ cat.name }}</p>\n                              <p class=\"text-muted-foreground text-xs\">{{ cat.note }}</p>\n                            </div>\n                          </div>\n                        </td>\n                        <td ui-table-cell class=\"text-foreground py-3.5 text-right text-xs font-medium tabular-nums\">\n                          {{ format(cat.budgeted) }}\n                        </td>\n                        <td ui-table-cell class=\"text-foreground py-3.5 text-right text-xs font-medium tabular-nums\">\n                          {{ format(cat.spent) }}\n                        </td>\n                        <td ui-table-cell class=\"py-3.5 text-right text-xs\">\n                          <span [class]=\"remainingClass(cat)\">{{ format(cat.budgeted - cat.spent) }}</span>\n                        </td>\n                        <td ui-table-cell class=\"py-3.5\">\n                          <div class=\"space-y-1.5\">\n                            <div class=\"flex items-center justify-between text-xs\">\n                              <span class=\"text-muted-foreground tabular-nums\">\n                                {{ percent(cat) }}% {{ cat.isSavings ? 'funded' : 'used' }}\n                              </span>\n                              <span class=\"text-muted-foreground text-xs tabular-nums\">{{ format(cat.spent) }}</span>\n                            </div>\n                            <ui-progress [value]=\"percent(cat)\" [class]=\"progressClass(cat)\" />\n                          </div>\n                        </td>\n                        <td ui-table-cell class=\"py-3.5 text-right\">\n                          <span ui-badge [variant]=\"badgeVariant(cat)\" class=\"text-xs\">{{ cat.statusLabel }}</span>\n                        </td>\n                      </tr>\n                    }\n                  </tbody>\n                </table>\n              </div>\n            </div>\n          </div>\n        }\n      </div>\n\n      <div ui-card class=\"bg-muted/20 border-border p-4 shadow-xs\">\n        <div class=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n          <div class=\"flex items-start gap-3\">\n            <div\n              aria-hidden=\"true\"\n              class=\"border-success/20 bg-success/10 text-success mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg border shadow-xs\"\n            >\n              <lucide-icon [img]=\"CheckCircle2\" class=\"size-4\" />\n            </div>\n            <div class=\"space-y-0.5\">\n              <h4 class=\"text-foreground text-xs font-semibold\">Zero-Based Allocation Completed</h4>\n              <p class=\"text-muted-foreground text-xs\">\n                Every dollar of your $8,500.00 income is accounted for: $4,450.00 living expenses + $1,583.00 savings\n                goals + $2,467.00 scheduled buffer = $0.00 unassigned.\n              </p>\n            </div>\n          </div>\n          <div class=\"flex shrink-0 items-center gap-2\">\n            <span ui-badge variant=\"outline\" class=\"text-xs font-normal\">Next Payday: Sep 1, 2026</span>\n          </div>\n        </div>\n      </div>\n    </div>\n  `,\n})\nexport class UiPersonalFinanceBudgetComponent {\n  protected readonly Calendar = Calendar\n  protected readonly CheckCircle2 = CheckCircle2\n  protected readonly Clock = Clock\n  protected readonly CreditCard = CreditCard\n  protected readonly FolderPlus = FolderPlus\n  protected readonly PiggyBank = PiggyBank\n  protected readonly Plus = Plus\n  protected readonly Wallet = Wallet\n\n  @Input('class') className?: string\n\n  protected readonly sections = sections\n\n  get rootClass(): string {\n    return cn('mx-auto w-full max-w-6xl space-y-6', this.className)\n  }\n\n  format(amount: number): string {\n    return formatCurrency(amount)\n  }\n\n  percent(cat: EnvelopeCategory): number {\n    return Math.min(100, Math.round((cat.spent / cat.budgeted) * 100))\n  }\n\n  asIcon(icon: unknown): never {\n    return icon as never\n  }\n\n  remainingClass(cat: EnvelopeCategory): string {\n    const remaining = cat.budgeted - cat.spent\n    return cn(\n      'font-bold tabular-nums',\n      remaining === 0 ? 'text-muted-foreground' : cat.status === 'warning' ? 'text-warning' : 'text-success',\n    )\n  }\n\n  progressClass(cat: EnvelopeCategory): string {\n    return cn('h-1.5', this.progressColor(cat.status))\n  }\n\n  progressColor(status: EnvelopeStatus): string {\n    if (status === 'warning') return '[&_[data-slot=progress-indicator]]:bg-warning'\n    return '[&_[data-slot=progress-indicator]]:bg-success'\n  }\n\n  badgeVariant(cat: EnvelopeCategory): 'warning' | 'success' | 'outline' {\n    if (cat.status === 'warning') return 'warning'\n    if (cat.status === 'completed' || cat.status === 'healthy' || cat.status === 'on-track') return 'success'\n    return 'outline'\n  }\n}\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/personal-finance-budget/personal-finance-budget.component.ts"
    },
    {
      "path": "packages/registry-angular/blocks/personal-finance-budget/index.ts",
      "content": "export { UiPersonalFinanceBudgetComponent } from './personal-finance-budget.component'\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/personal-finance-budget/index.ts"
    }
  ],
  "dependencies": [
    "lucide-angular"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/angular/badge.json",
    "https://uipkge.dev/r/angular/button.json",
    "https://uipkge.dev/r/angular/card.json",
    "https://uipkge.dev/r/angular/progress.json",
    "https://uipkge.dev/r/angular/table.json"
  ],
  "description": "YNAB and Copilot-style zero-based monthly budget planner: envelope category budgeting, monthly pacing metrics, real-time spending progress by envelope, color-coded health indicators, and savings goal trackers.",
  "categories": [
    "finance",
    "dashboard",
    "app"
  ]
}