项目图标发布方法、装置、设备及存储介质与流程

文档序号:25542732发布日期:2021-06-18 20:39阅读:100来源:国知局
项目图标发布方法、装置、设备及存储介质与流程

本发明涉及研发管理领域,尤其涉及一种项目图标发布方法、装置、设备及存储介质。



背景技术:

随着互联网的发展,网络的内容越来越丰富和多样化,而网络应用中的图标是应用中必不可少的组成成分,它能将某个概念转换为清晰易懂的图形,从而降低用户的理解成本,提升界面的美观度,因此,在编写项目程序时,对图标的处理也成为了必不可少的环节。

目前,对图标的处理一般是由开发人员完成,常用处理方式有3种:独立引入单个图标;将多个图标拼合成一张图片,再使用图标定位技术使用图片中的图标;将图标转换为字体包,引入字体包再使用图标。上述3种方式分别存在以下问题:网络请求量增加,降低应用加载速度,图标切换需要等待加载;可维护性差,图标颜色固定,图片加载完成前所有图标无法显示,需要开发人员会图像编辑技术;不能按需加载,字体包加载完成前所有图标无法显示。可见,现有的对图标的处理方式都存在效率低,灵活性小,可维护性差等问题。



技术实现要素:

本发明的主要目的在于解决项目图标整合效率低且可维护性差的技术问题。

本发明第一方面提供了一种项目图标发布方法,包括:

接收项目图标的发布请求,其中,所述发布请求包括项目id;

根据所述项目id,查找所述项目图标对应的存储路径;

根据所述存储路径,将所述项目图标拷贝至指定项目目录;

对所述项目图标中的单色图标进行去色处理,得到多个去色图标;

对所述项目目录下的所有去色图标和多色图标进行编码格式转换,并生成各图标对应的编译文件;

将所述各编译文件打包成项目包文件并发布至项目仓库。

可选的,在本发明第一方面的第一种实现方式中,在所述对所有所述项目图标中的单色图标进行去色处理,得到多个去色图标之前,还包括:

解析所述各项目图标的属性信息,并提取所述各项目图标的颜色属性;

根据所述颜色属性,识别出所述项目图标中的单色图标及多色图标。

可选的,在本发明第一方面的第二种实现方式中,所述根据所述颜色属性,识别出所述项目图标中的单色图标及多色图标包括:

分别判断所述各项目图标是否存在多个颜色属性;

若所述项目图标存在多个颜色属性,则判断所述各颜色属性值是否相同;

若所述各颜色属性值相同,则确定所述项目图标为单色图标,否则确定所述项目图标为多色图标;

若所述项目图标不存在多个颜色属性,则确定所述项目图标为单色图标。

可选的,在本发明第一方面的第三种实现方式中,所述对所述项目图标中的单色图标进行去色处理,得到多个去色图标包括:

删除所述各单色图标的颜色属性及对应的颜色属性值;

设置所述各单色图标的颜色属性为预置变量值,得到多个去色图标。

可选的,在本发明第一方面的第四种实现方式中,所述对所述项目目录下的所有去色图标和多色图标进行编码格式转换,并生成各图标对应的编译文件包括:

获取目标编码格式模板,并分别将所述各多色图标、所述各去色图标转换为对应的字符串;

将所述字符串分别按预置写入规则写入所述目标编码格式模板中,得到多个预编译文件;

对所述各预编译文件执行编译命令,生成多个编译文件。

可选的,在本发明第一方面的第五种实现方式中,所述将所述各编译文件打包成项目包文件并发布至项目仓库包括:

根据驼峰命名法,对所述各编译文件进行重命名,并将所述各编译文件的重命名后的文件名称存入预置名称队列中;

获取所述项目目录下的配置文件,并将所述名称队列按照预置添加规则添加至所述配置文件中;

根据所述配置文件,执行项目打包命令,以对所述项目目录中各文件进行打包,得到项目包文件;

执行项目发布命令,并将所述项目包文件发布至项目仓库。

本发明第二方面提供了一种项目图标发布装置,包括:

接收模块,用于接收项目图标的发布请求,其中,所述发布请求包括项目id;

查找模块,用于根据所述项目id,查找所述项目图标对应的存储路径;

拷贝模块,用于根据所述存储路径,将所述项目图标拷贝至指定项目目录;

去色模块,用于对所述项目图标中的单色图标进行去色处理,得到多个去色图标;

编码模块,用于对所述项目目录下的所有去色图标和多色图标进行编码格式转换,并生成各图标对应的编译文件;

发布模块,用于将所述各编译文件打包成项目包文件并发布至项目仓库。

可选的,在本发明第二方面的第一种实现方式中,所述项目图标发布装置还包括:

提取模块,用于解析所述各项目图标的属性信息,并提取所述各项目图标的颜色属性;

识别模块,用于根据所述颜色属性,识别出所述项目图标中的单色图标及多色图标。

可选的,在本发明第二方面的第二种实现方式中,所述识别模块具体用于:

分别判断所述各项目图标是否存在多个颜色属性;

若所述项目图标存在多个颜色属性,则判断所述各颜色属性值是否相同;

若所述各颜色属性值相同,则确定所述项目图标为单色图标,否则确定所述项目图标为多色图标;

若所述项目图标不存在多个颜色属性,则确定所述项目图标为单色图标。

可选的,在本发明第二方面的第三种实现方式中,所述去色模块具体用于:

删除所述各单色图标的颜色属性及对应的颜色属性值;

设置所述各单色图标的颜色属性为预置变量值,得到多个去色图标。

可选的,在本发明第二方面的第四种实现方式中,所述编码模块具体用于:

获取目标编码格式模板,并分别将所述各多色图标、所述各去色图标转换为对应的字符串;

将所述字符串分别按预置写入规则写入所述目标编码格式模板中,得到多个预编译文件;

对所述各预编译文件执行编译命令,生成多个编译文件。

可选的,在本发明第二方面的第五种实现方式中,所述发布模块具体用于:

根据驼峰命名法,对所述各编译文件进行重命名,并将所述各编译文件的重命名后的文件名称存入预置名称队列中;

获取所述项目目录下的配置文件,并将所述名称队列按照预置添加规则添加至所述配置文件中;

根据所述配置文件,执行项目打包命令,以对所述项目目录中各文件进行打包,得到项目包文件;

执行项目发布命令,并将所述项目包文件发布至项目仓库。

本发明第三方面提供了一种项目图标发布设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述项目图标发布设备执行上述的项目图标发布方法。

本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的项目图标发布方法。

本发明提供的技术方案中,设计师制作好项目图标并上传后发送一个项目图标发布请求,当接收到发布请求后,查找图标在上传时的存储路径,在存储路径下拷贝项目打包所需要的各个图标到待发布的项目目录下,然后对该目录下的图标进行去色和编译处理,生成目标编译文件后统一打包并发布到指定的项目仓库。本发明可以将项目中所需要用到的图标统一处理成项目包,直接引入项目包即能使用其中的项目图标。本发明高效地整合了项目图标,使项目图标的使用和更新更灵活便捷,大大地提高了项目开发效率。

附图说明

图1为本发明实施例中项目图标发布方法的第一个实施例示意图;

图2为本发明实施例中项目图标发布方法的第二个实施例示意图;

图3为本发明实施例中项目图标发布装置的第一个实施例示意图;

图4为本发明实施例中项目图标发布装置的第二个实施例示意图;

图5为本发明实施例中项目图标发布设备的一个实施例示意图。

具体实施方式

本发明实施例提供了一种项目图标发布方法、装置、设备及存储介质。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中项目图标发布方法的第一个实施例包括:

101、接收项目图标的发布请求,其中,所述发布请求包括项目id;

可以理解的是,本发明的执行主体可以为项目图标发布装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。

本实施例中,项目图标是指项目开发过程中所需要使用的svg图标,svg图标是一种可缩放的矢量图标,它是基于xml(extensiblemarkuplanguage),由worldwidewebconsortium(w3c)联盟进行开发的,是一种开放标准的矢量图形语言,用户可以直接用代码来描绘图像,可以用任何文字处理工具打开svg图像,通过改变部分代码来使图像具有交互功能,并可以随时插入到html中通过浏览器来观看。

本实施例中,设计师制作好项目图标并上传后发送一个项目图标发布请求,后台接收到项目图标发布请求后,为每个项目分配一个唯一的id,这个id能定位到项目中的每一个图标,是项目的标识符。

102、根据所述项目id,查找所述项目图标对应的存储路径;

本实施例中,项目图标可能存储在线上服务器或本地服务器中,在完成发布任务之前,需要一一找到这些图标的存储路径,从而将其拷贝到项目目录中以完成发布任务。

本实施例中,可以根据项目的id查找到项目图标的存储路径,具体是根据图标发布时的存储方式来查找,例如,如果发布时是创建一个以项目id命名的文件夹,并将项目图标存储在该文件夹内的话,那么就以项目id为文件查找关键字,遍历所有的项目文件夹,从而确定目标项目的文件夹路径。其中,文件夹查找可以通过命令行的方式实现。

103、根据所述存储路径,将所述项目图标拷贝至指定项目目录;

本实施例中,当查找到项目图标的存储路径后,会启动一个子进程,用于拷贝相关的图标文件到负责打包发布的项目目录下,当图标发布成功后,子进程还会通知图标管理服务发布成功,再结束子进程。其中项目目录可以通过预设的方式指定,项目目录下还包含了其它项目打包所需要的文件,例如配置文件,声明文件等。

104、对所述项目图标中的单色图标进行去色处理,得到多个去色图标;

本实施例中,根据项目图标的使用场景和设计基础,将项目图标分为了多色图标和单色图标,为了保留设计的原始风格,对多色图标的色彩不做任何处理,而为了提高图标的灵活性,会去除单色图标的颜色属性,使其能够根据项目的需要灵活变化。例如在前端项目中,去色后的svg图标会继承父级的颜色属性,当需要改变图标的颜色时,只需改变其父级标签的颜色属性,图标的颜色就会随之变化。

本实施例中,去色图标可以理解为是一个透明颜色的图标,它不带颜色属性,可以根据背景颜色变换颜色。由于项目中可能会用到一些特殊字体,而通过字体包的方式引入既难以维护又加重网络加载的负担,因此,通常的做法是将特殊字体转化为svg图标,再以图标的方式引入特殊字体,这便要求图标具有和字体包相同的可变性,既能随意变换大小,又能随意改变颜色。为此,图标的自动化去色工作对于项目开发的效率提升有很大帮助。

105、对所述项目目录下的所有去色图标和多色图标进行编码格式转换,并生成各图标对应的编译文件;

本实施例中,为了提高项目图标的整合度,进一步地将去色处理后的图标进行编译处理,从而使项目开发更便捷高效。在现有技术中,图标的编译一般由人工完成,其中大部分工作是重复性的工作,因此,将这部分智能化处理,既降低了出错率又提高了开发效率。

本实施例中,编译文件的生成方法是将去色处理后的图标和多色图标统一转化为字符串的格式,再将各图标字符串写入预置的目标编码格式的模板文件中,得到可编译的目标文件,再执行这些可编译的目标文件,生成多个编译文件。

可选的,步骤105具体包括:

获取目标编码格式模板,并分别将所述各多色图标、所述各去色图标转换为对应的字符串;

将所述字符串分别按预置写入规则写入所述目标编码格式模板中,得到多个预编译文件;

对所述各预编译文件执行编译命令,生成多个编译文件。

本可选实施例中,当目标项目为前端项目时,可以先将svg图标解析为json对象,通过对json对象中的颜色属性进行相关处理后转化为字符串格式,该过程可通过命令行的形式自动执行。

本可选实施例中,前端项目中对应的目标编码格式模板是ts(typescript)文件模板。获取到模板后,在模板的特定位置中插入图标的json字符串,就能生成预编译的文件,通过执行修改后ts文件,就能生成项目所需的编译文件,其中,编译文件包括各图标对应的js文件及d.ts文件等。

106、将所述各编译文件打包成项目包文件并发布至项目仓库。

本实施例中,前端项目的打包和发布都可以通过npm命令实现,npm是javascript的包管理工具,并且是node.js平台的默认包管理工具。通过npm可以安装、共享、分发代码,以及管理项目依赖关系。

本实施例中,由于需要将图标打包成项目包文件,因此需要结合其它的项目文件才能生成完整的项目包文件,而其中将涉及到一些项目配置信息的修改。首先,为了统一命名规范,对编译好的图标文件进行重命名,再将需要引入项目的图标名称添加到项目的配置文件中,作为项目打包的参数之一,然后执行打包和发布命令,即能完成项目包的发布任务。

可选的,步骤106具体包括:

根据驼峰命名法,对所述各编译文件进行重命名,并将所述各编译文件的重命名后的文件名称存入预置名称队列中;

获取所述项目目录下的配置文件,并将所述名称队列按照预置添加规则添加至所述配置文件中;

根据所述配置文件,执行项目打包命令,以对所述项目目录中各文件进行打包,得到项目包文件;

执行项目发布命令,并将所述项目包文件发布至项目仓库。

本可选实施例中,驼峰命名法(camel-case)是电脑程式编写时的一套命名规则(惯例)。正如它的名称camelcase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。程序员们为了自己的代码能更容易的在同行之间交流,所以多采取统一的可读性比较好的命名方式。例如图标的原名称为“icon_education”,那么经过驼峰命名法重命名的名称为“iconeducation”。

本发明实施例中,设计师制作好项目图标并上传后发送一个项目图标发布请求,当接收到发布请求后,查找图标在上传时的存储路径,在存储路径下拷贝项目打包所需要的各个图标到待发布的项目目录下,然后对该目录下的图标进行去色和编译处理,生成目标编译文件后统一打包并发布到指定的项目仓库。本发明可以将项目中所需要用到的图标统一处理成项目包,直接引入项目包即能使用其中的项目图标。本发明高效地整合了项目图标,使项目图标的使用和更新更灵活便捷,大大地提高了项目开发效率。

请参阅图2,本发明实施例中项目图标发布方法的第二个实施例包括:

201、接收项目图标的发布请求,其中,所述发布请求包括项目id;

202、根据所述项目id,查找所述项目图标对应的存储路径;

203、根据所述存储路径,将所述项目图标拷贝至指定项目目录;

204、解析所述各项目图标的属性信息,并提取所述各项目图标的颜色属性;

205、根据所述颜色属性,识别出所述项目图标中的单色图标及多色图标。

可选的,步骤205具体包括:

分别判断所述各项目图标是否存在多个颜色属性;

若所述项目图标存在多个颜色属性,则判断所述各颜色属性值是否相同;

若所述各颜色属性值相同,则确定所述项目图标为单色图标,否则确定所述项目图标为多色图标;

若所述项目图标不存在多个颜色属性,则确定所述项目图标为单色图标。

本可选实施例中,解析后的图标可以为一个json对象,这个json对象描述了图标的所有属性,包括颜色属性,解析文件可能包含多个颜色属性,通过判断颜色属性的个数及属性值来确定图标是否为单色图标。当颜色属性只有一个时,能快速确定图标为单色图标,但当颜色属性有两个或两个以上时,就需要对比颜色属性值来确定是否为单色图标。需要说明的是,一个图标即使为单色图标,也可能包含多个颜色属性,这是由于svg图标可能由不同的形状组成,每个形状可能有单独的颜色属性,因此,不能只判断颜色属性的个数来确定是否单色图标。

206、对所述项目图标中的单色图标进行去色处理,得到多个去色图标;

可选的,步骤206具体包括:

删除所述各单色图标的颜色属性及对应的颜色属性值;

设置所述各单色图标的颜色属性为预置变量值,得到多个去色图标。

本可选实施例中,实现图标去色需要先删除图标固有的颜色属性,再重新设置新的颜色属性为一个变量值,这个变量值不是具体的颜色属性值,而是可以使图标继承父级标签颜色属性的变量参数,在生成前端页面时,程序会通过这个变量参数,读取到父级标签颜色属性值,并将读取到的颜色属性赋予给图标,从而实现继承。

207、对所述项目目录下的所有去色图标和多色图标进行编码格式转换,并生成各图标对应的编译文件;

208、将所述各编译文件打包成项目包文件并发布至项目仓库。

本发明实施例中,为了提高图标使用过程中的灵活度,对单色图标进行去色处理,去色后的图标在使用时会继承父级标签的颜色属性。去色方法是先根据图标的颜色属性识别出单色图标,删除原有颜色属性后添加新的颜色属性变量,即能得到可灵活变色的透明图标。本发明实施例可以使图标颜色灵活变化,无需使用图像编辑工具对图标颜色进行修改就能改变图标的颜色,提高了项目开发的效率和灵活性。

上面对本发明实施例中项目图标发布方法进行了描述,下面对本发明实施例中项目图标发布装置进行描述,请参阅图3,本发明实施例中项目图标发布装置第一个实施例包括:

接收模块301,用于接收项目图标的发布请求,其中,所述发布请求包括项目id;

查找模块302,用于根据所述项目id,查找所述项目图标对应的存储路径;

拷贝模块303,用于根据所述存储路径,将所述项目图标拷贝至指定项目目录;

去色模块304,用于对所述项目图标中的单色图标进行去色处理,得到多个去色图标;

