Skip to content

Commit 520a85c

Browse files
authored
Merge branch 'main' into fix-dense-vector-cosine
2 parents c5d1edc + f13ab6e commit 520a85c

File tree

98 files changed

+845
-371
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

98 files changed

+845
-371
lines changed

distribution/docker/src/docker/dockerfiles/cloud_ess_fips/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
# Extract Elasticsearch artifact
2626
################################################################################
2727
28-
FROM docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:dea9b73186c5565a5bfa820a68f63ff497fdc9f06a0afc777159d819c5f01dc4 AS builder
28+
FROM docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:a02c67d96cd6ec1b50a055f1f5515e0987b643d001d436088cefc02e5b786bf9 AS builder
2929
3030
# Install required packages to extract the Elasticsearch distribution
3131
RUN <%= retry.loop(package_manager, "export DEBIAN_FRONTEND=noninteractive && ${package_manager} update && ${package_manager} update && ${package_manager} add --no-cache curl") %>
@@ -104,7 +104,7 @@ WORKDIR /usr/share/elasticsearch/config
104104
# Add entrypoint
105105
################################################################################
106106

107-
FROM docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:dea9b73186c5565a5bfa820a68f63ff497fdc9f06a0afc777159d819c5f01dc4
107+
FROM docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:a02c67d96cd6ec1b50a055f1f5515e0987b643d001d436088cefc02e5b786bf9
108108

