A Survey on Energy Efficient Transmission of Image in Wireless Sensor Networks

Download Full-Text PDF Cite this Publication

Text Only Version

A Survey on Energy Efficient Transmission of Image in Wireless Sensor Networks

Rashmi T V,

Chandrakala H T ,

Prathibhavani P M

Student of M.Tech (CNE)

Assistant Professor, Dept of ISE,

Assistant Professor, Dept of ISE

Acharya Institute Of Technology

Acharya Institute Of Technology

Acharya Institute of Technology

Bangalore

Bangalore

Bangalore

Abstract- In comparison with traditional WSNs, image and multimedia data in wireless sensor networks require sophisticated processing and transmission techniques to meet the limited energy constraint. It is also desirable to achieve optimum time efficiency and minimal jitter during image transmission. Compression is used to compress the image to optimize the resource usage. Compression techniques are broadly classified into DWT and DCT. DCT is Discrete Cosine Transform in which image source is partitioned into blocks and each block is coded independently. DWT is Discrete Wavelet Transform, which captures both frequency and location information and the wavelets are discretely sampled. There are several techniques available in the literature for this purpose. In this paper a detailed evaluation of DWT techniques has been provided. A cross layer design provides adaptive modulation by exploiting intersegment dependencies across layers.

Keywords- DCT; DWT; energy efficiency; image transmission; wireless sensor network; cross layer

  1. INTRODUCTION

    This section includes a brief introduction about Wireless Multimedia Sensor Networks, Image Transmission in WSN, and Image Compression.

    1. Wireless Multimedia Sensor Networks

      The availability of inexpensive hardware such as CMOS cameras and microphones that are able to ubiquitously capture multimedia content from the environment has motivated the development of Wireless Multimedia Sensor Networks (WMSNs). The Multimedia elements can be image, video, still image etc.

      WSN faces some challenges in providing QoS for multimedia transmission. Some of them are, Resource constraints, Variable channel capacity, Multimedia in-network processing, Cross-layer coupling of functionalities.

    2. Image Transmission

      Image transmission in WSN is a challenging task because of the limited resources. The image will consume more

      bandwidth than data. To reduce the bandwidth usage, image has to be compressed first and then It could be transmitted to required destination as shown in Figure 1.

      Sender: Image

      Compress Image

      Transmission of Image

      Receiver: Reconstruct the Image

      Figure 1: Steps in Image Transmission

    3. Image Compression

    Compression method is used to minimize a given quantity of information. Compression refers to the process of reducing the amount of data. As discussed in [2], the neighboring pixels are correlated and therefore contain redundant information. So, the solution is to find less correlated representation of their relevancy reduction: first, it is need to remove duplication from the signal source and second, remove parts of the signal that will not be noticed by the signal receiver. In order to be useful, a compression algorithm has a corresponding decompression algorithm that reproduces the original file once the compressed file is given. There are several steps involved in image compression as shown in Figure 2. For an image forward transform technique need to be applied to get transformed coefficients.

    Image

    Forward Transform

    Transformed Coefficients

    Entropy Coding

    Figure 2: Basic Steps in image compression

    There are many types of compression techniques developed; Wavelet Coding is one among them. In this paper, a brief survey is conducted on different Wavelet Transforms.

  2. WAVELET CODING

    The information of a digital image is conveyed by shapes and objects. This information is depicted by the pixel values. The wavelet based image compression scheme extracts the shape and position information of the regions as well as the lighting magnitude information. Thus two groups of values called as small-magnitude wavelet coefficients and large-magnitude wavelet coefficients are formed.

    The wavelet coefficients [1], with small magnitude values are compressed by significance propagation, dominant encoding, and then run length based coding passes. These small- magnitude coefficients stand for the image-pixel-position information. Small-magnitude coefficients result in a large number of "0" bits in a bit-plane that can be efficiently compressed. The compressed small coefficients have error propagation effect as the errors in the number of consecutive "0" bits directly impact the positions of the large magnitude coefficients leading to irrecoverable misalignment and decoding difficulty. The output of magnitude refinement is related to the large value wavelet coefficients and corresponds to the Image-pixel-value (i.e., brightness) information. The large magnitude values are relatively unimportant but their locations are crucial for decoding and perception. The communication loss or errors in position information (p data) will have significantly higher impact on the overall quality of the received image than the loss or errors in value information (v-data).

    The image undergoes wavelet transform to form wavelet coefficients which are stored in a matrix. The number of bit planes of the image is identified and the initial quantization threshold for the bit planes is determined. Coding pass

    algorithm is applied on the wavelet coefficients by Morton scanning method. Based on the threshold wavelet coefficients can be grouped into small magnitude and large magnitude wavelet coefficients are obtained. Small magnitude coefficients are grouped as tree structure symbols. The large magnitude coefficients are classified either as positive or negative significant symbol. Both the small magnitude and the large magnitude wavelet coefficients are stored in the p-buffer and v-buffer. In the next step the threshold is reduced by half and the grouping of the coefficients into small and large magnitudes is continued for the remaining biplanes. The values that are stored in the p and v buffer are finally output in an embedded manner.

    The Wavelet Coding mainly includes two types of Transform. They are Discrete Cosine Transform (DCT) and Discrete Wavelet Transform (DWT) which are described in the following sections.

  3. DCT-BASED COMPRESSION

    JPEG compression is the most representative DCT-based compression algorithm. It is the most popular and widely used compression algorithm for images. In JPEG compression [2], the image source is first partitioned into blocks of 88 pixels and each block is coded independently. After the Discrete Cosine Transform (DCT), each block of 64 DCT coefficients is uniformly quantized by a quantization table. After that, all of the quantized coefficients are ordered into a zigzag sequence, such that low-frequency coefficients are to be processed prior to high-frequency coefficients.

    The DCT transform is very fast. Furthermore, the independent nature of the 88 block mechanism results in very low memory requirements for the JPEG algorithm. Therefore, the whole compression system is very fast and energy-efficient.

    The drawback of JPEG is the low compression quality. Despite that, it is still the most widely used compression in commercial products. JPEG consists of a large number of additions and multiplications involving real numbers. In processor architectures operations using float data types are expensive and energy consuming by comparison. Most hardware platforms, instead of having dedicated floating point hardware units, rely on simple and low-cost fixed-point arithmetic units to emulate floating-point operations. However, emulating floating-point operations is slow and energy-inefficient. According to current studies, the precision of floating-point operations is often far greater than is necessary in light of quantization process in JPEG. Some research efforts utilize this effect to improve computational energy efficiency.

    Let n be a positive integer. The one-dimensional DCT of order n is defined by an n x n matrix C whose entries are

    C a cos i(2 j 1)

    ij i 2n

    Original Compressed

    • Encoding process :

    Image

    Preproc- essing

    DWT Quantizer

    Figure 3: Input and output example for DCT

    Figure 3 illustrates the input and output of the DCT based compression. The DWT based compression will be discussed in the next section.

  4. DWT-BASED COMPRESSION

    Output

    Rate Control

    Rate Control

    Bit-stream Organizer

    Bit-stream Organizer

    Figure 4: Encoding Process

    Embedded Block Coding

    Discrete Cosine Wavelet (DWT) is a very powerful transform that provides significantly higher compression efficiency than DCT at higher compression ratio. However, DWT is also more complex and computationally intensive than DCT. Thus, several research activities focus on reducing complexity and required memory. Among them, the lifting scheme is one of

    The Encoding process is shown in Figure 4. It accepts the image as input preprocesses it before applying the DWT and finally gives encoded output.

    • Decoding Process :

    the best algorithms to calculate the wavelet transform in an energy efficient manner. Compared to a convolution filter, the lifting scheme uses fewer filter coefficients; therefore it provides a faster implementation of DWT. Lifting wavelet also provides memory reduction through in-place computation of wavelet coefficients.

    In order to further reduce energy consumption in wavelet transform, papers such as propose an approach of skipping the

    Compressed Data

    Reconstructed Image

    Compressed data

    Inverse ICT

    Inverse

    DWT

    De- Quantization

    computation for the coefficients in high-pass filters in the wavelet transform. Their technique is inspired by the observation that high-pass filter output coefficients are of very low value, typically. According to their studies in image Lena 512×512, 80% of the high-pass coefficients for wavelet transform level 1 octave are less than 5, claiming that setting the high-pass coefficients to zero has minimal quality impact.

    By skipping the high pass filter coefficient computation, they can trade-off the reconstruction quality with computational energy consumption. Their experimental results show that 90% of energy savings can be achieved over adaptive wavelet image compression at a low PSNR of 25db.

    In DWT-based compression, the two best-known compression

    Figure 5: Decoding Process

    Figure 4: shows the Decoding process. It takes the compressed image as input and reconstructs the image at destination.

    B. Embedded Zero Tree Wavelet (EZW) Coding

    An EZW encoder is designed to use with wavelet transforms. This is based on progressive coding to compress an image into bit stream with increasing accuracy so when more bits are added to a bit stream image will be more detailed.

    Input Image

    Transform EZW

    algorithms are Set Partitioning in Hierarchical Trees (SPIHT) Embedded Zero Wavelet (EZW) and JPEG2000.

    A. JPEG-2000 Image Coding

    JPEG 2000 is the international standard for still images. This is the extension to the existing JPEG system. As discussed in [3], the JPEG 2000 implements a way of compressing images based on the wavelet transform. This supports lossy and lossless compression of gray-scale and color images. There are 2 processes used for compression i.e., encoding and decoding

    Post processor

    Post processor

    Output Image

    Pre- processor

    Inverse transform

    coding

    Compressed Image EZW

    decoder

    process.

    Figure 6: Block diagram of Embedded zero tree wavelet coding

    Transmission

    Transmission

    As discussed in [3], before the processing of image data the image is preprocessed . In preprocessing, tiles are used which reduces memory requirements, and as they are also reconstructed independently, they can be used for decoding specific parts of the image instead of the whole image. All tiles have exactly the same dimensions. This unit transforms the input image and decomposes the original image into its fundamental components. The Embedded Zero Tree Wavelet (EZW) encoder encodes the decomposed image by recognizing the priority of decomposed image pixel. The

    Original Image

    Original Image

    Wavelet Transform

    Wavelet Transform

    Entropy Coding

    Sorting Pass

    Refinement Pass

    2

    2

    encoder module calculates a initial threshold for coding given by T0= 2 [log ( max(|y(x,y)|))]. Where, max is maximum coefficient value in image. (x,y) is coefficients.

    The encoding process is performed using 2 passes namely,

    1. Dominant pass and

    2. Subordinate pass.

      The dominant pass generates any one of four possible combinations like they are Significant Positive (SP), Significant Negative (SN), isolated zero (IZ) and Zero-tree Root (ZR).

      Subordinate pass where the coefficients are encoded as 0 or 1 depending on the current threshold. The decoding unit reconstructs the values by identifying the symbols as positive, negative, zero tree and isolated zero tree. Inverse transformation is the process of retrieving back the image data from the obtained image values. The image data transformed and decomposed under encoding side is rearranged from higher level decomposition to lower level with the highest decomposed level been arranged at the top. Figure 5 shows the reconstruction of the obtained decomposed component.

      C. SPIHT

      Set Partitioning in Hierarchical Trees (SPIHT) is a wavelet based image compression method. SPIHT introduces three lists discussed in [3]:

      1. List of Significant Pixels (LSP),

      2. List of Insignificant Pixels (LIP) and

      3. List of Insignificant Sets (LIS).

        First initialization is done, and then algorithm takes two stages for each level of threshold,

        1. The sorting pass (in which lists are organized) and

        2. The refinement pass.

          LIS is further divided into two types of sets of insignificant pixels .They are Type A (all descendant are zero) Type B (all grandchildren and further descendants are zero).

          SPIHT algorithm defines four types of sets [3], which are sets of coordinates of coefficients: O (i,j): set of coordinates of all offspring of node (i,j); children only D (i,j): set of coordinates of all descendants of node (i,j); children, grandchildren, great-grand, etc.

          H (i,j): set of all tree roots (nodes in the highest pyramid level); parents L (i,j): D (i,j) O(i,j) (all descendants except the offspring); grandchildren, great-grand, etc.

          Figure 7: Block diagram of SPIHT

          Number of passes can be determined by using the formula,

          n =log2 Cmax. Where, Cmax maximum magnitude of the coefficients to be encoded.

          The SPIHT algorithm forms a hierarchical quad tree data structure for the wavelet transformed coefficients. The set of root node and corresponding descendants are together called as spatial orientation tree (SOT). The pseudo code for SPIHT can be given as follows :

          Process LIC

          For each set (i, j) in LIS If type D

          Send Sn (D (i, j)) =1

          For each (k, 1) O (i, j) Output n (k, 1)

          If Sn (k, 1) =1, add (k, 1) to LSP Output sign of coefficient=-/+

          If Sn (k, 1) =0 then add (k,1) to the end of LIP End for

          End if

          Else (type H)

          Send Sn (L (i, j))

          If (Sn (L (i, j)) =1)

          Add each (k, 1) O(i, j) to the end of the LIS as an entry of type D

          Remove (i, j) from LIS End if

          End loop

          Process LSP

          For each element (i, j) in LSP-Except elements just added above

          Output is nth most significant bit of coefficient End loop

          Update

          Decrement n by 1

          The next section describes about the Cross-Layer Optimization technique used to enhance the network performance while transmitting the compressed image.

  5. CROSS-LAYER OPTIMIZATION

    A cross layer approach in network design seeks to enhance the performance of a network, by jointly designing multiple

    protocol layers. This helps upper layers in adapting better to varying link and network conditions. The resulting flexibility leads to an improvement in end-to-end performance and optimizes the use of scarce network resources. However, a cross layer can increase the design complexity. Given that the layered protocol helps designers to work on single protocol designs without the complexity and expertise required for considering the other layers, cross layer design cannot eliminate the conventional layering principle. Keeping some form of separation while allowing layers to interact is a good compromise for cross layer design. In such a structure, each layer is characterized by some key parameter that are passed on between layers to determine the operating modes that will best suit the current channel, network and application conditions.

    The data delays at any of the layers of the protocol stack can happen due to several factors: channel contention, retransmissions of packets due to loss, long packet queues, nodes failure, and network congestion etc.

    Cross layer design has been seen several recent research works as a solution for optimizing network performance and energy optimization. Interfaces between protocol layers provide avenues for interaction and compatibility between these layers. While the traditional layered protocols do achieve very high performance in the context of individual layers, they can be intelligently interactive, without losing their layered character to maximize the overall network level performance. Given the scarce energy and processing resources of wireless networks deployed in remote areas, As discussed in [1], cross- layer design is a promising alternative to further improve the efficiency compared to the traditional layered protocol approach.

    The standard layered protocol architecture of networks can be altered to address many network level challenges that arise because of interactions between many layers, and because of the varying network conditions.

    Multimedia-based cross-layer optimization solutions should overcome at least one of the following efficiency issues as discussed in [16] :

          • Transmission rate adjustment: Multimedia coding techniques may prioritize the encoded data according to the decoding process. If necessary source nodes may avoid transmitting packets containing less relevant encoded data, decreasing the current transmission rate and saving energy throughout the path toward the sink.

          • Energy preservation: If the current energy level of intermediate nodes is lower than a given threshold, packets carrying low-relevance encoded data may be discarded to save energy. Source nodes may also avoid transmission of low-priority packets, reducing local energy consumption and indirectly preserving energy of intermediate nodes.

          • Congestion control: When intermediate nodes in an active path get congested, less relevant packets can be discarded to avoid the congestion.

          • Multipath routing: The available paths in wireless sensor networks may have different characteristics in end-to-end delay and residual energy of the intermediate nodes. Prioritized packets can be routed through the optimal paths to protect from errors during transmission.

          • Differentiated MAC transmission: Based on the relevance of visual data after encoding, MAC protocols may provide a different reliability and channel access. For multimedia streaming applications, lower delays may be achieved when the link layer exploits the packets priorities.

          • Redundancy-based error recovery: Multiple copies of higher priority packets may be transmitted to increase the probability of successful reception. A higher level of error-resilience is achieved when redundant packets exploit multipath routing or when intermediate nodes process/produce such packets.

          • Error recovery by correction codes: Bit errors may corrupt data during transmission over wireless links. To avoid this, a correction code like UEP (Unequal Error Protection) can be implemented to protect the most relevant parts of the encoded media.

          • Retransmission-based error recovery: Hop-by-hop retransmission can provide loss recovery with low impact in the end-to-end delay. The type and relevance of the encoded data may be used to guide the possible number of retransmissions.

          • In-network multimedia compression: This is a cross- layer optimization in essence. When all or part of raw multimedia data is compressed by nodes other than the source, routing and transport.

            Some existing cross-layer solutions classified in terms of interactions among the physical (PHY), MAC, network and transport layers [1].

          • MAC and Network layers: The cross-layer interactions between the MAC and network layers are exploited in WSNs. In [6], a joint scheduling and routing mechanism is proposed to form on-off schedules for each flow of data in a network where the nodes are not active for the entire time. TDMA based MAC scheme [2] is used. The inter- dependencies of routing and scheduling using SMAC for multi-hop networks is exploited.

          • MAC and Application layers: The content of information carried by the sensor nodes has a direct impact on the network protocols. The information content of the sensor nodes is correlated. A cross

            layer design between the application layer and the MAC layer seeks to use the significance of information in the data to propose optimal solutions. An example of a cross layer design between MAC and application layers is the CCMAC protocol [7] where spatial correlation between sensor observations is exploited to reduce the media access for redundant information. The design results in high performance in terms of energy, packet drop rate and latency.

          • Network and PHY layers: Wireless channel dynamics affect the channel quality throughout the lifetime of the network. Although the distance between the nodes does not change, the unreliable wireless channel results in a fluctuating communication quality. As discussed in [8], the geographical routing protocol has been improved for lossy channels by considering channel quality information in the routing decisions.

          • Transport and PHY layers: The transport layer regulates the traffic to control congestion in the network. The contention as well as the channel rate can be controlled by regulating the power at the PHY layer. The cross layer jointly optimal congestion control and power control (JOCP) algorithm discussed in [9] proposes an equilibrium solution among the nodes thorough an iterative update policy at every node.

    The ISO/OSI model support all the standardization of the network architecture using layered model. This Layered architectures do not efficiently cope up with the dynamically changing environment in the WSN. So, network performance can be degraded as it is required to adapt to the protocols of both layered architecture and Transmission control protocol/ Internet Protocol (TCP/IP), which was designed originally for wired network. Also, lack of coordination between layerslimits the performance of such architectures due to the specific challenges posed by wireless nature of the transmission links. Therefore a new cross layer design is adopted in WSN in order to overcome the network performance problems. The, cross- layer design allows the protocols that belong to different layers to cooperate in sharing network-status information while still maintaining the layers separation at the design level. Cross-layer design has been proposed to maintain the functionalities associated to the original layers and still allow coordination, interaction and joint optimization of protocols crossing different layers.

  6. RESULTS AND COMPARISONS

    This section gives the comparison of different Wavelet techniques and some of Cross-layer solutions.

    1. Results from different wavelet techniques

      Method Input Output

      JPEG(DCT)

      JPEG2000

      EZW

      SPIHT

    2. Comparison of compressed and uncompressed image

      Original Compressed

      Consider the above example, let compression ratio be 7.5:1. Then the comparison graph can be plotted as follows. It shows

      Network and Physical Layers

      Geographical Routing Protocol

      Maintains the channel quality

      Transport and Physical Layers

      JOCP algorithm

      Optimizes Congestion and Power

      Network and Physical Layers

      Geographical Routing Protocol

      Maintains the channel quality

      Transport and Physical Layers

      JOCP algorithm

      Optimizes Congestion and Power

      that compression reduces the size of an image. It reduces the energy consumption by optimally utilizing the resources in transmission.

      300

      250

      200

      150

      100

      50

      0

      original Compressed

      300

      250

      200

      150

      100

      50

      0

      original Compressed

      Size in kb

      Size in kb

      Image

    3. Computational cost comparison of compression algorithms

      Methods

      JPEG

      SPIHT

      JPEG 2000

      EZW

      Forward Transform

      DCT

      DWT

      DWT

      DWT

      Computation Load

      Low

      Low

      High

      High

      Memory Requirement

      Low

      Low

      High

      Medium

      Coding Speed

      High

      High

      Average

      Average

      Compression Quality

      Low

      High

      High

      High

    4. Comparison of different cross-layer solutions

    Cross- Layer Design

    Protocol/algorithm used

    Results

    MAC and

    SMAC

    Exploits inter-

    Network

    dependencies

    Layers

    of routing and

    scheduling for

    multi-hop

    networks

    MAC and

    CCMAC

    High

    Application

    performance in

    Layers

    terms of

    Energy, packet

    drop rate

  7. CONCLUSIONS

