CN110401451B - 基于字符集变换的自动机空间压缩方法及系统 - Google Patents
基于字符集变换的自动机空间压缩方法及系统 Download PDFInfo
- Publication number
- CN110401451B CN110401451B CN201910505421.2A CN201910505421A CN110401451B CN 110401451 B CN110401451 B CN 110401451B CN 201910505421 A CN201910505421 A CN 201910505421A CN 110401451 B CN110401451 B CN 110401451B
- Authority
- CN
- China
- Prior art keywords
- state
- character
- automaton
- transformation
- successor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4031—Fixed length to variable length coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
- H03M7/705—Unicode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于字符集变换的自动机空间压缩方法,步骤包括:将模式串集构建成自动机,并生成状态转移矩阵;读取状态转移矩阵的各个状态行,计算最佳变换参数、最小有效后继状态和最大有效后继状态;根据状态转移矩阵和最佳变换参数,记录数据结构,将状态行替换为变换后的有效状态行;读取目标文本的字符,根据字符当前状态,利用双射函数进行字符变换,得到变换后的字符,符合条件下得到后继状态,实现压缩。本发明还提供一种基于字符集变换的自动机空间压缩系统,包括规则编译器、变换参数生成器、状态行变换器、比较器、压缩自动机存储器、状态寄存器、字符集变换器及文本扫描器。
Description
技术领域
本发明属于信息技术领域,具体涉及一种基于字符集变换的自动机空间压缩方法及系统。
背景技术
字符串匹配算法是一类搜索算法,广泛应用于生物信息学、信息检索、数据压缩、网络入侵检测等领域。一个字符串是一个定义在有限字母表Σ上的有限字符序列,字符串匹配算法在一个大的字符串T上搜索某个字符串集合S={Pi}中所有字符串Pi的所有出现位置。T被称为文本,Pi被称为模式串,T和Pi都定义在同一个字母表Σ上。
在字符串匹配领域,自动机是一种重要的数据结构。例如,1975年由Aho及Corasick提出的AC自动机算法(参考Efficient String Matching:An Aid toBibliographic Search),1977年由Knuth、Morris及Pratt提出的KMP算法(参考FastPattern Matching In Strings),1999年由Allauzen、Crochemore及Raffinot提出的BOM算法(参考Factor Oracle:A New Structure for Pattern Matching)等许多算法都通过自动机实现快速的字符串匹配。由于在多数应用中模式串集的规模通常较大,生成的自动机占用空间较大,也影响其匹配速度,因此降低自动机占用的资源就成为一个值得研究的问题。
自动机又称为有限状态机,是一种用于表示字符串集合并提供字符串匹配功能的数据结构。抽象来讲,串匹配算法中的自动机可以表示为一个大小为N×256的矩阵AN×256,其中N是自动机的状态数,256是字符集大小(1个字节)。对于当前状态s和输入字符c,A[s,c]表示抵达的下一个状态,通常用一个非负整数或指针来表示。A[s,c]=-1表示当前状态s对于输入字符c没有后继状态。AN×256中每个状态行所占用的空间为sizeof(int)×256,共占用空间sizeof(int)×256×N。由于在许多应用中模式串集S规模很大,对应的自动机状态数较多,占用的空间很可观,影响了基于自动机的串匹配算法的实用性,因此,有必要对自动机的高效压缩方法进行研究。
2004年Norton在Optimizing Pattern Matching for Intrusion Detection一文中提出了一种称为Banded-Row的自动机压缩方法。由于在串匹配算法中,自动机的大部分状态通常只有很少的几个后继状态,对于每一个状态行A[s],直接用sizeof(int)×256来表示是非常浪费存储空间的。为了压缩AC自动机的存储空间,Banded-Row用两个整数lb和ub分别记录状态行A[s]中第一个和最后一个后继状态的转移字符,即:
去掉A[s]头尾的空转移,每一行仅使用sizeof(int)×(ubs-lbs+3)的存储空间来表示,既保留了数组随机存取的特性,同时相比矩阵表示法也节省了存储空间。
现有的技术方案主要是矩阵表示法和Banded-Row法,这两种方案在空间上都一些不足。矩阵表示法需要占用空间sizeof(int)×256×N,Banded-Row方法也需要占用的空间,当ubs-lbs较大时,即使每行的后继状态数较少,占用的空间也仍然可观。例如,若lbs=0,ubs=255,即便A[s]只有两个后继状态,也无法压缩空间。
发明内容
本发明的目的是提供一种基于字符集变换的自动机空间压缩方法及系统,属于针对字符串匹配的自动机压缩方法,该方法保证状态转移的时间复杂度为O(1),同时可大幅度减少数据结构的存储空间。
为实现上述目的,本发明采用如下技术方案:
一种基于字符集变换的自动机空间压缩方法,包括以下步骤:
将模式串集构建成自动机,并生成状态转移矩阵;
读取状态转移矩阵的各个状态行,计算得到最佳变换参数、最小和最大有效后继状态;
根据状态转移矩阵和最佳变换参数,得到数据结构,根据该数据结构将状态行替换为变换后的有效状态行;
读取目标文本的字符,根据字符当前状态,利用双射函数进行字符变换,得到变换后的字符;
如果目标文本的字符不小于最小有效后继状态,且不大于最大有效后继状态,则得到字符变换后的最终后继状态,实现压缩。
进一步地,根据状态转移矩阵的各个状态行和候选变换参数,计算最小和最大有效后继状态,最小后继状态的计算式为最大有效后继状态的计算式为其中A[·]为状态转移矩阵的状态行,c为目标文本的字符,s为字符当前状态,i为候选变换参数。
进一步地,状态行有效长度Ls,i=sups,i-infs,i+1,记第一个使得Ls,i最小的候选变换参数i为最佳变换参数。
进一步地,候选变换参数i取值范围为从0到255。
进一步地,X[s]等于最佳变换参数,fc[s]等于最小有效后继状态,lc[s]等于最大有效后继状态。
进一步地,最终后继状态为A[s,c’-fc[s]];其中,A[·]为状态转移矩阵的状态行,s为字符当前状态,c’为变换后的字符;fc[s]为数据结构,包括等于最小有效后继状态。
一种基于字符集变换的自动机空间压缩系统,包括:
规则编译器,用于读取、解析模式串集,建立自动机状态转移图,并生成状态转移矩阵;
变换参数生成器,用于生成最佳变换参数;
状态行变换器,用于逐行读取状态转移矩阵,接收最佳变换参数,并对状态行进行变换;
比较器,用于根据变换结果,判断是否应该更新压缩自动机存储器,生成比较结果;
压缩自动机存储器,用于根据比较结果读取上述变换结果,更新内部存储;
状态寄存器,用于存储当前状态;
字符集变换器,用于逐字符读取文本,根据状态寄存器存储的当前状态及压缩自动机中存储的对应的变换参数,对字符进行变换;
文本扫描器,根据状态寄存器存储的当前状态、字符集变换器发送来的字符及压缩自动机中存储的状态行,计算下一个状态并更新状态寄存器。
一种存储计算机程序的计算机可读存储介质,该计算机程序包括指令,该指令当由服务器的处理器执行时使得该服务器执行上述方法中的各个步骤。
本发明方法保证状态转移的时间复杂度为O(1),同时可大幅度减少数据结构的存储空间。
附图说明
图1是字符集变换示意图。
图2是一种基于字符集变换的自动机空间压缩系统结构图。
图3是自动机状态转移图。
图4A-4C是实验1-3的结果统计图。
具体实施方式
为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。
本发明提供的同于基于字符集变换的自动机空间压缩方法(以下简称字符集变换方法)是以Banded-Row方法为原型,保证状态转移的时间复杂度为O(1),同时可大幅度减少数据结构的存储空间。
如图1所示,本发明的主要思想在于通过一个双射函数fs(c)(称为字符集变换函数)对字符集进行变换,使得状态行的有效状态尽量连续。图中,A[s]是状态转移矩阵中的一个状态行,p是各个后继状态在状态行中的偏移值,c是对应的输入字符。图左侧表示Banded-Row方法,在该方法中,输入字符c与偏移值p是相同的,尽管A[s]中只有3个有效后继状态,为了存储第一个到最后一个有效后继状态,需要存储左侧阴影区域中的13个后继状态,包括了10个无效后继状态。在图右侧所示的字符集变换方法中,输入字符c通过字符集变换函数fs(c)映射到偏移值p,通过挑选合适的字符集变换函数fs(c),可以将有效后继状态的偏移值变换到一个相对连续的区域,因此,只需要存储右侧阴影区域中的4个后继状态即可包括所有有效后继状态。
同Banded-Row方法一样,字符集变换方法分为初始化和匹配两个阶段。在后续的讨论中,选择双射函数作为字符集变换函数,式中,表示异或操作,X[s]是位数与c相同的变换参数,可在初始化阶段根据A[s]计算得到。
初始化阶段:
1.按矩阵表示法,将模式串集合构建成自动机。
2.为状态转移矩阵的各个状态行计算最佳变换参数:读取自动机的每一个状态行A[s],候选变换参数i取值从0变化到255,计算最小有效后继状态最大有效后继状态状态行有效长度Ls,i=sups,i-infs,i+1,记第一个使得Ls,i最小的参数i为k。
至此,初始化阶段的步骤全部完成。
匹配阶段:
当匹配时,自动机由上述压缩方法产生的四个数据结构X、fc、lc、A可以得到状态转移公式:
具体过程如下:
2.如果fc[s]≤c'≤lc[s],则后继状态为A[s,c'-fc[s]]
3.否则,返回匹配失败。
至此,匹配阶段的步骤全部完成。
如图2所示,本发明的字符集变换方法通过基于字符集变换的自动机空间压缩系统实现如下:
1)规则编译器读取、解析模式串集,建立自动机状态转移图,并生成状态转移矩阵;
2)状态行变换器逐行读取规则编译器生成的状态转移矩阵,同时接收变换参数生成器传来的变换参数,对状态行进行变换,并将变换后的状态行长度发送至比较器;
3)比较器根据变换结果,判断是否应该更新压缩自动机存储器,并将比较结果发送至压缩自动机存储器;
4)压缩自动机存储器接收比较器发来的结果,根据比较结果读取状态行变换器生成的变换结果,更新内部存储;
5)字符集变换器逐字符读取文本,根据状态寄存器存储的当前状态及压缩自动机中存储的对应的变换参数,对字符进行变换并发送至文本扫描器;
6)文本扫描器根据状态寄存器存储的当前状态、字符集变换器发送来的字符及压缩自动机中存储的状态行,计算下一个状态并更新状态寄存器。
以下通过实施例来进行具体阐述:
为了便于说明,令字符集Σ={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F},字符集大小|Σ|=16,文本T=E830,模式串集S如下所示:
表1规则示例
初始化阶段:
1.解析模式串集,建立自动机状态转移图,如图3所示;根据状态转移图,建立状态转移矩阵A[s,c],如表2所示,表中-1表示无效转移,其他数字表示接收对应字符后的后继状态;
表2状态转移矩阵
s | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
c0 | -1 | 2 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | 1 | -1 | 1 | -1 |
1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | 3 | -1 | -1 | -1 | -1 | -1 | 4 | -1 |
2 | -1 | -1 | 4 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | 3 | 4 | -1 | -1 |
3 | -1 | -1 | -1 | 4 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | 4 | -1 |
4 | 7 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | 7 |
2.读取A中的一行,对变换参数i=0...15,计算Ls,i=sups,i-infs,i+1,记最小的Ls,i为L's,对应的下标为k,如对于A[0],k=6, L0,6=sup0,6-inf0,6+1=4,A[0]=<2,1,-1,1>;
3.对A中的每一行执行上述操作,得到四个数据结构X、fc、lc、A如表3、表4所示:
表3变换参数
s | X[s] | fc[s] | lc[s] |
0 | 6 | 7 | A |
1 | 2 | A | C |
2 | 5 | 7 | 9 |
3 | 4 | 7 | A |
4 | 7 | 7 | 8 |
表4压缩自动机
s | 0 | 1 | 2 | 3 |
0 | 2 | 1 | -1 | 1 |
1 | 3 | -1 | 4 | |
2 | 4 | 4 | 3 | |
3 | 4 | -1 | -1 | 4 |
4 | 7 | 7 |
至此,初始化阶段的步骤全部完成。
匹配阶段:
2.由于fc[0]=7,lc[0]=A,从而fc[0]≤c'≤lc[0],因此后继状态为A[0,c'-fc[0]]=1;
3.重复上述操作直到s=7。
至此,匹配阶段的步骤全部完成。
本发明取得的积极效果:
本发明在单机64位Linux 4.15.0系统(4GB内存,CPU为Intel i5)下作了如下实验:
测试程序随机生成用于建立自动机的模式串集和待匹配的文本;模式串集大小在各次实验中分别确定,文本大小固定为10MB。
统计指标:初始化时间、初始化占用空间、匹配数据所用时间及匹配速度。
实验采用了原来的完全矩阵法和Banded-Row方法做对比实验,实验结果如表5所示。
实验1中,模式串长16字节,模式串集中有65536个模式串,完全矩阵法占用空间1890MB,Banded-Row方法将内存占用降至155MB,字符集变换方法将其进一步降至129MB,扫描速度上,完全矩阵法为10.176MB/s,Banded-Row为13.044MB/s,字符集变换方法则是12.935MB/s,与Banded-Row基本相同,如图4A。
实验2中,模式串长16字节,模式串集中有131072个模式串,Banded-Row方法占用内存235MB,速度12.572MB/s,字符集变换方法占用内存196MB,速度12.231MB/s,如图4B。
实验3中,模式串长32字节,模式串集中有131072个模式串,Banded-Row方法占用内存502MB,速度15.219MB/s,字符集变换方法占用内存373MB,速度15.304MB/s,如图4C。
实验2与实验3中,由于完全矩阵法所需内存超过系统内存总量,因此没有结果。
表5实验结果统计
以上实验表明本发明方法的压缩自动机所占用的空间显著低于Banded-Row方法,匹配数据的速度与Banded-Row方法基本一致,取得了明显的技术效果。因此,本方法及系统是具有广泛的实际价值和应用场景的。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
Claims (9)
1.一种基于字符集变换的自动机空间压缩方法,其特征在于,包括以下步骤:
将模式串集构建成自动机,并生成状态转移矩阵;
读取状态转移矩阵的各个状态行,计算得到最佳变换参数、最小和最大有效后继状态;
根据状态转移矩阵和最佳变换参数,得到数据结构,根据该数据结构将状态行替换为变换后的有效状态行;
读取目标文本的字符,根据字符当前状态,利用双射函数进行字符变换,得到变换后的字符;
如果目标文本的字符不小于最小有效后继状态,且不大于最大有效后继状态,则得到字符变换后的最终后继状态,实现压缩。
3.如权利要求2所述的方法,其特征在于,状态行有效长度Ls,i=sups,i-infs,i+1,记第一个使得Ls,i最小的候选变换参数i为最佳变换参数。
4.如权利要求2所述的方法,其特征在于,候选变换参数i取值范围为从0到255。
7.如权利要求1所述的方法,其特征在于,最终后继状态为A[s,c’-fc[s]];其中,A[·]为状态转移矩阵的状态行,s为字符当前状态,c’为变换后的字符;fc[s]为数据结构,包括等于最小有效后继状态。
8.一种基于字符集变换的自动机空间压缩系统,其特征在于,包括:
规则编译器,用于读取、解析模式串集,建立自动机状态转移图,并生成状态转移矩阵;
变换参数生成器,用于生成最佳变换参数;
状态行变换器,用于逐行读取状态转移矩阵,接收最佳变换参数,并对状态行进行变换;
比较器,用于根据变换结果,判断是否应该更新压缩自动机存储器,生成比较结果;
压缩自动机存储器,用于根据比较结果读取上述变换结果,更新内部存储;
状态寄存器,用于存储当前状态;
字符集变换器,用于逐字符读取文本,根据状态寄存器存储的当前状态及压缩自动机中存储的对应的变换参数,对字符进行变换;
文本扫描器,根据状态寄存器存储的当前状态、字符集变换器发送来的字符及压缩自动机中存储的状态行,计算下一个状态并更新状态寄存器。
9.一种存储计算机程序的计算机可读存储介质,其特征在于,该计算机程序包括指令,该指令当由服务器的处理器执行时使得该服务器执行上述权利要求1-7任一所述的方法中的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910505421.2A CN110401451B (zh) | 2019-06-12 | 2019-06-12 | 基于字符集变换的自动机空间压缩方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910505421.2A CN110401451B (zh) | 2019-06-12 | 2019-06-12 | 基于字符集变换的自动机空间压缩方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110401451A CN110401451A (zh) | 2019-11-01 |
CN110401451B true CN110401451B (zh) | 2020-12-04 |
Family
ID=68324079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910505421.2A Active CN110401451B (zh) | 2019-06-12 | 2019-06-12 | 基于字符集变换的自动机空间压缩方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110401451B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112615627A (zh) * | 2020-11-13 | 2021-04-06 | 北京信工博特智能科技有限公司 | 基于改进行程长度编码的动态压缩方法及动态压缩系统 |
CN114301671A (zh) * | 2021-12-28 | 2022-04-08 | 中国电信股份有限公司 | 网络入侵检测方法、系统、设备及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100354863C (zh) * | 2005-02-03 | 2007-12-12 | 中国科学院计算技术研究所 | 大规模关键词匹配的方法和系统 |
US7877401B1 (en) * | 2006-05-24 | 2011-01-25 | Tilera Corporation | Pattern matching |
US8595119B2 (en) * | 2008-02-15 | 2013-11-26 | New York Mercantile Exchange, Inc. | Symbolic language for trade matching |
CN101630323B (zh) * | 2009-08-20 | 2012-01-25 | 中国科学院计算技术研究所 | 确定自动机的空间压缩方法 |
CN101916259B (zh) * | 2010-07-06 | 2012-07-11 | 中国科学院计算技术研究所 | 确定自动机状态转换表的空间压缩方法 |
EP2544450B1 (en) * | 2011-07-07 | 2016-04-13 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Model parameter estimation for a rate- or distortion-quantization model function |
CN104881439B (zh) * | 2015-05-11 | 2019-03-22 | 中国科学院信息工程研究所 | 一种多模式串匹配方法和系统 |
CN107038026A (zh) * | 2017-02-28 | 2017-08-11 | 中国科学院信息工程研究所 | 一种增量式的自动机更新方法与系统 |
-
2019
- 2019-06-12 CN CN201910505421.2A patent/CN110401451B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110401451A (zh) | 2019-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106326475B (zh) | 一种高效的静态哈希表实现方法及系统 | |
US20090063465A1 (en) | System and method for string processing and searching using a compressed permuterm index | |
US11372929B2 (en) | Sorting an array consisting of a large number of elements | |
CN110401451B (zh) | 基于字符集变换的自动机空间压缩方法及系统 | |
WO2012072364A1 (en) | Method and data processing system for encoding data stored in a column-oriented manner, data processing program and computer program product | |
Plagemann et al. | A model for dynamic configuration of light-weight protocols | |
Winter et al. | Fast indexing strategies for robust image hashes | |
CN111370064A (zh) | 基于simd的哈希函数的基因序列快速分类方法及系统 | |
Boguslawski et al. | Huffman coding for storing non-uniformly distributed messages in networks of neural cliques | |
Funasaka et al. | Fast LZW compression using a GPU | |
US5815096A (en) | Method for compressing sequential data into compression symbols using double-indirect indexing into a dictionary data structure | |
Yong et al. | Efficient graph summarization using weighted lsh at billion-scale | |
CN110413958B (zh) | 用于自动机空间压缩的线性同余字符集变换方法及系统 | |
Wu et al. | Efficient inner product approximation in hybrid spaces | |
CN116302089B (zh) | 基于图片相似度的代码克隆检测方法、系统及存储介质 | |
CN108399152B (zh) | 数字查找树的压缩表示方法、系统、存储介质及规则匹配装置 | |
Zhang et al. | A program plagiarism detection model based on information distance and clustering | |
CN116128701A (zh) | 一种用于执行图计算任务的装置、图计算方法 | |
US20210157485A1 (en) | Pattern-based cache block compression | |
Shantharam et al. | Exploiting dense substructures for fast sparse matrix vector multiplication | |
CN109299260B (zh) | 数据分类方法、装置以及计算机可读存储介质 | |
CN114332745A (zh) | 一种基于深度神经网络的近重复视频大数据清洗方法 | |
CN112054805A (zh) | 一种模型数据压缩方法、系统及相关设备 | |
CN114095036B (zh) | 一种动态哈夫曼编码的码长生成装置 | |
CN109255090A (zh) | 一种web图的索引数据压缩方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |