One document matched: draft-ietf-crisp-firs-ipv6-00.txt
INTERNET-DRAFT Eric A. Hall
Document: draft-ietf-crisp-firs-ipv6-00.txt May 2003
Expires: December, 2003
Category: Experimental
Defining and Locating IPv6 Address Blocks
in the Federated Internet Registry Service
Status of this Memo
This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC 2026.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other
documents at any time. It is inappropriate to use Internet-Drafts
as reference material or to cite them other than as "work in
progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
Copyright Notice
Copyright (C) The Internet Society (2003). All Rights Reserved.
Abstract
This document defines LDAP schema and searching rules for IPv6
address blocks, in support of the Internet Resource Query Service
described in [FIRS-ARCH] and [FIRS-CORE].
Internet Draft draft-ietf-crisp-firs-ipv6-00.txt May 2003
Table of Contents
1. Introduction..............................................2
2. Prerequisites and Terminology.............................2
3. Naming Syntax.............................................3
4. Object Classes and Attributes.............................5
5. Query Processing Rules....................................7
5.1. Query Pre-Processing...................................8
5.2. Query Bootstrapping....................................8
5.3. LDAP Matching..........................................9
5.4. Example Query.........................................10
6. Security Considerations..................................11
7. IANA Considerations......................................11
8. Author's Addresses.......................................11
9. Normative References.....................................11
10. Acknowledgments..........................................12
11. Changes from Previous Versions...........................13
12. Full Copyright Statement.................................13
1. Introduction
This specification defines the naming syntax, object classes,
attributes, matching filters, and query processing rules for
storing and locating IPv6 address blocks in the FIRS service.
Refer to [FIRS-ARCH] for information on the FIRS architecture and
[FIRS-CORE] for the schema definitions and rules which govern the
FIRS service as a whole.
Note that reverse-lookup DNS domains for IPv6 address blocks are
managed as DNS domain entries in [FIRS-DNS]. These are entirely
different network resources, and should not be confused with IPv6
address block entries.
The definitions in this specification are intended to be used with
FIRS. Their usage outside of FIRS is not prohibited, but any such
usage is beyond this specification's scope of authority.
2. Prerequisites and Terminology
The complete set of specifications in the FIRS collection
cumulative define a structured and distributed information service
using LDAPv3 for the data-formatting and transport functions. This
specification should be read in the context of the complete set of
specifications, which currently include the following:
Hall I-D Expires: December 2003 [page 2]
Internet Draft draft-ietf-crisp-firs-ipv6-00.txt May 2003
draft-ietf-crisp-firs-arch-00, "The Federated Internet
Registry Service: Architecture and Implementation"
[FIRS-ARCH]
draft-ietf-crisp-firs-core-00, "The Federated Internet
Registry Service: Core Elements" [FIRS-CORE]
draft-ietf-crisp-firs-dns-00, "Defining and Locating DNS
Domains in the Federated Internet Registry Service"
[FIRS-DNS]
draft-ietf-crisp-firs-dnsrr-00, "Defining and Locating DNS
Resource Records in the Federated Internet Registry
Service" [FIRS-DNSRR]
draft-ietf-crisp-firs-contact-00, "Defining and Locating
Contact Persons in the Federated Internet Registry Service"
[FIRS-CONTCT]
draft-ietf-crisp-firs-asn-00, "Defining and Locating
Autonomous System Numbers in the Federated Internet
Registry Service" (this document) [FIRS-ASN]
draft-ietf-crisp-firs-ipv4-00, "Defining and Locating IPv4
Address Blocks in the Federated Internet Registry Service"
[FIRS-IPV4]
draft-ietf-crisp-firs-ipv6-00, "Defining and Locating IPv6
Address Blocks in the Federated Internet Registry Service"
[FIRS-IPV6]
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"
in this document are to be interpreted as described in RFC 2119.
3. Naming Syntax
The naming syntax for IPv4 address blocks in FIRS MUST follow the
form of "cn=<inetIpv4NetworkSyntax>,cn=inetResources,<partition>",
where <inetIpv6NetworkSyntax > is the IPv6 address block resource,
and where <partition> is a sequence of domainComponent relative
distinguished names which identifies the scope of authority for
the selected directory partition.
Hall I-D Expires: December 2003 [page 3]
Internet Draft draft-ietf-crisp-firs-ipv6-00.txt May 2003
The inetIpv6NetworkSyntax rules use the uncompressed, 32-nibble
notation, terminated with a subnet "prefix". The network address
consists of eight sub-components, each of which are separated by a
colon character, and which each consist of four hexadecimal values
that represent one nibble. The entire sequence is followed by a
"/" character and a three-digit decimal "prefix" value.
Entries which use the inetIpv6NetworkSyntax MUST use the starting
address from a range of inclusive addresses, and MUST use CIDR
prefix notation. In this manner, it is possible to create an
inetIpv6Network entry for a range of addresses of any size
(including a single host).
Each of the 16-bit colon-separated values MUST be written in the
uncompressed form. Nibbles with a value of zero MUST be
represented by the hexadecimal sequence of "0000".
If an input string does not match this syntax, a FIRS-aware
application MAY attempt to manipulate the input string to form a
valid value. For example, if a user enters a zero-compressed IPv6
address such as "3ffe:ffff::", the application MAY convert the
input value to "3ffe:ffff:0000:0000:0000:0000:0000:0000/32" in
order to form a valid inetIpv6NetworkSyntax form.
An augmented BNF for this syntax is as follows:
inetIpv6NetworkSyntax = inetIpv6Octet ":" inetIpv6Octet ":"
inetIpv6Octet ":" inetIpv6Octet ":" inetIpv6Octet ":"
inetIpv6Octet ":" inetIpv6Octet ":" inetIpv6Octet "/"
inetIpv6Prefix
inetIpv6Octet = 4*4nibblePart
nibblePart = hexadecimal digit between "0" and "F" inclusive
inetIpv6Prefix = decimal value between "1" and "128"
inclusive, with the non-affective leading zeroes removed
The inetIpv6NetworkSyntax syntax is as follows:
inetIpv6NetworkSyntax
( 1.3.6.1.4.1.7161.1.3.1 NAME 'inetIpv6NetworkSyntax' DESC
'An IPv6 address and prefix.' )
For example, an IPv6 network with a range of addresses between
"3ffe:ffff::" and "3ffe:ffff:ffff:ffff:ffff:ffff:ffff:ffff" would
Hall I-D Expires: December 2003 [page 4]
Internet Draft draft-ietf-crisp-firs-ipv6-00.txt May 2003
be written as "cn=3ffe:ffff:0000:0000:0000:0000:0000:0000/32".
Similarly, a host address of "3ffe:ffff::1:2:3:4" would be written
as "cn=3ffe:ffff:0000:0000:0001:0002:0003:0004/128".
Note that the entry name of
"cn=0000:0000:0000:0000:0000:0000:0000:0000/0" encompasses the
entire IPv6 address space.
Note that the use of "/" is illegal as data in URLs, and MUST be
escaped before it is stored in a URL as data.
4. Object Classes and Attributes
IPv6 address block entries in FIRS MUST use the inetIpv6Network
object class, in addition to the mandatory object classes defined
in [FIRS-CORE]. IPv6 address block entries MUST be treated as
containers capable of holding subordinate entries. If an entry
exists as a referral source, the entry MUST also be defined with
the referral object class, in addition to the above requirements.
The inetIpv6Network object class is a structural object class
which is subordinate to the inetResources object class. The
inetIpv6Network object class has no mandatory attributes, although
it does have several optional attributes. The inetIpv6Network
object class also inherits the attributes defined in the
inetResources object class, including the "cn" naming attribute.
The schema definition for the inetIpv6Network object class is as
follows:
inetIpv6Network
( 1.3.6.1.4.1.7161.1.3.0 NAME 'inetIpv6Network' DESC 'IPv6
network attributes.' SUP inetResources STRUCTURAL MAY (
inetIpv6DelegationStatus $ inetIpv6DelegationDate $
inetIpv6Registrar $ inetIpv6Registry $ inetIpv6Contacts $
inetIpv6RoutingContacts ) )
The attributes from the inetIpv6Network object class are described
below:
inetIpv6Contacts
( 1.3.6.1.4.1.7161.1.3.2 NAME 'inetIpv6Contacts' DESC
'Contacts for general administrative issues concerning this
IPv6 address block.' EQUALITY caseIgnoreMatch SYNTAX
inetContactSyntax )
Hall I-D Expires: December 2003 [page 5]
Internet Draft draft-ietf-crisp-firs-ipv6-00.txt May 2003
inetIpv6DelegationDate
( 1.3.6.1.4.1.7161.1.3.3 NAME 'inetIpv6DelegationDate' DESC
'Date this IPv6 address block was delegated.' EQUALITY
generalizedTimeMatch ORDERING generalizedTimeOrderingMatch
SYNTAX generalizedTime SINGLE-VALUE )
inetIpv6DelegationStatus
( 1.3.6.1.4.1.7161.1.3.4 NAME 'inetIpv6DelegationStatus' DESC
'Delegation status of this IPv6 address block.' EQUALITY
numericStringMatch SYNTAX numericString{2} SINGLE-VALUE )
NOTE: In an effort to facilitate internationalization and
programmatic processing, the current status of a delegation
is identified by a 16-bit integer. The values and status
mapping is as follows:
0 Reserved delegation (permanently inactive)
1 Assigned and active (normal state)
2 Assigned but not yet active (new delegation)
3 Assigned but on hold (disputed)
4 Assignment revoked (database purge pending)
Additional values are reserved for future use, and are to
be administered by IANA.
Note that there is no status code for "unassigned";
unassigned entries SHOULD NOT exist, and SHOULD NOT be
returned as answers.
inetIpv6Registrar
( 1.3.6.1.4.1.7161.1.3.5 NAME 'inetIpv6Registrar' DESC
'Registrar who delegated this IPv6 address block.' EQUALITY
caseIgnoreMatch SYNTAX directoryString )
NOTE: The inetIpv6Registrar attribute uses a URL to
indicate the registrar who delegated the address block. The
attribute structure is identical to the labeledURI
attribute, as defined in [RFC2798], including the URL and
textual comments. The data can refer to any valid URL.
inetIpv6Registry
( 1.3.6.1.4.1.7161.1.3.6 NAME 'inetIpv6Registry' DESC
'Registry where this IPv6 address block is managed.'
EQUALITY caseIgnoreMatch SYNTAX directoryString )
Hall I-D Expires: December 2003 [page 6]
Internet Draft draft-ietf-crisp-firs-ipv6-00.txt May 2003
NOTE: The inetIpv6Registry attribute uses a URL to indicate
the registry who is ultimately responsible for the address
block. The attribute structure is identical to the
labeledURI attribute, as defined in [RFC2798], including
the URL and textual comments. The data can refer to any
valid URL.
inetIpv6RoutingContacts
( 1.3.6.1.4.1.7161.1.3.7 NAME 'inetIpv6RoutingContacts' DESC
'Contacts for routing-related problems with this IPv4
address block.' EQUALITY caseExactMatch SYNTAX
inetContactSyntax )
An example of the inetIpv6Network object class is shown in Figure
1 below. The example includes attributes from the inetIpv6Network,
inetResources, and inetAssociatedResources object classes.
cn=3ffe:ffff:0000:0000:0000:0000:0000:0000/32,
cn=inetResources,dc=arin,dc=net
[top object class]
[inetResources object class]
[inetIpv6Network object class]
[inetAssociatedResources object class]
|
+-attribute: description
| value: "The example.net top-level network"
|
+-attribute: inetIpv6Contacts
| value: "hostmaster@example.com"
|
+-attribute: inetAssociatedAsNumbers
| value: "65535"
|
+-attribute: inetIpv6Registrar
value: "http://www.arin.net/ (ARIN)"
Figure 1: The 3ffe:ffff:0000:0000:0000:0000:0000:0000/32 address
block in the dc=arin,dc=net directory partition.
5. Query Processing Rules
Queries for IPv6 address blocks have several special requirements,
as discussed in the following sections.
Refer to [FIRS-CORE] for general information about FIRS queries.
Hall I-D Expires: December 2003 [page 7]
Internet Draft draft-ietf-crisp-firs-ipv6-00.txt May 2003
5.1. Query Pre-Processing
Clients MUST ensure that the query input is normalized according
to the rules specified in section 3 before the input is used as
the assertion value to the resulting LDAP query.
The authoritative partition for an IPv6 address block is
determined by mapping the normalized input to an associated
reverse-lookup DNS domain name (using the process as defined in
RFC 1886 [RFC1886], as amended by RFC 3152 [RFC3152]), and then
mapping the resulting DNS domain name to a sequence of
domainComponent labels. The subnet prefix sequence MUST be
stripped from the input address block as part of this mapping
process (note that these rules only apply to the mapping process
by which an authoritative partition is constructed, and does not
apply to the process by which the entry-specific relative
distinguished name is constructed).
Due to the 128-bit addresses and the rules defined in [RFC1886], a
fully-formed IPv6 reverse-lookup domain name will have 34 labels,
which result in very large distinguished names.
For example, an IPv6 address of
"3ffe:ffff:0000:0000:0000:0000:0000:0000/32" would be mapped to
the reverse-lookup DNS domain name of
"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.f.f.f.e.f.f.3.
ip6.arpa." which would in turn be mapped to "dc=0,dc=0,dc=0,dc=0,
dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,
dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=f,dc=f,dc=f,dc=f,dc=e,dc=f,
dc=f,dc=3,dc=ip6,dc=arpa".
5.2. Query Bootstrapping
FIRS clients MUST use the top-down bootstrap model by default for
IPv6 address block queries. As such, the search base for default
queries would be set to "dc=arpa" rather than being set to the
fully-qualified distinguished name of the authoritative partition.
FIRS clients MAY use the targeted or bottom-up bootstrap models
for queries if necessary or desirable. However, it is not likely
that entries will be found for all IPv6 address block resources
using these models. As such, the top-down bootstrap model will be
the most useful in most cases, and MUST be used by default.
Hall I-D Expires: December 2003 [page 8]
Internet Draft draft-ietf-crisp-firs-ipv6-00.txt May 2003
5.3. LDAP Matching
FIRS clients MUST use the inetIpv6NetworkMatch extensible matching
filter in LDAP searches for IPv6 address block entries.
The inetIpv6NetworkMatch filter provides an identifier and search
string format which collectively inform a queried server that a
specific IPv6 address should be searched for, and that any
matching inetIpv6network object class entries should be returned.
The inetIpv6NetworkMatch extensibleMatch filter is defined as
follows:
inetIpv6NetworkMatch
( 1.3.6.1.4.1.7161.1.3.8 NAME 'inetIpv6NetworkMatch' SYNTAX
inetIpv6NetworkSyntax )
The assertion value MUST be a normalized IPv6 address, using the
inetIpv4NetworkSyntax defined in section 3.
A FIRS server MUST compare the assertion value against the RDN of
all entries in the inetResources container of the partition
specified in the search base which have an object class of
inetIpv6Network. Any entry with an object class of inetIpv6Network
and with a relative distinguished name which clearly encompasses
the IPv6 address provided in the assertion value MUST be returned.
Entries which do not clearly encompass the queried address MUST
NOT be returned. Entries which do not have an object class of
inetIpv6Network MUST NOT be returned.
In order to ensure that all of the relevant entries are found
(including any referrals), the search filters for these resources
MUST specify the inetIpv6Network object class along with the
search criteria. For example, "(&(objectclass=inetIpv6Network)
(1.3.6.1.4.1.7161.1.3.8:=
3ffe:ffff:0000:0000:0000:0000:0000:0000/32))" with a search base
of "cn=inetResources,dc=arin,dc=net" would find all of the
inetIpv6Network object class entries which were superior to the
"3ffe:ffff:0000:0000:0000:0000:0000:0000/32" address block in the
"dc=arin,dc=net" partition.
Note that the entry name of
"cn=0000:0000:0000:0000:0000:0000:0000:0000/0" encompasses the
entire IPv6 address space. When used in conjunction with
referrals, this entry MAY be used to redirect all
Hall I-D Expires: December 2003 [page 9]
Internet Draft draft-ietf-crisp-firs-ipv6-00.txt May 2003
inetIpv6NetworkMatch queries to another partition for subsequent
processing.
The matching filters defined in this specification MUST be
supported by FIRS clients and servers. FIRS servers MAY support
additional sub-string filters, soundex filters, or any other
filters they wish (these may be required to support generic LDAP
clients), although FIRS clients MUST NOT expect any additional
filters to be available.
5.4. Example Query
The following example assumes that the user has specified
"3ffe:ffff:0000:0000:0000:0000:0000:0000/32" as the query value:
a. Normalize the input, which is
"3ffe:ffff:0000:0000:0000:0000:0000:0000/32" in this case.
b. Determine the authoritative partition.
1. Map the input sequence to the reverse-lookup domain
name, which is "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
0.0.0.0.0.0.f.f.f.f.e.f.f.3.ip6.arpa." in this case.
2. Map the domain name to an authoritative partition,
which is "dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,
dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,
dc=0,dc=0,dc=0,dc=0,dc=0,dc=0,dc=f,dc=f,dc=f,dc=f,
dc=e,dc=f,dc=f,dc=3,dc=ip6,dc=arpa" in this case. By
default, queries for IPv6 address blocks use the top-
down model, meaning that the right-most relative
distinguished name of "dc=arpa" will be used as the
authoritative partition.
c. Determine the search base for the query, which will be
"cn=inetResources,dc=arpa" if the defaults are used.
d. Initiate a DNS lookup for the SRV resource records
associated with "_ldap._tcp.arpa." For the purpose of this
example, assume that this lookup succeeds, with the DNS
response message indicating that "firs.iana.org" is the
preferred LDAP server.
e. Submit an LDAPv3 query to the specified server, using
"(&(objectClass=inetIpv6Network)(1.3.6.1.4.1.7161.1.3.8:=
3ffe:ffff:0000:0000:0000:0000:0000:0000/32)" as the
Hall I-D Expires: December 2003 [page 10]
Internet Draft draft-ietf-crisp-firs-ipv6-00.txt May 2003
matching filter, "cn=inetResources,dc=arpa" as the search
base, and the global query defaults defined in [FIRS-CORE].
f. Assume that no referrals are received. Display the answer
data which has been received and exit the query.
6. Security Considerations
Security considerations are discussed in [FIRS-ARCH].
7. IANA Considerations
IANA considerations are discussed in [FIRS-ARCH].
8. Author's Addresses
Eric A. Hall
ehall@ehsco.com
9. Normative References
[RFC1886] Thomson, S., and Huitema, C. "DNS Extensions
to support IP version 6", RFC 1886, December
1995.
[RFC2247] Kille, S., Wahl, M., Grimstad, A., Huber, R.,
and Sataluri, S. "Using Domains in LDAP/X.500
DNs", RFC 2247, January 1998.
[RFC2251] Wahl, M., Howes, T., and Kille, S.
"Lightweight Directory Access Protocol (v3)",
RFC 2251, December 1997.
[RFC2252] Wahl, M., Coulbeck, A., Howes, T., and Kille,
S. "Lightweight Directory Access Protocol
(v3): Attribute Syntax Definitions", RFC 2252,
December 1997.
[RFC2254] Howes, T. "The String Representation of LDAP
Search Filters", RFC 2254, December 1997.
[RFC3152] Bush, R. "Delegation of IP6.ARPA", RFC 3152,
August 2001.
Hall I-D Expires: December 2003 [page 11]
Internet Draft draft-ietf-crisp-firs-ipv6-00.txt May 2003
[FIRS-ARCH] Hall, E. "The Federated Internet Registry
Service: Architecture and Implementation
Guide", draft-ietf-crisp-firs-arch-00, May
2003.
[FIRS-ASN] Hall, E. "Defining and Locating Autonomous
System Numbers in the Federated Internet
Registry Service", draft-ietf-crisp-firs-asn-
00, May 2003.
[FIRS-CONTCT] Hall, E. "Defining and Locating Contact
Persons in the Federated Internet Registry
Service", draft-ietf-crisp-firs-contact-00,
May 2003.
[FIRS-CORE] Hall, E. "The Federated Internet Registry
Service: Core Elements", draft-ietf-crisp-
firs-core-00, May 2003.
[FIRS-DNS] Hall, E. "Defining and Locating DNS Domains in
the Federated Internet Registry Service",
draft-ietf-crisp-firs-dns-00, May 2003.
[FIRS-DNSRR] Hall, E. "Defining and Locating DNS Resource
Records in the Federated Internet Registry
Service", draft-ietf-crisp-firs-dnsrr-00, May
2003.
[FIRS-IPV4] Hall, E. "Defining and Locating IPv4 Address
Blocks in the Federated Internet Registry
Service", draft-ietf-crisp-firs-ipv4-00, May
2003.
[FIRS-IPV6] Hall, E. "Defining and Locating IPv6 Address
Blocks in the Federated Internet Registry
Service", draft-ietf-crisp-firs-ipv6-00, May
2003.
10. Acknowledgments
Funding for the RFC editor function is currently provided by the
Internet Society.
Portions of this document were funded by Verisign Labs.
The first version of this specification was co-authored by Andrew
Newton of Verisign Labs, and subsequent versions continue to be
developed with his active participation.
Hall I-D Expires: December 2003 [page 12]
Internet Draft draft-ietf-crisp-firs-ipv6-00.txt May 2003
11. Changes from Previous Versions
draft-ietf-crisp-fir-ipv6-00:
* Restructured the document set.
* "Attribute references" have been eliminated from the
specification. All referential attributes now provide
actual data instead of URL pointers to data. Clients that
wish to retrieve these values will need to start new
queries using the data values instead of URLs.
* The attribute-specific operational attributes have been
eliminated as unnecessary.
* The inetIpv6Registrar and inetIpv6Registry attributes were
added.
* Several attributes had their OIDs changed. NOTE THAT THIS
IS AN INTERNET DRAFT, AND THAT THE OIDS ARE SUBJECT TO
ADDITIONAL CHANGES AS THIS DOCUMENT IS EDITED.
* Several typographical errors have been fixed.
* Some unnecessary text has been removed.
12. Full Copyright Statement
Copyright (C) The Internet Society (2003). All Rights Reserved.
This document and translations of it may be copied and furnished
to others, and derivative works that comment on or otherwise
explain it or assist in its implementation may be prepared,
copied, published and distributed, in whole or in part, without
restriction of any kind, provided that the above copyright notice
and this paragraph are included on all such copies and derivative
works. However, this document itself may not be modified in any
way, such as by removing the copyright notice or references to the
Internet Society or other Internet organizations, except as needed
for the purpose of developing Internet standards in which case the
procedures for copyrights defined in the Internet Standards
process must be followed, or as required to translate it into
languages other than English.
The limited permissions granted above are perpetual and will not
be revoked by the Internet Society or its successors or assigns.
Hall I-D Expires: December 2003 [page 13]
Internet Draft draft-ietf-crisp-firs-ipv6-00.txt May 2003
This document and the information contained herein is provided on
an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Hall I-D Expires: December 2003 [page 14] | PAFTECH AB 2003-2026 | 2026-04-24 03:06:49 |