mirror of
https://github.com/adulau/pdns-qof.git
synced 2024-11-22 10:07:09 +00:00
Merge branch 'master' of github.com:adulau/pdns-qof
Conflicts: i-d/pdns-qof.txt
This commit is contained in:
commit
d83b6088f2
1 changed files with 144 additions and 72 deletions
216
i-d/pdns-qof.txt
216
i-d/pdns-qof.txt
|
@ -1,7 +1,12 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
Internet Engineering Task Force A. Dulaunoy
|
Internet Engineering Task Force A. Dulaunoy
|
||||||
|
=======
|
||||||
|
|
||||||
|
Internet Engineering Task Force Dulaunoy
|
||||||
|
>>>>>>> 73452f098972e1de078bcb34facde9bdaf3ce686
|
||||||
Internet-Draft CIRCL
|
Internet-Draft CIRCL
|
||||||
Intended status: Informational A. Kaplan
|
Intended status: Informational A. Kaplan
|
||||||
Expires: June 28, 2014 CERT.at
|
Expires: June 28, 2014 CERT.at
|
||||||
|
@ -24,7 +29,7 @@ Abstract
|
||||||
queries, users of multiple Passive DNS servers will be able to
|
queries, users of multiple Passive DNS servers will be able to
|
||||||
combine result sets easily.
|
combine result sets easily.
|
||||||
|
|
||||||
Status of this Memo
|
Status of This Memo
|
||||||
|
|
||||||
This Internet-Draft is submitted in full conformance with the
|
This Internet-Draft is submitted in full conformance with the
|
||||||
provisions of BCP 78 and BCP 79.
|
provisions of BCP 78 and BCP 79.
|
||||||
|
@ -64,9 +69,9 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
the Trust Legal Provisions and are provided without warranty as
|
the Trust Legal Provisions and are provided without warranty as
|
||||||
described in the Simplified BSD License.
|
described in the Simplified BSD License.
|
||||||
|
|
||||||
|
|
||||||
Table of Contents
|
Table of Contents
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . . 3
|
1.1. Requirements Language . . . . . . . . . . . . . . . . . . . 3
|
||||||
2. Limitation . . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
2. Limitation . . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||||
|
@ -112,6 +117,35 @@ Dulaunoy, et al. Expires June 28, 2014 [Page 2]
|
||||||
|
|
||||||
Internet-Draft Passive DNS - Common Output Format December 2013
|
Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
|
|
||||||
|
=======
|
||||||
|
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
|
||||||
|
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3
|
||||||
|
2. Limitation . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||||
|
3. Common Output Format . . . . . . . . . . . . . . . . . . . . 3
|
||||||
|
3.1. Overview and Example . . . . . . . . . . . . . . . . . . 3
|
||||||
|
3.2. Mandatory Fields . . . . . . . . . . . . . . . . . . . . 4
|
||||||
|
3.2.1. rrname . . . . . . . . . . . . . . . . . . . . . . . 4
|
||||||
|
3.2.2. rrtype . . . . . . . . . . . . . . . . . . . . . . . 4
|
||||||
|
3.2.3. rdata . . . . . . . . . . . . . . . . . . . . . . . . 4
|
||||||
|
3.2.4. time_first . . . . . . . . . . . . . . . . . . . . . 4
|
||||||
|
3.2.5. time_last . . . . . . . . . . . . . . . . . . . . . . 5
|
||||||
|
3.3. Optional Fields . . . . . . . . . . . . . . . . . . . . . 5
|
||||||
|
3.3.1. count . . . . . . . . . . . . . . . . . . . . . . . . 5
|
||||||
|
3.3.2. bailiwick . . . . . . . . . . . . . . . . . . . . . . 5
|
||||||
|
3.4. Additional Fields . . . . . . . . . . . . . . . . . . . . 5
|
||||||
|
3.4.1. sensor_id . . . . . . . . . . . . . . . . . . . . . . 5
|
||||||
|
3.4.2. zone_time_first . . . . . . . . . . . . . . . . . . . 5
|
||||||
|
3.4.3. zone_time_last . . . . . . . . . . . . . . . . . . . 6
|
||||||
|
3.5. Additional Fields Registry . . . . . . . . . . . . . . . 6
|
||||||
|
4. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6
|
||||||
|
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6
|
||||||
|
6. Security Considerations . . . . . . . . . . . . . . . . . . . 6
|
||||||
|
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 6
|
||||||
|
7.1. Normative References . . . . . . . . . . . . . . . . . . 6
|
||||||
|
7.2. References . . . . . . . . . . . . . . . . . . . . . . . 7
|
||||||
|
7.3. Informative References . . . . . . . . . . . . . . . . . 8
|
||||||
|
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8
|
||||||
|
>>>>>>> 73452f098972e1de078bcb34facde9bdaf3ce686
|
||||||
|
|
||||||
1. Introduction
|
1. Introduction
|
||||||
|
|
||||||
|
@ -127,6 +161,14 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
their search. This document describes the output format of four
|
their search. This document describes the output format of four
|
||||||
Passive DNS Systems ([DNSDB],[PDNSCERTAT], [PDNSCIRCL] and [PDNSCOF])
|
Passive DNS Systems ([DNSDB],[PDNSCERTAT], [PDNSCIRCL] and [PDNSCOF])
|
||||||
which are in use today and which already share a nearly identical
|
which are in use today and which already share a nearly identical
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Dulaunoy, et al. Expires June 28, 2014 [Page 2]
|
||||||
|
|
||||||
|
Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
|
|
||||||
|
|
||||||
output format. As the format and the meaning of output fields from
|
output format. As the format and the meaning of output fields from
|
||||||
each Passive DNS need to be consistent, we propose in this document a
|
each Passive DNS need to be consistent, we propose in this document a
|
||||||
solution to commonly name each field along with their corresponding
|
solution to commonly name each field along with their corresponding
|
||||||
|
@ -136,7 +178,7 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
different servers without having to have a separate parser for each
|
different servers without having to have a separate parser for each
|
||||||
individual server. passivedns-client [PDNSCLIENT]currently implements
|
individual server. passivedns-client [PDNSCLIENT]currently implements
|
||||||
multiple parsers due to a lack of standardization. The document does
|
multiple parsers due to a lack of standardization. The document does
|
||||||
not describe the protocol (e.g. WHOIS [RFC3912], HTTP REST [REST])
|
not describe the protocol (e.g. WHOIS [RFC3912], HTTP REST [REST])
|
||||||
nor the query format used to query the Passive DNS. Neither does
|
nor the query format used to query the Passive DNS. Neither does
|
||||||
this document describe "pre-recursor" Passive DNS Systems. Both of
|
this document describe "pre-recursor" Passive DNS Systems. Both of
|
||||||
these are separate topics and deserve their own RFC document.
|
these are separate topics and deserve their own RFC document.
|
||||||
|
@ -147,7 +189,6 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
||||||
document are to be interpreted as described in RFC 2119 [RFC2119].
|
document are to be interpreted as described in RFC 2119 [RFC2119].
|
||||||
|
|
||||||
|
|
||||||
2. Limitation
|
2. Limitation
|
||||||
|
|
||||||
As a Passive DNS can include protection mechanisms for their
|
As a Passive DNS can include protection mechanisms for their
|
||||||
|
@ -161,14 +202,6 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
they assume that answers must be identical across multiple Passive
|
they assume that answers must be identical across multiple Passive
|
||||||
DNS Servers.
|
DNS Servers.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Dulaunoy, et al. Expires June 28, 2014 [Page 3]
|
|
||||||
|
|
||||||
Internet-Draft Passive DNS - Common Output Format December 2013
|
|
||||||
|
|
||||||
|
|
||||||
3. Common Output Format
|
3. Common Output Format
|
||||||
|
|
||||||
The formatting of the answer follows the JSON [RFC4627] format. The
|
The formatting of the answer follows the JSON [RFC4627] format. The
|
||||||
|
@ -183,6 +216,15 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
|
|
||||||
A sample output using the JSON format:
|
A sample output using the JSON format:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Dulaunoy, et al. Expires June 28, 2014 [Page 3]
|
||||||
|
|
||||||
|
Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
|
|
||||||
|
|
||||||
... (list of )...
|
... (list of )...
|
||||||
{ "count": 97167,
|
{ "count": 97167,
|
||||||
"time_first": "1277353744",
|
"time_first": "1277353744",
|
||||||
|
@ -217,14 +259,6 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
addition, a client MUST be able to handle a decimal value (as
|
addition, a client MUST be able to handle a decimal value (as
|
||||||
mentioned above) as answer.
|
mentioned above) as answer.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Dulaunoy, et al. Expires June 28, 2014 [Page 4]
|
|
||||||
|
|
||||||
Internet-Draft Passive DNS - Common Output Format December 2013
|
|
||||||
|
|
||||||
|
|
||||||
3.2.3. rdata
|
3.2.3. rdata
|
||||||
|
|
||||||
This field returns the data of the queried resource. In general,
|
This field returns the data of the queried resource. In general,
|
||||||
|
@ -238,6 +272,15 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
|
|
||||||
3.2.4. time_first
|
3.2.4. time_first
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Dulaunoy, et al. Expires June 28, 2014 [Page 4]
|
||||||
|
|
||||||
|
Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
|
|
||||||
|
|
||||||
This field returns the first time that the record / unique tuple
|
This field returns the first time that the record / unique tuple
|
||||||
(rrname, rrtype, rdata) has been seen by the passive DNS. The date
|
(rrname, rrtype, rdata) has been seen by the passive DNS. The date
|
||||||
is expressed in seconds (decimal ascii) since 1st of January 1970
|
is expressed in seconds (decimal ascii) since 1st of January 1970
|
||||||
|
@ -273,14 +316,6 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
|
|
||||||
Implementations MAY support the following fields:
|
Implementations MAY support the following fields:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Dulaunoy, et al. Expires June 28, 2014 [Page 5]
|
|
||||||
|
|
||||||
Internet-Draft Passive DNS - Common Output Format December 2013
|
|
||||||
|
|
||||||
|
|
||||||
3.4.1. sensor_id
|
3.4.1. sensor_id
|
||||||
|
|
||||||
This field returns the sensor information where the record was seen.
|
This field returns the sensor information where the record was seen.
|
||||||
|
@ -294,6 +329,14 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
is expressed in seconds (decimal ascii) since 1st of January 1970
|
is expressed in seconds (decimal ascii) since 1st of January 1970
|
||||||
(unix timestamp). The time zone MUST be UTC.
|
(unix timestamp). The time zone MUST be UTC.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Dulaunoy, et al. Expires June 28, 2014 [Page 5]
|
||||||
|
|
||||||
|
Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
|
|
||||||
|
|
||||||
3.4.3. zone_time_last
|
3.4.3. zone_time_last
|
||||||
|
|
||||||
This field returns the last time that the unique tuple (rrname,
|
This field returns the last time that the unique tuple (rrname,
|
||||||
|
@ -305,20 +348,17 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
|
|
||||||
In accordance with [RFC6648], designers of new passive DNS
|
In accordance with [RFC6648], designers of new passive DNS
|
||||||
applications that would need additional fields can request and
|
applications that would need additional fields can request and
|
||||||
register new field name at
|
register new field name at https://github.com/adulau/pdns-qof/wiki/
|
||||||
https://github.com/adulau/pdns-qof/wiki/Additional-Fields.
|
Additional-Fields.
|
||||||
|
|
||||||
|
|
||||||
4. Acknowledgements
|
4. Acknowledgements
|
||||||
|
|
||||||
Thanks to the Passive DNS developers who contributed to the document.
|
Thanks to the Passive DNS developers who contributed to the document.
|
||||||
|
|
||||||
|
|
||||||
5. IANA Considerations
|
5. IANA Considerations
|
||||||
|
|
||||||
This memo includes no request to IANA.
|
This memo includes no request to IANA.
|
||||||
|
|
||||||
|
|
||||||
6. Security Considerations
|
6. Security Considerations
|
||||||
|
|
||||||
In some cases, Passive DNS output might contain confidential
|
In some cases, Passive DNS output might contain confidential
|
||||||
|
@ -326,17 +366,8 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
querying multiple Passive DNS and aggregating the data, the
|
querying multiple Passive DNS and aggregating the data, the
|
||||||
sensitivity of the data must be considered.
|
sensitivity of the data must be considered.
|
||||||
|
|
||||||
|
|
||||||
7. References
|
7. References
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Dulaunoy, et al. Expires June 28, 2014 [Page 6]
|
|
||||||
|
|
||||||
Internet-Draft Passive DNS - Common Output Format December 2013
|
|
||||||
|
|
||||||
|
|
||||||
7.1. Normative References
|
7.1. Normative References
|
||||||
|
|
||||||
[RFC1034] Mockapetris, P., "Domain names - concepts and facilities",
|
[RFC1034] Mockapetris, P., "Domain names - concepts and facilities",
|
||||||
|
@ -354,6 +385,14 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
[RFC3912] Daigle, L., "WHOIS Protocol Specification", RFC 3912,
|
[RFC3912] Daigle, L., "WHOIS Protocol Specification", RFC 3912,
|
||||||
September 2004.
|
September 2004.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Dulaunoy, et al. Expires June 28, 2014 [Page 6]
|
||||||
|
|
||||||
|
Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
|
|
||||||
|
|
||||||
[RFC4627] Crockford, D., "The application/json Media Type for
|
[RFC4627] Crockford, D., "The application/json Media Type for
|
||||||
JavaScript Object Notation (JSON)", RFC 4627, July 2006.
|
JavaScript Object Notation (JSON)", RFC 4627, July 2006.
|
||||||
|
|
||||||
|
@ -379,12 +418,29 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
|
|
||||||
[PDNSCERTAT]
|
[PDNSCERTAT]
|
||||||
"pDNS presentation at 4th Centr R&D workshop Frankfurt Jun
|
"pDNS presentation at 4th Centr R&D workshop Frankfurt Jun
|
||||||
5th 2012", 2012, <http://www.centr.org/system/files/
|
5th 2012", 2012, <http://www.centr.org/system/files/agenda
|
||||||
agenda/attachment/rd4-papst-passive_dns.pdf>.
|
/attachment/rd4-papst-passive_dns.pdf>.
|
||||||
|
|
||||||
[PDNSCIRCL]
|
[PDNSCIRCL]
|
||||||
"CIRCL Passive DNS", 2012, <http://pdns.circl.lu/>.
|
"CIRCL Passive DNS", 2012, <http://pdns.circl.lu/>.
|
||||||
|
|
||||||
|
[PDNSCLIENT]
|
||||||
|
"Queries 5 major Passive DNS databases: BFK, CERTEE,
|
||||||
|
DNSParse, ISC, and VirusTotal.", 2013, <https://github.com
|
||||||
|
/chrislee35/passivedns-client>.
|
||||||
|
|
||||||
|
[PDNSCOF] "Passive DNS server interface using the common output
|
||||||
|
format", 2013, <https://github.com/adulau/pdns-qof-server/
|
||||||
|
>.
|
||||||
|
|
||||||
|
[REST] "Representational State Transfer (REST)", 2000,
|
||||||
|
<http://www.ics.uci.edu/~fielding/pubs/dissertation/
|
||||||
|
rest_arch_style.htm>.
|
||||||
|
|
||||||
|
[WEINERPDNS]
|
||||||
|
"Passive DNS Replication", 2005, <http://www.enyo.de/fw/
|
||||||
|
software/dnslogger/first2005-paper.pdf>.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -393,42 +449,24 @@ Dulaunoy, et al. Expires June 28, 2014 [Page 7]
|
||||||
Internet-Draft Passive DNS - Common Output Format December 2013
|
Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
|
|
||||||
|
|
||||||
[PDNSCLIENT]
|
|
||||||
"Queries 5 major Passive DNS databases: BFK, CERTEE,
|
|
||||||
DNSParse, ISC, and VirusTotal.", 2013,
|
|
||||||
<https://github.com/chrislee35/passivedns-client>.
|
|
||||||
|
|
||||||
[PDNSCOF] "Passive DNS server interface using the common output
|
|
||||||
format", 2013,
|
|
||||||
<https://github.com/adulau/pdns-qof-server/>.
|
|
||||||
|
|
||||||
[REST] "Representational State Transfer (REST)", 2000, <http://
|
|
||||||
www.ics.uci.edu/~fielding/pubs/dissertation/
|
|
||||||
rest_arch_style.htm>.
|
|
||||||
|
|
||||||
[WEINERPDNS]
|
|
||||||
"Passive DNS Replication", 2005, <http://www.enyo.de/fw/
|
|
||||||
software/dnslogger/first2005-paper.pdf>.
|
|
||||||
|
|
||||||
7.3. Informative References
|
7.3. Informative References
|
||||||
|
|
||||||
[I-D.narten-iana-considerations-rfc2434bis]
|
[I-D.narten-iana-considerations-rfc2434bis]
|
||||||
Narten, T. and H. Alvestrand, "Guidelines for Writing an
|
Narten, T. and H. Alvestrand, "Guidelines for Writing an
|
||||||
IANA Considerations Section in RFCs",
|
IANA Considerations Section in RFCs", draft-narten-iana-
|
||||||
draft-narten-iana-considerations-rfc2434bis-09 (work in
|
considerations-rfc2434bis-09 (work in progress), March
|
||||||
progress), March 2008.
|
2008.
|
||||||
|
|
||||||
[RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC
|
[RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC
|
||||||
Text on Security Considerations", BCP 72, RFC 3552,
|
Text on Security Considerations", BCP 72, RFC 3552, July
|
||||||
July 2003.
|
2003.
|
||||||
|
|
||||||
|
|
||||||
Authors' Addresses
|
Authors' Addresses
|
||||||
|
|
||||||
Alexandre Dulaunoy
|
Alexandre Dulaunoy
|
||||||
CIRCL
|
CIRCL
|
||||||
41, avenue de la gare
|
41, avenue de la gare
|
||||||
Luxembourg, L-1611
|
Luxembourg L-1611
|
||||||
LU
|
LU
|
||||||
|
|
||||||
Phone: (+352) 247 88444
|
Phone: (+352) 247 88444
|
||||||
|
@ -436,6 +474,7 @@ Authors' Addresses
|
||||||
URI: http://www.circl.lu/
|
URI: http://www.circl.lu/
|
||||||
|
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -450,9 +489,12 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
|
|
||||||
|
|
||||||
L. Aaron Kaplan
|
L. Aaron Kaplan
|
||||||
|
=======
|
||||||
|
Leon Aaron Kaplan
|
||||||
|
>>>>>>> 73452f098972e1de078bcb34facde9bdaf3ce686
|
||||||
CERT.at
|
CERT.at
|
||||||
Karlsplatz 1/2/9
|
Karlsplatz 1/2/9
|
||||||
Vienna, A-1010
|
Vienna A-1010
|
||||||
AT
|
AT
|
||||||
|
|
||||||
Phone: +43 1 5056416 78
|
Phone: +43 1 5056416 78
|
||||||
|
@ -463,12 +505,23 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
Paul Vixie
|
Paul Vixie
|
||||||
Farsight Security, Inc.
|
Farsight Security, Inc.
|
||||||
|
|
||||||
|
|
||||||
Phone:
|
|
||||||
Email: paul@redbarn.org
|
Email: paul@redbarn.org
|
||||||
URI: /
|
URI: /
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Dulaunoy, et al. Expires June 28, 2014 [Page 8]
|
||||||
|
|
||||||
|
Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
|
|
||||||
|
|
||||||
Henry Stern
|
Henry Stern
|
||||||
Cisco
|
Cisco
|
||||||
1741 Brunswick Street, Suite 500
|
1741 Brunswick Street, Suite 500
|
||||||
|
@ -498,7 +551,26 @@ Internet-Draft Passive DNS - Common Output Format December 2013
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Dulaunoy, et al. Expires June 28, 2014 [Page 9]
|
Dulaunoy, et al. Expires June 28, 2014 [Page 9]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue