[comment]: # ({167707a1-167707a1})
# 8 图形

[comment]: # ({/167707a1-167707a1})

[comment]: # ({6f6d28f0-21bacb3e})
#### 概述

*Graph* 小组件以矢量图形式显示数值型监控项数据。
它可帮助您跟踪趋势、发现问题，并比较一段时间内以及不同主机之间的值。

![](../../../../../../assets/en/manual/web_interface/frontend_sections/monitoring/graph_overview.png){width="600"}

将鼠标悬停在图形上时，会显示一个提示框，其中列出了按值降序排序的监控项。

将鼠标悬停在提示框中的某个监控项上时，会高亮显示其图形（其他图形会变暗）；选择该监控项会将其数据[广播](/manual/web_interface/frontend_sections/dashboards/widgets#widget-compatibility)到其他小组件。

![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/graph_widget_item_selected.png){width="600"}

图形可使用反转的 Y 轴值显示；这仅影响视觉呈现，不会更改原始值。

![](../../../../../../assets/en/manual/web_interface/frontend_sections/monitoring/graph_inverted.png){width="600"}

旧版 [Graph (classic)](/manual/web_interface/frontend_sections/dashboards/widgets/graph_classic) 小组件也可用。

通过在[小组件菜单](/manual/web_interface/frontend_sections/dashboards#widget-menu)中选择 *Download image* 选项，可以将 *Graph* 小组件中显示的信息下载为 PNG 图像。

[comment]: # ({/6f6d28f0-21bacb3e})

[comment]: # ({01e38353-b1257d27})
#### 配置

要配置，请选择 *图表* 作为类型：

![](../../../../../../assets/en/manual/web_interface/frontend_sections/monitoring/graph_dataset.png){width="600"}

[comment]: # ({/01e38353-b1257d27})

[comment]: # ({66878525-d1f705fb})
#### 数据集

**数据集**选项卡允许通过添加数据集来为图形选择数据。
可以添加两种类型的数据集：

-   *监控项模式* - 显示与模式匹配的监控项中的数据。
您可以选择单一基础颜色，或选择调色板中的一行，为每个匹配的监控项分配不同的颜色。
-   *监控项列表* - 显示所选监控项中的数据。
您可以从颜色选择器中为每个监控项单独选择颜色。

默认情况下，会添加一个*监控项模式*数据集。

|   |   |   |
|-|----------|----------------------------------------|
|*数据集*|<|对于 **监控项模式** 数据集：<br>选择或输入主机和监控项模式；与这些模式匹配的监控项数据将显示在图形中；最多可显示 50 个监控项。<br>可使用通配符模式进行选择（例如，`*` 将返回匹配零个或多个字符的结果）。<br>要指定通配符模式，请手动输入字符串并按 *Enter*。<br>通配符始终会被解释，因此如果存在其他匹配的监控项（例如 *item2*、*item3*），则无法单独添加名为 *item\** 的监控项。<br>对于“监控项模式”数据集，必须指定主机和监控项模式。<br>另请参见：[数据集配置详细信息](#data-set-configuration-details)。<br><br>对于 **监控项列表** 数据集：<br>点击 *添加监控项* 按钮，为图形选择监控项。<br>您也可以点击 *添加部件* 按钮，为监控项选择兼容的部件作为[数据源](/manual/web_interface/frontend_sections/dashboards/widgets/#dynamic-parameters)。<br>对于“监控项列表”数据集，必须指定监控项或部件。<br>另请参见：[数据集配置详细信息](#data-set-configuration-details)。<br><br>请注意，仅允许数值型监控项类型。<br><br>在[模板仪表板](/manual/config/templates/template#adding-dashboards)上配置该部件时，用于指定主机模式的参数不可用，而用于指定监控项列表的参数仅允许选择[模板上配置的监控项](/manual/config/templates/template#adding-items-triggers-graphs)。|
| |*绘制*|选择指标的绘制类型。<br>可用的绘制类型：*线条*（默认）、*点*、*阶梯线* 和 *柱状*。<br>请注意，如果线条图/阶梯线图中只有一个数据点，则无论绘制类型如何，都会将其绘制为一个点。点的大小根据线宽计算，但即使线宽更小，也不会小于 3 像素。|
|^|*堆叠*|勾选此复选框可将数据显示为堆叠形式（显示填充区域）。<br>选择 *点* 绘制类型时，此选项将被禁用。|
|^|*宽度*|设置线宽。<br>选择 *线条* 或 *阶梯线* 绘制类型时，此选项可用。|
|^|*点大小*|设置点的大小。<br>选择 *点* 绘制类型时，此选项可用。|
|^|*透明度*|设置透明度级别。|
|^|*填充*|设置填充级别。<br>选择 *线条* 或 *阶梯线* 绘制类型时，此选项可用。|
|^|*缺失数据*|选择缺失数据显示方式：<br>**无** - 保留空白间隙；<br>**连接** - 连接两侧边界值；<br>**视为 0** - 将缺失数据显示为 0 值；<br>**最后已知值** - 将缺失数据显示为与最后一个已知值相同的值；不适用于 *点* 和 *柱状* 绘制类型。|
|^|*覆盖主机*|选择兼容的部件或仪表板[主机选择器](/manual/web_interface/time_period_selector#host-selector)作为主机的[数据源](/manual/web_interface/frontend_sections/dashboards/widgets/#dynamic-parameters)。<br>在[模板仪表板](/manual/config/templates/template#adding-dashboards)上配置该部件时，此参数不可用。|
|^|*Y 轴*|选择图形中显示 Y 轴的一侧。|
|^|*反转值*|勾选此复选框可在将所有 Y 轴值显示到图形上之前先乘以 -1。<br>这仅影响可视化表现；原始数据保持不变。<br>此选项不会影响工具提示、图例或百分位线。如果为该坐标轴选择了 *简单触发器* 选项，则触发器阈值将以反转后的形式显示。|
|^|*时间偏移*|如有需要，指定时间偏移。<br>您可以在此字段中使用[时间后缀](/manual/appendix/suffixes#time-suffixes)。允许使用负值。|
|^|*聚合函数*|指定在所选 *聚合间隔* 内，对每个监控项或整个数据集使用哪种聚合函数：<br>**min** - 显示最小值；<br>**max** - 显示最大值；<br>**avg** - 显示平均值；<br>**sum** - 显示值的总和；<br>**count** - 显示值的数量；<br>**first** - 显示第一个值；<br>**last** - 显示最后一个值。<br>如果选择 **not used**，则显示所有值（不进行聚合）。<br><br>*min*、*max*、*avg* 和 *sum* 仅可显示数值数据。对于 *count*，非数值数据将被转换为数值。<br>另请参见：[图形中的聚合](#aggregation-in-graphs)。|
|^|*聚合间隔*|指定用于聚合值的时间间隔。<br>您可以在此字段中使用[时间后缀](/manual/appendix/suffixes#time-suffixes)。不带后缀的数值将被视为秒。<br><br>请注意，如果该部件配置为基于[趋势](/manual/config/items/history_and_trends#keeping-trends)显示历史数据（*历史数据选择* 设置为 *趋势* 或 *自动*），建议使用 1 小时的整数倍作为聚合间隔（例如 3600、60m、1h、3h 等）。趋势数据存储的是按小时聚合后的值，因此使用不是 1 小时整数倍的聚合间隔（例如 100s、7min、15min、90min 等）可能会导致结果难以解释。|
|^|*聚合*|指定聚合方式：<br>**每个监控项** - 数据集中的每个监控项将分别聚合并单独显示；<br>**数据集** - 数据集中的所有监控项将聚合后显示为一个值。|
|^|*近似*|指定当每个图形垂直像素对应多个值时显示哪个值：<br>**all** - 显示最小值、最大值和平均值；<br>**min** - 显示最小值；<br>**max** - 显示最大值；<br>**avg** - 显示平均值。<br><br>当显示较长时间范围且更新间隔较短的图形时（例如显示一年内每 10 分钟采集一次的值），此设置非常有用。|
|^|*数据集标签*|指定显示在图形 *数据集* 配置中以及图形 *图例* 中的数据集标签（用于聚合数据集）。<br>所有数据集都会编号，包括已指定 *数据集标签* 的数据集。如果未指定标签，数据集将根据其编号自动标记（例如“数据集 #2”、“数据集 #3”等）。在重新排序/拖动数据集后，数据集编号会重新计算。<br>过长的数据集标签会被截短以适应显示位置（例如“进程数量...”）。|
|^|*监控项标签*|指定标签以过滤部件中显示的监控项。<br>可以包含或排除特定标签及标签值。可设置多个条件。<br>标签名称匹配始终区分大小写。<br><br>每个条件可使用以下运算符：<br>**Exists** - 包含指定的标签名称；<br>**Equals** - 包含指定的标签名称和值（区分大小写）；<br>**Contains** - 包含指定的标签名称，且标签值包含输入的字符串（子串匹配，不区分大小写）；<br>**Does not exist** - 排除指定的标签名称；<br>**Does not equal** - 排除指定的标签名称和值（区分大小写）；<br>**Does not contain** - 排除指定的标签名称，且标签值包含输入的字符串（子串匹配，不区分大小写）。<br><br>条件有两种计算类型：<br>**And/Or** - 必须满足所有条件，具有相同标签名称的条件将按 Or 条件分组；<br>**Or** - 只需满足一个条件即可。|

[comment]: # ({/66878525-d1f705fb})

[comment]: # ({1973f14b-63c8cd81})
##### 数据集配置详情

现有数据集会显示在列表中。
您可以：

-   点击 ![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/move_icon.png) 移动图标，并将数据集拖动到列表中的新位置。
-   点击 ![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/expand_icon.png) 展开图标以展开数据集详情。
展开后，此图标会变为 ![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/collapse_icon.png) 折叠图标。
-   点击 ![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/color_icon.png) 颜色图标以打开选择器。
您可以输入十六进制代码、选择纯色样本，或切换到 *Palette* 选项卡并选择一行预定义颜色。
所选颜色会直接应用于 *Item list* 数据集，或作为 *Item patterns* 中生成色阶的基础色。
使用 Tab 在对话框控件之间移动，使用方向键在色样或调色板行之间导航，按 Enter 进行选择，按 Esc 取消。
-   点击 *Add new data set* 按钮以添加一个空数据集，从而选择主机和监控项模式。
如果您点击 *Add new data set* 按钮旁边的向下图标，将出现一个下拉菜单，允许您添加新的 *Item patterns* 或 *Item list* 数据集，或者 *Clone* 当前打开的数据集。
如果所有数据集都处于折叠状态，则 *Clone* 选项不可用。

![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/graph_dataset_add.png)

[comment]: # ({/1973f14b-63c8cd81})

[comment]: # ({8b27ec1c-4bf7d5e9})
**监控项模式**数据集包含 *主机模式* 和 *监控项模式* 字段，这两个字段都可识别完整名称或包含通配符（\*）的模式。
此功能允许您选择所有包含所选模式的主机名和监控项名称。
在 *监控项模式* 字段中输入监控项名称或监控项模式时，下拉列表中仅显示属于所选主机名的监控项。

例如，在 *主机模式* 字段中输入模式 **z\*** 后，下拉列表会显示所有包含该模式的主机名：**z\***、**Zabbix server**、**Zabbix proxy**。
按下 *Enter* 后，该模式会被接受并显示为 **z\***。
类似地，在 *监控项模式* 字段中输入模式 **a\*** 后，下拉列表会显示所有包含该模式的监控项名称：**a\***、**Available memory**、**Available memory in %**。

![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/widgets/graph_widget_it_host_pattern_1.png){width="600"}

按下 *Enter* 后，该模式会被接受并显示为 **a***。

![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/widgets/graph_widget_it_host_pattern_2.png){width="600"}

随后，图形将显示属于所选主机名的所有监控项。

![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/widgets/graph_widget_it_host_pattern_3.png){width="600"}

[comment]: # ({/8b27ec1c-4bf7d5e9})

[comment]: # ({b5957b7a-c38859ec})
**监控项列表**数据集包含 *添加监控项* 按钮，可用于添加要显示在图形上的监控项。  
您还可以通过点击 *添加部件* 按钮，将兼容的部件添加为监控项的[数据源](/manual/web_interface/frontend_sections/dashboards/widgets/#dynamic-parameters)。

![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/widgets/graph_widget_it_item_list_1.png){width="600"}

例如，点击 *添加监控项* 按钮会打开一个包含 *主机* 参数的弹出窗口。  
选择主机后，该主机上所有可供选择的监控项都会显示在列表中。

![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/widgets/graph_widget_it_item_list_2.png){width="600"}

选择一个或多个监控项后，它们将显示在数据集监控项列表和图形中。

![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/widgets/graph_widget_it_item_list_3.png){width="600"}

[comment]: # ({/b5957b7a-c38859ec})

[comment]: # ({d51460cb-ce3d1e75})
##### 图形中的聚合

聚合允许在指定时间间隔（5 分钟、1 小时、1 天等）内显示聚合值（最小值、最大值、平均值等），而不是显示所有单独的值。
在一个数据集中，聚合既可以分别应用于每个监控项，也可以应用于整个数据集。

聚合功能的一些使用场景如下：
-   Nginx 服务器每天的平均请求数。
-   每周集群中的最低磁盘空间。

在以下示例中，"max" 聚合函数应用于该监控项，聚合间隔为五分钟：

![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/widgets/graph_aggregate_options.png)

该示例展示了五分钟内的最大 CPU 负载（由一分钟平均值聚合而成），并将其与五分钟内的平均 CPU 负载进行比较。

![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/widgets/graph_widget_aggregation.png){width="600"}

当为图例选择 *Show aggregation function* 时，监控项会在图例和工具提示中以括号形式显示，并以前置的聚合函数标识。
如果为图形指定了 *Data set label*，则该标签会以括号形式显示，并以前置的聚合函数标识。

[comment]: # ({/d51460cb-ce3d1e75})

[comment]: # ({975f44bc-efef79c8})
#### 显示选项

**显示选项**选项卡允许定义历史数据选择：

![](../../../../../../assets/en/manual/web_interface/frontend_sections/monitoring/graph_displaying_options.png){width="600"}

|   |   |
|--|--------|
|*历史数据选择*|设置图形数据的来源：<br>**自动** - 根据经典图形[算法](/manual/config/visualization/graphs/simple#generating-from-historytrends)选择数据来源（默认）；<br>**历史** - 来自历史的数据；<br>**趋势** - 来自趋势的数据。|
|*简单触发器*|勾选复选框以显示简单触发器的触发器阈值。阈值将使用触发器严重性颜色绘制为虚线。<br>简单触发器是指表达式中针对一个监控项仅包含一个函数（仅 `last`、`max`、`min`、`avg`）的触发器。<br>最多可绘制三个触发器。请注意，触发器必须位于绘制范围内才会可见。|
|*工作时间*|勾选复选框以在图形上显示工作时间。工作时间（工作日）在图形中显示为白色背景，而非工作时间显示为灰色（使用默认的 *Original blue* 前端主题时）。|
|*标签中的主机名*|选择是否在图形图例以及将鼠标悬停在图形数据上时出现的提示框中显示主机名：<br>**自动** - 仅当数据集中包含多个主机时才显示主机名（默认）。<br>**显示** - 显示主机名。<br>**隐藏** - 隐藏主机名。<br>在[模板仪表板](/manual/config/templates/template#adding-dashboards)上配置该小部件时，此参数不可用。|
|*百分位线（左）*|勾选复选框并输入百分位值，以在图形左侧 Y 轴上将指定百分位显示为一条线。<br>例如，如果设置了 95% 百分位，则百分位线将位于 95% 的值都低于该线的位置。|
|*百分位线（右）*|勾选复选框并输入百分位值，以在图形右侧 Y 轴上将指定百分位显示为一条线。<br>例如，如果设置了 95% 百分位，则百分位线将位于 95% 的值都低于该线的位置。|

[comment]: # ({/975f44bc-efef79c8})

[comment]: # ({27b12fb4-a747b952})
#### 时间周期

**时间周期**选项卡允许设置图形中显示数据的时间周期：

![](../../../../../../assets/en/manual/web_interface/frontend_sections/monitoring/graph_time_period.png)

|   |   |
|--|--------|
|*时间周期*|选择时间周期的[数据源](/manual/web_interface/frontend_sections/dashboards/widgets/#dynamic-parameters)：<br>**仪表板** - 使用仪表板[时间周期选择器](/manual/web_interface/time_period_selector)；<br>**部件** - 使用兼容的部件（在 *部件* 参数中设置）；<br>**自定义** - 使用在 *从* 和 *到* 参数中设置的自定义时间周期；如果已设置，部件右上角将显示一个时钟图标，鼠标悬停时会指示所设置的时间。<br>请注意，无论部件的 *时间周期* 配置如何，兼容的部件仍可将其用作时间周期的数据源。|
|*部件*|输入或选择一个兼容的部件作为时间周期的数据源。<br>如果 *时间周期* 设置为“部件”，则此参数可用。|
|*从*|输入或选择时间周期的开始时间。<br>支持[相对时间语法](/manual/web_interface/time_period_selector)（`now`、`now/d`、`now/w-1w` 等）。<br>如果 *时间周期* 设置为“自定义”，则此参数可用。|
|*到*|输入或选择时间周期的结束时间。<br>支持[相对时间语法](/manual/web_interface/time_period_selector)（`now`、`now/d`、`now/w-1w` 等）。<br>如果 *时间周期* 设置为“自定义”，则此参数可用。|

[comment]: # ({/27b12fb4-a747b952})

[comment]: # ({df5cc19c-ec3778fa})
#### 坐标轴

**坐标轴**选项卡允许自定义坐标轴的显示方式：

![](../../../../../../assets/en/manual/web_interface/frontend_sections/monitoring/graph_axes.png){width="600"}

|   |   |
|--|--------|
|*左 Y*|勾选此复选框可显示左侧 Y 轴。<br>如果在*数据集*或*覆盖*选项卡中未选中，此复选框可能会被禁用。|
|*右 Y*|勾选此复选框可显示右侧 Y 轴。<br>如果在*数据集*或*覆盖*选项卡中未选中，此复选框可能会被禁用。|
|*X 轴*|取消勾选此复选框可隐藏 X 轴（默认选中）。|
|*刻度*|从下拉列表中选择图表坐标轴值的刻度：<br>**线性** - 坐标轴值按固定增量递增（例如 10、20、30），适用于变化平稳或范围较小到中等的数据；<br>**对数** - 坐标轴值按指数方式递增（例如 10、100、1000），适用于变化快速或范围较大的数据。|
|*最小值*|设置相应坐标轴的最小值。<br>指定 Y 轴可见范围的最小值。|
|*最大值*|设置相应坐标轴的最大值。<br>指定 Y 轴可见范围的最大值。|
|*单位*|从下拉列表中选择图表坐标轴值的单位：<br>**自动** - 坐标轴值使用数据集中第一个监控项的单位显示；<br>**静态** - 坐标轴值使用*值*输入字段中指定的单位显示；如果该字段留空，则仅显示数值。|

[comment]: # ({/df5cc19c-ec3778fa})

[comment]: # ({ed8b5c97-b12a63bc})
#### 图例

**图例**选项卡允许自定义图表图例：

![](../../../../../../assets/en/manual/web_interface/frontend_sections/monitoring/graph_legend.png){width="600"}

| | |
|--|--------|
|*显示图例*|取消勾选此复选框可隐藏图表上的图例（默认勾选）.|
|*显示最小值/平均值/最大值*|勾选此复选框可显示图例中项目的最小值,平均值和最大值.|
|*显示聚合函数*|勾选此复选框可在图例中显示聚合函数.|
|*行数*|选择图例行的显示模式：<br>**固定** - 显示的行数由*行数*参数值决定;<br>**可变** - 显示的行数由配置项的数量决定,但不超过*最大行数*参数值.|
|*行数/*<br>*最大行数*|若*行数*设置为“固定”,则设置要显示的图例行数（1-10）.<br>若*行数*设置为“可变”,则设置要显示的最大图例行数（1-10）.|
|*列数*|设置要显示的图例列数（1-4）.<br>若*显示最小值/平均值/最大值*未勾选,则此参数可用.|

[comment]: # ({/ed8b5c97-b12a63bc})

[comment]: # ({f94349d9-07ed8642})
#### 问题

**问题**选项卡允许自定义问题显示：

![](../../../../../../assets/en/manual/web_interface/frontend_sections/monitoring/graph_problems.png)

|   |   |
|--|--------|
|*显示问题*|勾选此复选框以启用图形上的问题显示（默认不勾选，即默认禁用）。|
|*仅选中的监控项*|勾选此复选框后，仅会在图形上显示所选监控项的问题。|
|*问题主机*|选择要在图形上显示问题的主机。<br><br>可使用通配符模式（例如，`*` 将返回匹配零个或多个字符的结果）。<br>要指定通配符模式，只需手动输入字符串并按 *Enter*。<br>输入时，请注意下拉列表中会显示所有匹配的主机。<br><br>在[模板仪表板](/manual/config/templates/template#adding-dashboards)上配置该小部件时，此参数不可用。|
|*严重性*|勾选问题严重性，以筛选要在图形上显示的问题。<br>如果未勾选任何严重性，则会显示所有问题。|
|*问题*|指定要在图形上显示的问题名称。|
|*问题标签*|指定问题标签，以限制小部件中显示的问题数量。<br>可以包含或排除特定标签及标签值。可设置多个条件。标签名称匹配始终区分大小写。<br><br>每个条件都有多个可用运算符：<br>**存在** - 包含指定的标签名称；<br>**等于** - 包含指定的标签名称和值（区分大小写）；<br>**包含** - 包含指定的标签名称，其中标签值包含输入的字符串（子字符串匹配，不区分大小写）；<br>**不存在** - 排除指定的标签名称；<br>**不等于** - 排除指定的标签名称和值（区分大小写）；<br>**不包含** - 排除指定的标签名称，其中标签值包含输入的字符串（子字符串匹配，不区分大小写）。<br><br>条件有两种计算类型：<br>**与/或** - 必须满足所有条件，具有相同标签名称的条件将按 *或* 条件分组；<br>**或** - 只要满足一个条件即可。|

[comment]: # ({/f94349d9-07ed8642})

[comment]: # ({efe6757e-bb195e90})
#### 覆盖

**覆盖**选项卡允许为数据集添加自定义覆盖：

![](../../../../../../assets/en/manual/web_interface/frontend_sections/monitoring/graph_overrides.png){width="600"}

当使用 `*` 通配符为一个数据集选择多个监控项，并且您希望更改这些监控项的默认显示方式时，覆盖功能非常有用（例如默认基础颜色或任何其他属性）。

现有覆盖（如有）将显示在列表中。
要添加新的覆盖：

-   点击 ![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/add_override.png) 按钮
-   为该覆盖选择主机和监控项。
或者，您也可以输入主机和监控项模式。
可以使用通配符模式（例如，`*` 将返回匹配零个或多个字符的结果）。
要指定通配符模式，只需手动输入字符串并按 *Enter*。
在输入时，请注意下拉列表中会显示所有匹配的主机。
通配符始终会被解释，因此如果存在其他匹配的监控项（例如 item2、item3），则无法单独添加名为“item\*”的监控项。
主机模式和监控项模式参数为必填项。
在[模板仪表板](/manual/config/templates/template#adding-dashboards)上配置小组件时，不提供用于指定主机模式的参数。
在[模板仪表板](/manual/config/templates/template#adding-dashboards)上配置小组件时，用于指定监控项列表的参数仅允许选择[模板上配置的监控项](/manual/config/templates/template#adding-items-triggers-graphs)。
-   点击 ![](../../../../../../assets/en/manual/web_interface/frontend_sections/dashboards/add_override2.png) 以选择覆盖参数。
至少应选择一个覆盖参数。
有关参数说明，请参见上方的*数据集*选项卡。

[comment]: # ({/efe6757e-bb195e90})
