Abstract:
A method for predicting lost mobile devices. The method includes, identifying, by one or more processors, one or more pre-designated locations, where each of the one or more pre-designated locations contains devices and a main device to be tracked. The one or more processors receive information from the devices. The one or more processors derive a common usage pattern of the main device based on, the information from the devices. The pattern is associated with a location of the main device. The one or more processors determine whether the main device follows substantially all of the common usage pattern. Finally, in response to determining the main device does not follow substantially all of the common usage pattern, the one or more processors sends at least one different types of alerts to at least one predetermined device of the devices.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    The present invention relates generally to mobile communications, and more specifically to automatically providing a notification of a misplaced mobile communication device using pattern recognition. 
         [0002]    Electronic mobile computing devices (‘mobile devices’), such as cellular phones, smart phones, mobile phones, Wi-Fi phones, laptop computers, tablet computers, netbooks, handheld computers, personal organizers, e-reading devices, gaming devices and the like, provide instantaneous communication and data exchange without geographic constraints. Mobile devices include Near Field Communication (NFC), which provides radio frequency communication by bringing two or more NFC capable devices in proximity with each other, as well as Global Positioning Systems (GPS) wherein mobile devices can monitor their position and present a location on a local or remote display. Such mobile devices may be misplaced, lost, or stolen due to their frequent use, compact size, and high value. 
       SUMMARY 
       [0003]    According to one embodiment of the present invention, a method is provided, the method comprising: identifying, by one or more processors, one or more pre-designated locations, wherein each of the one or more pre-designated locations contains a plurality of devices, including a main device to be tracked; receiving, by the one or more processors, information from the plurality of devices; deriving a common usage pattern of the main device based on, the information from the plurality of devices, wherein the common usage pattern is associated with a location of the main device; determining whether the main device follows substantially all of the common usage pattern; and in response to determining the main device does not follow substantially all of the common usage pattern, sending at least one different type of alert to at least one predetermined device of the plurality of devices. 
         [0004]    Another embodiment of the present invention provides a computer program product for message transfer, based on the method described above. 
         [0005]    Another embodiment of the present invention provides a computer system for message transfer, based on the method described above. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0006]      FIG. 1  is a functional block diagram illustrating an environment, in accordance with an embodiment of the present invention; 
           [0007]      FIG. 2  is a flowchart illustrating operational steps for detecting and notifying a user of a misplaced device, executing within the environment of  FIG. 1 , in accordance with an embodiment of the present invention; and 
           [0008]      FIG. 3  is a block diagram of internal and external components of the computer systems of  FIG. 1 , in accordance with an embodiment of the present invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0009]    Mobile devices have become an essential part of daily life. The small size of mobile devices allows them to be easily portable. However, the portable nature of mobile devices facilitates such devices to occasionally be misplaced, lost, or stolen. 
         [0010]    Misplacement, as used hereinafter, encompasses the user&#39;s mere forgetfulness of the place the device was left, unintentionally leaving the device in a public or remote area, the wrongful taking of the device by a third party from the user without the user&#39;s consent, and the like. Additionally, a misplaced device may be any device of which its rightful user is, for any reason, no longer in possession of the device. In any event, misplacement of the device deprives the rightful user of the device until the device is retrieved. 
         [0011]    Therefore, it is desirable for a proactive approach, wherein the user is alerted if the device is misplaced, allowing the user to take quicker corrective action to locate the misplaced device before it is lost and/or stolen. Embodiments of the present invention provide systems and methods of providing a proactive and predictive approach in warning a mobile device user to take corrective action to locate a misplaced device before it is lost, based on a user&#39;s specific pattern of use. Embodiments of the present invention provide methods, systems, and computer program products for predicting and notifying a user of a lost mobile device based on a learned pattern of device use and proximity to other known devices. 
         [0012]    The present invention will now be described in detail with reference to the Figures.  FIG. 1  is a functional block diagram depicting environment  100 , in accordance with one embodiment of the present invention.  FIG. 1  provides only an illustration of one embodiment and does not imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made by those skilled in the art without departing from the scope of the invention, as recited by the claims. 
         [0013]    In the depicted embodiment, environment  100  includes server  150  and checkpoint  105 , which contains mobile device  110 , known environment device  120 , and alternative communication device  130 , all interconnected over network  140 . 
         [0014]    Network  140  may be a local area network (LAN), a wide area network (WAN), such as the Internet, the public switched telephone network (PSTN), a mobile data network (e.g., wireless Internet provided by a third or fourth generation of mobile phone mobile communication), a private branch exchange (PBX), any combination thereof, or any combination of connections and protocols that will support communications between mobile device  110 , known environment device  120 , alternative communication device  130 , and server  150 , in accordance with embodiments of the invention. Network  140  may include wired, wireless or fiber optic connections. Environment  100  may include additional computing devices, servers or other devices not shown. 
         [0015]    Similar to network  140 , PAN  145  may be a computer network with a small geographic scope. Computer networks with a small geographic scope range from NFC to Local Area Networks (LANs). A computer network with a small geographic scope typically does not have a connection to the Internet or other remote networks. PAN  145  can be used for communication among mobile devices themselves (intrapersonal communication) or for connecting to a higher level network (e.g., the Internet). A wireless personal area network (WPAN) is a PAN carried over wireless network technologies such as Bluetooth® or peer-to-peer communications over a wireless LAN (Bluetooth is a registered trademark of Bluetooth SIG, Inc.). In embodiments of the present invention, mobile device  110  and known environment device  120  each have the necessary hardware to allow for communication over any preconfigured type of PAN  145  used for communication between them (e.g., a Bluetooth radio). 
         [0016]    In the exemplary embodiment, checkpoint  105  includes mobile device  110 , known environment device  120 , and alternative communication device  130 . The devices within checkpoint  105  can communicate with server  150  over network  140 . Additionally, checkpoint  105  can facilitate communication between the devices within checkpoint  105 . For example, mobile device  110  and at least one known environment device  120  can communicate with each other within checkpoint  105 . Checkpoint  105  can be, for example, the home, a personal vehicle used for transportation, or a place of work. In other embodiments, more than one checkpoint may be implemented within environment  100 . 
         [0017]    Mobile device  110  may be any electronic mobile computing device capable of instantaneous communication and data exchange, and capable of communicating with server  150  over network  140 . For example mobile device  110  includes, but is not limited to, cellular phones, smart phones, mobile phones, Wi-Fi phones, laptop computers, tablet computers, desktop computers, handheld computers, netbooks, personal organizers, e-reading devices, and the like. Mobile device  110  can recognize nearby known environment device  120  through Personal Area Network (PAN)  145 , Bluetooth®, NFC, or any other method wherein a mobile device can recognize other nearby devices within a given checkpoint  105 . Mobile device  110  contains pattern detection program  160 A. 
         [0018]    Known environment device  120  may be any electronic mobile computing device capable of instantaneous communication and data exchange, and capable of communicating with server  150  over network  140 . Examples of known environment device  120  include: cellular phones, smart phones, mobile phones, Wi-Fi phones, laptop computers, tablet computers, desktop computers, handheld computers, netbooks, personal organizers, e-reading devices, smart TV&#39;s gaming devices, and the like. Each known environment device  120  is located in a specific checkpoint  105 . In this exemplary embodiment, known environment device  120  can recognize nearby mobile device  110  through PAN  145 , wireless personal area network (WPAN), carried over wireless technologies, such as Bluetooth, NFC, or any other method wherein a mobile device can recognize other nearby devices within a given checkpoint  105 . Known environment device  120  includes pattern detection program  160 B. 
         [0019]    For example, if checkpoint  105  is the user&#39;s home, known environment device  120  may be his home computer, home tablet, home smart TV, or any other device on which pattern detection program  160 B can operate and connect to network  140 . Similarly, if checkpoint  105  is the user&#39;s place of work, then known environment device  120  may be his office computer, office laptop, office smart phone, or any other device on which pattern detection program  160 B can operate and connect to network  140 . In another example, if checkpoint  105  is the user&#39;s vehicle, then known environment device  120  may be his navigation system, the vehicle&#39;s innate cellular data program, or any other device on which pattern detection program  160 B can operate. 
         [0020]    Alternative communication device  130  may be any electronic device capable of instantaneous communication and data exchange, and capable of communicating with server  150  over network  140 . Alternative communication device  130  may be a vehicle hands free audio system, a computer, a smart watch, a smart TV, SMS, and the like. The type of alternative communication device  130  is dependent on checkpoint  105 . Each checkpoint (e.g., home, office, car) has at least one designated alternative communication device  130 . Alternative communication device  130  includes feedback module  170 . 
         [0021]    Feedback module  170  can alert a user through numerous means (e.g., user interface, audio feedback, haptic feedback, visual alerts, etc.) that mobile device  110  has been misplaced. Feedback module  170  receives a signal from pattern detection program  160  to notify the user through a predetermined means, when there is a deviation in the normal use pattern of mobile device  110 . Feedback module  170  notifies the user via numerous methods when there is a deviation in the normal use pattern of mobile device  110 . Feedback module  170  may involve an audio, haptic, and/or visual alerts, etc. Alternatively feedback module  170  may also utilize a user interface, wherein an e-mail, or similar message type is sent to a specific receiver source, thereby alerting the user. Additionally, in each checkpoint, the user can have a different device notify the user, if mobile device  110  is misplaced. For example, at the home checkpoint, the misplaced mobile device notification may be sent by feedback module  170  of a designated home alternative communication device  130 ; whereas at the work checkpoint the misplaced mobile device notification may be sent by feedback module  170  of a designated work alternative communication device  130 . 
         [0022]    In other embodiments, alternative communication device  130  and known environment device  120  can be combined into a single device. Thus, feedback module  170 , pattern detection program  160 B, and a means to connect to PAN  145  are contained within known environment device  120 . Therefore, if a pattern deviation is detected, pattern detection program  160  can be configured to alert the user via feedback module  170  contained within a specific known environment device  120 . 
         [0023]    In the exemplary embodiment, server  150  is a server computer. In other embodiments, server  150  may be a management server, a web server or any other electronic device capable of receiving and sending data. In another embodiment, server  150  may represent a server computing system utilizing multiple computers as a server system, such as in a cloud computing environment. Server  150  contains pattern detection program  160 , pattern database  153 , and pattern analyzer engine  155 . 
         [0024]    Mobile device  110 , known environment device  120 , alternative communication device  130 , and server  150  may each include components as depicted in further detail with respect to  FIG. 3 . 
         [0025]    In this exemplary embodiment, pattern detection programs  160 A and  160 B are programs that run in the background of their respective devices. Pattern detection programs  160 A and  160 B are different representations of the same application on different devices. Specifically, pattern detection programs  160 A and  160 B operate generally to connect mobile device  110  to known environment device  120 , when mobile device  110  and known environment device  120  are at the same checkpoint (e.g., able to recognize other devices over a personal area network). Pattern detection programs  160 A and  160 B can track current geological locations and proximity to known environment device(s)  120  and send such information, at predetermined time intervals, to pattern detection program  160 , located on server  150 , via network  140 . 
         [0026]    In this exemplary embodiment, pattern detection program  160  operates generally to provide support functions for pattern detection programs  160 A and  160 B. Such support functions may include receiving, forwarding, and managing all information between mobile device  110 , known environment device  120 , alternative communication device  130  (if applicable), as well as other devices not depicted in environment  100 . Pattern detection program  160  communicates and provides alerts through feedback module  170 . 
         [0027]    Pattern database  153  can be implemented using any database architecture known in the art such as, for example, a relational database, an object-oriented database, and/or one or more tables. Pattern database  153  stores all information received from mobile device  110  and known environment device  120 . Information stored in pattern database  153  contains at least: checkpoint location, date, and time information for all devices running pattern detection program (e.g., only two devices depicted in  FIG. 1 ). Additional information stored on pattern database  153  includes information detailing when mobile device  110  and known environment device  120  are near each other in a given checkpoint. 
         [0028]    Pattern analyzer engine  155  analyzes all information contained in pattern database  153  relating to a specific user&#39;s mobile device  110 , within each designated checkpoint  105 . Pattern analyzer engine  155  detects use patterns of mobile device  110  in proximity to known environment device  120 , within a given checkpoint  105  at a given day and time. Pattern analyzer engine  155  uses an algorithm to identify and determine within a specific checkpoint  105  on a specific day, date, and/or time, which known environment device(s)  120  are typically near mobile device  110 . Thereby, if a deviation in pattern is detected by pattern analyzer engine  155 , pattern detection program  160  sends a predetermined type of alert to alternative communication device  130 , via network  140 . Such alert notifies the user that mobile device  110  has been misplaced, allowing the user to recover the device before it is lost or stolen. 
         [0029]    For example, a user&#39;s smart phone (e.g., mobile device  110 ) and a user&#39;s laptop (e.g., known environment device  120 ) are located at the user&#39;s place of work (e.g., within the same checkpoint  105 ), and both devices are connected using PAN  145 . Both the user&#39;s smart phone and the user&#39;s laptop transmit a recognition of the other device along with the location and time, at predetermined intervals, to server  150  through network  140 . However, for example, if only the user&#39;s laptop is located within the user&#39;s place of work, then the user&#39;s laptop transmits, at predetermined intervals, that no other device(s) are present within the user&#39;s place of work, along with the specific date and time information, to server  150  through network  140 . 
         [0030]    In both of the aforementioned examples, device information is collected by pattern detection program  160  then stored in pattern database  153 . Pattern analyzer engine  155  creates normal pattern of use parameters and searches pattern database  153  for deviations from the normal pattern of use parameters. Upon detection of a deviation by pattern analyzer engine  155 , pattern detection program  160  sends a message to feedback module  170 , within alternative communication device  130 , alerting the user that mobile device  110  may be misplaced. 
         [0031]    In other embodiments, there may be additional known environment devices  120  within each pre-designated checkpoint  105  connected to server  150  through network  140 . All additional known environment devices  120  are able to interconnect with each other, as well as mobile device  110 , via PAN  145 . 
         [0032]      FIG. 2  depicts flowchart  200  illustrating operational steps of pattern detection program  160  for detecting and notifying a user of a misplaced device, executing within the environment of  FIG. 1 , in accordance with one embodiment of the present invention. 
         [0033]    In this exemplary embodiment, three checkpoints are used as examples illustrating certain features of the presently described invention: the user&#39;s home, the user&#39;s office, and the user&#39;s vehicle. 
         [0034]    In step  210 , pattern detection program  160  receives pre-configuration data from all connected programs and from a user. Pre-configuration of pattern detection program  160  is conducted independently on mobile device  110  and each known environment device  120 , as well as alternative communication device  130  (if such device is located in the checkpoint). 
         [0035]    A user of mobile device  110  activates and configures pattern detection program  160 A. For example, a user can configure mobile device  110  to a multitude of settings involving, but not limited to, safe locations for the user (specific common locations—home, work, etc.), specific travel areas, how often alerts are sent to the user, frequency of inter-device communications, communications with the server, and automatic and/or manual actions to take if the mobile device is misplaced, etc. 
         [0036]    When pattern detection program  160 A is activated on mobile device  110 , one embodiment allows the user to set certain checkpoints  105  in which mobile device  110  will learn the common environments, such as the user&#39;s home, office, vehicle or even certain geographical areas, such as a neighborhood, city, state or even country. 
         [0037]    In some embodiments, pattern detection program  160 A is configured to allow a user to remotely wipe all data contained on the mobile device in the event the device is lost. Similarly, in other embodiments, a user can remotely copy and/or transfer data from device  110  to another device when the mobile device is misplaced. In yet another embodiment, the user can remotely turn on a GPS or other similar known means to track the location of the device in order to retrieve the misplaced mobile device  110 . The user can also configure pattern detection program  160 A to lock mobile device  110  using any known method of locking the device such as: password, voice recognition, facial recognition, retinal scan, finger print identification, or any other security protection of the like. 
         [0038]    Although many internal settings are configured prior to use, settings can be changed at a later point by the user through a pattern detection program interface. 
         [0039]    A user may also activate and configure pattern detection program  160 B on each known environment device  120 , within each commonly used checkpoint  105 . Each known environment device  120  is registered to know which checkpoint it belongs to. For example, ‘home computer’ knows it is located within the ‘home’ checkpoint, whereas, the user&#39;s work computer is identified as being located in the user&#39;s place of work. 
         [0040]    In step  220 , pattern detection program  160  updates pattern database  153 . Mobile device  110  and all known environment devices  120  continuously send data to pattern detection program  160 , at pre-determined intervals. In this exemplary embodiment, pattern analyzer engine  155  sorts through pattern database  153  and generates a normal pattern of use of mobile device  110 , based on the location of mobile device  110 , responsive to receiving new data from mobile device  110  and known environment devices  120 . For example, pattern analyzer engine  155  detects a normal use pattern if, from 8:00 am to 5:00 pm, Monday through Friday, mobile device  110  is located at a user&#39;s office checkpoint  105 . Such a pattern is observed when mobile device  110  is always paired with known environment device  120 , (for example, user&#39;s office computer), at certain date/time intervals. In another example, patent analyzer engine  155  detects a pattern if, whenever known environment device  120  is located within a user&#39;s vehicle checkpoint  105 , (for instance the vehicle&#39;s navigation system) and it is on, it is always connected to mobile device  110 . As mobile device  110  and all known environment devices  120  continue to send updated data to pattern detection program  160 , the normal pattern of use of mobile device  110  becomes more accurate, thereby providing an efficient and expedited warning to the user, if mobile device  110  is misplaced. 
         [0041]    In step  230 , pattern detection program  160  detects that there is a deviation of the normal pattern of use. In this exemplary embodiment, a deviation from a pattern can be detected if mobile device  110  is not at a location within the normal pattern of use. For example, a normal use pattern reveals that whenever a user is at the vehicle checkpoint  105 , the user always has mobile device  110  with him. However a deviation is detected if known environment device  120  does not detect mobile device  110  within vehicle checkpoint  105 . In another example, if mobile device  110  is in a new location or outside the pre-configuration location, a deviation is detected as it is not in a normal pattern of use. 
         [0042]    In another embodiment, a deviation from the pattern of normal use is detected when the mobile device is in a specific location when it is usually not within the location. For example, if a normal use pattern reveals that mobile device  110  is never within home checkpoint  105  during 9:00 am to 4:00 pm on Mondays, and known environment device  120  detects mobile device  110  within a home checkpoint at 10:00 am on a Monday, then a deviation from the normal use pattern is detected. 
         [0043]    In yet another embodiment, a deviation from the pattern of normal use is detected when a device is not in a specific location when it usually is. For instance, if the normal use pattern determines that mobile device  110  is usually within work checkpoint  105  during 9:00 am to 4:00 pm on Mondays, and known environment device  120  does not detect mobile device  110  within checkpoint at 10:00 am on a Monday, then a deviation from the normal use pattern is detected. 
         [0044]    In step  240 , pattern detection program  160  sends an alert to alternative communication device  130  in response to detecting a deviation from the normal use pattern. In this exemplary embodiment, when a deviation of the normal use pattern is detected by pattern analyzer engine  155 , pattern detection program  160  informs the user that mobile device  110  is misplaced via feedback module  170 . Pattern detection program  160  takes certain actions depending on its earlier established configurations. 
         [0045]    For example, if a given checkpoint is the user&#39;s vehicle, and known environment device  120  does not detect mobile device  110 , then feedback module  170  can alert the user. In the above example, if the vehicle navigation system (known environment device  120 ) does not detect mobile device  110 , then pattern detection program  160  may be configured to have vehicle navigation system (acting as alternative communication device  130 ) inform the user that mobile device is misplaced. 
         [0046]    Pattern detection program  160  can be configured to alert the user in numerous ways, depending on earlier established configurations. For example, if a deviation is detected at office checkpoint  105 , pattern detection program  160  can be configured to send an email to the user through feedback module  170  of alternative communication device  130 . Similarly, pattern detection program  160  can be configured to send an SMS message to the user&#39;s mobile phone, or send a pop-up message to the user&#39;s smart TV, through feedback module  170  of alternative communication device  130 . 
         [0047]    In other embodiments, if a specific type of user defined deviation occurs, pattern detection program  160  can be configured to take certain actions. For instance, the configuration can remotely wipe all data contained on the mobile device; remotely turn on a GPS or other similar known means to manually track mobile device  110  location; lock mobile device  110  using any known method of locking device such as: password, voice recognition, facial recognition, rental scan, finger print identification, or any other security protection of the like. 
         [0048]    In another embodiment, when a specific deviation occurs regularly, and the user habitually disregards the alert, pattern analyzer engine  155  learns that the user does not consider this mobile device  110  misplaced, and no longer considers that specific deviation (which activated the alert) a deviation from the normal pattern of use. 
         [0049]    For example, in the home checkpoint  105  the user&#39;s mobile device  110  may be a tablet. Known environment devices  120  may consist of a home computer, a laptop, user&#39;s smart phone and a smart TV. The alternative communication device  130  is the user&#39;s smart watch. If the tablet (mobile device  110 ) is always in the home checkpoint  105 , all the aforementioned known environment devices  120  are all connected to the tablet (step  220 ). If someone steals the tablet, the user is immediately notified via audible and haptic alerts on the user&#39;s smart watch (alternative communication device  130 ), when none of the known environment devices  120  are able to connect to the tablet, regardless if the user is within the home checkpoint  105 . 
         [0050]    In another example, the checkpoint is the user&#39;s vehicle, and the user&#39;s mobile device  110  may be a smart phone. Known environment device  120  may include the vehicle&#39;s hands free system. The alternative communication device  130  is the vehicle&#39;s navigation system. A normal use pattern is identified when the user always has his smart phone with him when he enters the vehicle. Therefore, a deviation in the normal use pattern occurs if the user enters the vehicle without his smart phone, for instance if the user leaves the smart phone in a store. Upon detection of the normal use pattern deviation, feedback module  170  of the vehicle&#39;s navigation system (alternative communication device  130 ) verbally informs the user that the smart phone (mobile device  110 ) may be misplaced. This allows the user to retrieve his smart phone before ever leaving the parking lot, thereby minimizing the potential for theft of the smart phone. 
         [0051]    In yet another example, the checkpoint is the user&#39; s office, and the user&#39;s mobile device  110  may be a smart phone. Known environment device  120  may include the user&#39;s work computer. The alternative communication device  130  is also the user&#39;s work computer. The smart phone (mobile device  110 ) is always in the office checkpoint  105  between 8:00 am and 12:00 pm and 1:00 pm though 5:00 pm, Monday through Friday. A normal use pattern is identified when the user always has his smart phone with him while he is at work, near his work computer. Therefore, a deviation in the normal use pattern occurs if the user returns from his lunch break without his smart phone. Upon detection of the normal use pattern deviation, feedback module  170  sends an email to the user&#39;s work computer (i.e., known environment device  120  and alternative communication device  130 ), alerting the user that the smart phone (mobile device  110 ) may be misplaced. This allows the user to expeditiously recover his smart phone. 
         [0052]      FIG. 3  is a block diagram of internal and external components of a computer system  300 , which is representative the computer systems of  FIG. 1 , in accordance with an embodiment of the present invention. It should be appreciated that  FIG. 3  provides only an illustration of one implementation and does not imply any limitations with regard to the environments in which different embodiments may be implemented. In general, the components illustrated in  FIG. 3  are representative of any electronic device capable of executing machine-readable program instructions. Examples of computer systems, environments, and/or configurations that may be represented by the components illustrated in  FIG. 3  include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, laptop computer systems, tablet computer systems, cellular telephones (e.g., smart phones), multiprocessor systems, microprocessor-based systems, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices. 
         [0053]    Computer system  300  includes communications fabric  302 , which provides for communications between one or more processors  304 , memory  306 , persistent storage  308 , communications unit  312 , and one or more input/output (I/O) interfaces  314 . Communications fabric  302  can be implemented with any architecture designed for passing data and/or control information between processors (such as microprocessors, communications and network processors, etc.), system memory, peripheral devices, and any other hardware components within a system. For example, communications fabric  302  can be implemented with one or more buses. 
         [0054]    Memory  306  and persistent storage  308  are computer readable storage media. In this embodiment, memory  306  includes random access memory (RAM)  316  and cache memory  318 . In general, memory  306  can include any suitable volatile or non-volatile computer readable storage media. Software (e.g., pattern detection programs  160 ,  160 A, and  160 B, etc.) is stored in persistent storage  308  for execution and/or access by one or more of the respective processors  304  via one or more memories of memory  306 . 
         [0055]    Persistent storage  308  may include, for example, a plurality of magnetic hard disk drives. Alternatively, or in addition to magnetic hard disk drives, persistent storage  308  can include one or more solid state hard drives, semiconductor storage devices, read-only memories (ROM), erasable programmable read-only memories (EPROM), flash memories, or any other computer-readable storage media that is capable of storing program instructions or digital information. 
         [0056]    The media used by persistent storage  308  can also be removable. For example, a removable hard drive can be used for persistent storage  308 . Other examples include optical and magnetic disks, thumb drives, and smart cards that are inserted into a drive for transfer onto another computer readable storage medium that is also part of persistent storage  308 . 
         [0057]    Communications unit  312  provides for communications with other computer systems or devices via a network (e.g., network  140 ). In this exemplary embodiment, communications unit  312  includes network adapters or interfaces such as a TCP/IP adapter cards, wireless Wi-Fi interface cards, or 3G or 4G wireless interface cards or other wired or wireless communication links. The network can comprise, for example, copper wires, optical fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. Software and data used to practice embodiments of the present invention can be downloaded to server  150  through communications unit  312  (e.g., via the Internet, a local area network or other wide area network). From communications unit  312 , the software and data can be loaded onto persistent storage  308 . 
         [0058]    One or more I/O interfaces  314  allow for input and output of data with other devices that may be connected to computer system  300 . For example, I/O interface  314  can provide a connection to one or more external devices  320  such as a keyboard, computer mouse, touch screen, virtual keyboard, touch pad, pointing device, or other human interface devices. External devices  320  can also include portable computer readable storage media such as, for example, thumb drives, portable optical or magnetic disks, and memory cards. I/O interface  314  also connects to display  322 . 
         [0059]    Display  322  provides a mechanism to display data to a user and can be, for example, a computer monitor. Display  322  can also be an incorporated display and may function as a touch screen, such as a built-in display of a tablet computer. 
         [0060]    The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention. 
         [0061]    The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire. 
         [0062]    Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device. 
         [0063]    Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention. 
         [0064]    Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions. 
         [0065]    These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks. 
         [0066]    The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks. 
         [0067]    The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). 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 executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions. 
         [0068]    The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The terminology used herein was chosen to best explain the principles of the embodiment, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.