Critical data points retrieving method for big sensory data in wireless sensor networks

With the development and widespread application of wireless sensor networks (WSNs), the amount of sensory data grows sharply and the volumes of some sensory data sets are larger than terabytes, petabytes, or exabytes, which have already exceeded the processing abilities of current WSNs. However, such big sensory data are not necessary for most applications of WSNs, and only a small subset containing critical data points may be enough for analysis, where the critical data points including the extremum and inflection data points of the monitored physical world during given period. Therefore, it is an efficient way to reduce the amount of the big sensory data set by only retrieving the critical data points during sensory data acquisition process. Since most of the traditional sensory data acquisition algorithms were only designed for discrete data and did not support to retrieve critical points from a continuously varying physical world, this paper will study such a problem. In order to solve it, we firstly provided the formal definition of the δ-approximate critical points. Then, a data acquisition algorithm based on numerical analysis and Lagrange interpolation is proposed to acquire the critical points. The extensive theoretical analysis and simulation results are provided, which show that the proposed algorithm can achieve high accuracy for retrieving the δ-approximate critical points from the monitored physical world.


Introduction
The appearance of wireless sensor networks (WSNs) makes it possible to observe the complicated physical world with low cost. Nowadays, WSNs are widely used in many applications, including military defense [1][2][3][4], environment monitoring [5,6], traffic monitoring [7,8], and structural health monitoring [9][10][11]. Meanwhile, the amount of sensory data also grows fast with the wide use of sensor networks. For example, the climate data will exceed 100 PB in 2020 according to the report in [12]. For the Large Hadron Collider in Europe, if all sensory data were recorded, the total amount of the sensory data is nearly 50 EB per day. Similarly, the traffic data, including GPS data, the monitoring data captured by electronic eyes, and so on, also increase rapidly and have already exceeded petabyte annually. Fortunately, not all sensory values are necessary for the users' analysis in most applications. Some critical data points, such as maxima, minima, *Correspondence: csy@hit.edu.cn 1 School of Computer Science and Tech, Harbin Institute of Technology, 150001 Harbin, China Full list of author information is available at the end of the article and flection points in a monitoring process, may be the only ones required by the users. Therefore, the algorithms for retrieving the critical data points from the monitored physical world are quite important for WSNs.
Currently, it supposes that the sensor nodes sense and sample the data from the monitored environment with equal sampling frequency in most of traditional applications, and the sensory data generated by WSNs is regarded as a set of discrete values. Under such assumptions, a great number of query processing techniques on discrete sensory data have been proposed, including the curve query processing algorithms [13], aggregation query processing algorithms [14][15][16][17], top-k query processing algorithms [18][19][20], skyline [21,22], and quantilen [23,24] query processing algorithms. Although all the above algorithms are efficient for processing the discrete sensory data, they cannot meet the complicated query requirements given by users and do not support to retrieve the critical data points in current WSNs since only discrete data were considered. For example, in the air pollution monitoring application, the users want to estimate the extremum pollution values and obtain the period when these values appear. In the climate monitoring system, the users may want to know the convexity of the wind velocity or rainfall curve and acquire the inflection points of such curves. The reasons the above query requirements cannot be satisfied by the existing query processing techniques, which only consider the discrete sensory data, are given as follows. First, as pointed out by [25,26], the monitored physical world varies continuously, and the discrete sensory dataset omits many critical points, such as maxima, minima, and flection points from the physical world, so that the queries of retrieving critical points cannot be answered since these points do not belong to the discrete sensory dataset. Second, to answer the queries about the convexity, monotonicity, or the positions of critical points, the original data needs to have the continuous first and second derivatives, which cannot be met by the discrete sensory dataset either.
To overcome the above problems, Cheng et al. [26] proposed an adaptive data acquisition algorithm to reconstruct the physical world as much as possible. For any given error bound , the authors proved that the result returned by their algorithm is O( ) approximate to the monitored physical world, where can be arbitrarily small. Since the sampling frequency of each sensor is adjusted adaptively according to the variation of the monitored physical world, the algorithm proposed by [26] samples few sensory data and saves lots of energy on condition that the observation error is guaranteed. However, since the aim of [26] is to reconstruct the physical world, the amount of sensory data acquired by the sensors is still quite large. Considering that many applications may only want to acquire the critical point information, such as as maxima, minima, and flection points, according to the above analysis, therefore, the energy cost of collecting the sensory data from the monitored physical world can be further reduced.
Due to the above reasons, we will study the problem of retrieving the critical points, including the extremum and inflection points, in the sensor networks. In this paper, a novel sensory data acquisition algorithm is proposed based on numerical analysis techniques [27] and Lagrange interpolation [28] in order to retrieve the critical points approximately. Such algorithm can adjust the sampling frequency of sensors adaptively according to the variation of physical world in order to dramatically reduce the amount of sensory data. Furthermore, to evaluate the error of approximate critical points, the formal definitions of δ-approximate extremum point and δ-approximate inflection point are firstly provided, where δ denotes the relative error between the approximate critical point and the exact one. The correctness of the algorithm is proved. In summary, the contributions of this paper are as follows.
1. The formal definitions of δ-approximate extremum point and δ-approximate inflection point are firstly proposed. The problem of acquiring critical points from the monitored physical world is also defined. 2. Two critical point aware data acquisition algorithms are proposed based on numerical analysis [27] and Lagrange interpolation [28] techniques. The algorithms can adjust the sampling frequency of the sensors automatically according to variation of the physical world. The correctness of the algorithms is proved and the complexities of the algorithms are analyzed. 3. The extensive simulations on the real data set are carried out. The experimental results show that both of the precision and recall rate of our proposed algorithms are quite high to retrieve δ-approximate extremum point and δ-approximate inflection point from the monitored physical world.
The organization of the paper is as follows. Section 2 gives the problem definition. Section 3 provides the mathematical foundations of the algorithms. Section 4 proposes two critical points aware data acquisition algorithms, to retrieve the δ-approximate extremum point and δ-approximate inflection point, respectively. Section 5 shows the experimental results. Section 6 discusses the related work of the paper. Finally, section 7 concludes the whole paper.

