A key contribution to knowledge is the ability to experience an event within one's social network. Experiencing an event within one's social network can be understood as the ability of watching an event, such as a sports game being broadcast on television, and at the same time interacting with one's social network about the event itself. This could involved exchanging/responding to event-related SMS messages during a game or movie, event-related comments using a social network website, as well as likes and dislikes, event-related tweets, event-related voice messages and other event-related social network exchanges, while the event is actually happening.
Many people have very busy schedules and there are lots of event choices occurring every day. This results in time conflicts during which people cannot always watch events live. Some people enjoy experiencing live events and at the same time interacting with friends, family, or others within their social circle. If a person misses an event, then there is a high probability that they will be informed about the outcome by people within their social network one way or another, eliminating the suspense, such as the outcome of a game. Today, using various devices and technology, it is relatively easy to record events and watch them later in tape delay mode. However, when watching an event at a later time, a person loses the social interaction which would have otherwise occurred if the event was being watched live.
An approach that delays presentation of social media communications corresponding to an event is provided. In the approach, social media communications received during an initial presentation of the event are stored. A time delay associated with each of the social media communications is recorded with the time delay being from the start time of the initial presentation of the event. During subsequent playback of the event, the approach retrieves the stored social media communications and presents the retrieved social media communications based upon the time delay associated with each of the communications from the start time of the subsequent event playback.
The foregoing is a summary and thus contains, by necessity, simplifications, generalizations, and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages of the present invention, as defined solely by the claims, will become apparent in the non-limiting detailed description set forth below.
The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings, wherein:
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, 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), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer, server, or cluster of servers. In the latter scenario, the remote computer may be connected to the user'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).
Aspects of the present invention are described below 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 program instructions. These computer 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 program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
Northbridge 115 and Southbridge 135 connect to each other using bus 119. In one embodiment, the bus is a Direct Media Interface (DMI) bus that transfers data at high speeds in each direction between Northbridge 115 and Southbridge 135. In another embodiment, a Peripheral Component Interconnect (PCI) bus connects the Northbridge and the Southbridge. Southbridge 135, also known as the I/O Controller Hub (ICH) is a chip that generally implements capabilities that operate at slower speeds than the capabilities provided by the Northbridge. Southbridge 135 typically provides various busses used to connect various components. These busses include, for example, PCI and PCI Express busses, an ISA bus, a System Management Bus (SMBus or SMB), and/or a Low Pin Count (LPC) bus. The LPC bus often connects low-bandwidth devices, such as boot ROM 196 and “legacy” I/O devices (using a “super I/O” chip). The “legacy” I/O devices (198) can include, for example, serial and parallel ports, keyboard, mouse, and/or a floppy disk controller. The LPC bus also connects Southbridge 135 to Trusted Platform Module (TPM) 195. Other components often included in Southbridge 135 include a Direct Memory Access (DMA) controller, a Programmable Interrupt Controller (PIC), and a storage device controller, which connects Southbridge 135 to nonvolatile storage device 185, such as a hard disk drive, using bus 184.
ExpressCard 155 is a slot that connects hot-pluggable devices to the information handling system. ExpressCard 155 supports both PCI Express and USB connectivity as it connects to Southbridge 135 using both the Universal Serial Bus (USB) the PCI Express bus. Southbridge 135 includes USB Controller 140 that provides USB connectivity to devices that connect to the USB. These devices include webcam (camera) 150, infrared (IR) receiver 148, keyboard and trackpad 144, and Bluetooth device 146, which provides for wireless personal area networks (PANs). USB Controller 140 also provides USB connectivity to other miscellaneous USB connected devices 142, such as a mouse, removable nonvolatile storage device 145, modems, network cards, ISDN connectors, fax, printers, USB hubs, and many other types of USB connected devices. While removable nonvolatile storage device 145 is shown as a USB-connected device, removable nonvolatile storage device 145 could be connected using a different interface, such as a Firewire interface, etcetera.
Wireless Local Area Network (LAN) device 175 connects to Southbridge 135 via the PCI or PCI Express bus 172. LAN device 175 typically implements one of the IEEE 0.802.11 standards of over-the-air modulation techniques that all use the same protocol to wireless communicate between information handling system 100 and another computer system or device. Optical storage device 190 connects to Southbridge 135 using Serial ATA (SATA) bus 188. Serial ATA adapters and devices communicate over a high-speed serial link. The Serial ATA bus also connects Southbridge 135 to other forms of storage devices, such as hard disk drives. Audio circuitry 160, such as a sound card, connects to Southbridge 135 via bus 158. Audio circuitry 160 also provides functionality such as audio line-in and optical digital audio in port 162, optical digital output and headphone jack 164, internal speakers 166, and internal microphone 168. Ethernet controller 170 connects to Southbridge 135 using a bus, such as the PCI or PCI Express bus. Ethernet controller 170 connects information handling system 100 to a computer network, such as a Local Area Network (LAN), the Internet, and other public and private computer networks.
While
The Trusted Platform Module (TPM 195) shown in
Further details and examples depicting various embodiments of the approach that records social media communications and presents them during a later playback of the event are shown in
Various sets of content filter data can included in data filter restrictions 305. For example, content filter data can be a content provider set of content filter data, provided by content providers 350. Additionally, content filter data can be user configurable data, such as preferences, configured by user 310 of the collaborative environment. When potential spoiler content is identified by a process running at collaborative environment 300, the process inhibits display of the potential spoiler content to users of the environment, such as user 310. Spoiler content is social media communications that relate to an event that the user plans to watch later, such as a sports event that the user has recorded on the user's digital video recorder (DVR). In one embodiment, the collaborative environment identifies spoiler content according to a semantic analysis that is performed on the received user text entry. During the semantic analysis, the user text entry is parsed and natural language processing is used to extract context-independent aspects of the user text entry's meaning, including the semantic roles of entities mentioned in the user text entry, such as character names found in television episodes, games, sporting events, etc., as well as quantification information, such as cardinality, iteration, and dependency information included in the user text entry.
In one embodiment, further evaluation of the social media communications is performed by comparing the social media communications content to various sets of content filter data. For example, content provider 330 may provide content filter data that provides details about television episodes in a particular series and indicates which episodes are older episodes that are not restricted by the content filter data and which episodes are restricted by the content filter data. If a post made by a user of environment 320 matches one of the non-restricted episodes, such as an older episode, then the post is presented to the user without delay. However, if the social media communications made by the user matches one of the restricted episodes, such as the currently playing episode, then the social media communications are stored in data store 340 and inhibited from display to user 310.
In one embodiment, the user can provide another set of content filter data, such as a set of preferences, that is used to identify spoiler content. This embodiment may be used separately or in conjunction with sets of content filter data provided by content providers 350. For example, the user may indicate that he or she does not follow a particular television series and therefore does not care whether potential social media communications regarding such television series are displayed. In this example, the user's preferences set forth in the content filter data may override content filter data provided by content providers 350 or may be used separately such as in the case when the content provider does not provide content filter data. In this example, the social media communications are displayed to the user based on the user's preferences indicated in the user supplied content filter data. While the user may not be interested in the television series, the user may be interested and wish to avoid seeing social media communications from other television series, other types of content, such as games or live sporting events. Spoiler setup performed by a user to indicate the user's preferences and build a personalized set of content filter data is shown in
In one embodiment, the user configures the system by adding filter preferences regarding configured events which are stored in data store 330. Configured events include the events, such as sports programs, etc., that the user will be watching after the original broadcast of the event. The events that the user will watch later are stored in saved content data store 360. For example, the user could indicate that he wants to record a particular sports event on the user's DVR which could automatically cause the event to be recorded and stored in data store 360 as well as having the event, and metadata pertaining to the event, added to configured events data store 330. Message filtering system 305 utilizes the configured events data stored in data store 330 to identify social media communications related to a configured event. When a social media communications related to a configured event is identified, such as a text message pertaining to the sports event being recorded, then such related social media communications are stored in data store 340 for future, synchronized presentation to the user during playback of the event. A time delay is used to determine when the social media communication occurred based upon when the event commenced. For example, the time delay may indicate that the social media communications was received one hour after the original event occurred. This delay is also recorded so that, during playback of the event, the stored social media communications can be presented to the user at the appropriate time (e.g., one hour after playback of the event commenced). Delayed content delivery process 370 delivers the recorded event and the stored social media communications to user 310 in a synchronized manner as described above. In one embodiment, social media communications that were originally sent using a variety of platforms are delivered, during playback, to a platform of the user's preference. For example, during the sports event, the user may have been sent three messages, two as cell phone text messages and one via a social media website. However, the user is watching the playback of the event on a network-connected high definition television so the user may indicate that he prefers that the stored social media communications be delivered and presented on the high definition television. Likewise, the user may wish that all of the recorded social media communications be delivered to the user's smart phone at text messages regardless of the platform on which they were initially transmitted.
At step 425, the user selects the first general filter that the user wishes to configure (e.g., any sports show, any reality show, any electronic game, etc.). At step 430, the process receives restriction parameters pertaining to the selected general filter (e.g., number of days, episodes, etc.) for which the selected filter is applied. At step 435, the user selects the first content filter type for the selected general filter from step 425. For example, the general filter may be any reality show and the selected filter type, selected at step 435, may be any content pertaining to any reality show, content containing scores pertaining to any reality show, content containing statistics pertaining to any reality show, content containing contestants competing, eliminated, etc. that pertain to any reality show, and the like. At step 440, the process receives restriction parameters to use with the selected filter type for the general filter, such as the number of days the content pertaining to scores in a reality show is considered spoiler data, the number of episodes of reality show data to consider restricted (e.g., the current episode and x previous episodes, etc.), as well as other restriction parameters. A decision is made as to whether there are more filter types that the user wishes to configure for the selected general filter (decision 445). If there are additional filter types that the user wishes to configure, then decision 445 branches to the “yes” branch which loops back to select and set the filter type and receive restriction parameters pertaining to the next selected filter type. This looping continues until the user does not wish to set any additional filter types for the selected general filter, at which point processing branches to the “no” branch. A decision is made as to whether the user wishes to configure additional general filters (decision 450). If the user wishes to configure additional general filters, then decision 450 branches to the “yes” branch which loops back to select the next general filter, the filter types for the next general filter, and the corresponding restriction parameters as described above. This looping continues until the user does not wish to configure additional general filters, at which point decision 450 branches to the “no” branch for user setup processing of specific filters.
At step 455, the user selects the first specific filter, such as a specific game, event, television program, live broadcast, and the like. For example, the user may select a specific television series, a specific sporting event, a specific electronic game, etc. At step 465, the user selects the first content filter type for the selected specific filter that was selected at step 455. For example, the specific filter may be a particular sporting event and the selected filter type, selected at step 465, may be any content pertaining to any aspect of the sporting event, content containing scores pertaining to the sporting event, content containing statistics pertaining the sporting event, content containing contestants competing, eliminated, etc. in the sporting event, and the like. At step 470, the process receives restriction parameters to use with the selected filter type for the specific filter, such as the number of days the content pertaining to scores in the sporting event are considered spoiler data, as well as other restriction parameters. A decision is made as to whether there are more filter types that the user wishes to configure for the selected specific filter (decision 475). If there are additional filter types that the user wishes to configure, then decision 475 branches to the “yes” branch which loops back to select and set the filter type and receive restriction parameters pertaining to the next selected filter type. This looping continues until the user does not wish to set any additional filter types for the selected specific filter, at which point decision 475 branches to the “no” branch. A decision is made as to whether the user wishes to configure additional specific filters, such as additional games, television series, etc. (decision 480). If the user wishes to configure additional specific filters, then decision 480 branches to the “yes” branch which loops back to select the next specific filter, the filter types for the next specific filter, and the corresponding restriction parameters as described above. This looping continues until the user does not wish to configure additional specific filters, at which point decision 480 branches to the “no” branch.
At step 485, the process saves the user configured content filter data in data store 490. User setup of spoiler alert data to use as content filter data thereafter ends at 495.
At steps 530 through 560 facts pertaining to the selected chapter are gathered by the producer to assist the spoiler identification process in its semantic analysis of posts in order to better match posts with content. At step 530, the first fact pertaining to the selected chapter is selected or identified by the provider, such as an action performed by a main character. At step 535, the provider identifies the selected fact's location in the content (media), such as which act the fact occurs, at which time position in the chapter, etc. At step 540, the selected fact's location is identified within the context of the content, such as a level, act, etc. At step 545, related characters to the selected fact are identified. At step 550, affected characters pertaining to the selected fact are identified and, at step 555, any additional metadata pertaining to the selected fact are identified by the provider. A decision is made as to whether there are more facts to describe for the selected chapter (decision 560). If there are more facts to describe, decision 560 branches to the “yes” branch which loops back to select the next fact in the chapter and gather data pertaining to the selected fact as described above. This looping continues until there are no more facts that the provider wishes to describe pertaining to the selected chapter, at which point decision 560 branches to the “no” branch. The gathering of fact data as described above could additionally use other content-related materials, such as scripts, etc. which could be analyzed to gather the facts pertaining to chapters, character involvement, fact location, etc.
A decision is made as to whether there are additional chapters in the content for which the provider is providing spoiler data (decision 570). If there are additional chapters to process, then decision 570 branches to the “yes” branch which loops back to select the next chapter of the selected content, gather the restricted and unrestricted chapter data, and process the facts as described above. This looping continues until there are no more chapters that the provider wishes to describe pertaining to the selected content, at which point decision 570 branches to the “no” branch. A decision is made as to whether there are additional content offerings (e.g., television series, games, etc.) for which the provider is providing spoiler data (decision 575). If there are content offerings to process, then decision 575 branches to the “yes” branch which loops back to select the next content being described by the provider, and gather the chapter data, restriction data, and fact data as described above. This looping continues until there are no more content offerings that the provider wishes to describe, at which point decision 575 branches to the “no” branch.
At step 580, the data gathered by the provider about the content is saved as content filter data in data store 590. Processing of the spoiler alert setup performed by the content provider thereafter ends at 595.
At predefined process 620, the spoiler identification engine processes individual custom user spoiler settings (see
If user configured content filter data is not being utilized by the spoiler identification engine (with decision 615 branching to the “no” branch) or if the user configured content filter data did not identify the user text entry as including spoiler content but the user wishes to utilize other available content filter data, such as content-provider content filter data, etc. (with decision 630 branching to the “yes” branch), then step 640 is executed by the spoiler identification engine to analyze the content of the received user text entry in order to identify any possible content fact data (data about content facts, etc.). A decision is made as to whether content fact data was identified (decision 640). If no content fact data was identified, then the user text entry does not include any spoiler content and decision 645 branches to the “no” branch whereupon, at step 680 the user text entry is posted to the collaborative environment without any spoiler tags. For example, if a user posts “I really like this show!”, no facts regarding the content are present in the post and, therefore, the user text entry can be posted without a spoiler alert. On the other hand, if content fact data is identified in the received user text entry submitted to the collaborative environment, then decision 645 branches to the “yes” branch for further analysis.
In one embodiment, the spoiler identification engine performs a semantic analysis on the received user text entry. During the semantic analysis, the user text entry is parsed at step 650 and natural language processing is used to extract context-independent aspects of the user text entry's meaning, including the semantic roles of entities mentioned in the user text entry, such as character names found in television episodes, games, sporting events, etc., as well as quantification information, such as cardinality, iteration, and dependency information included in the user text entry. At step 660, the extracted context-independent aspects of the received user text entry's meaning is compared to the content-provider's content filter data from data store 590 (see
On the other hand, if a match is identified between the extracted context-independent aspects of the received user text entry's meaning and the content-provider's content filter data, then decision 665 branches to the “yes” branch for further analysis. A decision is made as to whether the facts in the user text entry relate to a restricted chapter of content (decision 670). If the facts in the user text entry do not relate to a restricted chapter of content, perhaps they relate to an older episode, etc., then decision 670 branches to the “no” branch whereupon, at step 680 the user text entry is posted to the collaborative environment without any spoiler tags. On the other hand, if the facts in the user text entry relate to a restricted chapter of content, such as a program that the user is recording, etc., then decision 670 branches to the “yes” branch whereupon, at step 675, the received social media communications is stored in data store 340 for delayed presentation to the user when the user is watching a recording of the event. After the social media communication has been processed and either displayed without a spoiler alert tag or after inclusion of a spoiler alert tag and stored in data store 340 for delayed presentation, processing by the spoiler identification engine ends at 695. Note that when user configured content filter data are being used in the collaborative environment, the spoiler identification engine processing shown in
A decision is made as to whether the extracted context-independent aspects of the received user text entry's meaning match the broad-based user configured content filter data (decision 720). If a match is found, then decision 720 branches to the “yes” branch whereupon, at step 725, the broad-based user configured content filter data restrictions are compared to the potential spoiler content included in the user text entry. A decision is made as to whether the facts in the user text entry relate to a restriction set by a broad based filter (decision 730). If the facts in the user text entry do not relate to a restricted broad-based filter, then decision 730 branches to the “no” branch for further analysis to determine whether a user configured specific content filter data applies. On the other hand, if the facts in the user text entry relate to a restricted broad-based filter, then decision 730 branches to the “yes” branch whereupon, at step 735, the process stores the received post (social media communication) in data store 340. In addition, the process stores the time at which the social media communications was received establishing a time delay so that the recorded social media communications can be presented during playback of the recorded event at the appropriate time during playback. Processing thereafter returns to the calling routine (see
If the contents of the user text entry did not match any broad based user configured content filter data (decision 720 branching to the “no” branch) or if it was determined that the user configured broad based filters did not apply to the user text entry (decision 730 branching to the “no” branch), then analysis of user configured specific content filter data is performed starting at step 740 where the user configured specific content filter data is compared with the contents of the user text entry using the semantic analysis as discussed in relation to the broad based filters but here the semantic analysis is performed using the specific user configured content filter data. A decision is made as to whether the facts in the user text entry relate to a restriction set by a specific based content filter (decision 745). If the facts in the user text entry do not relate to a specific user configured content filter, then decision 745 branches to the “no” branch whereupon, at step 770 the user text entry is posted to the user's collaborative environment area without any spoiler tags. Of course, another user of the collaborative environment might have configured different settings where the same user text entry (post) is protected with a spoiler tag.
On the other hand, if the facts in the user text entry relates to a restricted specific-based user configured filter, then decision 745 branches to the “yes” branch whereupon, at step 750, the specific-based user configured content filter data restrictions are compared to the potential spoiler content included in the user text entry. A decision is made as to whether the facts in the user text entry relate to a restriction set by a broad based filter (decision 755). If the facts in the user text entry are not restricted based on a specific-based filter, then decision 755 branches to the “no” branch, whereupon at step 770 the user text entry is posted to the user's collaborative environment area without any spoiler tags. Once again, another user of the collaborative environment might have configured different settings where the same user text entry (post) is protected with a spoiler tag.
On the other hand, if the facts in the user text entry relate to a restricted specific-based filter that applies to the user text entry, then decision 755 branches to the “yes” branch whereupon, at step 760, process stores the received post (social media communication) in data store 340. In addition, the process stores the time at which the social media communications was received establishing a time delay so that the recorded social media communications can be presented during playback of the recorded event at the appropriate time during playback. Processing thereafter returns to the calling routine (see
Also, in one embodiment, similar to the spoiler processing shown in
At step 820, the system receives the playback event selection from the user with the user selecting from a set of saved event content stored in data store 360. Some events may have been stored to the user's local recording device, such as a DVR, etc., while other events may be stored at a content provider, such as the broadcaster, event host, etc., using on-demand technology.
At step 825, the system selects social media communications stored in data store 340 that pertain to the selected event that is being played back to the user. The social media communications relating to the selected event are stored in data store 830 for delivery during playback presentation.
At step 840, the system initializes a timer so that presentation of the social media communications can be synchronized to occur at times coinciding when the original social media communications were received during the initial presentation of the event. At step 850, the system commences playback of the recorded event to the user at the user's designated playback device. At step 860, throughout the playback process, the timer is continually incremented to coincide with the amount of the recorded event that has been played to the user. At step 870, the system checks the social media communications stored in data store 830 and compares the delay time of the social media communications with the current delay time established by the timer. A determination is made as to whether any social media communications were received at the current (incremented) timer value decision 875). If one or more social media communications were received at the current timer value, then decision 875 branches to the “yes” branch whereupon, at step 880, the social media communications that were received at the current timer value are displayed to the user on the playback device designated by the user. On the other hand, if no social media communications were received at the current timer value, then decision 875 branches to the “no” branch bypassing step 880.
A determination is made as to whether to continue playback (decision 890). If playback has not completed, then decision 890 branches to the “yes” branch which loops back to continue playback of the recorded event, incrementing the timer, and displaying time-appropriate social media communications as outlined above. This looping continues until playback is terminated (either the entire event has been played back to the user or the user stops playback of the event), at which point decision 890 branches to the “no” branch whereupon processing ends at 895.
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 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 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 combinations of special purpose hardware and computer instructions.
While particular embodiments of the present invention have been shown and described, it will be obvious to those skilled in the art that, based upon the teachings herein, that changes and modifications may be made without departing from this invention and its broader aspects. Therefore, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of this invention. Furthermore, it is to be understood that the invention is solely defined by the appended claims. It will be understood by those with skill in the art that if a specific number of an introduced claim element is intended, such intent will be explicitly recited in the claim, and in the absence of such recitation no such limitation is present. For non-limiting example, as an aid to understanding, the following appended claims contain usage of the introductory phrases “at least one” and “one or more” to introduce claim elements. However, the use of such phrases should not be construed to imply that the introduction of a claim element by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim element to inventions containing only one such element, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an”; the same holds true for the use in the claims of definite articles.