Embodiments described herein relate to a method and system for verifying that source code held by a third party on behalf of first and second parties can be built.
It is well known for a first party to provide computer and/or application programs to a second party under a licensing agreement. The licensing agreement may also require the first party to provide the source code of the computer and/or application programs to the second party when certain conditions are met. Such conditions include failure by the first party to maintain and/or update the computer and/or application programs, or bankruptcy/insolvency/administration of the first party. This ensures that the second party can continue to use and maintain the computer and/or application program, the use of which may be critical to the second party.
The first party may be reluctant to provide the source code to the second party unless one of the certain conditions has arisen. Equally, the second party may be concerned that when certain conditions have arisen, such as bankruptcy, it may be impossible for the first party to provide the source code. To address these conflicting interests, both the first and second parties may use a source code escrow service. Such a service is well known and involves both the first and second parties signing an escrow agreement/contract which determines the computer and/or application programs to be licensed and conditions under which the source code (of the licensed computer and/or application programs) belonging to the first party is released to the second party. The source code is then deposited with the provider (i.e. a third party) of the source code escrow service. Should the first party not meet the conditions of the escrow agreement, the third party releases the source code to the second party.
Although this provides the second party with the assurance that it will receive the source code when certain conditions are met, the source code itself may not be sufficient for the second party to continue its use of the computer and/or application program. For example, the source code may not actually be in a usable state such that an attempt by the second party to compile or build the source code results in failure. Thus, a second party may require verification that the source code deposited with the escrow service provider can in fact be built into working computer and/or application programs. Known solutions to this involve the escrow service provider witnessing and documenting the source code building process by the first party. Assuming the source code can be built, the documentation (i.e. a verification report) detailing the process is stored with the deposited source code. The second party can have a reasonable level of confidence that it can build the source code if need be. In other words, it has been verified that the deposited source code can be built into functioning computer and/or application programs.
However, the above process has certain drawbacks. When the licensing agreement covers a large number of computer and/or application programs, documenting the build process of the underlying source code for each computer and/or application program is a time intensive procedure. Additionally, the escrow agreement/contract may result in the number of computer and/or application programs increasing over time. This means new source code has to be verified and deposited on a continual basis. Accurately documenting the build process for each piece of source code can be prone to error given the third party's unfamiliarity with the first party's internal processes, such as where data is stored and how it can be retrieved. One further complication is that the source code may have dependencies. Dependencies indicate libraries, certificates, and settings that are required and retrieved for the source code to be built into an executable application. The verification report may indicate any such dependencies required. However, whilst the first party may currently have complete access to dependencies required to build the source code, the second party may not, such as dependencies residing at storage locations local to the first party. Thus, the second party may not be able to access the required dependencies to build the deposited source code, even though it has been verified by the third party.
There is a need for a reliable way for verifying source code that has been deposited with the source code escrow service provider. There is also a need to be able to build the deposited source code using only the data deposited with the source code escrow service provider.
In a first aspect, there is computer implemented method for preparing source code, the method comprising: retrieving source code of at least one computer program and/or application from at least one first storage location associated with a first computing device; scanning the source code to determine at least one build tool to build the source code; using the or each build tool to build the source code; and upon verifying that the source code can be built using the or each build tool, preparing at least one executable to build the source code using the or each build tool. This means the source code can be automatically built and verified by executing the executable.
The method of may further comprise depositing, at at least one third storage location associated with a third computing device, the source code, the or each build tool, and the or each executable. This means the third computing device can verify the source code by executing the executable.
Retrieving source code of the or each computer and/or application program may comprise identifying the or each computer and/or application program in an application registry, and using links in the application registry to retrieve the source code. This means the source code can be located in the at least one first storage location.
Using the or each build tool to build the source code may comprise using a build process comprising identifying at least one request for a dependency, wherein the dependency is stored in the at least one storage location associated with the first computing device, and/or external to the at least one storage location associated with the first computing device, and retrieving the or each requested dependency. This means all materials required to build and verify the source code have been obtained.
The at least one executable may replicate the build process whilst redirecting a request for at least one dependency to the or each retrieved dependency. This means that the build process can be completed without access to at least one storage location associated with the first computing device.
The or each retrieved dependency may be deposited at at least one third storage location associated with a third computing device. This means that the build process can be completed by the third computing device without access to the at least one storage location associated with the first computing device.
The method may further comprise selecting a plug-in to interact with a particular storage type of the at least one first storage location associated with the first computing device to retrieve the source code. This means the storage type can be automatically accessed.
The method may comprise obtaining permission to retrieve the source code before retrieving the source code. This means the source code is not inadvertently released by the first computing device.
The method may further comprise retrieving documentation and/or individual contact details associated with the source code, and depositing the documentation and/or the individual contact details associated with the source code at at least one third storage location associated with a third computing device. This means that all information relevant to building the source code has been received by the third computing device.
The or each executable may use operating system, OS, level virtualization to build the source code. This means the source code can be built efficiently by the third computing device.
The source code may be compressed and encrypted before depositing the source code at the or each third storage location associated with the third computing device. This reduces the transmission time and increases security during transmission.
At least one checksum is used to detect errors in the source code deposited at the or each third storage location associated with the third computing device. This means the deposited source code can be checked for errors.
The third computing device may confirm that the source code deposited at the or each third storage location associated with the third computing device has been received. This means the first computing device can verify the source code is now stored at a third storage location associated with the third computing device.
The source code deposited at the or each third storage location associated with the third computing device may be rolled back by the first party. This means an incomplete deposit, or one that is missing materials, can be removed.
The method may further comprise sending at least one of the source code, the or each build tool, the or each executable, the or each dependency, and documentation and/or individual contact details associated with the source code to at least one second storage location associated with a second computing device upon a condition being met. This means the second computing device has verified source code that can be built automatically by executing the executable.
In another aspect, there is a computer implemented method for receiving and verifying source code, the method comprising: receiving from a first computing device, at at least one third storage location associated with a third computing device, source code, at least one build tool, and at least one executable to build the source code; and optionally using the third computing device to execute the or each executable to build the source code using the or each build tool to verify the source code. This means the third computing device has the materials to optionally automatically build and verify the source code.
Executing the or each executable may comprise redirecting a request for at least one dependency to at least one dependency deposited at the or each third storage location associated with the third computing device. This means that the build process can be completed by the third computing device without access to at least one storage location associated with the first computing device.
Executing the executable may be in response to a request from a second computing device to verify the source code stored at the or each third storage location associated with the third computing device. The method may further comprise upon receiving the request from the second computing device, executing the or each executable to build the source code, and verifying, to the second computing device, whether the source code can be built. This means the second computing device receives confirmation it is able to use the source code.
The or each executable may use operating system, OS, level virtualization to build the source code. This means the source code can be built efficiently by the third computing device. The source code may be prepared according to the methods of the above aspects.
The method may comprise the third party computing device sending at least one of the source code, the or each build tool, the or each executable, the or each dependency, and documentation and/or individual contact details associated with the source code to at least one second storage location associated with a second computing device upon a condition being met. This means the second computing device has verified source code that can be built automatically by executing the executable.
In another aspect, there is a computer program comprising instructions which, when the program is executed by a computer, cause the computer to carry out the methods of the above aspects.
In another aspect, there is a data processing system comprising a processor configured to carry out the methods of the above aspects.
Embodiments described herein are described with reference to one or more exemplary embodiments as depicted in the accompanying drawings, wherein:
The system shown in
Upon retrieving the source code of the or each computer and/or application program, the source code is analyzed to determine at least one build tool to build the source code at step 220. This can be achieved by scanning the source code to look for build tool files, which indicate the type of build tool to be used. For example, the build file name, pom.xml, indicates that a Maven™ build tool should be used, whereas the build file name, package.json, indicates that an Npm™ build tool should be used. It would be understood that a build tool creates an executable application (i.e. the licensed computer and/or application program) from the source code. It is possible that more than one build tool may be required for the source code, and the analyzing step 220 can identify all of the build tools that are required.
Now that the build tool for the source code is known, the known build tool can be used to build the source code into an executable computer and/or application program at step 230. Assuming an executable computer and/or application program is successfully built by the build tool, a corresponding executable can be generated at step 240. The executable, when executed, replicates the build process that has just resulted in an executable application.
One example of an executable is the script shown below. The script, when executed, uses OS-level virtualization provided by Docker™ to build a Docker image from a Dockerfile that contains the source code and a build tool for the source code. The Docker image can then be executed to build and verify the source code. The main advantage of using a script as the executable is that it can be easily edited. It will be appreciated that the script below and the principles on which it is based are merely representative.
Another example of the executable is a database and associated application program that could be written on Java™ for example. The database can be arranged to store data and use OS-level virtualization to build the source code. For example, the database could contain a Docker Image that has been built from a Dockerfile that contains the source code and a build tool for the source code. The data stored in the database is then called upon by the associated application program, when executed, to build the computer and/or application program. The main advantage of using a database and associated application program as the executable is that extra functionality can be easily added to the associated application program. Additionally, the associated application program can provide features like failure recovery, report logs, and previous verification results. It will be appreciated that the executable taking the form of database and associated application programs and the principles on which it is based are merely representative.
Step 310 identifies the or each computer and/or application program in the application registry and uses the application registry to provide access links to the storage locations associated with the first party that contain source code. The links in the application registry may indicate a type of storage. For example, if the link starts with ‘smb://’, the storage location is a network drive, whereas if the link starts with ‘git@’, the storage link is a Git™ repository. To retrieve the source code, a plug-in can be selected according to the storage type indicated by the link. Optional step 320 selects the appropriate plug in to interact with a particular storage type. The selected plug-in is configured to interact with a particular storage type so that source code can be retrieved.
Before being able to access the source code, appropriate permissions may be requested and obtained. Step 330 is therefore optional and requires permission to be both requested and obtained before the desired storage location can be accessed. This process may be automated in that an authorized computing device carries out the method of
As well as retrieving the source code, documentation related to the source code may also be retrieved. The documentation provides a description of the source code that can assist with the building, maintenance, and updating thereof. Such documentation may be identified by file name, and for example Readme.md may indicate such documentation. Additionally, specific individuals responsible for developing the source code may be identified by analyzing comments on the source code. In step 340, the source code is retrieved. Optionally, documentation and/or individual contact details related to the retrieved source code is also received.
In addition to using the application registry, the method 300 may also check relevant locations in the at least one storage location associated with the first party. For example, some applications may be in a development phase or inadvertently omitted from the application registry. Accessing known locations such as a shared network folder or a Gitlab™ repository means relevant source code can still be retrieved.
Using the method of
As mentioned above, the executable, when executed, replicates the build process that has just resulted in an executable application (i.e. step 240 of
In respect of the method of
In respect of the method of
In respect of the method of
When building the source code using the third computing device, the executable can use a virtual machine to build and verify the source code. Alternatively, the executable taking the form of a script can use operating system, OS, level virtualization to build and verify the source code. One such OS-level virtualization is that provided by Docker™, where the script is also deposited with a Dockerfile to build a Docker image, or alternatively the Docker image is retrieved from the database by the associated application program. The Docker image is then executed to build and verify the source code.
Whilst the methods of
Prior to confirmation of the deposited materials being received from the third computing device, it is possible to request roll-back of the deposited materials. If a roll-back request is received form the first computing device before the third computing device has confirmed the deposit, the third computing device proceeds to delete the deposit.
It will be appreciated that when the third computing device verifies the deposited source code, the third computing device first decrypts the deposited materials using a private key. Whilst
As used herein, 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 this specification, 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.
Embodiments described herein can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements.
Furthermore, embodiments described herein can take the form of a computer program embodied as a computer-readable medium having computer executable code for use by or in connection with a computer. For the purposes of this description, a computer readable medium can be any tangible apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the computer. Moreover, a computer-readable medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid-state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.
The flow diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of methods according to various embodiments. In this regard, each block in the flow diagram may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be performed substantially concurrently, or the blocks may sometimes be performed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the flow diagrams, and combinations of blocks in the flow diagrams, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
It will be understood that the above description of is given by way of example only and that various modifications may be made by those skilled in the art. Although various embodiments have been described above with a certain degree of particularity, or with reference to one or more individual embodiments, those skilled in the art could make numerous alterations to the disclosed embodiments without departing from the scope of this invention.
The following is a non-exhaustive list of embodiments, which may be or are claimed.
Embodiment 1. A computer implemented method for preparing source code, the method comprising: retrieving source code of at least one computer program and/or application from at least one first storage location associated with a first computing device; scanning the source code to determine at least one build tool to build the source code; using the or each build tool to build the source code; and upon verifying that the source code can be built using the or each build tool, preparing at least one executable to build the source code using the or each build tool.
Embodiment 2. The method of embodiment 1, further comprising depositing, at at least one third storage location associated with a third computing device, the source code, the or each build tool, and the or each executable.
Embodiment 3. The method of embodiments 1 or 2, wherein retrieving source code of the or each computer and/or application program comprises: identifying the or each computer and/or application program in an application registry; and using links in the application registry to retrieve the source code.
Embodiment 4. The method of any preceding embodiment, wherein using the or each build tool to build the source code comprises using a build process comprising: identifying at least one request for a dependency, wherein the dependency is stored in the at least one storage location associated with the first computing device, and/or external to the at least one storage location associated with the first computing device; and retrieving the or each requested dependency.
Embodiment 5. The method of embodiment 4, wherein the at least one executable replicates the build process whilst redirecting a request for at least one dependency to the or each retrieved dependency.
Embodiment 6. The method of embodiment 5, wherein the or each retrieved dependency is deposited at at least one third storage location associated with a third computing device.
Embodiment 7. The method of any preceding embodiment, further comprising selecting a plug-in to interact with a particular storage type of the at least one first storage location associated with the first computing device to retrieve the source code.
Embodiment 8. The method of any preceding embodiment, wherein the method comprises obtaining permission to retrieve the source code before retrieving the source code.
Embodiment 9. The method of any preceding embodiment, wherein the executable comprises a script, or database and associated application program.
Embodiment 10. The method of any preceding embodiment, further comprising: retrieving documentation and/or individual contact details associated with the source code; and depositing the documentation and/or the individual contact details associated with the source code at at least one third storage location associated with a third computing device.
Embodiment 11. The method of any preceding embodiment, wherein the or each executable uses operating system, OS, level virtualization to build the source code.
Embodiment 12. The method of embodiments 2 to 11, wherein the source code is compressed and encrypted before depositing the source code at the or each third storage location associated with the third computing device.
Embodiment 13. The method of embodiments 2 to 12, wherein at least one checksum is used to detect errors in the source code deposited at the or each third storage location associated with the third computing device.
Embodiment 14. The method of embodiments 2 to 13, wherein the third computing device confirms that the source code deposited at the or each third storage location associated with the third computing device has been received.
Embodiment 15. The method of embodiments 2 to 14, wherein the source code deposited at the or each third storage location associated with the third computing device can be rolled back by the first party.
Embodiment 16. The method of embodiments 2 to 15, further comprising releasing the source code, the or each build tool, the or each executable, and optionally at least one dependency from at the or each third storage location associated with the third computing device to at least one storage location associated with a second computing device upon a condition being met.
Embodiment 17. A computer implemented method for receiving and verifying source code, the method comprising: receiving from a first computing device, at at least one third storage location associated with a third computing device, source code, at least one build tool, and at least one executable to build the source code; and optionally using the third computing device to execute the or each executable to build the source code using the or each build tool to verify the source code.
Embodiment 18. The method of embodiment 17, wherein executing the or each executable comprises redirecting a request for at least one dependency to at least one dependency deposited at the or each third storage location associated with the third computing device.
Embodiment 19. The method of embodiments 17 or 18, wherein executing the executable is in response to a request from a second computing device to verify the source code stored at the or each third storage location associated with the third computing device.
Embodiment 20. The method of embodiment 19, the method further comprising: upon receiving the request from the second computing device, executing the or each executable to build the source code; and verifying, to the second computing device, whether the source code can be built.
Embodiment 21. The method of any one of embodiments 17 to 20, wherein the or each executable uses operating system, OS, level virtualization to build the source code, and/or wherein the executable comprises a script, or database and associated application program.
Embodiment 22. The method of embodiment 21, wherein the source code is prepared according to the methods of embodiments 1 to 16.
Embodiment 23. The method of embodiments 17 to 22, the method comprising the third party computing device sending at least one of the source code, the or each build tool, the or each executable, the or each dependency, and documentation and/or individual contact details associated with the source code to at least one second storage location associated with a second computing device upon a condition being met.
Embodiment 24. A computer program comprising instructions which, when the program is executed by a computer, cause the computer to carry out the method of embodiments 1 to 23.
Embodiment 25. A data processing system comprising a processor configured to carry out the method of embodiments 1 to 23.
Embodiment 26. A computer implemented method for requesting verification of source code, the method comprising: sending a request to a third computing device to verify source code stored at at least one third storage location associated with the third computing device; and receiving from the third computing device a verification as to whether the source code can be built.
Embodiment 27. The method of embodiment 26, wherein the source code is prepared according to the methods of embodiments 1 to 16.
Embodiment 28. The method of embodiments 26 or 27, wherein the source code is verified using the methods of embodiments 17 to 23.
Embodiment 29. A computer implemented method for depositing and verifying source code, the method comprising: retrieving source code of at least one computer program and/or application from at least one first storage location associated with a first computing device; scanning the source code to determine at least one build tool to build the source code; using the at least one build tool to build the source code; upon verifying that the source code can be built using the build tool, preparing at least one executable to build the source code using the or each build tool; depositing at at least one third storage location associated with a third computing device, the source code, the or each build tool, and the or each executable; optionally receiving, by the third computing device, a request from a second computing device to verify the source code deposited at the or each third storage location associated with the third computing device; optionally executing, by the third computing device, the or each executable to build the source code using the or each build tool to verify the source code; and optionally verifying, by the third computing device, to the second computing device whether the source code can be built.
Embodiment 30. The method of embodiment 29, wherein retrieving source code of the or each computer and/or application program comprises: identifying the or each computer and/or application program in an application registry; and using links in the application registry to retrieve the source code.
Embodiment 31. The method of embodiments 29 or 30, wherein using the or each build tool to build the source code comprises using a build process comprising: identifying at least one request for a dependency, wherein the dependency is stored in the at least one storage location associated with the first computing device, and/or external to the at least one storage location associated with the first computing device; and retrieving the or each requested dependency.
Embodiment 32. The method of embodiment 31, wherein the at least one executable replicates the build process whilst redirecting a request for at least one dependency to the or each retrieved dependency.
Embodiment 33. The method of embodiment 32, wherein the or each retrieved dependency is deposited at at least one third storage location associated with a third computing device.
Embodiment 34. The method of embodiments 29 to 33, further comprising selecting a plug-in to interact with a particular storage type of the at least one first storage location associated with the first computing device to retrieve the source code.
Embodiment 35. The method of embodiments 29 to 34, wherein the method comprises obtaining permission to retrieve the source code before retrieving the source code.
Embodiment 36. The method of embodiments 29 to 35, further comprising: retrieving documentation and/or individual contact details associated with the source code; and depositing the documentation and/or the individual contact details associated with the source code at at least one third storage location associated with a third computing device.
Embodiment 37. The method of embodiments 29 to 36, wherein the executable comprises a script, or database and associated application program.
Embodiment 38. The method of embodiments 29 to 37, wherein the or each executable uses operating system, OS, level virtualization to build the source code.
Embodiment 39. The method of embodiments 29 to 38, wherein the source code is compressed and encrypted before depositing the source code at the or each third storage location associated with the third computing device.
Embodiment 40. The method of embodiments 29 to 39, wherein at least one checksum is used to detect errors in the source code deposited at the or each third storage location associated with the third computing device.
Embodiment 41. The method of embodiments 29 to 40, wherein the third computing device confirms that the source code deposited at the or each third storage location associated with the third computing device has been received.
Embodiment 42. The method of embodiments 29 to 40, wherein the source code deposited at the or each third storage location associated with the third computing device can be rolled back by the first party.
Embodiment 43. The method of embodiments 29 to 41, further comprising releasing the source code from at the or each third storage location associated with the third computing device to at least one storage location associated with a second computing device upon a condition being met.
Embodiment 44. A computer implemented for preparing source code, the method comprising: analyzing, using a third computing device, a contract brokered by a third party on behalf of a first party and second party for the first party to license one computer program and/or application to the second party, wherein the analyzing extracts software nomenclature; using, by a first computing device, the software nomenclature to retrieve source code of at least one software application in at least one first storage location associated with the first computing device; scanning the source code to determine at least one build tool to build the source code; using the at least one build tool to build the source code; upon verifying that the source code can be built using the build tool, preparing at least one executable to build the source code.
Embodiment 45. The method of embodiment 44, further comprising depositing, at at least one third storage location associated with a third computing device, the source code, the or each build tool, and the or each executable.
Embodiment 46. The method of embodiments 44 or 45, wherein retrieving source code of the or each computer and/or application program comprises: identifying the or each computer and/or application program based on the software nomenclature in an application registry; and using links in the application registry to retrieve the source code.
Embodiment 47. The method of embodiments 44 to 46, wherein using the or each build tool to build the source code comprises using a build process comprising: identifying at least one request for a dependency, wherein the dependency is stored in the at least one storage location associated with the first computing device, and/or external to the at least one storage location associated with the first computing device; and retrieving the or each requested dependency.
Embodiment 48. The method of embodiment 47, wherein the at least one executable replicates the build process whilst redirecting a request for at least one dependency to the or each retrieved dependency.
Embodiment 49. The method of embodiment 48, wherein the or each retrieved dependency is deposited at at least one third storage location associated with a third computing device.
Embodiment 50. The method of embodiments 44 to 49, further comprising selecting a plug-in to interact with a particular storage type of the at least one first storage location associated with the first computing device to retrieve the source code.
Embodiment 51. The method of embodiments 44 to 50, wherein the method comprises obtaining permission to retrieve the source code before retrieving the source code.
Embodiment 52. The method of embodiments 44 to 51, further comprising: retrieving documentation and/or individual contact details associated with the source code; and depositing the documentation and/or the individual contact details associated with the source code at at least one third storage location associated with a third computing device.
Embodiment 53. The method of embodiments 44 to 52, wherein the executable comprises a script, or database and associated application program.
Embodiment 54. The method of embodiments 44 to 53, wherein the or each executable uses operating system, OS, level virtualization to build the source code.
Embodiment 55. The method of embodiments 44 to 54, wherein the source code is compressed and encrypted before depositing the source code at the or each third storage location associated with the third computing device.
Embodiment 56. The method of embodiments 44 to 55, wherein at least one checksum is used to detect errors in the source code deposited at the or each third storage location associated with the third computing device.
Embodiment 57. The method of embodiments 45 to 56, wherein the third computing device confirms that the source code deposited at the or each third storage location associated with the third computing device has been received.
Embodiment 58. The method of embodiments 45 to 57, wherein the source code deposited at the or each third storage location associated with the third computing device can be rolled back by the first party.
Embodiment 59. The method of embodiments 45 to 58, further comprising releasing the source code from at the or each third storage location associated with the third computing device to at least one storage location associated with a second computing device upon a condition being met.
Embodiment 60. A computer program comprising instructions which, when the program is executed by a computer, cause the computer to carry out the method of embodiments 26 to 59.
Embodiment 61. A data processing system comprising a processor configured to carry out the method of embodiments 26 to 59.
Number | Date | Country | Kind |
---|---|---|---|
2213316.9 | Sep 2022 | GB | national |
This application is a continuation of PCT International Application PCT/EP2023/075048, filed on Sep. 12, 2023, which claims priority to UK Application No. GB2213316.9, filed on Sep. 12, 2022, the entire contents of each of which are hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
Parent | PCT/EP2023/075048 | Sep 2023 | WO |
Child | 19076912 | US |