CN105630491A - Method and device for changing functions of program - Google Patents

Method and device for changing functions of program Download PDF

Info

Publication number
CN105630491A
CN105630491A CN201510964889.XA CN201510964889A CN105630491A CN 105630491 A CN105630491 A CN 105630491A CN 201510964889 A CN201510964889 A CN 201510964889A CN 105630491 A CN105630491 A CN 105630491A
Authority
CN
China
Prior art keywords
function
replacement
program
symbol table
request
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.)
Pending
Application number
CN201510964889.XA
Other languages
Chinese (zh)
Inventor
丁鹏
韩鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TCL Corp
Original Assignee
TCL Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by TCL Corp filed Critical TCL Corp
Priority to CN201510964889.XA priority Critical patent/CN105630491A/en
Publication of CN105630491A publication Critical patent/CN105630491A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Abstract

The invention is applied to the technical field of computers, and provides a method and device for changing functions of a program. The method comprises the following steps: receiving a function replacement request and a replacement function, wherein the function replacement request is used for changing a target function in a source code of the program to the replacement function; obtaining a function address corresponding to the replacement function after compiling the replacement function to a temporary dynamic library, and writing in a preset global symbol table after associating the function address corresponding to the replacement function with the target function; before executing the target function, obtaining the function address corresponding to the replacement function through the preset global symbol in the operation process of the program; and changing the entry of the target function to the function address corresponding to the replacement function, executing the replacement function, and returning a function value. According to the invention, the functions of the program are changed without a complex program compiling process; and the change process has real-time performance and dynamic performance.

Description

