Compare commits
2 Commits
8307526f69
...
ab8d1d452d
| Author | SHA1 | Date | |
|---|---|---|---|
| ab8d1d452d | |||
| e7e19c530a |
@@ -5422,3 +5422,42 @@ one (Ember/Advent/Lent) where nothing wins outright and Marian Saturday's own `o
|
|||||||
doesn't apply. Authored `matins-hymn-ferial-saturday.yml` ("Summæ Deus cleméntiæ", live-verified
|
doesn't apply. Authored `matins-hymn-ferial-saturday.yml` ("Summæ Deus cleméntiæ", live-verified
|
||||||
against a clean September Ember Saturday, 2025-09-20) and added it to `resolveMatinsHymn`'s weekday
|
against a clean September Ember Saturday, 2025-09-20) and added it to `resolveMatinsHymn`'s weekday
|
||||||
lookup. `npm test` (2025 passed, no test changes needed) and `tsc --noEmit` both pass.
|
lookup. `npm test` (2025 passed, no test changes needed) and `tsc --noEmit` both pass.
|
||||||
|
|
||||||
|
### Sunday's own Matins hymn, plus every season's (Advent/Septuagesima/Lent/Passiontide/Paschaltide) (2026-09-04)
|
||||||
|
|
||||||
|
User asked for the actual detail behind the "genuinely more complex, not-yet-understood two-hymn
|
||||||
|
mechanism" flagged in the entry above (`Day0 Hymnus` vs `Day0 Hymnus1`). Turned out not to be a
|
||||||
|
mystery: live-checking several clean dates showed `Day0 Hymnus` ("Nocte surgéntes vigilémus omnes")
|
||||||
|
is simply Sunday's own plain per-annum hymn, and `Day0 Hymnus1` ("Primo diérum ómnium") is
|
||||||
|
Septuagesima-tide's own separate seasonal hymn — the exact same shape as Advent/Lent/Passiontide/
|
||||||
|
Paschaltide each having their own (live-verified: a Lenten Sunday and a Lenten feria both render
|
||||||
|
"Ex more docti mýstico" identically, so these seasonal hymns don't vary by weekday the way the
|
||||||
|
plain per-annum cycle does). None of the 5 seasonal Matins hymns, nor Sunday's own plain one, were
|
||||||
|
authored at all before this — every Sunday and every Advent/Lent/Passiontide/Paschaltide/
|
||||||
|
Septuagesima day (Sundays and ferias alike) that wasn't otherwise overridden by a winning saint/
|
||||||
|
octave was silently falling through to Monday's own ferial placeholder text.
|
||||||
|
|
||||||
|
Authored `matins-hymn-sunday.yml` ("Nocte surgéntes"), `matins-hymn-advent.yml` ("Verbum supérnum,
|
||||||
|
pródiens"), `matins-hymn-lent.yml` ("Ex more docti mýstico"), `matins-hymn-passiontide.yml` ("Pange,
|
||||||
|
lingua, gloriósi prœlium certáminis" — this breviary's own 5-stanza recension, not the longer
|
||||||
|
"Lustra sex..." continuation some other uses of the hymn carry), `matins-hymn-paschaltide.yml`
|
||||||
|
("Rex sempitérne Dómine"), and `matins-hymn-septuagesima.yml` ("Primo diérum ómnium") — all
|
||||||
|
live-verified, all self-contained with their own real closing doxology baked in (each one fixed and
|
||||||
|
distinct, not the shared weekday "Praesta, Pater piíssime..." ending).
|
||||||
|
|
||||||
|
Septuagesima is checked directly by `day.season === 'septuagesima'` in `resolveMatinsHymn` itself,
|
||||||
|
deliberately *not* folded into the shared `seasonalOfficeSuffix` (Lauds/Vespers' own) — that
|
||||||
|
function has no matching Septuagesima content authored for those hours yet, and `resolveOfficeBundle`
|
||||||
|
there is all-or-nothing per feast, so adding it would silently blank their chapter/hymn instead of
|
||||||
|
falling through to their current (imperfect but real) weekday default. Scoped to Matins alone; Lauds/
|
||||||
|
Vespers' own Septuagesima gap is real and separately flagged here, not fixed.
|
||||||
|
|
||||||
|
Also flagged, not fixed: the generic `matins-hymn-paschaltide.yml` will incorrectly render during
|
||||||
|
the Ascension octave specifically, which is live-verified to have its own genuinely different proper
|
||||||
|
hymn ("...Qui scandis super sídera") not yet authored anywhere — same-shape gap already existing in
|
||||||
|
Lauds' own `lauds-hymn-paschaltide.yml`, not a new regression introduced here.
|
||||||
|
|
||||||
|
Updated 2 `FERIAL_DATE` (2026-12-01, a Tuesday *in Advent*) hymn assertions in
|
||||||
|
`tests/hours/matins.test.ts` that had been asserting Tuesday's own ferial text — Advent's own
|
||||||
|
seasonal hymn correctly outranks the weekday cycle now. `npm test` (2025 passed) and `tsc --noEmit`
|
||||||
|
both pass.
|
||||||
|
|||||||
@@ -0,0 +1,100 @@
|
|||||||
|
# Advent's own Matins hymn ("Verbum supérnum, pródiens"). Live-verified
|
||||||
|
# against both a plain Advent Sunday and a plain Advent feria
|
||||||
|
# (2026-12-10, a Thursday with no saint of its own) — byte-identical, so
|
||||||
|
# this season doesn't vary its Matins hymn by weekday the way the plain
|
||||||
|
# per-annum ferial cycle does. Self-contained with its own closing
|
||||||
|
# doxology stanza baked in (a fixed, unique ending, "Laus, honor, virtus,
|
||||||
|
# glória... In sæculórum sǽcula" — not the shared weekday doxology).
|
||||||
|
id: matins-hymn-advent
|
||||||
|
text:
|
||||||
|
la: >-
|
||||||
|
Verbum supérnum, pródiens
|
||||||
|
|
||||||
|
A Patre olim éxiens,
|
||||||
|
|
||||||
|
Qui natus orbi súbvenis,
|
||||||
|
|
||||||
|
Cursu declívi témporis.
|
||||||
|
|
||||||
|
|
||||||
|
Illúmina nunc péctora,
|
||||||
|
|
||||||
|
Tuóque amóre cóncrema;
|
||||||
|
|
||||||
|
Audíto ut præcónio
|
||||||
|
|
||||||
|
Sint pulsa tandem lúbrica.
|
||||||
|
|
||||||
|
|
||||||
|
Judéxque cum post áderis
|
||||||
|
|
||||||
|
Rimári facta péctoris,
|
||||||
|
|
||||||
|
Reddens vicem pro ábditis,
|
||||||
|
|
||||||
|
Justísque regnum pro bonis.
|
||||||
|
|
||||||
|
|
||||||
|
Non demum arctémur malis
|
||||||
|
|
||||||
|
Pro qualitáte críminis;
|
||||||
|
|
||||||
|
Sed cum beátis cómpotes
|
||||||
|
|
||||||
|
Simus perénnes cælibes.
|
||||||
|
|
||||||
|
|
||||||
|
Laus, honor, virtus, glória,
|
||||||
|
|
||||||
|
Deo Patri, et Fílio,
|
||||||
|
|
||||||
|
Sancto simul Paráclito,
|
||||||
|
|
||||||
|
In sæculórum sǽcula. Amen.
|
||||||
|
en: >-
|
||||||
|
Celestial Word, to this our earth
|
||||||
|
|
||||||
|
Sent down from God's eternal clime,
|
||||||
|
|
||||||
|
To save mankind by mortal birth
|
||||||
|
|
||||||
|
Into a world of change and time;
|
||||||
|
|
||||||
|
|
||||||
|
Enlighten our hearts; vain hopes destroy;
|
||||||
|
|
||||||
|
And in thy love's consuming fire
|
||||||
|
|
||||||
|
Fill all the soul with heavenly joy,
|
||||||
|
|
||||||
|
And melt the dross of low desire.
|
||||||
|
|
||||||
|
|
||||||
|
So when the Judge of quick and dead
|
||||||
|
|
||||||
|
Shall bid his awful summons come,
|
||||||
|
|
||||||
|
To whelm the guilty soul with dread,
|
||||||
|
|
||||||
|
And call the blessed to their home.
|
||||||
|
|
||||||
|
|
||||||
|
Saved from the whirling, black abyss,
|
||||||
|
|
||||||
|
Forevermore to us be given
|
||||||
|
|
||||||
|
To share the feast of saintly bliss,
|
||||||
|
|
||||||
|
And see the face of God in heaven.
|
||||||
|
|
||||||
|
|
||||||
|
To God the Father and the Son
|
||||||
|
|
||||||
|
Our songs with one accord we raise;
|
||||||
|
|
||||||
|
And to the Holy Spirit, One
|
||||||
|
|
||||||
|
With them, be ever equal praise. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -10,15 +10,13 @@
|
|||||||
# `resolveMatinsHymn` now looks up a weekday-specific id
|
# `resolveMatinsHymn` now looks up a weekday-specific id
|
||||||
# (`matins-hymn-ferial-tuesday`/`-wednesday`/`-thursday`/`-friday`/
|
# (`matins-hymn-ferial-tuesday`/`-wednesday`/`-thursday`/`-friday`/
|
||||||
# `-saturday`) for those five days; this file (`matins-hymn-ferial`, no
|
# `-saturday`) for those five days; this file (`matins-hymn-ferial`, no
|
||||||
# day suffix) is still used directly for Monday, and — as a deliberate,
|
# day suffix) is still used directly for Monday. Sunday's own gap (turned
|
||||||
# documented placeholder, not yet its own real content — for Sunday too:
|
# out simple, not the "genuinely more complex two-hymn mechanism" first
|
||||||
# Sunday's own real Matins hymn selection is a genuinely more complex,
|
# suspected — see matins-hymn-sunday.yml's own header) and Saturday's own
|
||||||
# not-yet-modeled two-hymn mechanism (Day0 Hymnus vs Hymnus1, live source
|
# gap (superseded on nearly every ordinary Saturday by Marian Saturday,
|
||||||
# tags H-MatDom1/H-MatDom4, purpose unconfirmed). Saturday's own gap
|
# not a full Little Office — see matins-hymn-ferial-saturday.yml and
|
||||||
# (superseded on nearly every ordinary Saturday by Marian Saturday, not a
|
# calendar/index.ts's applyMarianSaturday) were both closed the same
|
||||||
# full Little Office — see matins-hymn-ferial-saturday.yml and
|
# session. See TODO.md's 2026-09-04 entries.
|
||||||
# calendar/index.ts's applyMarianSaturday) was closed the same day. See
|
|
||||||
# TODO.md's 2026-09-04 entries.
|
|
||||||
#
|
#
|
||||||
# The closing doxology stanza is split out into
|
# The closing doxology stanza is split out into
|
||||||
# matins-hymn-doxology-per-annum.yml (see hours/matins.ts) — the source
|
# matins-hymn-doxology-per-annum.yml (see hours/matins.ts) — the source
|
||||||
|
|||||||
@@ -0,0 +1,173 @@
|
|||||||
|
# Lent's own Matins hymn ("Ex more docti mýstico"), used throughout Lent
|
||||||
|
# up to (not including) Passiontide, which has its own separate hymn
|
||||||
|
# (`matins-hymn-passiontide.yml`). Live-verified against both a plain
|
||||||
|
# Lenten Sunday (2026-03-01) and a plain Lenten feria (2026-03-03, a
|
||||||
|
# Tuesday) — byte-identical, so this season doesn't vary its Matins hymn
|
||||||
|
# by weekday. Self-contained with its own closing doxology stanza baked
|
||||||
|
# in (a fixed, unique ending, "Præsta, beáta Trínitas..." — not the
|
||||||
|
# shared weekday doxology).
|
||||||
|
id: matins-hymn-lent
|
||||||
|
text:
|
||||||
|
la: >-
|
||||||
|
Ex more docti mýstico
|
||||||
|
|
||||||
|
Servémus hoc jejúnium,
|
||||||
|
|
||||||
|
Deno diérum círculo
|
||||||
|
|
||||||
|
Ducto quater notíssimo.
|
||||||
|
|
||||||
|
|
||||||
|
Lex et prophétæ prímitus
|
||||||
|
|
||||||
|
Hoc prætulérunt, póstmodum
|
||||||
|
|
||||||
|
Christus sacrávit, ómnium
|
||||||
|
|
||||||
|
Rex atque factor témporum.
|
||||||
|
|
||||||
|
|
||||||
|
Utámur ergo párcius
|
||||||
|
|
||||||
|
Verbis, cibis et pótibus,
|
||||||
|
|
||||||
|
Somno, jocis, et árctius
|
||||||
|
|
||||||
|
Perstémus in custódia.
|
||||||
|
|
||||||
|
|
||||||
|
Vitémus autem péssima,
|
||||||
|
|
||||||
|
Quæ súbruunt mentes vagas:
|
||||||
|
|
||||||
|
Nullúmque demus cállidi
|
||||||
|
|
||||||
|
Hostis locum tyránnidi.
|
||||||
|
|
||||||
|
|
||||||
|
Dicámus omnes cérnui:
|
||||||
|
|
||||||
|
Clamémus atque sínguli,
|
||||||
|
|
||||||
|
Plorémus ante Júdicem,
|
||||||
|
|
||||||
|
Flectámus iram víndicem,
|
||||||
|
|
||||||
|
|
||||||
|
Nostris malis offéndimus
|
||||||
|
|
||||||
|
Tuam, Deus, cleméntiam:
|
||||||
|
|
||||||
|
Effúnde nobis désuper,
|
||||||
|
|
||||||
|
Remíssor, indulgéntiam.
|
||||||
|
|
||||||
|
|
||||||
|
Meménto quod sumus tui,
|
||||||
|
|
||||||
|
Licet cadúci, plásmatis:
|
||||||
|
|
||||||
|
Ne des honórem nóminis
|
||||||
|
|
||||||
|
Tui, precámur, álteri.
|
||||||
|
|
||||||
|
|
||||||
|
Laxa malum, quod fécimus,
|
||||||
|
|
||||||
|
Auge bonum, quod póscimus:
|
||||||
|
|
||||||
|
Placére quo tandem tibi
|
||||||
|
|
||||||
|
Possímus hic, et pérpetim.
|
||||||
|
|
||||||
|
|
||||||
|
Præsta, beáta Trínitas,
|
||||||
|
|
||||||
|
Concéde, simplex Únitas,
|
||||||
|
|
||||||
|
Ut fructuósa sint tuis
|
||||||
|
|
||||||
|
Jejuniórum múnera. Amen.
|
||||||
|
en: >-
|
||||||
|
The fast, as taught by holy lore,
|
||||||
|
|
||||||
|
We keep in solemn course once more:
|
||||||
|
|
||||||
|
The fast to all men known, and bound
|
||||||
|
|
||||||
|
In forty days of yearly round.
|
||||||
|
|
||||||
|
|
||||||
|
The law and seers that were of old
|
||||||
|
|
||||||
|
In diverse ways this Lent foretold,
|
||||||
|
|
||||||
|
Which Christ, all seasons' King and Guide,
|
||||||
|
|
||||||
|
In after ages sanctified.
|
||||||
|
|
||||||
|
|
||||||
|
More sparing therefore let us make
|
||||||
|
|
||||||
|
The words we speak, the food we take,
|
||||||
|
|
||||||
|
Our sleep and mirth, and closer barred
|
||||||
|
|
||||||
|
Be every sense in holy guard.
|
||||||
|
|
||||||
|
|
||||||
|
Avoid the evil thoughts that roll
|
||||||
|
|
||||||
|
Like waters o'er the heedless soul;
|
||||||
|
|
||||||
|
Nor let the foe occasion find
|
||||||
|
|
||||||
|
Our souls in slavery to bind.
|
||||||
|
|
||||||
|
|
||||||
|
In prayer together let us fall,
|
||||||
|
|
||||||
|
And cry for mercy, one and all,
|
||||||
|
|
||||||
|
And weep before the Judge's feet,
|
||||||
|
|
||||||
|
And his avenging wrath entreat.
|
||||||
|
|
||||||
|
|
||||||
|
Thy grace have we offended sore,
|
||||||
|
|
||||||
|
By sins, O God, which we deplore;
|
||||||
|
|
||||||
|
But pour upon us from on high,
|
||||||
|
|
||||||
|
O pardoning One, thy clemency.
|
||||||
|
|
||||||
|
|
||||||
|
Remember thou, though frail we be,
|
||||||
|
|
||||||
|
That yet thine handiwork are we;
|
||||||
|
|
||||||
|
Nor let the honour of thy name
|
||||||
|
|
||||||
|
Be by another put to shame.
|
||||||
|
|
||||||
|
|
||||||
|
Forgive the sin that we have wrought;
|
||||||
|
|
||||||
|
Increase the good that we have sought:
|
||||||
|
|
||||||
|
That we at length, our wanderings o'er,
|
||||||
|
|
||||||
|
May please thee here and evermore.
|
||||||
|
|
||||||
|
|
||||||
|
Grant O thou Blessed Trinity,
|
||||||
|
|
||||||
|
Grant, O Essential Unity,
|
||||||
|
|
||||||
|
That this our fast of forty days
|
||||||
|
|
||||||
|
May work our profit and thy praise. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,185 @@
|
|||||||
|
# Paschaltide's own Matins hymn ("Rex sempitérne Dómine"), live-verified
|
||||||
|
# against a plain post-Easter-Octave feria (2026-04-20, a Monday, "Feria
|
||||||
|
# Secunda infra Hebdomadam II post Octavam Paschæ"). Covers vu's whole
|
||||||
|
# `PASCHALTIDE_SEASONS` cluster (eastertide/ascensiontide/pentecost) per
|
||||||
|
# `seasonalOfficeSuffix`'s existing collapse — but the Ascension octave
|
||||||
|
# itself is live-verified to actually use a real, different, not-yet-
|
||||||
|
# authored proper hymn of its own ("...Qui scandis super sídera",
|
||||||
|
# 2026-05-15) that this app doesn't model yet; this generic Paschaltide
|
||||||
|
# text will incorrectly apply there for now — a known simplification
|
||||||
|
# matching a same-shape, pre-existing gap in Lauds' own
|
||||||
|
# `lauds-hymn-paschaltide.yml`, not a new regression. Flagged in TODO.md.
|
||||||
|
#
|
||||||
|
# Self-contained with its own closing doxology stanza baked in ("Glória
|
||||||
|
# tibi Dómine, Qui surrexísti a mórtuis..." — byte-identical to the
|
||||||
|
# already-existing `hymn-doxology-pasch.yml` used by Lauds/Vespers, but
|
||||||
|
# baked directly into the body here rather than split out/reattached,
|
||||||
|
# since this hour doesn't need the seasonal doxology-override mechanism
|
||||||
|
# for its own sub-season variants (Ascension/Pentecost/etc.) to matter —
|
||||||
|
# those days don't reach this file's own generic content at all until the
|
||||||
|
# proper-hymn gap above is closed).
|
||||||
|
id: matins-hymn-paschaltide
|
||||||
|
text:
|
||||||
|
la: >-
|
||||||
|
Rex sempitérne Dómine,
|
||||||
|
|
||||||
|
Rerum Creátor ómnium,
|
||||||
|
|
||||||
|
Qui eras ante sǽcula
|
||||||
|
|
||||||
|
Semper cum Patre Fílius:
|
||||||
|
|
||||||
|
|
||||||
|
Qui mundi in primórdio
|
||||||
|
|
||||||
|
Adam plásmasti hóminem:
|
||||||
|
|
||||||
|
Cui tuæ imágini
|
||||||
|
|
||||||
|
Vultum dedísti símilem.
|
||||||
|
|
||||||
|
|
||||||
|
Quem diábolus decéperat,
|
||||||
|
|
||||||
|
Hostis humáni géneris,
|
||||||
|
|
||||||
|
Cujus tu formam córporis
|
||||||
|
|
||||||
|
Assúmere dignátus es:
|
||||||
|
|
||||||
|
|
||||||
|
Ut hóminem redímeres,
|
||||||
|
|
||||||
|
Quem ante jam plasmáveras:
|
||||||
|
|
||||||
|
Et nos Deo conjúngeres,
|
||||||
|
|
||||||
|
Per carnis contubérnium.
|
||||||
|
|
||||||
|
|
||||||
|
Quem éditum ex Vírgine
|
||||||
|
|
||||||
|
Pavéscit omnis ánima:
|
||||||
|
|
||||||
|
Per quem et nos resúrgere
|
||||||
|
|
||||||
|
Devóta mente crédimus.
|
||||||
|
|
||||||
|
|
||||||
|
Qui nobis in Baptísmate
|
||||||
|
|
||||||
|
Donásti indulgéntiam,
|
||||||
|
|
||||||
|
Qui tenebámur vínculis
|
||||||
|
|
||||||
|
Ligáti consciéntiæ.
|
||||||
|
|
||||||
|
|
||||||
|
Qui Crucem propter hóminem
|
||||||
|
|
||||||
|
Suscípere dignátus es:
|
||||||
|
|
||||||
|
Dedísti tuum sánguinem
|
||||||
|
|
||||||
|
Nostræ salútis prétium.
|
||||||
|
|
||||||
|
|
||||||
|
Quǽsumus Auctor ómnium,
|
||||||
|
|
||||||
|
In hoc Pascháli gáudio,
|
||||||
|
|
||||||
|
Ab omni mortis ímpetu
|
||||||
|
|
||||||
|
Tuum defénde pópulum.
|
||||||
|
|
||||||
|
|
||||||
|
Glória tibi Dómine,
|
||||||
|
|
||||||
|
Qui surrexísti a mórtuis,
|
||||||
|
|
||||||
|
Cum Patre et Sancto Spíritu,
|
||||||
|
|
||||||
|
In sempitérna sǽcula. Amen.
|
||||||
|
en: >-
|
||||||
|
O thou, the heavens' eternal King,
|
||||||
|
|
||||||
|
Creator, unto thee we sing,
|
||||||
|
|
||||||
|
With God the Father ever One,
|
||||||
|
|
||||||
|
Co-equal, co-eternal Son.
|
||||||
|
|
||||||
|
|
||||||
|
Thy hand, when first the world began,
|
||||||
|
|
||||||
|
Made in thine own pure image man,
|
||||||
|
|
||||||
|
And linked to Adam, sprung from earth,
|
||||||
|
|
||||||
|
A living soul of heavenly birth.
|
||||||
|
|
||||||
|
|
||||||
|
And when by craft the envious foe
|
||||||
|
|
||||||
|
Had marred thy noblest work below,
|
||||||
|
|
||||||
|
Clothed in our flesh, thou didst restore
|
||||||
|
|
||||||
|
The image thou hadst made before.
|
||||||
|
|
||||||
|
|
||||||
|
So that thou might redeem man
|
||||||
|
|
||||||
|
Whom thou hadst made
|
||||||
|
|
||||||
|
And us to God might thou wouldst unite
|
||||||
|
|
||||||
|
Through thy union with the flesh.
|
||||||
|
|
||||||
|
|
||||||
|
Once wast thou born of Mary's womb;
|
||||||
|
|
||||||
|
And now, new-born from out the tomb,
|
||||||
|
|
||||||
|
O Christ, thou bidd'st us rise with thee
|
||||||
|
|
||||||
|
From death to immortality.
|
||||||
|
|
||||||
|
|
||||||
|
Eternal Shepherd, thou dost lave
|
||||||
|
|
||||||
|
Thy flock in pure baptismal wave,
|
||||||
|
|
||||||
|
That mystic bath, that grave of sin,
|
||||||
|
|
||||||
|
Where ransomed souls new life begin.
|
||||||
|
|
||||||
|
|
||||||
|
Redeemer, thou for us didst deign
|
||||||
|
|
||||||
|
To hang upon the Cross of pain,
|
||||||
|
|
||||||
|
And give for us the lavish price
|
||||||
|
|
||||||
|
Of thine own blood in sacrifice.
|
||||||
|
|
||||||
|
|
||||||
|
Grant, Lord, in thee each faithful mind
|
||||||
|
|
||||||
|
Unceasing paschal joy may find;
|
||||||
|
|
||||||
|
And from the death of sin set free
|
||||||
|
|
||||||
|
Souls newly born to life by thee.
|
||||||
|
|
||||||
|
|
||||||
|
To Thee Who, dead, again dost live,
|
||||||
|
|
||||||
|
All glory, Lord, Thy people give;
|
||||||
|
|
||||||
|
All glory, as is ever meet,
|
||||||
|
|
||||||
|
To Father and to Paraclete. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
# Passiontide's own Matins hymn ("Pange, lingua, gloriósi prœ́lium
|
||||||
|
# certáminis" — the Passiontide recension of Venantius Fortunatus' hymn,
|
||||||
|
# distinct from Lent's own "Ex more docti mýstico" used up to this point).
|
||||||
|
# Live-verified against both Passion Sunday itself (2026-03-22) and a
|
||||||
|
# plain Passiontide feria (2026-03-24, a Tuesday) — byte-identical, so
|
||||||
|
# this season doesn't vary its Matins hymn by weekday. This particular
|
||||||
|
# breviary recension is 5 stanzas, ending after the Incarnation/manger
|
||||||
|
# stanza — it does not continue into the "Lustra sex qui iam peracta..."
|
||||||
|
# stanzas some other uses of this hymn carry. Self-contained with its own
|
||||||
|
# closing doxology stanza baked in (a fixed, unique ending, "Glória, et
|
||||||
|
# honor Deo..." — not the shared weekday doxology).
|
||||||
|
id: matins-hymn-passiontide
|
||||||
|
text:
|
||||||
|
la: >-
|
||||||
|
Pange, lingua, gloriósi
|
||||||
|
|
||||||
|
Prœlium certáminis,
|
||||||
|
|
||||||
|
Et super Crucis trophǽo
|
||||||
|
|
||||||
|
Dic triúmphum nóbilem,
|
||||||
|
|
||||||
|
Quáliter Redémptor orbis
|
||||||
|
|
||||||
|
Immolátus vícerit.
|
||||||
|
|
||||||
|
|
||||||
|
De paréntis protoplásti
|
||||||
|
|
||||||
|
Fraude Factor cóndolens,
|
||||||
|
|
||||||
|
Quando pomi noxiális
|
||||||
|
|
||||||
|
Morsu in mortem córruit,
|
||||||
|
|
||||||
|
Ipse lignum tunc notávit,
|
||||||
|
|
||||||
|
Damna ligni ut sólveret.
|
||||||
|
|
||||||
|
|
||||||
|
Hoc opus nostræ salútis
|
||||||
|
|
||||||
|
Ordo depopóscerat,
|
||||||
|
|
||||||
|
Multifórmis proditóris
|
||||||
|
|
||||||
|
Ars ut artem fálleret,
|
||||||
|
|
||||||
|
Et medélam ferret inde,
|
||||||
|
|
||||||
|
Hostis unde lǽserat.
|
||||||
|
|
||||||
|
|
||||||
|
Quando venit ergo sacri
|
||||||
|
|
||||||
|
Plenitúdo témporis,
|
||||||
|
|
||||||
|
Missus est ab arce Patris
|
||||||
|
|
||||||
|
Natus, orbis Cónditor,
|
||||||
|
|
||||||
|
Atque ventre virgináli
|
||||||
|
|
||||||
|
Carne amíctus pródiit.
|
||||||
|
|
||||||
|
|
||||||
|
Vagit infans inter arcta
|
||||||
|
|
||||||
|
Cónditus præsépia:
|
||||||
|
|
||||||
|
Membra pannis involúta
|
||||||
|
|
||||||
|
Virgo Mater álligat:
|
||||||
|
|
||||||
|
Et manus, pedésque, et crura
|
||||||
|
|
||||||
|
Stricta cingit fáscia.
|
||||||
|
|
||||||
|
|
||||||
|
Glória, et honor Deo
|
||||||
|
|
||||||
|
Usqueqáque Altíssimo,
|
||||||
|
|
||||||
|
Una Patri, Filióque;
|
||||||
|
|
||||||
|
Inclyto Paráclito:
|
||||||
|
|
||||||
|
Cui laus est et potéstas,
|
||||||
|
|
||||||
|
Per ætérna sǽcula. Amen.
|
||||||
|
en: >-
|
||||||
|
Sing, my tongue, the glorious battle
|
||||||
|
|
||||||
|
Sing the last, the dread affray;
|
||||||
|
|
||||||
|
O'er the cross, the victor's trophy,
|
||||||
|
|
||||||
|
Sound the high triumphal lay:
|
||||||
|
|
||||||
|
Tell how Christ, the world's Redeemer,
|
||||||
|
|
||||||
|
As a victim won the day.
|
||||||
|
|
||||||
|
|
||||||
|
God, his Maker, sorely grieving
|
||||||
|
|
||||||
|
That the first-made Adam fell,
|
||||||
|
|
||||||
|
When he ate the fruit of sorrow,
|
||||||
|
|
||||||
|
Whose reward was death and hell,
|
||||||
|
|
||||||
|
Noted then this wood, the ruin
|
||||||
|
|
||||||
|
Of the ancient wood to quell.
|
||||||
|
|
||||||
|
|
||||||
|
For the work of our salvation
|
||||||
|
|
||||||
|
Needs would have his order so,
|
||||||
|
|
||||||
|
And the multiform deceiver's
|
||||||
|
|
||||||
|
Art by art would overthrow,
|
||||||
|
|
||||||
|
And from thence would bring the med'cine
|
||||||
|
|
||||||
|
Whence the insult of the foe.
|
||||||
|
|
||||||
|
|
||||||
|
Wherefore, when the sacred fullness
|
||||||
|
|
||||||
|
Of the appointed time was come,
|
||||||
|
|
||||||
|
This world's Maker left his Father,
|
||||||
|
|
||||||
|
Sent the heav'nly mansion from,
|
||||||
|
|
||||||
|
And proceeded, God Incarnate,
|
||||||
|
|
||||||
|
Of the Virgin's holy womb.
|
||||||
|
|
||||||
|
|
||||||
|
Weeps the infant in the manger
|
||||||
|
|
||||||
|
That in Bethlehem's stable stands;
|
||||||
|
|
||||||
|
And his limbs the Virgin Mother
|
||||||
|
|
||||||
|
Doth compose in swaddling bands,
|
||||||
|
|
||||||
|
Meetly thus in linen folding
|
||||||
|
|
||||||
|
Of her God the feet and hands.
|
||||||
|
|
||||||
|
|
||||||
|
To the Trinity be glory
|
||||||
|
|
||||||
|
Everlasting, as is meet;
|
||||||
|
|
||||||
|
Equal to the Father, equal
|
||||||
|
|
||||||
|
To the Son, and Paraclete:
|
||||||
|
|
||||||
|
Trinal Unity, whose praises
|
||||||
|
|
||||||
|
All created things repeat. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,174 @@
|
|||||||
|
# Septuagesima-tide's own Matins hymn ("Primo diérum ómnium" —
|
||||||
|
# Psalterium/Special/Matutinum Special.txt's "Day0 Hymnus1M", a genuinely
|
||||||
|
# separate full text from the secular "Day0 Hymnus1", not a word-swap).
|
||||||
|
# Live-verified 2026-02-01 (Septuagesima Sunday itself). Checked before
|
||||||
|
# `matins-hymn-sunday.yml` in `resolveMatinsHymn` — this only ever
|
||||||
|
# applies during Septuagesima/Sexagesima/Quinquagesima, a real, narrow
|
||||||
|
# season vu's calendar already tracks (`day.season === 'septuagesima'`)
|
||||||
|
# but that the shared `seasonalOfficeSuffix` (Lauds/Vespers' own) doesn't
|
||||||
|
# cover — checked directly here rather than added there, since Lauds/
|
||||||
|
# Vespers have no matching Septuagesima content authored yet and adding
|
||||||
|
# it to that shared function would silently blank their own chapter/
|
||||||
|
# hymn instead of falling through to their current (imperfect but real)
|
||||||
|
# weekday default. See TODO.md.
|
||||||
|
#
|
||||||
|
# Self-contained, own closing doxology baked in — happens to be
|
||||||
|
# byte-identical to the shared "Praesta, Pater piíssime..." weekday
|
||||||
|
# doxology, but this hour doesn't use the split/append mechanism at all
|
||||||
|
# for this seasonal tier (see matins-hymn-sunday.yml's own header).
|
||||||
|
id: matins-hymn-septuagesima
|
||||||
|
text:
|
||||||
|
la: >-
|
||||||
|
Primo diérum ómnium,
|
||||||
|
|
||||||
|
Quo mundus extat cónditus,
|
||||||
|
|
||||||
|
Vel quo resúrgens Cónditor
|
||||||
|
|
||||||
|
Nos morte victa líberat.
|
||||||
|
|
||||||
|
|
||||||
|
Pulsis procul torpóribus
|
||||||
|
|
||||||
|
Surgámus omnes ócius,
|
||||||
|
|
||||||
|
Et nocte quærámus pium
|
||||||
|
|
||||||
|
Sicut prophétam nóvimus.
|
||||||
|
|
||||||
|
|
||||||
|
Nostras preces ut áudiat,
|
||||||
|
|
||||||
|
Suámque dextram pórrigat:
|
||||||
|
|
||||||
|
Et expiátos sórdibus
|
||||||
|
|
||||||
|
Reddat polórum sédibus.
|
||||||
|
|
||||||
|
|
||||||
|
Ut quique sacratíssimo
|
||||||
|
|
||||||
|
Hujus diéi témpore
|
||||||
|
|
||||||
|
Horis quiétis psállimus,
|
||||||
|
|
||||||
|
Donis beátis múneret.
|
||||||
|
|
||||||
|
|
||||||
|
Jam nunc patérna cláritas
|
||||||
|
|
||||||
|
Te postulámus áffatim:
|
||||||
|
|
||||||
|
Absit libído sórdidans
|
||||||
|
|
||||||
|
Et omnis actus nóxius.
|
||||||
|
|
||||||
|
|
||||||
|
Ne fœda sit, vel lúbrica
|
||||||
|
|
||||||
|
Compágo nostri córporis,
|
||||||
|
|
||||||
|
Per quem Avérni ígnibus
|
||||||
|
|
||||||
|
Ipsi cremémur ácrius.
|
||||||
|
|
||||||
|
|
||||||
|
Ob hoc Redémptor, quǽsumus,
|
||||||
|
|
||||||
|
Ut probra nostra díluas,
|
||||||
|
|
||||||
|
Vitæ perénnis cómmoda
|
||||||
|
|
||||||
|
Nobis benígne cónferas.
|
||||||
|
|
||||||
|
|
||||||
|
Quo carnis actu éxsules
|
||||||
|
|
||||||
|
Effécti ipsi cælibes,
|
||||||
|
|
||||||
|
Ut præstolámur cérnui,
|
||||||
|
|
||||||
|
Melos canámus glóriæ.
|
||||||
|
|
||||||
|
|
||||||
|
Præsta, Pater piíssime,
|
||||||
|
|
||||||
|
Patríque compar Únice,
|
||||||
|
|
||||||
|
Cum Spíritu Paráclito
|
||||||
|
|
||||||
|
Regnans per omne sǽculum. Amen.
|
||||||
|
en: >-
|
||||||
|
Hail day! whereon the One in Three
|
||||||
|
|
||||||
|
First formed the earth by sure decree,
|
||||||
|
|
||||||
|
The day its Maker rose again,
|
||||||
|
|
||||||
|
And vanquished death, and burst our chain.
|
||||||
|
|
||||||
|
|
||||||
|
Away with sleep and slothful ease
|
||||||
|
|
||||||
|
We raise our hearts and bend our knees,
|
||||||
|
|
||||||
|
And early seek the Lord of all,
|
||||||
|
|
||||||
|
Obedient to the Prophet's call.
|
||||||
|
|
||||||
|
|
||||||
|
That He may hearken to our prayer,
|
||||||
|
|
||||||
|
Stretch forth His strong right arm to spare,
|
||||||
|
|
||||||
|
And ev'ry past offense forgiven,
|
||||||
|
|
||||||
|
Restore us to our home in heaven.
|
||||||
|
|
||||||
|
|
||||||
|
Assembled here this holy day,
|
||||||
|
|
||||||
|
This holiest hour we raise the lay,
|
||||||
|
|
||||||
|
And O that He to whom we sing,
|
||||||
|
|
||||||
|
May now reward our offering!
|
||||||
|
|
||||||
|
|
||||||
|
O Father of unclouded light!
|
||||||
|
|
||||||
|
Keep us this day as in thy sight,
|
||||||
|
|
||||||
|
In word and deed that we may be
|
||||||
|
|
||||||
|
From ev'ry touch of evil free.
|
||||||
|
|
||||||
|
|
||||||
|
That this our body's mortal frame
|
||||||
|
|
||||||
|
May know no sin, and fear no shame,
|
||||||
|
|
||||||
|
Nor fire hereafter be the end
|
||||||
|
|
||||||
|
Of passions which our bosom rend.
|
||||||
|
|
||||||
|
|
||||||
|
Redeemer of the world, we pray
|
||||||
|
|
||||||
|
That thou wouldst wash our sins away,
|
||||||
|
|
||||||
|
And give us, of Thy boundless grace,
|
||||||
|
|
||||||
|
The blessings of the heavenly place.
|
||||||
|
|
||||||
|
|
||||||
|
Most Holy Father, hear our cry,
|
||||||
|
|
||||||
|
Through Jesus Christ our Lord most High
|
||||||
|
|
||||||
|
Who, with the Holy Ghost and thee
|
||||||
|
|
||||||
|
Shall live and reign eternally. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
# Sunday's own plain Matins hymn ("Nocte surgéntes vigilémus omnes" —
|
||||||
|
# Psalterium/Special/Matutinum Special.txt's "Day0 Hymnus", Monastic
|
||||||
|
# 1617's own "Day0 HymnusM" swap applied: "Víribus totis"/"beátam"/
|
||||||
|
# "réboat" replacing the secular "Voce concórdi"/"perénnem"/"résonat").
|
||||||
|
# Live-verified against 3 clean ordinary-time (Trinitytide) Sundays with
|
||||||
|
# no season/octave/winning-saint override (2026-07-05, 2026-08-02,
|
||||||
|
# 2026-09-06), all byte-identical.
|
||||||
|
#
|
||||||
|
# Self-contained with its own closing doxology stanza baked in (a fixed,
|
||||||
|
# unique Sapphic-meter ending, "Præstet hoc nobis Déitas beáta..." — not
|
||||||
|
# the shared iambic-dimeter "Praesta, Pater piíssime..." every weekday
|
||||||
|
# ferial hymn uses) — same convention as every other self-contained
|
||||||
|
# Matins hymn (see e.g. matins-hymn-common-of-an-apostle.yml).
|
||||||
|
#
|
||||||
|
# Septuagesima-tide has its own separate, genuinely different Sunday
|
||||||
|
# hymn ("Primo diérum ómnium", `matins-hymn-septuagesima.yml`) — checked
|
||||||
|
# before this one in `resolveMatinsHymn`'s precedence, same as Advent/
|
||||||
|
# Lent/Passiontide/Paschaltide's own seasonal hymns. Advent/Lent/
|
||||||
|
# Passiontide/Paschaltide's own Sunday hymns turned out identical to
|
||||||
|
# their own ferial-weekday hymns (live-verified: a Lenten Tuesday and a
|
||||||
|
# Lenten Sunday both render "Ex more docti mýstico"), unlike the plain
|
||||||
|
# per-annum case here, where Sunday genuinely differs from the weekday
|
||||||
|
# cycle (`matins-hymn-ferial*.yml`).
|
||||||
|
id: matins-hymn-sunday
|
||||||
|
text:
|
||||||
|
la: >-
|
||||||
|
Nocte surgéntes vigilémus omnes,
|
||||||
|
|
||||||
|
Semper in psalmis meditémur, atque
|
||||||
|
|
||||||
|
Víribus totis Dómino canámus
|
||||||
|
|
||||||
|
Dúlciter hymnos.
|
||||||
|
|
||||||
|
|
||||||
|
Ut pio Regi páriter canéntes,
|
||||||
|
|
||||||
|
Cum suis Sanctis mereámur aulam
|
||||||
|
|
||||||
|
Íngredi cæli, simul et beátam
|
||||||
|
|
||||||
|
Dúcere vitam.
|
||||||
|
|
||||||
|
|
||||||
|
Præstet hoc nobis Déitas beáta
|
||||||
|
|
||||||
|
Patris, ac Nati, paritérque Sancti
|
||||||
|
|
||||||
|
Spíritus, cujus réboat per omnem
|
||||||
|
|
||||||
|
Glória mundum. Amen.
|
||||||
|
en: >-
|
||||||
|
Now, from the slumbers of the night arising,
|
||||||
|
|
||||||
|
Chant we the holy psalmody of David,
|
||||||
|
|
||||||
|
Hymns to our Master, with a voice concordant,
|
||||||
|
|
||||||
|
Sweetly intoning.
|
||||||
|
|
||||||
|
|
||||||
|
So may our Monarch pitifully hear us,
|
||||||
|
|
||||||
|
That we may merit with his saints to enter
|
||||||
|
|
||||||
|
Mansions eternal, therewithal possessing
|
||||||
|
|
||||||
|
Joy beatific.
|
||||||
|
|
||||||
|
|
||||||
|
This be our portion, God forever blessed,
|
||||||
|
|
||||||
|
Father eternal, Son, and Holy Spirit,
|
||||||
|
|
||||||
|
Whose is the glory, which through all creation
|
||||||
|
|
||||||
|
Ever resoundeth. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
+28
-2
@@ -450,6 +450,21 @@ function resolveMatinsHymn(day: LiturgicalDay): ResolvedText {
|
|||||||
return commonHymn;
|
return commonHymn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Septuagesima-tide checked directly by `day.season`, not folded into
|
||||||
|
// `seasonalOfficeSuffix` — that function is shared with Lauds/Vespers,
|
||||||
|
// which have no matching Septuagesima content authored yet; adding it
|
||||||
|
// there would silently blank their own chapter/hymn (resolveOfficeBundle
|
||||||
|
// requires all-or-nothing) instead of falling through to their current
|
||||||
|
// weekday default. Scoped to Matins alone until Lauds/Vespers' own
|
||||||
|
// Septuagesima content exists too (see TODO.md). Its own hymn ("Primo
|
||||||
|
// diérum ómnium") is a genuinely separate seasonal text from the plain
|
||||||
|
// Sunday/ferial one below, live-verified 2026-02-01.
|
||||||
|
if (day.season === 'septuagesima') {
|
||||||
|
const septuagesima = resolveCommon('matins-hymn-septuagesima');
|
||||||
|
if (septuagesima.status.la !== 'missing' || septuagesima.status.en !== 'missing') {
|
||||||
|
return septuagesima;
|
||||||
|
}
|
||||||
|
}
|
||||||
const seasonSuffix = seasonalOfficeSuffix(day.season);
|
const seasonSuffix = seasonalOfficeSuffix(day.season);
|
||||||
if (seasonSuffix) {
|
if (seasonSuffix) {
|
||||||
const seasonal = resolveCommon(`matins-hymn-${seasonSuffix}`);
|
const seasonal = resolveCommon(`matins-hymn-${seasonSuffix}`);
|
||||||
@@ -457,6 +472,16 @@ function resolveMatinsHymn(day: LiturgicalDay): ResolvedText {
|
|||||||
return seasonal;
|
return seasonal;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Sunday's own plain hymn ("Nocte surgéntes"), self-contained (own
|
||||||
|
// doxology baked in, unlike the shared weekday one below) — checked
|
||||||
|
// here, after every season/octave/Common tier above but before the
|
||||||
|
// Monday-Saturday ferial cycle, live-verified 2026-09-04.
|
||||||
|
if (day.weekday === 'sunday') {
|
||||||
|
const sunday = resolveCommon('matins-hymn-sunday');
|
||||||
|
if (sunday.status.la !== 'missing' || sunday.status.en !== 'missing') {
|
||||||
|
return sunday;
|
||||||
|
}
|
||||||
|
}
|
||||||
// The plain ferial hymn's own Monastic source (Day1-6 Hymnus, Psalterium/
|
// The plain ferial hymn's own Monastic source (Day1-6 Hymnus, Psalterium/
|
||||||
// Special/Matutinum Special.txt) carries a real seasonal-doxology
|
// Special/Matutinum Special.txt) carries a real seasonal-doxology
|
||||||
// substitution marker (live-checked 2026-09-03) — unlike the Advent/
|
// substitution marker (live-checked 2026-09-03) — unlike the Advent/
|
||||||
@@ -470,8 +495,9 @@ function resolveMatinsHymn(day: LiturgicalDay): ResolvedText {
|
|||||||
// text — a real gap uncovered when the user noticed Friday showing
|
// text — a real gap uncovered when the user noticed Friday showing
|
||||||
// Monday's own hymn, and Saturday's own gap found the same day by
|
// Monday's own hymn, and Saturday's own gap found the same day by
|
||||||
// asking what actually renders on a real Ember Saturday (see
|
// asking what actually renders on a real Ember Saturday (see
|
||||||
// matins-hymn-ferial.yml's header for why Sunday alone still falls to
|
// matins-hymn-ferial.yml's header for why Monday alone still falls to
|
||||||
// the plain `matins-hymn-ferial` id as a documented placeholder).
|
// the plain `matins-hymn-ferial` id, since Monday's own text simply
|
||||||
|
// lives there unsuffixed).
|
||||||
const weekdayFerialHymnIds: Partial<Record<Weekday, string>> = {
|
const weekdayFerialHymnIds: Partial<Record<Weekday, string>> = {
|
||||||
tuesday: 'matins-hymn-ferial-tuesday',
|
tuesday: 'matins-hymn-ferial-tuesday',
|
||||||
wednesday: 'matins-hymn-ferial-wednesday',
|
wednesday: 'matins-hymn-ferial-wednesday',
|
||||||
|
|||||||
@@ -774,9 +774,9 @@ describe('resolveOrdo("matins", ...) Assumption-octave hymn fallback (2026-08-22
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("a plain ferial day outside the octave still gets the plain ferial hymn, unaffected", () => {
|
it("a plain ferial day outside the octave still gets the plain ferial hymn, unaffected", () => {
|
||||||
// FERIAL_DATE (2026-12-01) is a Tuesday -- see the identical note on
|
// FERIAL_DATE (2026-12-01) is a Tuesday in Advent -- see the identical
|
||||||
// the other FERIAL_DATE hymn assertion below.
|
// note on the other FERIAL_DATE hymn assertion below.
|
||||||
expect(hymnLatin(FERIAL_DATE)).toContain('Consors patérni lúminis');
|
expect(hymnLatin(FERIAL_DATE)).toContain('Verbum supérnum, pródiens');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1074,11 +1074,12 @@ describe('resolveOrdo("matins", ...) Common-of-an-Apostle hymn + invitatory (202
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('a plain ferial day is unaffected -- still falls through to the plain ferial hymn and invitatory antiphon', () => {
|
it('a plain ferial day is unaffected -- still falls through to the plain ferial hymn and invitatory antiphon', () => {
|
||||||
// FERIAL_DATE (2026-12-01) is a Tuesday, so this is Tuesday's own
|
// FERIAL_DATE (2026-12-01) is a Tuesday in Advent, so since Advent's
|
||||||
// ferial hymn ("Consors patérni lúminis") since 2026-09-04's weekday-
|
// own Matins hymn was authored (2026-09-04), this is Advent's own
|
||||||
// specific hymn fix -- previously every weekday fell through to the
|
// seasonal hymn ("Verbum supérnum, pródiens"), not Tuesday's own
|
||||||
// same (mislabeled) Monday text ("Somno reféctis ártubus").
|
// ferial one -- season outranks weekday in resolveMatinsHymn's own
|
||||||
expect(hymnLatin(FERIAL_DATE)).toContain('Consors patérni lúminis');
|
// precedence, same as everywhere else.
|
||||||
|
expect(hymnLatin(FERIAL_DATE)).toContain('Verbum supérnum, pródiens');
|
||||||
expect(invitatoryFullLatin(FERIAL_DATE)).toContain('Veníte');
|
expect(invitatoryFullLatin(FERIAL_DATE)).toContain('Veníte');
|
||||||
expect(invitatoryFullLatin(FERIAL_DATE)).not.toContain('Regem Apostolórum');
|
expect(invitatoryFullLatin(FERIAL_DATE)).not.toContain('Regem Apostolórum');
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user