Problem definition
Let N denote the number of sensor nodes in a given WSN, and V = {1, 2, · · · , N} be the set of sensor nodes, where i (1 ≤ i ≤ N) denotes the ID of a sensor node.
Suppose that t s and t f denote the start and final time in monitoring the physical world by a WSN, respectively. Therefore, the variation of the physical world monitored by sensor node i can be regarded as a curve. We use S i (1 ≤ i ≤ N) to denote such curve. According to the discussion in [26], the physical world always varies continuously and S i is smooth enough to have a continuous fourth-order derivative, i.e., In this paper, the critical points considered by us are extremum points and inflection points of the physical curve S i (1 ≤ i ≤ N). Since S i has the continuous fourth-order derivative according to the above analysis, the extremum points of S i in range [ t s , t f ] can be denoted by x|S (1) i (x) = 0 x ∈[ t s , t f ] ; similarly, the inflection points of S i in [ t s , t f ] can be denoted by x|S (2) (1) i and S (2) i are the first and second derivatives of S i , respectively.
Since when the critical points will appear in the future is unknown, it requires that the sampling frequency should be infinite to obtain all the critical points of S i exactly, which is almost impossible. Thus, we will study the sensory data acquisition algorithm to retrieve the critical points, including the extremum points and the inflection points, approximately. To evaluate the relative error between the approximate critical points and the exact critical points, the δ-approximate extremum point and δ-approximate inflection point are defined as follows.

Definition 2. (δ-approximate inflection points) x i is called as a δ-approximate inflection point if and only if
The intuition of our algorithm is to forecast the first and second derivatives of S i using the current collected sensory data. If the first or second derivative is close to 0, then the sampling frequency increases. Otherwise, we reduce the sampling frequency in order to save energy. Since the physical world varies continuously, it is acceptable to use the history sensory data to forecast the future. The detailed algorithm is presented in Section 4, and the formal definition of retrieving the approximate critical points from physical world is given as follows.

Input:
1. The start and final time of monitoring, t 0 (= t s ) and t f 2. The maximum bound of the sampling frequency of a sensor node, f max 3. The step-size increment t and the decrease factor α Output: The sets of approximate extremum and inflection points in [ t s , t f ], X 1 and X 2 We verify that the precision and the recall rate of our algorithms are quite high on condition that δ-approximate extremum points and δ-approximate inflection points are collected. To improve the readability of the whole paper, the table of the symbols used in this paper is given in Table 1.