The function variation of program and device
Technical field
The invention belongs to field of computer technology, particularly relate to function variation and the device of program.
Background technology
By the program that the programming languages such as C/C++ are write, after the compilation processes such as pretreatment, compiling, compilation, link, generating executable file, and namely the operation of program is being the operation to executable file. But in present stage, once program has compiled, its program function can not change, to change program function, the source code of program can only be modified, and repeat the compilation process of above-mentioned pretreatment, compiling, compilation, link, generate new executable file to rerun, it is achieved process is complicated.
Summary of the invention
In view of this, function variation and the device of program are embodiments provided, it is intended to solve the problem that prior art cannot change its program function after program has compiled.
First aspect, it is provided that the function variation of a kind of program, including:
Receiver function replacement request and replacement function, described function replacement request is for being changed to described replacement function by the object function in the source code of program;
Obtain the function address that described replacement function is corresponding after described replacement function is compiled as interim dynamic base, after being associated with described object function by function address corresponding for described replacement function, write default global symbol table;
In the running of described program, before performing described object function, obtain, by described default global symbol table, the function address that described replacement function is corresponding;
The entrance of described object function is changed to the function address that described replacement function is corresponding, performs described replacement function, return function value.
Second aspect, it is provided that the function change device of a kind of program, including:
Receiving unit, for receiver function replacement request and replacement function, described function replacement request is for being changed to described replacement function by the object function in the source code of program;
Writing unit, for obtaining, after described replacement function is compiled as interim dynamic base, the function address that described replacement function is corresponding, writes default global symbol table with described object function after being associated by function address corresponding for described replacement function;
Acquiring unit, for, in the running of described program, before performing described object function, obtaining, by described default global symbol table, the function address that described replacement function is corresponding;
Changing unit, for the entrance of described object function is changed to the function address that described replacement function is corresponding, performs described replacement function, return function value.
The embodiment of the present invention can be implemented in after program compiled, among the running of program, change to program function so that changing the function of program without then through the program compilation process going through complexity, change process possesses real-time and dynamic.
Accompanying drawing explanation
In order to be illustrated more clearly that the technical scheme in the embodiment of the present invention, the accompanying drawing used required in embodiment or description of the prior art will be briefly described below, apparently, accompanying drawing in the following describes is only some embodiments of the present invention, for those of ordinary skill in the art, under the premise not paying creative work, it is also possible to obtain other accompanying drawing according to these accompanying drawings.
Fig. 1 is the flowchart of the function variation of the program that the embodiment of the present invention provides;
Fig. 2 be the embodiment of the present invention provide program function variation S101 implement flow chart;
Fig. 3 is the flowchart of the function variation of the program that another embodiment of the present invention provides;
Fig. 4 is the structured flowchart of the function change device that the embodiment of the present invention provides.
Detailed description of the invention
In being described below, in order to illustrate rather than in order to limit, it is proposed that the such as detail of particular system structure, technology etc, in order to thoroughly cut and understand the embodiment of the present invention. But, it will be clear to one skilled in the art that and can also realize the present invention in the other embodiments do not have these details. In other situation, omit the detailed description to well-known system, device, circuit and method, in order to avoid unnecessary details hinders description of the invention.
What Fig. 1 illustrated the function variation of the program that the embodiment of the present invention provides realizes flow process, and details are as follows:
In S101, receiver function replacement request and replacement function, described function replacement request is for being changed to described replacement function by the object function in the source code of program.
In embodiments of the present invention, function replacement request sends together with replacement function, function replacement request has pointed to a certain object function in the source code of program, for indicating in the running of this program, when needing to perform this object function, by the execution of object function is changed to the execution to replacement function, thus reaching program is carried out the purpose of function change. Wherein, send the one of function replacement request and replacement function and can think the local processes of the terminal running this program, it is also possible to for the remote process relative to the terminal running this program.
As one embodiment of the present of invention, the action of receiver function replacement request and replacement function can occur in the running of program, as in figure 2 it is shown, S101 realizes especially by the following manner:
In S201, after described program startup optimization, create the thread for receiver function replacement request and replacement function.
In S202, by described thread, receiver function replacement request and replacement function in the running of described program.
After this program startup optimization, first program is automatically created a thread, this thread is specifically designed to the function replacement request and the replacement function that receive in the running of program from controlling a side (i.e. above-mentioned local processes or remote process), so, if user wants the change making program realize certain function, function replacement request can be initiated in the running of program in real time, achieve the dynamic change to function in program operation process better.
In S102, after described replacement function is compiled as interim dynamic base, obtain the function address that described replacement function is corresponding, after being associated with described object function by function address corresponding for described replacement function, write default global symbol table.
After receiving function replacement request, first the replacement function corresponding with this function replacement request is preserved, and this replacement function is performed compilation process, call compiler, this replacement function is compiled as an interim dynamic base, afterwards, called by system, open this interim dynamic base, the function address that this replacement function is corresponding is got by this interim dynamic base, and default global symbol table is refreshed, the object function of instruction in function replacement request can be associated by refresh process with the function address got, the global symbol table that write is preset.
In S103, in the running of described program, before performing described object function, obtain, by described default global symbol table, the function address that described replacement function is corresponding.
The running of program, is namely carried out the source code of program, and calls and perform the process of each function in source code in the process of implementation one by one. and in embodiments of the present invention, in order to realize that object function is changed to replacement function execution, thus realizing the purpose that program function changes, can in the preprocessing process before program compiles, just to insert a pretreatment respectively grand for each function entrance in this program source code, so, before performing each function, all can first carry out this pretreatment grand, this pretreatment is grand is for default global symbol table being made a look up before performing function, according to lookup result, if current function is associated with function address in default global symbol table, then show current function to be changed to replacement function to perform, if current function is not associated function address in default global symbol table, then still perform current function.
Therefore, in the running of this program, before performing the object function indicated by function replacement request, first can perform above-mentioned pretreatment grand, along with the execution that this pretreatment is grand, finding out this object function in default global symbol table and be associated with function address, this function address is the function address of replacement function corresponding to this object function, thus getting the function address of replacement function corresponding to this object function.
In S104, the entrance of described object function is changed to the function address that described replacement function is corresponding, performs described replacement function, return function value.
After getting the function address of replacement function corresponding to object function, the entrance of this object function can be changed to the function address of the replacement function of its correspondence, thus, when going to object function, the code of this object function can't be performed, but then call and perform the replacement function that this object function is corresponding, obtain the functional value of this replacement function, again this functional value is returned as a result, replace the execution result of this object function originally, thus, program operation process realizes the change to program function.
As one embodiment of the present of invention, as it is shown on figure 3, before S101, described method also includes:
In S105, create for receiver function replacement request and replacement function, and for preserving the core library of described default global symbol table.
In S106, in the compilation process of described program, link described core library.
In the present embodiment, can by receiver function replacement request, reception replacement function and preservation replacement function, and preserve and safeguard that the function package of global symbol table preset is a core library, and in the compilation process of program, this core library is linked, from there through the mode of link, easily above-mentioned functions is completed compiling.
Further, the function of above-mentioned S101 and S102 can also be completed by the background server of program, thus alleviating the processing pressure of the terminal of operation program, improves the efficiency of the practice of scheme.
The embodiment of the present invention can be implemented in after program compiled, among the running of program, change to program function, the function to program is made to change without then through the program compilation process going through complexity, change process possesses real-time and dynamic, can be widely deployed among the applications such as program debugging or dynamic function module replacement.
Should be understood that in above-described embodiment, the size of the sequence number of each step is not meant to the priority of execution sequence, the execution sequence of each process should be determined with its function and internal logic, and the implementation process of the embodiment of the present invention should not constituted any restriction.
Corresponding to the function variation of the program described in foregoing embodiments, Fig. 4 illustrates the structured flowchart of the function change device of the program that the embodiment of the present invention provides. For the ease of illustrating, illustrate only part related to the present embodiment.
With reference to Fig. 4, this device includes:
Receiving unit 41, receiver function replacement request and replacement function, described function replacement request is for being changed to described replacement function by the object function in the source code of program;
Writing unit 42, obtains the function address that described replacement function is corresponding after described replacement function is compiled as interim dynamic base, write default global symbol table with described object function after being associated by function address corresponding for described replacement function;
Acquiring unit 43, in the running of described program, before performing described object function, obtains, by described default global symbol table, the function address that described replacement function is corresponding;
Changing unit 44, is changed to, by the entrance of described object function, the function address that described replacement function is corresponding, performs described replacement function, return function value.
Alternatively, described reception unit 41 specifically for:
Receive the local processes of terminal of program described in self-operating or the function replacement request of remote process and replacement function.
Alternatively, described device also includes:
Inserting unit, for before described program compiles, in the source code of described program, to insert pretreatment respectively grand for the entrance of each function;
Described acquiring unit 43 includes:
Perform subelement, in the running of described program, before performing described object function, perform described pretreatment grand, there is described replacement function finding out described object function in described default global symbol table;
Obtain subelement, obtain, in described default global symbol table, the function address that described replacement function is corresponding.
Alternatively, described reception unit 41 includes:
Create subelement, after described program startup optimization, create the thread for receiver function replacement request and replacement function;
Receive subelement, by described thread, receiver function replacement request and replacement function in the running of described program.
Alternatively, described device also includes:
Creating unit, creates for receiver function replacement request and replacement function, and for preserving the core library of described default global symbol table;
Link unit, in the compilation process of described program, links described core library.
Those skilled in the art is it can be understood that arrive, for convenience of description and succinctly, only it is illustrated with the division of above-mentioned each functional unit, module, in practical application, as desired above-mentioned functions distribution can be completed by different functional units, module, it is divided into different functional units or module, to complete all or part of function described above by the internal structure of described device. Each functional unit in embodiment, module can be integrated in a processing unit, can also be that unit is individually physically present, can also two or more unit integrated in a unit, above-mentioned integrated unit both can adopt the form of hardware to realize, it would however also be possible to employ the form of SFU software functional unit realizes. It addition, the concrete title of each functional unit, module is also only to facilitate mutually distinguish, it is not limited to the protection domain of the application. The specific works process of unit, module in said system, it is possible to reference to the corresponding process in preceding method embodiment, do not repeat them here.
Those of ordinary skill in the art are it is to be appreciated that the unit of each example that describes in conjunction with the embodiments described herein and algorithm steps, it is possible to being implemented in combination in of electronic hardware or computer software and electronic hardware. These functions perform with hardware or software mode actually, depend on application-specific and the design constraint of technical scheme. Professional and technical personnel specifically can should be used for using different methods to realize described function to each, but this realization is it is not considered that beyond the scope of this invention.
In embodiment provided by the present invention, it should be understood that disclosed apparatus and method, it is possible to realize by another way. Such as, system embodiment described above is merely schematic, such as, the division of described module or unit, being only a kind of logic function to divide, actual can have other dividing mode when realizing, for instance multiple unit or assembly can in conjunction with or be desirably integrated into another system, or some features can ignore, or do not perform. Another point, shown or discussed coupling each other or direct-coupling or communication connect the INDIRECT COUPLING that can be through some interfaces, device or unit or communication connects, it is possible to be electrical, machinery or other form.
The described unit illustrated as separating component can be or may not be physically separate, and the parts shown as unit can be or may not be physical location, namely may be located at a place, or can also be distributed on multiple NE. Some or all of unit therein can be selected according to the actual needs to realize the purpose of the present embodiment scheme.
It addition, each functional unit in each embodiment of the present invention can be integrated in a processing unit, it is also possible to be that unit is individually physically present, it is also possible to two or more unit are integrated in a unit. Above-mentioned integrated unit both can adopt the form of hardware to realize, it would however also be possible to employ the form of SFU software functional unit realizes.
If described integrated unit is using the form realization of SFU software functional unit and as independent production marketing or use, it is possible to be stored in a computer read/write memory medium. Based on such understanding, part or all or part of of this technical scheme that prior art is contributed by the technical scheme of the embodiment of the present invention substantially in other words can embody with the form of software product, this computer software product is stored in a storage medium, including some instructions with so that a computer equipment (can be personal computer, server, or the network equipment etc.) or processor (processor) perform all or part of step of method described in each embodiment of the embodiment of the present invention. And aforesaid storage medium includes: USB flash disk, portable hard drive, read only memory (ROM, Read-OnlyMemory), the various media that can store program code such as random access memory (RAM, RandomAccessMemory), magnetic disc or CD.
Embodiment described above only in order to technical scheme to be described, is not intended to limit; Although the present invention being described in detail with reference to previous embodiment, it will be understood by those within the art that: the technical scheme described in foregoing embodiments still can be modified by it, or wherein portion of techniques feature is carried out equivalent replacement; And these amendments or replacement, do not make the essence of appropriate technical solution depart from the spirit and scope of each embodiment technical scheme of the embodiment of the present invention.
The foregoing is only presently preferred embodiments of the present invention, not in order to limit the present invention, all any amendment, equivalent replacement and improvement etc. made within the spirit and principles in the present invention, should be included within protection scope of the present invention.

Claims (10)

1. the function variation of a program, it is characterised in that including:
Receiver function replacement request and replacement function, described function replacement request is for being changed to described replacement function by the object function in the source code of program;
Obtain the function address that described replacement function is corresponding after described replacement function is compiled as interim dynamic base, after being associated with described object function by function address corresponding for described replacement function, write default global symbol table;
In the running of described program, before performing described object function, obtain, by described default global symbol table, the function address that described replacement function is corresponding;
The entrance of described object function is changed to the function address that described replacement function is corresponding, performs described replacement function, return function value.
2. the method for claim 1, it is characterised in that described receiver function replacement request and replacement function include:
Receive the local processes of terminal of program described in self-operating or the function replacement request of remote process and replacement function.
3. the method for claim 1, it is characterised in that described method also includes:
Before described program compiles, in the source code of described program, to insert pretreatment respectively grand for the entrance of each function;
Described in the running of described program, before performing described object function, the function address obtaining described replacement function corresponding by described default global symbol table includes:
In the running of described program, before performing described object function, perform described pretreatment grand, there is described replacement function finding out described object function in described default global symbol table;
Described default global symbol table obtains the function address that described replacement function is corresponding.
4. the method for claim 1, it is characterised in that described receiver function replacement request and replacement function include:
After described program startup optimization, create the thread for receiver function replacement request and replacement function;
By described thread, receiver function replacement request and replacement function in the running of described program.
5. the method for claim 1, it is characterised in that before described receiver function replacement request and replacement function, described method also includes:
Create for receiver function replacement request and replacement function, and for preserving the core library of described default global symbol table;
In the compilation process of described program, link described core library.
6. the function change device of a program, it is characterised in that including:
Receiving unit, for receiver function replacement request and replacement function, described function replacement request is for being changed to described replacement function by the object function in the source code of program;
Writing unit, for obtaining, after described replacement function is compiled as interim dynamic base, the function address that described replacement function is corresponding, writes default global symbol table with described object function after being associated by function address corresponding for described replacement function;
Acquiring unit, for, in the running of described program, before performing described object function, obtaining, by described default global symbol table, the function address that described replacement function is corresponding;
Changing unit, for the entrance of described object function is changed to the function address that described replacement function is corresponding, performs described replacement function, return function value.
7. device as claimed in claim 6, it is characterised in that described reception unit specifically for:
Receive the local processes of terminal of program described in self-operating or the function replacement request of remote process and replacement function.
8. device as claimed in claim 6, it is characterised in that described device also includes:
Inserting unit, for before described program compiles, in the source code of described program, to insert pretreatment respectively grand for the entrance of each function;
Described acquiring unit includes:
Perform subelement, in the running of described program, before performing described object function, perform described pretreatment grand, there is described replacement function finding out described object function in described default global symbol table;
Obtain subelement, for obtaining, in described default global symbol table, the function address that described replacement function is corresponding.
9. device as claimed in claim 6, it is characterised in that described reception unit includes:
Create subelement, for, after described program startup optimization, creating the thread for receiver function replacement request and replacement function;
Receive subelement, be used for by described thread, receiver function replacement request and replacement function in the running of described program.
10. device as claimed in claim 6, it is characterised in that described device also includes:
Creating unit, for creating for receiver function replacement request and replacement function, and for preserving the core library of described default global symbol table;
Link unit, for, in the compilation process of described program, linking described core library.
CN201510964889.XA 2015-12-18 2015-12-18 Method and device for changing functions of program Pending CN105630491A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510964889.XA CN105630491A (en) 2015-12-18 2015-12-18 Method and device for changing functions of program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510964889.XA CN105630491A (en) 2015-12-18 2015-12-18 Method and device for changing functions of program

Publications (1)

Publication Number Publication Date
CN105630491A true CN105630491A (en) 2016-06-01

Family

ID=56045481

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510964889.XA Pending CN105630491A (en) 2015-12-18 2015-12-18 Method and device for changing functions of program

Country Status (1)

Country Link
CN (1) CN105630491A (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107643924A (en) * 2017-09-29 2018-01-30 郑州云海信息技术有限公司 A kind of upgrade method, system, equipment and the storage medium of kernel state client
CN108845813A (en) * 2018-06-14 2018-11-20 郑州云海信息技术有限公司 A kind of hot update method of application program
CN108845841A (en) * 2018-06-15 2018-11-20 广州多益网络股份有限公司 Change the method, apparatus and terminal of terminal applies behavior
CN110851181A (en) * 2018-08-20 2020-02-28 阿里巴巴集团控股有限公司 Data processing method and device and computing equipment
CN111352629A (en) * 2018-12-24 2020-06-30 北京奇虎科技有限公司 Optimization method and device for program call
CN111723002A (en) * 2020-05-18 2020-09-29 五八有限公司 Code debugging method and device, electronic equipment and storage medium
CN112596823A (en) * 2020-12-23 2021-04-02 支付宝(杭州)信息技术有限公司 Safety control method and device and electronic equipment

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110138351A1 (en) * 2008-08-21 2011-06-09 Antoine Monsifrot Method and device for code obfuscation
CN103294457A (en) * 2012-02-27 2013-09-11 百度在线网络技术(北京)有限公司 Method and device for dynamically substituting C/C + + function in main program
CN103530184A (en) * 2013-10-24 2014-01-22 华为技术有限公司 Method and device for online patch activation
CN104951375A (en) * 2015-07-01 2015-09-30 北京博睿宏远科技发展有限公司 Mobile phone APP performance data collecting method based on function interception technology

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110138351A1 (en) * 2008-08-21 2011-06-09 Antoine Monsifrot Method and device for code obfuscation
CN103294457A (en) * 2012-02-27 2013-09-11 百度在线网络技术(北京)有限公司 Method and device for dynamically substituting C/C + + function in main program
CN103530184A (en) * 2013-10-24 2014-01-22 华为技术有限公司 Method and device for online patch activation
CN104951375A (en) * 2015-07-01 2015-09-30 北京博睿宏远科技发展有限公司 Mobile phone APP performance data collecting method based on function interception technology

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107643924A (en) * 2017-09-29 2018-01-30 郑州云海信息技术有限公司 A kind of upgrade method, system, equipment and the storage medium of kernel state client
CN108845813A (en) * 2018-06-14 2018-11-20 郑州云海信息技术有限公司 A kind of hot update method of application program
CN108845841A (en) * 2018-06-15 2018-11-20 广州多益网络股份有限公司 Change the method, apparatus and terminal of terminal applies behavior
CN110851181A (en) * 2018-08-20 2020-02-28 阿里巴巴集团控股有限公司 Data processing method and device and computing equipment
CN110851181B (en) * 2018-08-20 2023-04-18 阿里巴巴集团控股有限公司 Data processing method and device and computing equipment
CN111352629A (en) * 2018-12-24 2020-06-30 北京奇虎科技有限公司 Optimization method and device for program call
CN111723002A (en) * 2020-05-18 2020-09-29 五八有限公司 Code debugging method and device, electronic equipment and storage medium
CN112596823A (en) * 2020-12-23 2021-04-02 支付宝(杭州)信息技术有限公司 Safety control method and device and electronic equipment

Similar Documents

Publication Publication Date Title
CN105630491A (en) Method and device for changing functions of program
JP6198939B2 (en) Method for loading driver and embedded device
KR102059705B1 (en) Adaptive portable libraries
CN103744709B (en) patch loading method and device
CN106293664A (en) Code generating method and device
US20230117105A1 (en) On-demand loading of dynamic scripting language code for reduced memory usage
CN105224370A (en) A kind of method and apparatus of loading ELF document
CN105335137A (en) Method and device used for processing source file
CN105224343A (en) A kind of renewal reminding method of application program and device
CN105760184A (en) Method and device for loading component
CN108614702B (en) Byte code optimization method and device
CN111198868A (en) Intelligent sub-database real-time data migration method and device
CN104298534A (en) Programming method and device based on Lua language
US10083125B2 (en) Method to efficiently implement synchronization using software managed address translation
US9116714B2 (en) Methods and systems for file processing
CN103488517A (en) PHP code compiling method and device and PHP code running method and device
CN104424239A (en) Resource file loading method and device
CN104461384A (en) Data write-in method and storage device
CN109558121A (en) Development approach, device, equipment and the storage medium of interface drive program
CN105786525A (en) Method and device for transplanting code from process model to thread model
CN105760382A (en) Method and device for importing excel data into database
CN105808451A (en) Data caching method and related apparatus
CN104506630A (en) Method, server and system for generating authority data on basis of user roles
CN109086362A (en) The management method of multimode project
CN111984241B (en) Method, device, equipment and medium for dynamically taking effect of online codes

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20160601