一种基于ElGamal算法的无线传感器数据收集方法与流程

文档序号:18740410发布日期:2019-09-21 01:42阅读:153来源:国知局
一种基于ElGamal算法的无线传感器数据收集方法与流程

本发明涉及无线通信技术领域,具体涉及一种基于ElGamal算法的无线传感器数据收集方法。



背景技术:

压缩感知,又称压缩放采样,它是一种新兴的信息处理理论。根据压缩感知理论,如果原始信号本身是稀疏的或者在某一转换域上是稀疏的,通过少量的随机线性测量就可以精确恢复出原始信号。压缩感知理论从信号采样频率上突破了奈奎斯特采样定理的局限,奠定了新型的信号处理方式的基础。压缩感知编码简单、解码复杂的特点非常适合于普通节点性能弱、基站节点性能强的无线传感器网络,性能弱的传感器节点只需进行简单的编码,而将复杂的计算转移到具有充足资源和强大计算能力的基站节点上。传感节点采集到的数据在多跳传输中使用压缩感知进行网内压缩和编码,能有效减少传感数据的传输量,并且让通信代价平均分配到每个节点。压缩感知技术可以利用信号的稀疏特性,在远小于奈奎斯特采样频率的条件下,用随机矩阵采样获取信号的测量值,然后通过非线性重构算法以极小的误差恢复原始信号。由于无线传感器网络中的数据天然具有稀疏特性,因此具备了利用压缩感知技术的可能性。

压缩感知技术中有三个概念相当重要:

稀疏度:如果向量x可以表示为x=Ψz(Ψ为某个基),并且z中非零元素不超过k个,那么向量x的稀疏度就是k。

感知矩阵:在线性变换y=Ax中,x是原始信号向量,线性变换矩阵A称为感知矩阵。

测量值向量:在线性变换y=Ax中,x是原始信号向量,A为感知矩阵,向量y称为测量值向量,其中的每个元素称为一个测量值。

压缩感知技术能够应用在无线网络的数据收集中的原因是,它能从较少量的原始信号的线性组合中提取出原始信号。现有的数据收集中大部分都是应用稠密的感知矩阵,感知矩阵中的每个元素都是非零的,因此在应用压缩感知技术收集测量值的过程中往往需要构造一棵完全生成树,一棵以基站为根,并且覆盖每个节点的生成树,生成树上的每个节点都需将自己的数据发送给基站。

然而,现有的无线传感器数据收集主要存在以下两个方面的问题:第一,现有的数据收集基本都是假设感知矩阵为稠密矩阵(矩阵中每个元素都是非零元素),数据的收集效率低;第二,之前的工作基本都是构建一棵把基站作为根的完全生成树,然后依据生成树收集每个节点的数据,在测量值的收集过程中,网络内的每个节点都需要发送数据。能量消耗大、数据收集延迟时间长。

故,针对现有技术的缺陷,如何实现高效率的无线传感器数据收集是本领域亟待解决的问题。



技术实现要素:

本发明的目的是针对现有技术的缺陷,提供了一种基于ElGamal算法的无线传感器数据收集方法。将ElGamal加密算法和基于稀疏随机矩阵的压缩感知技术相结合,基于ElGamal加密算法的数据收集方法。本发明提出的方法在提高数据收集安全性的同时,也做到了利用稀疏随机矩阵的压缩感知来提高无线传感器网络的数据收集效率,具体涉及在无线传感器网络中基于流水线技术的压缩感知数据收集方法。

为了实现以上目的,本发明采用以下技术方案:

一种基于ElGamal算法的无线传感器数据收集方法,包括步骤:

步骤S1、传感器计算稀疏随机矩阵,并依据稀疏随机矩阵计算每一轮测量值收集过程中传输的数据;

步骤S2、将计算的数据通过El Gamal加密及压缩感知技术发送给基站;

步骤S3、基站在收集到足够的测量数据后,将密文恢复成明文的数据,再使用压缩感知技术计算每个传感器的原始数据。

进一步地,所述步骤S1具体为:

步骤1.1:将整个网络归一化为边长是1的正方形,并进一步将网络划分成L2个边长为1/L的正方形蜂窝,其中,n为每个蜂窝内的节点数,且n不得为0,每个蜂窝内至少有1个节点,Cij(1≤i,j≤L)为第i行第j列的蜂窝蜂;

步骤1.2:令两个传感器节点之间的通信距离为其中将L个蜂窝Cij(j=1,2,…,L)组成路径Pi(i=1,2,…,L);

步骤1.3:基站广播一个随机数产生种子,每个传感器N1,N2,…Nn在收到该种子后生成一个统一的稀疏随机矩阵A;其中每一个元素aij都是独立同分布地抽样于以下子高斯分布:

步骤1.4:根据稀疏随机矩阵A,每个传感器确定在每轮测量值收集过程中的节点状态。

进一步地,所述节点状态包括O、I、R;所述步骤1.4具体为:

如果aij等于零,那么传感器Ni进入状态O;如果aij非零,那么传感器Ni进入状态I;如果只有一个传感器是状态I,该传感器状态由I变为R;如果多个传感器都是状态O,随机选择的一个传感器将它的状态由O变为R;如果多个传感器都是状态I,随机选择一个传感器,将它的状态由I变为R。

进一步地,所述步骤S2包括:

初始传感器通过ElGamal加密算法将位于该传感器的原始数据加密并传给之后的传感器,位于其后的传感器也用同样的方法加密自己的初始数据,然后将自己的密文和收到的数据密文相乘再传给之后的传感器,这些数据通过网络数据聚合技术发送给基站。

进一步地,在每一轮数据传输的过程中,都将原始数据xi和根据随机数种子产生的系数a1i,a2i,…ami相乘所得的xia1i,xia2i,…xiami转换为密文发送,最后将m个测量值发送给基站。

进一步地,所述步骤S2具体为:

步骤2.1:蜂窝C11开始第1轮测量值收集过程,并收集数据通过ElGamal加密算法加密成密文发送给蜂窝C12,随后蜂窝C11进入休眠状态。

步骤2.2:蜂窝C12将自身的数据也通过同样的方法加密生成密文再与接收到的数据相乘得到随后将融合的数据发送给蜂窝C13,蜂窝C1j(j=1,2,…,L)在第1轮测量值收集过程中重复类似操作。

步骤2.3:当蜂窝C15完成第1轮的数据发送之后,蜂窝C21马上开始第1轮的数据发送;在第1轮测量值收集过程中,路径Pi(i=2,…,L)上的所有蜂窝都重复类似的操作;

步骤2.4:在蜂窝C45完成第1轮数据发送后,蜂窝C11马上开始第2轮测量值收集过程,之后的每一轮测量值收集过程都重复类似的操作;

步骤2.5:在接收到蜂窝C11发送来的第2轮数据后,蜂窝C12先等待蜂窝C46完成第1轮的数据发送,然后才开始发送第2轮数据;之后的每一轮测量值收集过程都重复类似的操作;

步骤2.6:在蜂窝C15完成第2轮数据发送后,蜂窝C21马上开始发送第2轮数据;之后的每一轮测量值收集过程都重复类似的操作;

步骤2.7:在接收到蜂窝C21发送来的第2轮数据之后,蜂窝C22先等待蜂窝C16完成第2轮的数据发送,然后才开始发送第2轮数据;每个蜂窝在之后的每一轮测量值收集过程中都重复类似的操作;

步骤2.8:重复以上步骤直到基站收集到足够多的测量值。

进一步地,所述将密文恢复成明文的数据具体为:

其中,yq表示基站在第q轮传输中接收到的数据。

进一步地,所述计算每个传感器的原始数据具体为:

根据计算出测量值向量y=[y1,y2,…,yq]T,稀疏随机矩阵A=[aij]m×n,利用OMP算法等各种压缩感知数据恢复算法求解出原始数据向量x=[x1,x2,…xn]T

与现有的技术相比,本发明具有如下的有益效果:

(1)能耗低——根据本发明的设计,并不是每一个传感器都在收集测量值的全程参加到数据接收和发送的过程中,而是只有其中对正在进行的测量有贡献的传感器和中继传感器参与到数据的接收和发送中。而且,当传感器不发送、不接收数据时该传感器就会进入休眠状态来节省能耗。

(2)延迟低——在收集每个测量值时,只有其中与该测量值相关的部分节点参与数据的接收和发送,因此通过这种方式收集每个测量值所消耗的时间就会减少。而且,本设计中所运用到的在前一轮测量值收集还没有完成时,下一轮测量值的收集过程就已经开始的流水线技术,进一步降低了整个数据收集所需的延迟。

(3)安全性高——为了保证所有测量值都能顺利接收,让每个小区至少有一个节点参与测量值的收集.假设每个节点都知道自己的ID和它所在的小区的ID,节点Nj可以根据自己的ID和随机数产生器来生成系数向量aj(aj是随机矩阵A中的第j列)。注意节点Nj只知道本节点的系数向量aj,它并不知道其他节点的系数向量。因此,即使某些节点被攻破了,攻击者也无法获取那些没有被攻破的节点所产生的系数向量,从而保证感知矩阵A不会被攻击者窃取,以此来保证整个网络数据传输过程中的安全性。

(4)负载均衡——在本发明设计中,每个节点收集每轮测量值所需要发送数据的概率都相同。根据概率相关理论,在整个数据收集结束后,每个节点消耗的能量也大致相同,所存在的差异也较小,因此每个传感器的负载较均衡。

附图说明

图1为实施例一的基于ElGamal算法的无线传感器数据收集方法流程图;

图2为无线传感器网络的示意图;

图3为常用的压缩感知数据收集方法;

图4为本发明基于ElGamal加密算法的压缩感知数据收集方法;

图5为实施例二的感知数据收集方法示例图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。

实施例一

如图1所示,本实施例提出了一种基于ElGamal算法的无线传感器数据收集方法,包括:

步骤S1、传感器计算稀疏随机矩阵,并依据稀疏随机矩阵计算每一轮测量值收集过程中传输的数据;

首先简要介绍本发明的适用场景。在无线传感器网络中,存在一个基站和多个传感器节点,每个传感器都和附近的多个传感器能够相互通信,每个蜂窝包含多个传感器,如图2所示。

具体地,初始化阶段,无线传感器网络中的所有传感器生成一个统一的稀疏随机矩阵,并依据稀疏随机矩阵计算每一轮测量值收集过程中传输的数据。

稀疏的感知矩阵在恢复原始信号方面的性能可以达到和稠密的感知矩阵同样好的程度,本发明构造的便是一种可以应用在压缩感知技术中的稀疏随机矩阵。在基于稀疏随机矩阵的压缩感知数据收集过程中,每一轮都只要求那些加权系数不为零的节点将收集的测量值数据发送给基站。除此之外,因为要保证网络的连通性,还有一些节点虽然加权系数为零,但是它们要负责转发数据,以此就可以保证基站能收到所有需要的数据。在本发明中,我们将网络分解为一个个不同的蜂窝,蜂窝之间像链条一样相互连接,因此我们只需让每个蜂窝内至少有一个节点保持活跃,整个网络的连通性就能得到保证。

所述步骤1包括如下步骤:

步骤1.1:将网络中的无线传感器编号为N1,N2,…Nn,假设传感器Nj(j=1,2,…,n)上的原始数据为xj。

步骤1.2:将整个网络归一化为边长是1的正方形,并进一步将网络划分成L2个边长为1/L的正方形蜂窝(此处设n为每个蜂窝内的节点数,且n不得为0,每个蜂窝内至少有1个节点),用Cij(1≤i,j≤L)来表示第i行第j列的蜂窝(蜂窝的序号从下至上,从左向右依次增大)。

步骤1.3:令为保障每个相邻蜂窝内的任意传感器节点都能相互通信,令两个传感器节点之间的通信距离为

