A resource file protection method and device under Unreal Engine
By creating an encryption base class in Unreal Engine and storing the username and password in the resource file to generate a key pair file, the problem of resource files being unprotected after copying is solved, thus achieving encryption and enhanced security of resource files.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2023-01-12
- Publication Date
- 2026-03-27
AI Technical Summary
In existing technologies, resource files (such as Blueprints) in Unreal Engine can still be executed correctly after being copied, which cannot be effectively protected and leads to the problem of resource file leakage during development.
Create an encryption base class in Unreal Engine, have resource files inherit from this encryption base class and implement its functional definitions, store usernames and passwords in the resource files, generate key pair files, and open resource files by matching usernames and passwords.
Resource files are encrypted to prevent them from being copied and used arbitrarily between different development projects, thus improving their security.
Smart Images

Figure CN116010986B_ABST
Abstract
Description
TECHNICAL FIELD
[0001] The present application relates to the technical field of computer software, in particular to a resource file protection method and device under Unreal Engine, a computing device and a computer readable storage medium. BACKGROUND
[0002] In the development process of a game, various resource files are usually used for design, such as blueprint, animation, material and the like in Unreal Engine, wherein the blueprint is a visual script in Unreal Engine, which has the advantages of easy to use, component-oriented and high development efficiency. However, these resource files can be directly copied between different development projects, and the resource files can still be correctly executed in the project after copying, so that they cannot be reliably protected, and the problem of resource file leakage in the development process is easily caused. SUMMARY
[0003] Therefore, the embodiments of the present application provide a resource file protection method and device under Unreal Engine, a computing device and a computer readable storage medium to solve the technical defects in the prior art.
[0004] According to a first aspect of the embodiments of the present application, a resource file encryption method under Unreal Engine is provided, comprising:
[0005] creating an encryption base class of a resource, wherein the encryption base class inherits from a resource base class in Unreal Engine;
[0006] creating a resource based on the encryption base class, saving after implementing the function definition of the encryption base class in the resource, and obtaining an encrypted resource file.
[0007] According to a second aspect of the embodiments of the present application, a resource file encryption device under Unreal Engine is provided, comprising:
[0008] a creating unit configured to create an encryption base class of a resource, wherein the encryption base class inherits from a resource base class in Unreal Engine;
[0009] an encryption unit configured to create a resource based on the encryption base class, save after implementing the function definition of the encryption base class in the resource, and obtain an encrypted resource file.
[0010] According to a third aspect of the embodiments of the present application, a resource file decryption method under Unreal Engine is provided, comprising:
[0011] obtaining the resource file under Unreal Engine and compiling, if the compilation is successful, proceeding to the next step, otherwise, prompting an error;
[0012] obtaining a key pair file of the resource file, if the obtaining is successful, proceeding to the next step, otherwise, prompting an error;
[0013] The matching unit is configured to match the encryption attribute in the resource file with the key pair file, and open the resource file after successful matching.
[0014] According to a fourth aspect of the embodiments of the present application, a resource file decryption device under Unreal Engine is provided, comprising:
[0015] The compiling unit is configured to acquire the resource file under the Unreal Engine and compile the resource file.
[0016] The searching unit is configured to acquire the key pair file of the resource file.
[0017] The matching unit is configured to match the encryption attribute in the resource file with the key pair file, and open the resource file after successful matching.
[0018] According to a fifth aspect of the embodiments of the present application, a computing device is provided, comprising a memory, a processor, and computer instructions stored in the memory and executable on the processor, wherein the processor executes the instructions to implement the steps of the foregoing method.
[0019] According to a sixth aspect of the embodiments of the present application, a computer readable storage medium is provided, which stores computer instructions executable by a processor to implement the steps of the foregoing method.
[0020] In the embodiments of the present application, the basic characteristics of the resource file in the Unreal Engine are ingeniously utilized, an encryption base class is created in advance, the resource is caused to inherit the encryption base class when the resource is created, and the function definition of the encryption base class is implemented in the resource. Since the newly created resource inherits the encryption base class and implements the function defined therein, when the Unreal Engine serializes and saves it as a resource file, the base class information inherited by the resource will be recorded in the file. Further, when the resource under the Unreal Engine is created, the username and password can also be saved to the resource file and the key pair file. When the resource file is opened, the username and password in the resource file are matched with the username and password in the key pair file, and the resource file can be successfully opened after successful matching. Through the above method, the problem of leakage of the resource file under the Unreal Engine in the prior art is solved, that is, even if the resource file is copied to other projects, it cannot be recognized or decrypted due to the lack of the encryption base class or the key pair file, and the security of the resource file is greatly improved. BRIEF DESCRIPTION OF DRAWINGS
[0021] Figure 1 is a structural block diagram of a computing device provided by the embodiments of the present application;
[0022] Figure 2 is a flowchart of a resource file encryption method under Unreal Engine provided by the embodiments of the present application;
[0023] Figure 3 is an operation schematic diagram of creating a blueprint resource in the Unreal Engine in the prior art;
[0024] Figure 4 is a flow schematic diagram of a resource file decryption method under the Unreal Engine provided by an embodiment of the application;
[0025] Figure 5 is a UI schematic diagram of a resource file encrypted in the Unreal Engine by the method provided by the embodiment of the application;
[0026] Figure 6 is a structural schematic diagram of a resource file encryption device under the Unreal Engine provided by an embodiment of the application;
[0027] Figure 7 is a structural schematic diagram of a resource file decryption device under the Unreal Engine provided by an embodiment of the application. DETAILED DESCRIPTION
[0028] In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present application. However, it will be apparent to one skilled in the art that the present application can be practiced without the specific details presented herein. In other instances, well-known methods have not been described in detail in order to avoid obscuring aspects of the present application.
[0029] The terminology used in this disclosure is for the purpose of describing particular embodiments only and is not intended to be limiting of one or more embodiments of the present application. As used in one or more embodiments of the present application and the accompanying claims, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms "comprises" and / or "comprising," when used in one or more embodiments of the present application, specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.
[0030] It will be understood that, although the terms first, second, etc. can be used herein to describe various information, these terms are not intended to denote a temporal or chronological order. Rather, these terms are used solely to distinguish one from another only. For example, a first entity discussed below could later be discussed as a second entity in the discussion. Moreover, the words "if' as used herein can be interpreted as meaning "when" or "if in response to determining." In addition, the words "comprise," "comprising," "comprises," "include," "including," and "includes" as used herein are meant to be interpreted in a non-limiting manner.
[0031] In the present application, a resource file protection method and system under the Unreal Engine, a computing device, and a computer readable storage medium are provided, which are described in detail one by one in the following embodiments.
[0032] Figure 1 A structural block diagram of a computing device 100 is shown according to an embodiment of the present application. The components of the computing device 100 include, but are not limited to, a memory 110 and a processor 120. The processor 120 is connected with the memory 110 through a bus 130, and a database 150 is used to save data.
[0033] The computing device 100 also includes an access device 140, which enables the computing device 100 to communicate via one or more networks 160. Examples of these networks include a public switched telephone network (PSTN), a local area network (LAN), a wide area network (WAN), a personal area network (PAN), or a combination of communication networks such as the Internet. The access device 140 can include one or more of any type of network interface (e.g., a network interface card (NIC)) such as an IEEE 802.11 wireless local area network (WLAN) wireless interface, a Worldwide Interoperability for Microwave Access (Wi-MAX) interface, an Ethernet interface, a Universal Serial Bus (USB) interface, a cellular network interface, a Bluetooth interface, a near field communication (NFC) interface, and the like, either wired or wireless.
[0034] In an embodiment of the present application, the above-mentioned components of the computing device 100 and other components not shown in the figure can be connected with each other, for example, through a bus. It should be understood that, Figure 1 the computing device structure block diagram shown is only for the purpose of example, and is not a limitation on the scope of the present application. Other components can be added or replaced as needed by those skilled in the art. Figure 1 the computing device structure block diagram shown is only for the purpose of example, and is not a limitation on the scope of the present application. Other components can be added or replaced as needed by those skilled in the art.
[0035] The computing device 100 can be any type of stationary or mobile computing device, including a mobile computer or mobile computing device (e.g., a tablet computer, a personal digital assistant, a laptop computer, a notebook computer, a netbook, etc.), a mobile phone (e.g., a smartphone), a wearable computing device (e.g., a smart watch, smart glasses, etc.), or other type of mobile device, or a stationary computing device such as a desktop computer or PC. The computing device 100 can also be a mobile or stationary server.
[0036] In the prior art, there is no good solution for the protection of resource files under Unreal Engine, such as blueprints. Some of them use physical methods to monitor the access of the computer to the storage medium, and some insert special blueprint nodes during the writing of the blueprint. However, these methods cannot completely solve the protection problem of resource files such as blueprints, including opening, viewing, editing and running after copying.
[0037] Therefore, in an embodiment of the present application, in order to solve the above-mentioned problems, a resource file protection method under Unreal Engine is proposed, as shown in Figure 2 ,Figure 2 A flowchart of a resource file encryption method under Unreal Engine is shown, including steps 202 to 204.
[0038] Step 202: Create an encryption base class of the resource.
[0039] In the prior art, when developing a resource file such as a blueprint using Unreal Engine, a new blueprint is created in the editor of Unreal Engine, a parent class is selected for the new blueprint, thereby inheriting some functions thereof, and common types include Actor, Pawn, Character, etc., as shown in Figure 3 However, the core and essence thereof is to create an object instance of a blueprint base class UBlueprint, the class UBlueprint is a class specially processing visual blueprints, responsible for implementing the main functions of the blueprint, and can store object instances of Actor, Pawn, Character, etc. blueprints in the interior, and is responsible for serialization, deserialization, and maintenance of the internal inheritance relationship.
[0040] Therefore, in an embodiment of the present application, in order to enable the resource file such as the blueprint to have an encryption function, a custom C++ class is created in Unreal Engine as an encryption base class of the blueprint, as follows:
[0041] class UEncryptedBlueprint
[0042] In order to enable the base class to be used by various types of blueprints in the engine, the base class inherits the blueprint base class UBlueprint in Unreal Engine:
[0043] class UEncryptedBlueprint:public UBlueprint
[0044] Any function definition can be added in the encryption base class UEncryptedBlueprint;
[0045] Preferably, a username and password attribute, and a function for verifying the username and password can be added in the encryption base class.
[0046] Public:
[0047] Fstring KeyPasswordHash;
[0048] Fstring KeyUser;
[0049] void Verify();
[0050] In order to enable resources to access the aforementioned properties and related functions created in the base class, the `UPROPERTY()` and `UFUNCTION()` modifiers are used in the cryptographic base class. These modifiers make the cryptographic base class a template for resources that inherit from it, such as:
[0051] Public:
[0052] UPROPERTY()
[0053] Fstring KeyPasswordHash; / / Password
[0054] UPROPERTY()
[0055] Fstring KeyUser; / / Username
[0056] UFUNCTION()
[0057] void Verify(); / / Username and password verification function
[0058] Step 204: Create a resource based on the encryption base class, implement the functional definition of the encryption base class in the resource, and save it to obtain the encrypted resource file.
[0059] In one feasible implementation, when creating resources under Unreal Engine, the encrypted base class created in step 204 is used as the base class of the resource to be created, thereby creating the encrypted resource file.
[0060] Preferably, when creating resource files in Unreal Engine, an engine plugin provides two options: encrypted and unencrypted. When the user selects the encrypted option, the plugin automatically replaces the default base class of the resource with the encrypted base class via a callback function, thereby protecting the resource file. For example, when the user chooses to create an encrypted Actor type blueprint, the engine plugin replaces its default inherited base class Ublueprint with the custom encrypted base class UEncryptedBlueprint defined in step 204, thus creating the encrypted blueprint.
[0061] Furthermore, within the encrypted resources, relevant content is implemented based on the functional definitions in the encryption base class. For example, specific function functionalities are implemented for the defined function names.
[0062] After the editing is completed, the file is saved, and the encryption of the resource file is completed. Since the newly created resource inherits the encryption base class and implements the functions defined in the encryption base class, when the Unreal Engine serializes it into a binary file in the.uasset format, the inherited encryption base class information is recorded in the uasset file. This means that when the uasset file is copied to other development projects and attempts to open it, the Unreal Engine will fail to deserialize and compile the uasset file due to the lack of the inherited encryption base class UEncryptedBlueprint file in the development project, resulting in an error or even a crash, thereby achieving the encryption of the resource file.
[0063] Preferably, in addition to the encryption using the above-mentioned Unreal Engine compilation process for the resource file, secondary encryption can also be achieved by adding encryption-related functions to the base class. Specifically, when creating a resource under the Unreal Engine, the input function of the username and password is provided through the engine plug-in, and then the input username and password are saved to the resource file. Those skilled in the art should know that the above-mentioned support for username and password attributes is achieved by inheriting the base class. The input password is hashed, and the calculated hash value is saved as the password in the resource file.
[0064] Further, a key pair file is generated, and the input username and the calculated password hash value are saved to the key pair file.
[0065] In another possible implementation, the key pair file can also be generated in advance, which saves the already set username and the password stored in the form of a hash value. When generating the resource file, the username and password in the key pair file are inserted into the related attributes of the resource file inherited from the base class through the plug-in.
[0066] In the above-mentioned implementation, the key pair file used can be saved in the development project or independently saved in other storage locations.
[0067] In this embodiment, a key pair file is separately set for the resource file. When attempting to open the resource file in the development project, not only the compilation process of the resource by the Unreal Engine is required, but also the verification process of the username and password in the resource by the verification function. Only after both processes pass can the resource file be successfully opened, that is, the resource file must have both the base class file and the key pair file to be opened.
[0068] The scheme described in the above embodiments provides a resource file encryption method under the Unreal Engine. Correspondingly, the present application provides a resource file decryption method under the Unreal Engine, as shown in Figure 4As shown, the resource file decryption method under the Unreal Engine includes steps 402 to 406.
[0069] Step 402: Obtain the resource file under the Unreal Engine and compile it. If the compilation is successful, proceed to the next step, otherwise, exit the compilation.
[0070] In a feasible implementation, to open the blueprint file, when the compile button in the blueprint editor is clicked, the Unreal Engine will perform the process of converting the blueprint resource into a class. If the compilation is successful, proceed to the next step, otherwise, exit the compilation.
[0071] Specifically, during the compilation, the Unreal Engine checks whether the related encryption base class exists in the development project according to the definition of the resource file. If it exists, the compilation is performed, otherwise, the compilation is exited.
[0072] Step 404: Obtain the key pair file. If the obtaining is successful, proceed to the next step, otherwise, an error is prompted.
[0073] Check whether the key pair file exists in the development project or the specified location where the resource file is located. If it does not exist, an error is reported and the opening process is exited, as shown in Figure 5 As shown, if the key pair file exists, proceed to the next step.
[0074] Step 406: Match the encryption attribute of the resource file with the key pair file. If the matching is successful, open the resource file.
[0075] In a feasible implementation, obtain the encryption attribute in the resource file, such as the username and the password. Then, find the password corresponding to the same username in the key pair file according to the username, and then match the password in the resource file. If they are consistent, open the resource file. If the same username cannot be found in the key pair file, or the password corresponding to the same username is different, prompt that the opening fails, and exit the opening process, as shown in Figure 5 As shown, the above verification process is completed by the verification function inherited from the encryption base class in the resource file.
[0076] Those skilled in the art should know that the blueprint file involved in the embodiments of the present application is a kind of resource file under the Unreal Engine. In various embodiments, only examples are given. The method in the above embodiments is not limited to the blueprint, but can also be used for various resources under the Unreal Engine. Various resources under the Unreal Engine have similar definitions and structures, which will not be repeated here.
[0077] In the embodiments of the present application, in order to protect the resource file under the Unreal Engine and prevent the problem of leakage caused by the resource file being randomly copied during development, when the resource file is created, the basic characteristics of the resource in the Unreal Engine are utilized to create an encryption base class in advance, so that the resource file inherits the encryption base class and implements the function definition of the encryption base class in the resource file. Since the newly created resource file inherits the encryption base class and implements the function defined in the encryption base class, when the Unreal Engine serializes it as a resource file, the base class information it inherits will be recorded in the file. This means that when the file is copied to other development projects and attempts to open it, the Unreal Engine will report an error or even crash when compiling the file because the base class file it inherits cannot be found in the development project, thereby realizing the encryption of the resource file. Further, in order to achieve better protection effect, when creating the resource under the Unreal Engine, the username and password can also be saved to the resource file, and a key pair file is generated, and the input username and password are saved to the key pair file. When opening the resource file, find the password corresponding to the same username in the key pair file according to the username in the resource file, and then match the password in the resource file, and the resource file can be successfully opened after the matching is successful. Therefore, in the embodiments of the present application, not only the compilation process of the Unreal Engine can be used to verify the resource file, but also the double encryption function of the key pair file can be combined to comprehensively protect the resource file under the Unreal Engine, so that it cannot be easily copied and used between development projects.
[0078] Corresponding to the method embodiments described above, the present application also provides an encryption device for a resource file under an Unreal Engine, Figure 6 The structure of an encryption device for a resource file under an Unreal Engine in an embodiment of the present application is shown. As shown in Figure 6 The device includes:
[0079] A creation unit is configured to create an encryption base class of a resource file.
[0080] An encryption unit is configured to create a resource file based on the encryption base class, and save the resource file after implementing the function definition of the encryption base class in the resource file.
[0081] Corresponding to the method embodiments described above, the present application also provides an encryption device for a resource file under an Unreal Engine, Figure 7 The structure of an encryption device for a resource file under an Unreal Engine in an embodiment of the present application is shown. As shown in Figure 7 The device includes:
[0082] A compilation unit is configured to acquire and compile the resource file under the Unreal Engine.
[0083] The searching unit is configured to acquire a key pair file of the resource file;
[0084] The matching unit is configured to match the encrypted attribute in the resource file with the key pair file, and open the resource file after the matching is successful.
[0085] The above is a schematic scheme of the resource file encryption / decryption device under the Unreal Engine according to the embodiment. It should be noted that the technical scheme of the resource file encryption / decryption device under the Unreal Engine and the technical scheme of the resource file encryption / decryption method under the Unreal Engine described above belong to the same concept, and the details of the technical scheme of the resource file encryption / decryption device under the Unreal Engine which are not described in detail can be seen from the description of the technical scheme of the resource file encryption / decryption method under the Unreal Engine described above.
[0086] In an embodiment of the present application, a computing device is also provided, which comprises a memory, a processor, and computer instructions stored in the memory and executable on the processor, and the processor implements the steps of the resource file encryption / decryption method under the Unreal Engine when executing the instructions.
[0087] The above is a schematic scheme of the computing device according to the embodiment. It should be noted that the technical scheme of the computing device and the technical scheme of the resource file encryption / decryption method under the Unreal Engine described above belong to the same concept, and the details of the technical scheme of the computing device which are not described in detail can be seen from the description of the technical scheme of the resource file encryption / decryption method under the Unreal Engine described above.
[0088] In an embodiment of the present application, a computer readable storage medium is also provided, which stores computer instructions, and the instructions are executed by a processor to implement the steps of the resource file encryption / decryption method under the Unreal Engine as described above.
[0089] The above is a schematic scheme of the computer readable storage medium according to the embodiment. It should be noted that the technical scheme of the storage medium and the technical scheme of the resource file encryption / decryption method under the Unreal Engine described above belong to the same concept, and the details of the technical scheme of the storage medium which are not described in detail can be seen from the description of the technical scheme of the resource file encryption / decryption method under the Unreal Engine described above.
[0090] The above describes specific embodiments of the present application. Other embodiments are within the scope of the appended claims. In some cases, the actions or steps recited in the claims can be performed in a different order than the order in which they are recited and still achieve desirable results. In addition, the processes depicted in the figures do not necessarily require the particular order shown, or sequential order, to achieve the desired results. In certain implementations, multitasking and parallel processing can be advantageous.
[0091] The computer readable medium can include any entity or apparatus capable of carrying the computer program code, recording medium, U disk, mobile hard disk, magnetic disk, optical disk, computer memory, read-only memory (ROM), random access memory (RAM), electrical carrier signal, telecommunication signal, software distribution medium, etc. It should be noted that the computer readable medium can include appropriate additions or subtractions according to the requirements of legislation and patent practice in the jurisdiction, for example, in some jurisdictions, according to legislation and patent practice, the computer readable medium does not include electrical carrier signals and telecommunication signals.
[0092] It should be noted that for the foregoing method embodiments, in order to facilitate description, they are all expressed as a combination of a series of actions, but those skilled in the art should know that the present application is not limited by the order of the actions described, because according to the present application, certain steps can be performed in other orders or simultaneously. Secondly, those skilled in the art should know that the embodiments described in the specification all belong to preferred embodiments, and the actions and modules involved are not necessarily essential to the present application.
[0093] In the above embodiments, the description of each embodiment has its own focus, and the parts not described in detail in a certain embodiment can be referred to the related description of other embodiments.
[0094] The preferred embodiments of the present application disclosed above are only used to help explain the present application. The alternative embodiments do not describe all the details and do not limit the application to the specific embodiments described. Obviously, according to the content of the present application, many modifications and changes can be made. The present application selects and describes these embodiments in order to better explain the principles and practical applications of the present application, so that those skilled in the art can well understand and utilize the present application. The present application is limited by the claims and their entire scope and equivalents.
Claims
1. A resource file encryption method under Unreal Engine, characterized in that, The method comprises the steps of: creating an encryption base class of a resource, the encryption base class being inherited from a resource base class in the Unreal Engine, the resource base class being a blueprint base class UBlueprint; defining an encryption attribute and a verification function in the encryption base class, the encryption attribute comprising a username and a password; creating a resource based on the encryption base class, after the function definition of the encryption base class is implemented in the resource, the Unreal Engine serializes and saves the resource into a binary file to obtain an encrypted resource file; saving the input username and password into the resource file; wherein the password is saved in the resource file after being hashed; generating a key pair file, and saving the input username and the hashed password into the key pair file; wherein the key pair file is saved in a development project or stored independently in other locations.
2. The method of claim 1, wherein, The step of creating a resource based on the encryption base class comprises the steps of: when the resource is created, if encryption is selected, the default base class of the resource is automatically replaced by the encryption base class.
3. A resource file decryption method under Unreal Engine, used for decrypting the resource file according to claim 1, characterized in that, The method comprises the steps of: compiling the resource file under the Unreal Engine, and if the compilation is successful, proceeding to the next step, otherwise, prompting an error; obtaining the key pair file of the resource file, and if the obtaining is successful, proceeding to the next step, otherwise, prompting an error; matching the encryption attribute in the resource file with the key pair file, and if the matching is successful, opening the resource file.
4. The method of claim 3, wherein, The step of matching the encryption attribute in the resource file with the key pair file comprises the steps of: using the verification function in the resource file to find the password corresponding to the same username in the key pair file according to the username in the encryption attribute, and then matching the password with the password in the encryption attribute; if the matching is successful, opening the resource file; if the same username cannot be found in the key pair file, or the password corresponding to the same username is different, prompting that the opening fails.
5. A resource file encryption device under Unreal Engine, characterized in that, The method comprises the steps of: creating an encryption base class of a resource, the encryption base class being inherited from a resource base class in the Unreal Engine, the resource base class being a blueprint base class UBlueprint; defining an encryption attribute and a verification function in the encryption base class, the encryption attribute comprising a username and a password; creating a resource based on the encryption base class, after the function definition of the encryption base class is implemented in the resource, the Unreal Engine serializes and saves the resource into a binary file to obtain an encrypted resource file; saving the input username and password into the resource file; wherein the password is saved in the resource file after being hashed; generating a key pair file, and saving the input username and the hashed password into the key pair file; wherein the key pair file is saved in a development project or stored independently in other locations.
6. An Unreal Engine-based resource file decryption device for decrypting the resource file of claim 1, characterized in that, The method comprises the steps of: compiling the resource file under the Unreal Engine, and if the compilation is successful, proceeding to the next step, otherwise, prompting an error; obtaining the key pair file of the resource file, and if the obtaining is successful, proceeding to the next step, otherwise, prompting an error; matching the encryption attribute in the resource file with the key pair file, and if the matching is successful, opening the resource file.
7. A computing device comprising a memory, a processor, and computer instructions stored on the memory and executable on the processor, wherein, The processor implements the steps of the method of any one of claims 1-4 when executing the instructions.
8. A computer-readable storage medium storing computer instructions, wherein, The instructions, when executed by the processor, implement the steps of the method of any one of claims 1-4.