109109
RUN <%= retry.loop(package_manager,
110110
"export DEBIAN_FRONTEND=noninteractive && \n" +

distribution/docker/src/docker/dockerfiles/wolfi/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
# Extract Elasticsearch artifact
2626
################################################################################
2727
28-
FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:401d8684fd5932c178d7cf524cb05a5088d0e4f74e886e2d0a3b4b5127349a49 AS builder
28+
FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:25397820ef168d951339e69cedb5460f354cea842e2af367e33b89e988c51615 AS builder
2929
3030
# Install required packages to extract the Elasticsearch distribution
3131
RUN <%= retry.loop(package_manager, "export DEBIAN_FRONTEND=noninteractive && ${package_manager} update && ${package_manager} update && ${package_manager} add --no-cache curl") %>
@@ -80,7 +80,7 @@ RUN sed -i -e 's/ES_DISTRIBUTION_TYPE=tar/ES_DISTRIBUTION_TYPE=docker/' bin/elas
8080
# Add entrypoint
8181
################################################################################
8282

83-
FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:401d8684fd5932c178d7cf524cb05a5088d0e4f74e886e2d0a3b4b5127349a49
83+
FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:25397820ef168d951339e69cedb5460f354cea842e2af367e33b89e988c51615
8484

8585
RUN <%= retry.loop(package_manager,
8686
"export DEBIAN_FRONTEND=noninteractive && \n" +

docs/release-notes/breaking-changes.md

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,11 @@ If you are migrating from a version prior to version 9.0, you must first upgrade
1212

1313
% ## Next version [elasticsearch-nextversion-breaking-changes]
1414

15-
1615
## 9.2.1 [elasticsearch-9.2.1-breaking-changes]
17-
```{applies_to}
18-
stack: ga 9.2.1
19-
```
2016

2117
There are no breaking changes associated with this release.
2218

2319
## 9.1.7 [elasticsearch-9.1.7-breaking-changes]
24-
```{applies_to}
25-
stack: ga 9.1.7
26-
```
2720

2821
There are no breaking changes associated with this release.
2922

docs/release-notes/changelog-bundles/9.1.7.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
version: 9.1.7
2-
released: false
3-
generated: 2025-11-10T15:30:11.390661196Z
2+
released: true
3+
generated: 2025-11-12T09:38:40.886891534Z
44
changelogs:
55
- pr: 134223
66
summary: Improve concurrency design of `EnterpriseGeoIpDownloader`

docs/release-notes/changelog-bundles/9.2.1.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
version: 9.2.1
2-
released: false
3-
generated: 2025-11-10T15:18:39.428584800Z
2+
released: true
3+
generated: 2025-11-12T09:34:48.318619163Z
44
changelogs:
55
- pr: 132455
66
summary: "Make equals include ids for Alias, `TypedAttribute`"

docs/release-notes/deprecations.md

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,11 @@ To give you insight into what deprecated features you’re using, {{es}}:
1616

1717
% ## Next version [elasticsearch-nextversion-deprecations]
1818

19-
## 9.2.1 [elasticsearch-9.2.1-deprecations]
20-
```{applies_to}
21-
stack: ga 9.2.1
22-
```
19+
## 9.1.7 [elasticsearch-9.1.7-deprecations]
2320

2421
There are no deprecations associated with this release.
2522

26-
## 9.1.7 [elasticsearch-9.1.7-deprecations]
27-
```{applies_to}
28-
stack: ga 9.1.7
29-
```
23+
## 9.2.1 [elasticsearch-9.2.1-deprecations]
3024

3125
There are no deprecations associated with this release.
3226

docs/release-notes/index.md

Lines changed: 44 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,14 @@ To check for security updates, go to [Security announcements for the Elastic sta
2020
% ### Fixes [elasticsearch-next-fixes]
2121
% *
2222

23-
## 9.2.1 [elasticsearch-9.2.1-release-notes]
24-
```{applies_to}
25-
stack: ga 9.2.1
26-
```
23+
## 9.1.7 [elasticsearch-9.1.7-release-notes]
2724

28-
### Features and enhancements [elasticsearch-9.2.1-features-enhancements]
25+
### Features and enhancements [elasticsearch-9.1.7-features-enhancements]
2926

3027
Authorization:
28+
* [Cyera] Add `manage`, `create_index`, `read`, `index`, `write`, `delete`, permission for third party agent indices `kibana_system` [#134894](https://github.com/elastic/elasticsearch/pull/134894) (issue: [#134183](https://github.com/elastic/elasticsearch/issues/134183))
3129
* [Sentinel One] Add `manage`, `create_index`, `read`, `index`, `write`, `delete`, permission for third-party agent indices in the `Kibana system` to support the threat event data stream. [#137222](https://github.com/elastic/elasticsearch/pull/137222) (issue: [#240901](https://github.com/elastic/elasticsearch/issues/240901))
3230

33-
ES|QL:
34-
* Enable new data types with created version [#136327](https://github.com/elastic/elasticsearch/pull/136327)
35-
36-
ILM+SLM:
37-
* Allow opting out of force-merging on a cloned index in ILM's searchable snapshot action [#137375](https://github.com/elastic/elasticsearch/pull/137375)
38-
3931
Infra/Core:
4032
* Upgrade ASM to 9.9 [#136963](https://github.com/elastic/elasticsearch/pull/136963)
4133

@@ -45,51 +37,26 @@ Infra/Plugins:
4537
Packaging:
4638
* Update bundled JDK to Java 25.0.1+8 [#137640](https://github.com/elastic/elasticsearch/pull/137640)
4739

48-
Search:
49-
* Adjust GPU graph building params [#137074](https://github.com/elastic/elasticsearch/pull/137074)
50-
5140

52-
### Fixes [elasticsearch-9.2.1-fixes]
53-
54-
Aggregations:
55-
* Reject invalid `reverse_nested` aggs [#137047](https://github.com/elastic/elasticsearch/pull/137047)
56-
57-
Allocation:
58-
* Allow allocating clones over low watermark [#137399](https://github.com/elastic/elasticsearch/pull/137399)
59-
* Handle indices with zero/missing uptime correctly in write-load calculation [#136929](https://github.com/elastic/elasticsearch/pull/136929)
41+
### Fixes [elasticsearch-9.1.7-fixes]
6042

6143
Authorization:
6244
* Grants `kibana_system` the ability to forcemerge certain indices [#135795](https://github.com/elastic/elasticsearch/pull/135795)
6345
* Handle ._original stored fields with fls [#137442](https://github.com/elastic/elasticsearch/pull/137442)
6446

65-
Data streams:
66-
* Taking additional settings providers into account for data stream effective settings [#137407](https://github.com/elastic/elasticsearch/pull/137407) (issue: [#137381](https://github.com/elastic/elasticsearch/issues/137381))
67-
6847
ES|QL:
69-
* ESQL: Fix double release in inline stats when `LocalRelation` is reused [#136467](https://github.com/elastic/elasticsearch/pull/136467) (issue: [#135679](https://github.com/elastic/elasticsearch/issues/135679))
70-
* ESQL: Fix lookup join filter pushdown to use semantic equality [#136818](https://github.com/elastic/elasticsearch/pull/136818) (issue: [#136599](https://github.com/elastic/elasticsearch/issues/136599))
71-
* Extends constant MVs handling with warnings to general binary comparisons [#137387](https://github.com/elastic/elasticsearch/pull/137387)
7248
* Fix `ReplaceAliasingEvalWithProject` in case of shadowing [#137025](https://github.com/elastic/elasticsearch/pull/137025) (issue: [#137019](https://github.com/elastic/elasticsearch/issues/137019))
73-
* Fix handling equality with MV constants properly [#137032](https://github.com/elastic/elasticsearch/pull/137032) (issues: [#136998](https://github.com/elastic/elasticsearch/issues/136998), [#136939](https://github.com/elastic/elasticsearch/issues/136939))
74-
* Make equals include ids for Alias, `TypedAttribute` [#132455](https://github.com/elastic/elasticsearch/pull/132455) (issues: [#131509](https://github.com/elastic/elasticsearch/issues/131509), [#132634](https://github.com/elastic/elasticsearch/issues/132634))
75-
* Return `ConstNullBlock` in `FromAggMetricDouble` [#136773](https://github.com/elastic/elasticsearch/pull/136773)
76-
* Return a better error message when Timestamp is renamed in TS queries [#136231](https://github.com/elastic/elasticsearch/pull/136231) (issue: [#134994](https://github.com/elastic/elasticsearch/issues/134994))
7749

7850
Geo:
7951
* Fix `ignore_unmapped` setting when using `geo_shape` query with a pre-indexed shape [#136961](https://github.com/elastic/elasticsearch/pull/136961) (issue: [#136954](https://github.com/elastic/elasticsearch/issues/136954))
8052

81-
ILM+SLM:
82-
* Remove `auto_expand_replicas` setting during index clone in `searchable_snapshot` [#137111](https://github.com/elastic/elasticsearch/pull/137111)
83-
8453
Indices APIs:
85-
* Fix mapping conflicts in clone/split/shrink APIs [#137096](https://github.com/elastic/elasticsearch/pull/137096)
8654
* Reindex-from-remote: Fail on manual slicing param [#137275](https://github.com/elastic/elasticsearch/pull/137275) (issue: [#136269](https://github.com/elastic/elasticsearch/issues/136269))
8755

8856
Infra/Node Lifecycle:
8957
* Start readiness service after http is started [#136729](https://github.com/elastic/elasticsearch/pull/136729)
9058

9159
Ingest Node:
92-
* Fix illegal_access_exception: class com.maxmind.db.Decoder from `ip_location` processor [#137479](https://github.com/elastic/elasticsearch/pull/137479)
9360
* Improve concurrency design of `EnterpriseGeoIpDownloader` [#134223](https://github.com/elastic/elasticsearch/pull/134223) (issue: [#126124](https://github.com/elastic/elasticsearch/issues/126124))
9461

9562
Machine Learning:
@@ -104,27 +71,23 @@ Recovery:
10471
* Catch exceptions from `mapperService` in `StoreRecovery.recoverFromLocalShards` [#137077](https://github.com/elastic/elasticsearch/pull/137077)
10572

10673
Search:
107-
* Disallow `max_inner_product`, swap `dot_product` for `cosine` for int8_hnsw GPU type [#136881](https://github.com/elastic/elasticsearch/pull/136881)
10874
* Make `MutableSearchResponse` ref-counted to prevent use-after-close in async search [#134359](https://github.com/elastic/elasticsearch/pull/134359)
10975
* Remove early phase failure in batched [#136889](https://github.com/elastic/elasticsearch/pull/136889) (issue: [#134151](https://github.com/elastic/elasticsearch/issues/134151))
76+
* [LTR] Fix feature display order when using explain [#137671](https://github.com/elastic/elasticsearch/pull/137671)
11077

111-
TSDB:
112-
* Enable `_otlp` usage with `create_doc`, `auto_configure` privileges [#137325](https://github.com/elastic/elasticsearch/pull/137325)
113-
114-
Vector Search:
115-
* Use Suppliers To Get Inference Results In Semantic Queries [#136720](https://github.com/elastic/elasticsearch/pull/136720) (issue: [#136621](https://github.com/elastic/elasticsearch/issues/136621))
116-
117-
## 9.1.7 [elasticsearch-9.1.7-release-notes]
118-
```{applies_to}
119-
stack: ga 9.1.7
120-
```
78+
## 9.2.1 [elasticsearch-9.2.1-release-notes]
12179

122-
### Features and enhancements [elasticsearch-9.1.7-features-enhancements]
80+
### Features and enhancements [elasticsearch-9.2.1-features-enhancements]
12381

12482
Authorization:
125-
* [Cyera] Add `manage`, `create_index`, `read`, `index`, `write`, `delete`, permission for third party agent indices `kibana_system` [#134894](https://github.com/elastic/elasticsearch/pull/134894) (issue: [#134183](https://github.com/elastic/elasticsearch/issues/134183))
12683
* [Sentinel One] Add `manage`, `create_index`, `read`, `index`, `write`, `delete`, permission for third-party agent indices in the `Kibana system` to support the threat event data stream. [#137222](https://github.com/elastic/elasticsearch/pull/137222) (issue: [#240901](https://github.com/elastic/elasticsearch/issues/240901))
12784

85+
ES|QL:
86+
* Enable new data types with created version [#136327](https://github.com/elastic/elasticsearch/pull/136327)
87+
88+
ILM+SLM:
89+
* Allow opting out of force-merging on a cloned index in ILM's searchable snapshot action [#137375](https://github.com/elastic/elasticsearch/pull/137375)
90+
12891
Infra/Core:
12992
* Upgrade ASM to 9.9 [#136963](https://github.com/elastic/elasticsearch/pull/136963)
13093

@@ -134,26 +97,51 @@ Infra/Plugins:
13497
Packaging:
13598
* Update bundled JDK to Java 25.0.1+8 [#137640](https://github.com/elastic/elasticsearch/pull/137640)
13699

100+
Search:
101+
* Adjust GPU graph building params [#137074](https://github.com/elastic/elasticsearch/pull/137074)
102+
137103

138-
### Fixes [elasticsearch-9.1.7-fixes]
104+
### Fixes [elasticsearch-9.2.1-fixes]
105+
106+
Aggregations:
107+
* Reject invalid `reverse_nested` aggs [#137047](https://github.com/elastic/elasticsearch/pull/137047)
108+
109+
Allocation:
110+
* Allow allocating clones over low watermark [#137399](https://github.com/elastic/elasticsearch/pull/137399)
111+
* Handle indices with zero/missing uptime correctly in write-load calculation [#136929](https://github.com/elastic/elasticsearch/pull/136929)
139112

140113
Authorization:
141114
* Grants `kibana_system` the ability to forcemerge certain indices [#135795](https://github.com/elastic/elasticsearch/pull/135795)
142115
* Handle ._original stored fields with fls [#137442](https://github.com/elastic/elasticsearch/pull/137442)
143116

117+
Data streams:
118+
* Taking additional settings providers into account for data stream effective settings [#137407](https://github.com/elastic/elasticsearch/pull/137407) (issue: [#137381](https://github.com/elastic/elasticsearch/issues/137381))
119+
144120
ES|QL:
121+
* ESQL: Fix double release in inline stats when `LocalRelation` is reused [#136467](https://github.com/elastic/elasticsearch/pull/136467) (issue: [#135679](https://github.com/elastic/elasticsearch/issues/135679))
122+
* ESQL: Fix lookup join filter pushdown to use semantic equality [#136818](https://github.com/elastic/elasticsearch/pull/136818) (issue: [#136599](https://github.com/elastic/elasticsearch/issues/136599))
123+
* Extends constant MVs handling with warnings to general binary comparisons [#137387](https://github.com/elastic/elasticsearch/pull/137387)
145124
* Fix `ReplaceAliasingEvalWithProject` in case of shadowing [#137025](https://github.com/elastic/elasticsearch/pull/137025) (issue: [#137019](https://github.com/elastic/elasticsearch/issues/137019))
125+
* Fix handling equality with MV constants properly [#137032](https://github.com/elastic/elasticsearch/pull/137032) (issues: [#136998](https://github.com/elastic/elasticsearch/issues/136998), [#136939](https://github.com/elastic/elasticsearch/issues/136939))
126+
* Make equals include ids for Alias, `TypedAttribute` [#132455](https://github.com/elastic/elasticsearch/pull/132455) (issues: [#131509](https://github.com/elastic/elasticsearch/issues/131509), [#132634](https://github.com/elastic/elasticsearch/issues/132634))
127+
* Return `ConstNullBlock` in `FromAggMetricDouble` [#136773](https://github.com/elastic/elasticsearch/pull/136773)
128+
* Return a better error message when Timestamp is renamed in TS queries [#136231](https://github.com/elastic/elasticsearch/pull/136231) (issue: [#134994](https://github.com/elastic/elasticsearch/issues/134994))
146129

147130
Geo:
148131
* Fix `ignore_unmapped` setting when using `geo_shape` query with a pre-indexed shape [#136961](https://github.com/elastic/elasticsearch/pull/136961) (issue: [#136954](https://github.com/elastic/elasticsearch/issues/136954))
149132

133+
ILM+SLM:
134+
* Remove `auto_expand_replicas` setting during index clone in `searchable_snapshot` [#137111](https://github.com/elastic/elasticsearch/pull/137111)
135+
150136
Indices APIs:
137+
* Fix mapping conflicts in clone/split/shrink APIs [#137096](https://github.com/elastic/elasticsearch/pull/137096)
151138
* Reindex-from-remote: Fail on manual slicing param [#137275](https://github.com/elastic/elasticsearch/pull/137275) (issue: [#136269](https://github.com/elastic/elasticsearch/issues/136269))
152139

153140
Infra/Node Lifecycle:
154141
* Start readiness service after http is started [#136729](https://github.com/elastic/elasticsearch/pull/136729)
155142

156143
Ingest Node:
144+
* Fix illegal_access_exception: class com.maxmind.db.Decoder from `ip_location` processor [#137479](https://github.com/elastic/elasticsearch/pull/137479)
157145
* Improve concurrency design of `EnterpriseGeoIpDownloader` [#134223](https://github.com/elastic/elasticsearch/pull/134223) (issue: [#126124](https://github.com/elastic/elasticsearch/issues/126124))
158146

159147
Machine Learning:
@@ -168,11 +156,15 @@ Recovery:
168156
* Catch exceptions from `mapperService` in `StoreRecovery.recoverFromLocalShards` [#137077](https://github.com/elastic/elasticsearch/pull/137077)
169157

170158
Search:
159+
* Disallow `max_inner_product`, swap `dot_product` for `cosine` for int8_hnsw GPU type [#136881](https://github.com/elastic/elasticsearch/pull/136881)
171160
* Make `MutableSearchResponse` ref-counted to prevent use-after-close in async search [#134359](https://github.com/elastic/elasticsearch/pull/134359)
172161
* Remove early phase failure in batched [#136889](https://github.com/elastic/elasticsearch/pull/136889) (issue: [#134151](https://github.com/elastic/elasticsearch/issues/134151))
173-
* [LTR] Fix feature display order when using explain [#137671](https://github.com/elastic/elasticsearch/pull/137671)
174162

163+
TSDB:
164+
* Enable `_otlp` usage with `create_doc`, `auto_configure` privileges [#137325](https://github.com/elastic/elasticsearch/pull/137325)
175165

166+
Vector Search:
167+
* Use Suppliers To Get Inference Results In Semantic Queries [#136720](https://github.com/elastic/elasticsearch/pull/136720) (issue: [#136621](https://github.com/elastic/elasticsearch/issues/136621))
176168

177169
## 9.1.6 [elasticsearch-9.1.6-release-notes]
178170

muted-tests.yml

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,6 @@ tests:
8686
issue: https://github.com/elastic/elasticsearch/issues/120339
8787
- class: org.elasticsearch.xpack.sql.expression.function.scalar.datetime.DateTimeToCharProcessorTests
8888
issue: https://github.com/elastic/elasticsearch/issues/120575
89-
- class: org.elasticsearch.xpack.test.rest.XPackRestIT
90-
method: test {p0=ml/3rd_party_deployment/Test start deployment fails while model download in progress}
91-
issue: https://github.com/elastic/elasticsearch/issues/120810
9289
- class: org.elasticsearch.xpack.security.authc.service.ServiceAccountIT
9390
method: testAuthenticateShouldNotFallThroughInCaseOfFailure
9491
issue: https://github.com/elastic/elasticsearch/issues/120902
@@ -113,12 +110,6 @@ tests:
113110
- class: org.elasticsearch.indices.recovery.IndexRecoveryIT
114111
method: testSourceThrottling
115112
issue: https://github.com/elastic/elasticsearch/issues/123680
116-
- class: org.elasticsearch.smoketest.MlWithSecurityIT
117-
method: test {yaml=ml/3rd_party_deployment/Test start deployment fails while model download in progress}
118-
issue: https://github.com/elastic/elasticsearch/issues/120814
119-
- class: org.elasticsearch.smoketest.MlWithSecurityIT
120-
method: test {yaml=ml/3rd_party_deployment/Test start and stop multiple deployments}
121-
issue: https://github.com/elastic/elasticsearch/issues/124315
122113
- class: org.elasticsearch.xpack.restart.MLModelDeploymentFullClusterRestartIT
123114
method: testDeploymentSurvivesRestart {cluster=OLD}
124115
issue: https://github.com/elastic/elasticsearch/issues/124160
@@ -483,6 +474,9 @@ tests:
483474
- class: org.elasticsearch.upgrades.IndexSortUpgradeIT
484475
method: testIndexSortForNumericTypes {upgradedNodes=1}
485476
issue: https://github.com/elastic/elasticsearch/issues/138130
477+
- class: org.elasticsearch.xpack.downsample.DataStreamLifecycleDownsampleIT
478+
method: testUpdateDownsampleSamplingMode
479+
issue: https://github.com/elastic/elasticsearch/issues/138135
486480

487481
# Examples:
488482
#

rest-api-spec/src/main/resources/rest-api-spec/api/bulk.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
"description": "If `true` then refresh the affected shards to make this operation visible to search, if `wait_for` then wait for a refresh to make this operation visible to search, if `false` (the default) then do nothing with refreshes."
5656
},
5757
"routing": {
58-
"type": "string",
58+
"type": "list",
5959
"description": "Specific routing value"
6060
},
6161
"timeout": {

rest-api-spec/src/main/resources/rest-api-spec/api/cluster.delete_component_template.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
],
2121
"parts": {
2222
"name": {
23-
"type": "string",
24-
"description": "The name of the template"
23+
"type": "list",
24+
"description": "Comma-separated list or wildcard expression of component template names used to limit the request."
2525
}
2626
}
2727
}

0 commit comments

Comments
 (0)