两个传感器节点之间的通信距离为即为处在两个相邻蜂窝最远两个端点处节点的极限距离,超过这个距离则无法传达信息。而同时,当处于不同蜂窝内且在通信范围内的传感器节点同时发送数据时,则会相互之间产生干扰,影响传输数据的准确性和真实性

步骤1.4:将L个蜂窝Cij(j=1,2,…,L)组成路径Pi(i=1,2,…,L)。

步骤1.5:基站广播一个随机数产生种子,每个传感器在收到该种子后生成一个统一的稀疏随机矩阵A。其中每一个元素aij都是独立同分布地抽样于以下子高斯分布:

步骤1.6:根据稀疏随机矩阵A,每个传感器确定在每轮测量值收集过程中的节点状态。

节点总共有三种状态:O、I、R。每个传感器在第m轮数据收集过程中的确定方法状态如下。首先,如果aij等于零,那么传感器Ni进入状态O;如果aij非零,那么传感器Ni进入状态I。然后,每个蜂窝会出现三种情况:第一种情况是只有一个传感器是状态I,在这种情况下该传感器状态由I变为R;第二种情况是多个传感器都是状态O,在这种情况将随机选择的一个传感器,将它的状态由O变为R;第三种情况是多个传感器都是状态I,在这种情况下将随机选择一个传感器,将它的状态由I变为R。

步骤S2、将计算的数据通过El Gamal加密及压缩感知技术发送给基站;

在步骤S1的基础上,网络中的初始传感器通过El Gamal加密算法将位于该传感器的原始数据加密并传给之后的传感器,位于其后的传感器也用同样的方法加密自己的初始数据,然后将自己的密文和收到的数据密文相乘再传给之后的传感器,这些数据通过网络数据聚合技术发送给基站,即基站收集测量值数据的密文。

ElGamal加密能够抵抗多项式攻击敌手(计算能力为多项式时间)的选择明文攻击和选择密文攻击。为了完整的描述ElGamal加密系统,还需要将明文二进制串映射到中,这里介绍一种简单的映射方法。首先,选择一个大的强素数r,即也是一个素数。众所周知,二次剩余模r的集合构成一个模r的乘法群其中是一个阶为v的循环群。然后,把明文二进制串解释为一个整数并将这个整数加1得到w(1≤w≤v),这里加1是为了去掉全零的可能性。最后,通过函数m=w2modr将w映射到

一个El Gamal加密系统由以下几个部分组成:

密钥产生系统GEN:GEN首先产生一个阶为v(v为大素数)的循环群然后随机选择一个生成元和随机整数x<v。令h=gxmodv。公钥为PK=(v,g,h),私钥为RK=(v,x)。

加密算法ENC:输入公钥PK,消息和一个随机选择的整数y<v,加密算法ENC输出密文<a1,a2>,其中a1=gymodv,a2=hymmodv。

解密算法DEC:输入私钥RK和密文<a1,a1'>,解密算法DEC输出密文

如图3所示,基于压缩感知技术的数据收集过程如下:在一段时间内,每个传感器节点Ni通过感知周围的环境产生原始数据xi。然后,每个传感器Ni根据随机数种子产生m个系数a1i,a2i,…ami,并将这些系数与原始数据分别相乘得到xia1i,xia2i,…xiami。其次,每个节点通过单跳或者多跳将数据相加的结果,即将m个测量值发送给基站。最后,基站基于收到的测量值和感知矩阵,应用压缩感知恢复算法计算出原始数据x1,x2,…xn。而如图4所示,在基于El Gamal加密算法的压缩感知技术的数据收集过程如下:在每一轮数据传输的过程中,都将原始数据xi和根据随机数种子产生的系数a1i,a2i,…ami相乘所得的xia1i,xia2i,…xiami转换为密文发送。原本每个节点通过单跳或者多跳将数据相加的结果变为密文与密文相乘的方式传输,即将m个测量值发送给基站。

步骤S2包括如下步骤:

步骤2.1:蜂窝C11开始第1轮测量值收集过程,即(表示蜂窝Cij开始第q轮的测量值收集时隙)。蜂窝C11中状态为I和R的传感器将测量值收集数据通过El Gamal加密算法加密成密文发送给蜂窝C12中状态为R的传感器。其中为蜂窝Cij在第q轮测量值收集过程中产生的密文,即此过程中因为蜂窝C12收到的是蜂窝C11中加密过的信息因此蜂窝C12只知道自己本身的原始数据信息,而蜂窝C11的原始数据信息无从得知。为了节省能耗,蜂窝C11中的传感器在数据发送完成后进入休眠状态。每次发送数据都是蜂窝中状态为I和R的传感器把数据发送给下一个蜂窝中状态为R的传感器。

步骤2.2:在接收到C11发送过来的数据后,蜂窝C12中状态为I和R的传感器将自身的数据也通过同样的方法加密生成密文再与接收到的数据相乘得到其中随后将融合的数据发送给蜂窝C13中状态为R的传感器。此过程中因为蜂窝C13收到的是蜂窝C11,C12中加密过的信息因此蜂窝C13只知道自己本身的原始数据信息,而蜂窝C11,C12的原始数据信息无从得知。为了节省能耗,蜂窝C12中的传感器在数据发送完成后进入休眠状态。所有的蜂窝在第1轮数据收集过程中都重复类似的过程。即,q=2,3,…n(表示蜂窝Cij在第q轮数据收集过程中花费的时间)。

步骤2.3:为了避免节点之间在通信距离范围内同时传输数据所会产生的干扰,同时在保证不受干扰的情况下为了最大限度地提高传输效率,考虑到C15和C21之间的距离是会受到干扰影响的极限范围,超出这个距离则可同时传输,因此在蜂窝C15完成第1轮的数据密文发送之后,蜂窝C21马上开始第1轮的数据密文发送。在第1轮测量值收集过程中,路径Pi(i=2,…,L)上的所有蜂窝都重复类似的操作,即

步骤2.4:当蜂窝C45完成第1轮的数据密文发送之后,蜂窝C11马上开始第2轮的测量值收集过程。在每一轮测量值收集过程的起始阶段都重复类似的操作,即

步骤2.5:在接收到蜂窝C11发送来的第2轮数据密文后,蜂窝C12先等待蜂窝C46完成第1轮的数据密文发送,然后才开始发送第2轮数据密文之后的每一轮测量值收集过程都重复类似的操作,即

步骤2.6:在蜂窝C15完成第2轮数据密文发送后,蜂窝C21马上开始发送第2轮数据密文之后的每一轮测量值收集过程都重复类似的操作,即

步骤2.7:在接收到蜂窝C21发送来的第2轮数据密文之后,蜂窝C22先等待蜂窝C16完成第2轮的数据密文发送,然后才开始发送第2轮数据密文每个蜂窝在之后的每一轮测量值收集过程中都重复类似的操作,即

步骤2.8:重复以上步骤直到基站收集到m=O(klog2n/k)个测量值数据密文。

步骤2.9:当每条路径的末端C1L收集到足够多的数据之后,开始向C2L发送数据密文。而蜂窝C2L中状态为R的传感器将接收到的数据密文和自身的数据密文融合,随后蜂窝C2L中状态为I和R的传感器将数据密文发送给蜂窝C3L中状态为R的传感器。所有的CiL蜂窝在第1轮数据收集过程中都重复类似的过程,最终将收集的数据密文都传到位于末端的基站。即,(表示蜂窝Cij在第q轮数据收集过程中花费的时间)。

步骤2.10:在蜂窝C5L完成第1轮的数据密文发送之后,蜂窝C1L马上开始第2轮的测量值收集过程。在每一轮测量值收集过程的起始阶段都重复类似的操作,即

步骤2.11:在蜂窝C6L完成第2轮数据密文发送后,蜂窝C2L马上开始发送第2轮数据密文。之后的每一轮测量值收集过程都重复类似的操作,即