Mathematical foundations
Let t c denote the current sampling time, t c−1 denote the last sampling time before t c , and t 2c−1 2 be the median of t c and t c−1 . For each sensor node i (1 ≤ i ≤ N), S i t 2c−1 2 should always be sampled besides S i (t c−1 ) and The sensed value of sensor node i at time t The k-order derivative of S i at time t.
The estimation of the k-order derivative of S i at time t.
The extremum point set returned by our algorithm.
. Based on such operations and a threepoint central difference formula [27], the first and second derivatives of S i at t 2c−1 2 can be estimated by the following two formulas.
denotes the half length of the sampling interval.
The following theorem guarantees that the difference Proof. Based on Taylor Series, we have Let M and m be the maximum and minimum values of S Comparing Formula (3) with Formula (1), we have The proof of Theorem 2 is similar as that of Theorem 1. These two theorems indicate that the difference between the exact critical points and the approximate ones calculated by Formulas (1) and (2) can be arbitrary small with the decline of h.
In Theorems 1 and 2, S The error of such estimation is bounded by Theorem 3, which is very small in practice. (5) and (6)

Theorem 3. The errors generated by Formulas
Proof. According to the property of Lagrange interpolation [28], the interpolation remainder, denoted by R(x) satisfies that where f (x) is a function whose nth-order derivative is continuous, and L f (x) is n-degree Lagrange interpolation of f (x), x 0 , x 1 , · · · , x n denote the interpolation points, and ξ ∈[ x 0 , x n ]. Therefore, the three-order interpolation remainder of L 1 (t) satisfies that which is the error generated during estimating S i (t). The fourth-order interpolation remainder of L 2 (t) satisfies that which is the error generated during estimating S (4) i (t). Thus, Theorem 3 is proved.
Theorem 3 also verifies that the error generated by Lagrange interpolation estimation is also very small.

Critical point aware data acquisition algorithm
According to the analysis in Section 3, t c and t c−1 denote the current sampling time and the last one before t c , respectively. t 2c−1 2 is the median time slot of t c and t c−1 . Let f max be the maximum sampling frequency that a sensor node can achieve.
Based on such symbols, the whole critical point aware data acquisition algorithm can be divided into two phases. The first one is the initial phase, the sampling frequency in such phase is set to be f max in order not to omit any critical points. The second one is the maintenance phase; the sampling frequency in such phase is determined according to the variation of physical world. Since the variation of the monitored physical world in the future is unknown, the posterior estimation is adopted, that is, the history sensory data collected in the current time will be used to estimate the variation of the monitored physical world in the future. Because the physical world always varies continuously, such estimation is acceptable and can achieve high precision.
Specifically, the critical point aware data acquisition algorithm consists of the following five steps.
Step 1. Sample sensory values at time t 0 , t 1 Using the sensory values sampled in the current and last sampling intervals, i.e., and S i (t c ), the Lagrange interpolation polynomial can be constructed. Therefore, S (3) i (t) and S (4) i (t) can be obtained according to Formulas (5) and (6) for Step 3. Call the extremum point retrieving algorithm to obtain the extremum point in current sampling interval and determine the length of the next possible sampling interval h 1 , the detailed method is shown in Section 4.1.
Step 4. Similarly, call the inflection points retrieving algorithm to collect the inflection point and determine the length of the next possible sampling interval h 2 . The detailed algorithm is given in Section 4.2.
Step 5. Finally, select the minimum one returned by the above two steps to be the adopted length of the next sampling interval, i.e., h = min{h 1 , h 2 }, which avoids omitting critical points. Go to step 2 with increasing c by 1, and start a new loop until t c > t f .
The detailed critical point aware data acquisition algorithm is shown in Algorithm 1.

Extremum point retrieving algorithm
The extremum point retrieving algorithm has four steps.  . Then, retrieve the extremum point by curve tessellation techniques [29].
Step 3. There exists three cases that need to be considered when determining the length of the next sampling interval.

Algorithm 1: Critical point aware data acquisition algorithm
Input: t 0 (= t s ), f max , t , the decrease factor α. Output: The set of extremum points X 1 and the set of inflection points X 2 Sample sensory values at t 2c−1 2 , t c ;