In this paper, analysis of different types Wavelet techniques has been carried out for image compression. Comparison has made for different techniques in terms of computation load, memory requirement, coding speed and compression quality. Different cross-layer optimization techniques have been discussed to optimize the resource consumption and to increase the QoS. From the analysis we found that SPIHT of DWT is best suitable for image compression to optimize the resource consumption and to get good quality image after transmission in WSN and also different cross-layer solutions can be used to maximize the network performance.

REFERENCES

  1. Alice Abraham, Narendra Kumar G. Cross- Layer Optimized Transmission for an Energy Efficient Wireless Image Sensor Network, IJCSI-Computer science, March 2013.

  2. Tao Ma, Michael Hempel, Dongming Peng, Member, IEEE, and Hamid Sharif, Senior Member, IEEE. A Survey of Energy Efficient Compression and Communication Techniques for Multimedia in Resource Constrained Systems. IEEE Communication Surveys and Tutorials.Vol. 15. 2013.

  3. Y. Sukanya, J. Preethi. Analysis of Image Compression Algorithms using Wavelet Transform with GUI MATLAB . IJRET: International Journal of Research in Engg and Technology. Volume: 02 Issue: 10 | Oct- 2013.

  4. Ian F.Akyildiz,Tommaso Melodia, Kaushik R. Chowdhury. A survey on Wireless Multimedia Sensor Networks, Elsevier Computer Networks, pp. 921 960, March 2007.

  5. J. Wu L. van Hoesel, T. Nieberg and P. J. M. Havinga. Prolonging the lifetime of wireless m sensor networks by cross- layer interaction. Wireless Communications, December 2004.

  6. M. L. Sichitiu. Cross – layer scheduling for Power efficiency in wireless sensor networks. In Proceedings of IEEE INFOCOM 2004.

  7. Venkatesh Rajendran, Katia Obraczka, and J.J. Garcia – Luna – Aceves. Energy – efficient, Collision – free medium access control for wireless sensor networks. pages 181192, 2003.

  8. B. Krishna machari M. Z. Zamalloa, K. Seada and A. Helmy. Efficient geographic routing over lossy links in wireless sensor networks. ACM Transactions on Sensor Networks, page 4(3):133, 2008.

  9. M. Chiang. Balancing transport and physical layers in wireless multi – hop networks: jointly optimal congestion control and power control. IEEE Journal on Selected Areas in Communications.

  10. Dongming Peng, Wei Wang , Hong gang Wang, Hamid Sharif, Hsiao Hwa Chen. Optimal Image Component Transmissions in Multirate Wireless Sensor Networks. GLOBECOM, pp. 976-980, 2007.

  11. Wei Wang, Dongming Peng, Honggang Wang, Hamid Sharif Hsiao Hwa Chen. Taming Underlying Design for Energy Efficient Distributed Source Coding in Multirate wireless Sensor Network.VTC, pp. 124-129, Springer 2007.

  12. Alice Abraham, Jamal Ahmad, Manjula S H, Amruta Pai, Lakshmi N, Rashmi D R, Shobita K, Venugopal K R, L M Patnaik, Wavelet Coded Cross – Layer Preferential Transmission In Wireless Image Sensor Networks, ICINC 2010, Nov 26-28, 2010.

  13. W. Wang, D. Peng, H. Wang, H. Sharif, H. H. Chen. Energy-Constrained Distortion Reduction Optimization for Wavelet -based Coded Image Transmission in Wireless Sensor Networks, IEEE Transactions on Multimedia, vol. 10, no. 6, pp. 1169- 1180,October 2008.

  14. Oussama Ghorbel Walid Ayedi Mohamed Wasim Jmal and Mohamed Abid. DCT & DWT Image Compression Algorithms in Wireless Sensor Networks: Comparitive Study and Performance Analysis. International Journal of Wireless & Mobile Networks (IJWMN) Vol. 4, No. 6, December 2012.

  15. Y. Fang and B. McDonald. Dynamic code word routing (dcr): a cross layer approach for performance enhancement of general multi- hop wireless routing. In Proceedings of IEEE SECON04, page 255263, October 2004.

  16. Daniel G. Costa , Luiz Affonso Guedes. A Survey on Multimedia-Based Cross-Layer Optimization in Visual Sensor Networks Sensors 2011, 11, 5439-5468; doi:10.3390/s110505439.

Leave a Reply

Your email address will not be published. Required fields are marked *