考虑到数据收集的延迟问题,本发明还采用了流水线技术,在前一轮测量值收集还没结束的时候就开始下一轮的测量值收集,每个蜂窝发送数据的时间都做到不影响其他数据传输的情况下尽可能的早,以此来降低数据收集的延迟。结果表明,本发明的数据收集方法在降低整个网络的能耗的同时,也能降低数据收集的延迟。此外,因为每个节点在每一轮测量值收集过程中保持活跃的概率相同,所以本发明的数据收集方法同时能保证整个网络的负载也是均衡的。

网络数据传输中易遭受到的攻击可分为外部攻击和内部攻击。常见的外部攻击有数据包计数攻击(Packet Counting Attacks)和计时攻击(Timing Attacks)。数据包计数攻击是通过窃听非标准(异常)数量的数据包来获得网络信息。在基于El Gamal加密算法的数据收集方法中,每个节点在每一轮测量值收集过程中发送的数据包数量基本一致。因此,通过该种收集方法可以抵御此类攻击。对于计时攻击,攻击者需要记录数据包在网络中传输的时延以及到达和离开网络的时刻。在基于El Gamal加密算法的数据收集方法中,活跃节点会对传输的数据包进行编辑和修改(把接收到的密文和自己的密文相乘)。换句话说,相同的数据包在网络中存在的时间很短,计时攻击很难记录某个数据包在网络中传输的时延以及离开网络的时刻。因此,通过该种收集方法能够抵御计时攻击。活跃节点会对数据包进行编辑和修改这个特性使得该种数据收集方法能够抵御任何需要追溯消息源的外部攻击。对于内部攻击,攻击者往往先是攻破网络中的一部分节点,然后对网络内的数据流进行分析(例如分析数据包尺寸或者之间的相关性),从而发动内部攻击。在基于El Gamal加密算法的数据收集方法中,网络内节点接收到的数据是前面所有节点密文相乘后的结果,被攻破的节点对其他节点的信息一无所知,攻击者无法通过分析数据包之间间的相关性而获得信息。因此,通过该种收集方法也能抵御内部攻击。

步骤S3、基站在收集到足够的测量数据后,将密文恢复成明文的数据,再使用压缩感知技术计算每个传感器的原始数据。

基站在收集到足够多的测量值数据密文后,运用私钥和解密算法将密文恢复成明文数据,再用压缩感知技术中的数据恢复算法计算出每个传感器的原始数据。基站依据接收到的测量值和稀疏随机矩阵A,应用压缩感知技术中的数据恢复算法计算出每个传感器的原始数据。

基站根据收到的测量值密文通过私钥和解密算法恢复成明文数据:

其中,yq表示基站在第q轮传输中接收到的数据。再根据计算出测量值向量y=[y1,y2,…,yq]T(yq表示基站第q轮收集到的数据),稀疏随机矩阵A=[aij]m×n,并利用OMP(正交匹配追踪)算法等各种压缩感知数据恢复算法求解出原始数据向量x=[x1,x2,…xn]T

实施例二

本实施例考虑三个蜂窝的情况,且假设每个蜂窝内的传感器数量是5个对本发明所运用的压缩数据收集方法进行说明。

图5表示了本发明提出的利用正交匹配追踪算法来收集数据的方法。因为N4,N6,N11,N13的系数为0,所以传感器N4,N6,N11,N13不需要发送数据给基站,但是为了保证网络的连通性,在第二个蜂窝中我们让传感器N9保持活跃来转发数据,在第三个蜂窝中我们让传感器N12保持活跃来转发数据。在这个过程中,节点N1,N3,N8,N9,N12,N15的状态为R,节点N4,N6,N11,N13的状态为O,节点N2,N5,N7,N10,N14的状态为I。网络中的节点总共发送了数据8次,只需要8个时隙来完成数据的收集。由这个例子可知,本发明提出的利用正交匹配追踪算法的基于稀疏感知矩阵的数据收集方法降低了网络能耗和数据收集延迟。

由此可知,本发明将ElGamal加密算法和基于稀疏随机矩阵的压缩感知技术相结合,基于ElGamal加密算法的压缩数据收集方法。本发明提出的方法在提高数据收集安全性的同时,也做到了利用稀疏随机矩阵的压缩感知来提高无线传感器网络的数据收集效率。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1