5
Construct third order Lagrange interpolation and , t c according to Formula (5); 6 Construct fourth order Lagrange interpolation and estimate S (4) > 0, which means that the first derivative of the physical world increases or decreases monotonously; therefore, the extremum point may not be contained in the next sampling interval [t c , t c+1 ], so that the length of the next sampling interval should be increased in order to save energy. In summary, let h and h 1 denote the half length of the current and next sampling interval, then where t is a given constant to denote the step size increment.

If
, which means that the next extremum point is more likely to be included in the next sampling interval; thus, we decrease the length of sampling interval in order to catch the extremum point. Therefore, h 1 is set to be h 1 = max 1 f max , αh , where α is a decreasing factor and 0 < α ≤ 1.

Otherwise, the ratio between S i
(2) t 2c−1 In other situations, h 1 maintains the last sampling interval h.
Step 4. Return h 1 and the extremum point.
The detailed algorithm is shown in Algorithm 2.

Inflection point retrieving algorithm
The inflection point retrieving algorithm also has four steps and can be constructed by similar method shown in above section.
Step 1.  we have missed. Then, retrieve the inflection point by curve tessellation techniques [29].
Step 3. There exists three cases that need to be considered when determining the length of the next sampling interval.
> 0, which means that the second derivative of the physical world increases or decreases monotonously; therefore, the inflection point may not exist in the next sampling interval [ t c , t c+1 ]. In order to save energy, increasing the length of the next sampling interval. That is, increase the half length of sampling interval where t is a given constant to denote the step size increment.

If
, which means that the next inflection point is more likely to be included in the next sampling interval; thus, we decrease the length of sampling interval in order to catch the inflection point. Therefore, h 2 is set to be h 2 = max 1 f max , αh , where α is a decreasing factor and 0 < α ≤ 1. will be considered, if S i

Otherwise, the ratio between S
In other situations, h 2 maintains the last sampling interval h.
Step 4. Return h 2 and the inflection point.
The detailed algorithm is shown in Algorithm 3.
In each sampling interval, the complexity of the above algorithm is O(1) since it only needs to sample two sensory values and the first and second derivatives can be calculated in O (1). Therefore, the total complexity of Algorithm 1 is determined by the number of sampling interval it includes.
In the best case, the half length of sampling interval, h, increases t every loop. Therefore, there exists O t f −t s t sampling intervals, so that the minimum complexity of the

Algorithm 3: Inflection point retrieving algorithm
< 0 then 5 y 2 is determined by curve tessellation techniques [29] in [ t 2c−3 16 Return h 2 and y 2 ; In the worst case, the sampling frequency is always f max , so that the maximum complexity of the above algorithm is O f max (t f − t s ) . However, the worst case requires that there should exist lots of critical points in [t s , t f ], which is rarely happened. Therefore, in practice, the complexity of our algorithm is much better than the worst case.

Discussion: the method for estimating missing critical points
If the product of the first derivatives of t which is not captured by our extremum point retrieving algorithm. Since such missing extremum points are also very important for users' observation, the method for estimating these missing critical points are required. The traditional methods, such as curve tessellation techniques [29], are too complicate to solve such problem, and not practical for WSNs. However, in some situations, the missing critical points can be obtained easily just as shown in the following Theorem 4.

Theorem 4. When
. As the condition shows, That is, |t c−1 −t| t ≤ δ. Therefore, t c−1 is a δ-approximate critical point.
According to Theorem 4, the missing extremum points can be obtained by following three steps.
Step 1. Judge whether t c−1 is a δ-approximate extremum point by Theorem 4.
Step 2. Use the the values S i (1) to locate the interval where the approximate extremum point is in.
Step 3. Use the Lagrange interpolation polynomial we constructed before to estimate the sampling value of the estimated extremum point.
The detailed algorithm for estimating the missing extremum point is shown in Algorithm 4. As shown in the algorithm, we use the linear function to estimate approximate extremum point if the condition in Theorem 4 is not satisfied, and more complicated situation will be considered in our future works. For the missing inflection points, the similarly method can be adopted to retrieve them approximately.
The complexity of Algorithm 4 is O (1). The algorithm only needs to conduct compares and additions which can be calculated in O (1). So the method for estimating these missing critical points is efficient.

Discussion: the in-network cooperation and communication algorithms
The above algorithms are all about single sensor's sensing strategies, which can reduce sensory data. Obviously, when in-network cooperation and communication is considered, the sensory data can be further reduced. Since sensory data is spatially-related, not all the sensors need to transmit their critical points. That is, when two sensors are close enough, the critical points of their sensory data may appear at the same time. In this situation, not all the critical points need to be transmitted since they may present the same area. We design an algorithm for the in-network cooperation and communication, which can further reduce the transmitting sensory data and the communication energy. Firstly, we divide the sensors into clusters according to their positions. We divide the monitored area into squares, whose length of the side is D. The length of the side D is given by the users according to the specified applications. Each cluster has a cluster head, and all the sensor nodes in the cluster transmit their critical points to the cluster head. All cluster heads compose a spanning tree, where the base station is the root of the spanning tree and cluster heads transmit the critical points along the spanning tree. Secondly, each time a sensor samples a critical point, it transmit the critical point and its position to the cluster head. The cluster head will determine whether the critical points it received need to be reduced according to the positions. When the distance of two critical points is less than L, only one of the critical points will be transmitted, where L is a parameter given by the users. The detailed algorithm of in-network cooperation and communication is shown in the Algorithm 5.
This algorithm employs the spatial correlation of the sensors, which can further reduce the transmitting energy. Only simple in-network cooperation and communication is considered in the algorithm, since this paper mainly focuses on requiring critical points by single sensor. In the future work, we will study the in-network cooperation to further reduce the energy consumption. if l a > L then 13 S h = S h − a; 14 h transmits S h to its parent. 15 Sink combine all S h as critical points set S. 16 Return S;

Experiment setting
We use a simulated network with 200 sensor nodes to evaluate the performance of our sensory data acquisition algorithms. The network is deployed into a rectangular region with 200 × 200 m size. The transmission range of each sensor node is set to be 25 m.
The sensory data of the network comes from a real sensor system, where the TelosB mote (http://www.willow.co. uk/TelosB_Datasheet.pdf) is used to acquire indoor temperature, humidity, and light intensity continuously with the frequency equaling to 1 Hz, and the light intensity is adopted in the experiments.

The performance of the algorithm
The first group of experiments is going to evaluate the recall rate and precision of our algorithm for retrieving δapproximate extremum and inflection points. The recall rate equals to the fraction of the exact δ-approximate critical points that are returned. The precision is the fraction of the returned results that are the exact δ-approximate critical points. They are important parameters to evaluate the accuracy of the proposed algorithm. In the following experiments, the recall rate and the precision of our algorithm were computed, respectively, while δ increases from 0.005 to 0.025, α = 0.5, and t = 0.5. The experimental results are presented in Figs. 1 and 2.
From Fig. 1a, b, we can see that the recall rate and precision of δ-approximate extremum points increase with the growth of δ, and both of them are close to a hundred percent even when δ is quite small. For example, when δ = 0.024, the precision of δ-approximate extremum point is 100 % and the recall rate of δ-approximate extremum point is close to 90 %. The results in Fig. 2a, b show that the recall rate and precision of δ-approximate inflection points are also close to a hundred percent even when δ is relatively small. The recall rate and precision of δapproximate critical points increase with the increase of δ, since δ is the relative error. When the error is loose, the algorithm can capture more approximate critical points which leads to higher recall rate and precision. Furthermore, when the relative error is not too large, the algorithm can capture almost all critical points.
In summary, our algorithms can achieve high accuracy in practice.
The second group of experiments is to investigate the impact of α on the performance of our algorithm. In the following experiments, the recall rate, the precision, and the errors of the first and second derivatives generated by our algorithm are computed respectively while α increases from 0 to 1, δ = 0.015, and t = 0.5. The experimental results are presented in Figs. 3 and 4. Figure 3a, b shows the the recall rate and precision of δapproximate extremum and inflection points. The recall rate and precision of δ-approximate inflection points decrease with the growth of α; the reason is that the larger α will omit more inflection points. Besides, the recall rate and precision of δ-approximate inflection points are still every high even when α is not very small. For example, the recall rate of δ-approximate inflection points reaches 96 % when α = 0.1. At the mean time, the recall and precision rate of δ-approximate extremum points keep stable and high enough in practice with the variation of α. Such recall rate and precision are quite high and can be acceptable in practice. Figure 4a, b presents the errors of the first and second derivatives generated by our algorithm. The maximum, average and 0.9-quantile errors of the first and second  Fig. 1 The relationship between the accuracies of δ-approximate extremum points and δ derivatives are quite small for different α, which indicate the high accuracy of our algorithm and also explain why the recall rata and precision of our algorithm are quite high. For example, the average error of the estimated first derivative is less than 10 −3 and the average and 0.9quantile errors of the estimated second derivative is about 10 −4 . The third group of experiments is to investigate the impact of t on the performance of our algorithm. In the experiments, the recall rate, the precision, and the errors of the first and second derivatives generated by our algorithm are calculated, while t increases from 0.1 to 1, α = 0.5, and δ = 0.015. The experimental results are presented in Figs. 5 and 6. Figure 5a, b shows that the recall rate of δ-approximate inflection points is around 90 % and the precision of δapproximate inflection points decreases with the growth of t , since more δ-approximate inflection points will be omitted when t is larger. Although the recall rate and the precision of δ-approximate extremum points are lower than δ-approximate inflection points, we still capture a large portion of extremum points. Figure 6a, b shows the maximum, average, and 0.9quantile errors of the first and second derivatives generated by our algorithm while t increases. The figures show that all these errors are extremely small, which also verify that our algorithm can achieve high precision on identifying the critical points. For example, the maximum error of the estimated first derivative is only about less than 2 × 10 −3 . For the estimated second derivative, most of the errors is less than 0.5 × 10 −4 .

Related works
Currently, there exists few published works considering the adaptive sampling in sensor networks. Moreover, none of them could support the requirement of retrieving the critical points from the monitored physical world.
Some adaptive sampling algorithms are proposed for particular applications. For example, the algorithm in [30] is designed for target tracking. Each sensor uses sensory values sensed by its neighbours and itself to predict the target position and adjusts the sampling frequency adaptively. And [31] introduced an energy efficient algorithm to adjust the sampling frequency in the abnormal event detecting applications. It applies Fourier transform to predict the events and to adjust sampling frequency automatically. Since they are designed for particular applications, they have limitation in applying. Most of works on adaptive sampling apply prediction models to estimate sensory values instead of sampling them. Jain and Chang [32] uses Kalman filter-based prediction model to predict sensory values, if the estimations beyond the acceptable range, they will adjust sampling frequency. However, the prediction ability of Kalman filter is limited, and the estimation error may be large. The prediction method in [33] is Box-Jenkins approach. The main idea of the work is to skip samplings from equalsampling-frequency and use the forecast ones, which can adjust the sampling frequency adaptively. However, since the method is based on equal-sampling-frequency, its accuracy is even worse than the EFS method. The work in [34] proposed a heuristic adaptive sampling algorithm for a glacial sensor network. Each sensor locally adjusts its sensing frequency based on the linear regression forecasting model. Such method reduces the energy cost of acquiring sensory data since the forecasting model is sufficiently utilized. However, the forecasting ability of the linear regression model is limited, and it  do not consider the problem of retrieving the critical points, either. As for retrieving critical points in wireless sensor networks, some published works focus on it. However, few works focus on retrieving extremum and inflection points. The most common critical points they considering is top-k values.
The work in [20] proposed a novel approach for top-k query. The basic idea of it is to use filters for each node, which can filter the unnecessary sensor updates.
Silberstein et al. [19] studied the optimizing top-k queries in wireless sensor networks. The authors proposed to use samples of past sensor readings, which can reduce energy significantly. The work in [18] focuses on the location aware peak value query in sensor networks. It consider the top-k values' location which is not considered the traditional top-k query. The authors defined LAP-(D, k) query which can find top-k values and the distance between any two values is larger than D. However, these papers only consider peak values. In face, besides peak

Conclusions
This paper studies the critical point aware data acquisition algorithm to obtain δ-approximate extremum and inflection points from the physical world. We firstly provide the formal definition of δ-approximate extremum and inflection points. Then, a data acquisition algorithm is proposed based on numerical analysis and Lagrange interpolation. Such algorithm can adjust the sampling frequency of each sensor node adaptively according to the variation of physical world. The correctness of the algorithm is proved and the its complexity is analyzed in detail. Finally, the extensive simulations are carried out, which show that our algorithm can achieve high accuracy of retrieving δ-approximate extremum and inflection points from physical world.