编码模块305,用于对所述项目目录下的所有去色图标和多色图标进行编码格式转换,并生成各图标对应的编译文件;

发布模块306,用于将所述各编译文件打包成项目包文件并发布至项目仓库。

可选的,所述编码模块305具体用于:

获取目标编码格式模板,并分别将所述各多色图标、所述各去色图标转换为对应的字符串;

将所述字符串分别按预置写入规则写入所述目标编码格式模板中,得到多个预编译文件;

对所述各预编译文件执行编译命令,生成多个编译文件。

可选的,所述发布模块306具体用于:

根据驼峰命名法,对所述各编译文件进行重命名,并将所述各编译文件的重命名后的文件名称存入预置名称队列中;

获取所述项目目录下的配置文件,并将所述名称队列按照预置添加规则添加至所述配置文件中;

根据所述配置文件,执行项目打包命令,以对所述项目目录中各文件进行打包,得到项目包文件;

执行项目发布命令,并将所述项目包文件发布至项目仓库。

本发明实施例中,设计师制作好项目图标并上传后发送一个项目图标发布请求,当接收到发布请求后,查找图标在上传时的存储路径,在存储路径下拷贝项目打包所需要的各个图标到待发布的项目目录下,然后对该目录下的图标进行去色和编译处理,生成目标编译文件后统一打包并发布到指定的项目仓库。本发明可以将项目中所需要用到的图标统一处理成项目包,直接引入项目包即能使用其中的项目图标。本发明高效地整合了项目图标,使项目图标的使用和更新更灵活便捷,大大地提高了项目开发效率。。

请参阅图4,本发明实施例中项目图标发布装置的第二个实施例包括:

接收模块301,用于接收项目图标的发布请求,其中,所述发布请求包括项目id;

查找模块302,用于根据所述项目id,查找所述项目图标对应的存储路径;

拷贝模块303,用于根据所述存储路径,将所述项目图标拷贝至指定项目目录;

去色模块304,用于对所述项目图标中的单色图标进行去色处理,得到多个去色图标;

编码模块305,用于对所述项目目录下的所有去色图标和多色图标进行编码格式转换,并生成各图标对应的编译文件;

发布模块306,用于将所述各编译文件打包成项目包文件并发布至项目仓库。

提取模块307,用于解析所述各项目图标的属性信息,并提取所述各项目图标的颜色属性;

识别模块308,用于根据所述颜色属性,识别出所述项目图标中的单色图标及多色图标。

可选的,所述识别模块308具体用于:

分别判断所述各项目图标是否存在多个颜色属性;

若所述项目图标存在多个颜色属性,则判断所述各颜色属性值是否相同;

若所述各颜色属性值相同,则确定所述项目图标为单色图标,否则确定所述项目图标为多色图标;

若所述项目图标不存在多个颜色属性,则确定所述项目图标为单色图标。

可选的,所述去色模块304具体用于:

删除所述各单色图标的颜色属性及对应的颜色属性值;

设置所述各单色图标的颜色属性为预置变量值,得到多个去色图标。

本发明实施例中,为了提高图标使用过程中的灵活度,对单色图标进行去色处理,去色后的图标在使用时会继承父级标签的颜色属性。去色方法是先根据图标的颜色属性识别出单色图标,删除原有颜色属性后添加新的颜色属性变量,即能得到可灵活变色的透明图标。本发明实施例可以使图标颜色灵活变化,无需使用图像编辑工具对图标颜色进行修改就能改变图标的颜色,提高了项目开发的效率和灵活性。

上面图3和图4从模块化功能实体的角度对本发明实施例中的项目图标发布装置进行详细描述,下面从硬件处理的角度对本发明实施例中项目图标发布设备进行详细描述。

图5是本发明实施例提供的一种项目图标发布设备的结构示意图,该项目图标发布设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)510(例如,一个或一个以上处理器)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对项目图标发布设备500中的一系列指令操作。更进一步地,处理器510可以设置为与存储介质530通信,在项目图标发布设备500上执行存储介质530中的一系列指令操作。

项目图标发布设备500还可以包括一个或一个以上电源540,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如windowsserve,macosx,unix,linux,freebsd等等。本领域技术人员可以理解,图5示出的项目图标发布设备结构并不构成对项目图标发布设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

本发明还提供一种项目图标发布设备,所述项目图标发布设备包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述各实施例中的所述项目图标发布方法的步骤。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述项目图标发布方法的步骤。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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