Crticial Communication


Criticala communication services are essential for maintaining public safety and security, as well as for supporting critical infrastructure and operations. These services include:

  • Emergency Services
    E911 (Enhanced 911), emergency notification systems, which are used to quickly and effectively respond to emergencies and natural disasters.
  • Public Safety Services
    Police, fire, and ambulance services, which are responsible for maintaining public safety and security.
  • Public Warning Systems
    Amber Alerts and severe weather warnings, which are used to quickly and effectively notify the public of potential dangers.
  • Utilities
    Electricity, gas, water, and telecommunications, which are essential for maintaining critical infrastructure and operations.
  • Transportation
    Air traffic control, railroad, and public transportation systems, which are essential for maintaining mobility and supporting economic activity.
  • Government Related Services
    Military and defense operations, or announcements which are essential for maintaining national security and protecting citizens.
  • Industrial Automation
    Oil and gas, manufacturing, mining, and chemical plants, which are essential for maintaining operations and ensuring safety.

All of these services require reliable, high-quality, and low-latency communication to function effectively, and are considered as critical communication services because their failure to function could have serious consequences for public safety, security, and economic activity.

Major Components of Critical Communication Service

While these communiccation service are formed of multiple components and are constantly evolving, here are the major compoenents as per my knowkedge

  • Calling agents such as smartphones, radio phones, browsers, UCC clients, etc
  • Networks such as cellular ( access layer as towers, base stations, etc.) , satellite, or even private land mobile radio networks that are used for transmitting critical information
  • Call Routing through Emergency Services Routing Proxy (ESRP), BGF ( Border Gateway Function) to Call Answer in PSAP ( PublicSafyey Answering point)
  • Location gathering using GPS, browser collected location. Location Information Server (LIS), which can store location with IP address, mac address, and landline telephone number. LVF (location validation function) helps validate the location information.
  • Management and monitoring to keep the system up and working reliably
  • Integration as CAD( Computer Aided Dispatch), GIS (Geographical information System ), and notifiation system

E911 (Enhanced 911)

WebRTC (Web Real-Time Communications) can be used in critical communication such as E911 as clients or as Gateways.

E911 WebRTC client

Webrtc client allow users to make emergency calls from their browsers. The browser’s locataion service can be budnled along with the call meta data to alert the service providers.

E911 WebRTC gateway

Webrtc gateways help connect the mordern WebRTC clients ( signalling and media) to old fashioned PSTN emergence serevice einfrastructure. The routing can be designed to automatically connect with the nearest PoP( point of presence ) whichh helps keeping the call in local region.

Public Safety Answering Point (PSAP) can be entirely made compatiblee for WebRTC media streams making calls 100% IP based. Tthis allow for more cost effecive and flexible solution building.

Compliance

It is important to note that while WebRTC technology is suitable for E911 communication, it is still subject to regulation and compliance, and the implementation of E911 services using WebRTC must comply with the regulations of the country and the state where it is being deployed.

Next Generation Core Services (NGCS) and NG911

NG911 (Next Generation 911) and E911 (Enhanced 911) are both systems used to route emergency calls to the appropriate emergency services center, but there are some key differences between the two:

E911NG911
NetworkRequires trunks and Data networkEmergence Service IP network ( ESInet)
Routingclass 5 switched for selective routing IP seletive routing / dynamic
Media formataudioi onlymultimedia ( video , audio , text etc)
integratioinscomples and limitedprovides IP initerface for simpler integration and interoperability with other public safet systems
location serviceobtainer from callers phone numberMore ways for obtainer the caller’s location sucha s GPS coordinates

NG911 is a more modern and advanced version of 911 that uses IP-based networks and technologies, such as WebRTC and SIP, to handle emergency calls and associated data, while E911 is based on traditional PSTN (Public Switched Telephone Network) technology. IP-based emergency services have several advantages over traditional PSTN-based emergency services, including increased flexibility, scalability, and the ability to handle multimedia communications.

Push to talk for firefighters

These systems are designed to provide low latency communication service while aldo being very robust to withstand harsh conditions and disasters. Typically ruggedized, the Push-to-talk (PTT) devices have button or switch on the device which when pressed and held, allows the user to transmit their voice to the other users in the group. This feature allows for quick and efficient communication, even in noisy or chaotic environments.

Photo by Tony Pham on Pexels.com

Mission Crticial Communication

Mission critical comm such as used for medical Serevices which monitor the health of patients via sensors and provide immediate alert to concerned parties. Medical communication systems are designed to integrate with the clinical workflows and patient information systems, such as electronic health records (EHRs) to provide relevant information to the medical staff during the communication.

Photo by Anna Shvets on Pexels.com

Upgrading infrstructure has vastly helped in the the area of providing immediate care and other emergency response services. Central to all these emeregncy communication is security. Implementing security measures, such as encryption, authentication, and firewalls, can protect emergency communication services from unauthorized access and attacks.

WebRTC SDKs Analysis

In the last few months, I have been keenly tracking how the course for WebRTC is turning out. In my opinion, it is an incredible game-changer and a market disrupter for the telco industry plagued by licensed codecs and heavy call session control software.

Contrary to my expectations the fundamental holes in WebRTC specification are still the same with less being done to fulfil them – Desktop sharing on Chrome Extension, media compatibility with desktop popular H264 being prominent obstacles to adoption. Of course, now there exists an abundance of interactive use-cases for WebRTC APIs from gaming to telemedicine. However, none of the applications is complete and standalone since each uses a new gateway to connect to their existing platform or service.

As new webrtc SDKs and open-sourcing platforms surface, many seem to be wrapping around the same old WebRTC functions ( getusermedia data-channel and peer-connection ) with few or no addons. Few of I am listing down some popular working ones in this blog but there still exists no concrete stable reliable guide to set up the backbone network ( yes I am referring to Media interconversion, relay, TURN, STUN servers ). It is left to a telecom software engineer/developer to find and figure out the best integrations to configure session handling and PSTN or desktop application compatibility.

Some commercial off the shelf service providers have begin to extend interconnecting gateways ( SBC’s) for their backend for Web-Javascript based WebRTC implementations but there are concerns on the end to end encryption and media management as it passes via transcoding media server and many points of relay. This in my opinion completely defeats the objective of WebRTC’s peer-to-peer communication which by design is supposed to be independent of centralised server setup. WebRTC was meant to *everything you can’t do with proprietary communication tools and networks*.

Well moving on , here are some nice API implementations of WebRTC ( only for Websockets no SIP/WebSockets ) which can be quickly used by web developers to create peer to peer media session on web endpoints via a WebRTC supported browser web page.

1.appRTC

apprtc
apprtc2

Neat process of setting up offer-answer and SDP . Notice the Relay candidate gathering 

apprtc3

Session Description ( SDP) for the WebRTC peer with audio / video codecs and other session specificatiosn such as bitrate , framerate , codec profile , RTP specs etc.

apprtc4
apprtc5

No over the top media control which is good as media flows end to end here without any centralized media server .

2. talky.io

Also related to SimpleWebRTC which is a lightweight MIT licensed library providing wrappers around core WebRTC API to support application building while easing the lower level peerconnection and session management from developer.

talky1

talky2

talky3

Simmilar offer-answer handshake and SDP excahnge.

talky4 talky5 talky6

There seems to be better noise control management which could be my browser acting on my fluctuating network bandwidth as well . 

3. tokbox

tokbox2
tokbox1

More control from UI on Media settings which is provided as part of getusermedia in WebRTC specification. Read more about the webrtc APIs in my other writeup 

tokbox7
tokbox6
tokbox5

Simmilar to previous WebRTC session ( totally dependant on my own network and CPU ) , independant of any thord party control . 

As my peers network degrated , my webrtc session automatically adjust based on RTCP feedback to send lower resolutions and framerate.

tokbox4
tokbox3

4. webrtcdevelopment

Open source MIT licensed libray to spin up Webrtc calls quickly and easily from a chrome supported browser . It is a fork of best features from multiple libraries such as apprtc , webrtcexperiments , simplewebrtc and is maintained by n open community of users including me.


WebRTC Media Stack is explained in following articles

  • AEC (Echo Cancellation) and AGC (Gain Control) in WebRTC

    Acoustic Echo Hybrid / Electronic Echo in PSTN phones Noise Suppression in WebRTC Echo Cancellation WebRTC Echo Cancellation Automatic Gain Control (AGC) Echo is the sound of your own voice reverberating. If the amplitude of such a sound is high and intervals exceed 25 ms, it becomes disruptive to the conversation. Its types can be…

  • WebRTC Audio/Video Codecs

    WebRTC Video Codecs VP8 VP9 H264/AVC constrained AV1 (AOMedia Video 1) Stats for video based media stream track Non WebRTC supported Video codecs H.263 H.265 / HEVC WebRTC Audio Codecs Opus AAC G.711 (PCMA and PCMU) G.722 iLBC iSAC Speex AMR-WB  DTMF and ‘audio/telephone-event’ media type Stats for Audio Media track DataChannel Stats for Datachannel…

  • Unified Plan SDP format in WebRTC

    Until recently a customised or property extension could signal multiple media streams within an m-section of an SDP and experiment with media-level “msid” (Media Stream Identifier ) attribute used to associate RTP streams that are described in different media descriptions with the same MediaStreams. However, with the transition to a unified plan, they will experience…

  • continue : Streaming / broadcasting Live Video call to non webrtc supported browsers and media players

    This blog is in continuation to the attempts / outcomes and problems in building a WebRTC to RTP media framework that successfully stream / broadcast WebRTC content to non webrtc supported browsers ( safari / IE ) / media players ( VLC )

  • Streaming / broadcasting Live Video call to non webrtc supported browsers and media players

    As the title of this article suggests I am going to pen my attempts of streaming / broadcasting Live Video WebRTC call to non WebRTC supported browsers and media players such as VLC , ffplay , default video player in Linux etc. Some of the high level archietctures for streaming Webrtc Video to multiple endpoints…

  • WebRTC Media Streams and Quality metrics

    Media Stream Tracks in WebRTC Video Streams Video Capture insync with hardware’s capabilities Capture Resolution SDP attributes for resolution, frame rate, and bitrate Dynamic FPS control based on actual hardware encoding Stream Orientation Audio Streams Audio Level GAIN calculation Acoustic Echo Cancellation (AEC) SDP signaling and negotiation for media plane Media Source Peer-to-Peer Media Stream Frames…

IPTV ( Internet Based Television ) and VOD ( Video on Demand)


We know the power of the Internet protocol suite as it takes on the world of telecom. Already half of the Communication has been transferred from legacy telecom signalling protocols like SS7 to IP based communication ( Skype, Hangouts, WhatsApp, Facebook Messenger, Slack, Microsoft Teams ). The TV service providers too are largely investing in IP based systems like SIP and IMS to deliver their content over Telecom’s IP based network ( Packet-switched ).

IPTV

A consumer today wants HD media content anytime anywhere. The traditional TV solutions just dont match upto the expectations anymore. The IPTV provider in todays time must make investments to deliver content that is media-aware, and device-aware. Not only this it should be  personal, social, and interactive and enhance the user experience.

Few popular applications for IPTV solutions developers :

  • Menu overlay with detailed description of channels , categories , programs , movies
  • Record and Replay option also referred to as timeshift. It allows a user to pause , resume and  record the show in his absence and view it later
  • Video on demand which concerns paying and viewing music albums , movies etc on demand
  • Live streaming of events such as president speech , tennis match etc .

Application that can be build around the IPTV context

  • Record and Playback content
  • Information overlay on streaming content
  • Social networking services integrated with IPTV content
  • Parental Control to realtime view , monitor and control what your child is watching on the IPTV
  • Watch the surveillance  footage from IP cameras anywhere
  • Real time communication on IPTV  with advanced features like call continuity , content sync .
We know the power of the Internet protocol suite as it takes on the world of telecom. Already half of the Communication has been transferred from legacy telecom signalling protocols like SS7 to IP based communication ( Skype, Hangouts, WhatsApp, Facebook Messenger, Slack, Microsoft Teams ). The TV service providers too are largely investing in IP based systems like SIP and IMS to deliver their content over Telecom's IP based network ( Packet-switched ).

Mobile TV

Mobile TV is an advanced services that lets users download and play songs and videos, send text messages, conference with colleagues and friends, and exchange pictures or videos on whichever device they are using.

Mobile TV Service platform bundles different types of content (live TV, VoD, podcast, etc.) into IP service  streams and  selects  the  transmission bearer depending  on  the  targeted  audience. 

  • broadcast  (DVB-H or DVB-SH based)
  • unicast  (2G,  3G,  etc.)

DVB-H standard is optimized transmission on brodcast technology for hand-held, low power devices.

Components

  1. bearer selection
  2. Electronic Service Guide (ESG) to list the available programs and contents.
  3. Streaming servers
  4. Video Encoders
  5. rich media service node
  6. Adons
    • recommendation engine
    • personalized advertising
  7. audience measurement
  8. Content and subscriber management
Hybrid satellite and terrestrial Infrastructure for Mobile TV
  • (+) use existing cellular networks
    • radio sites and antennas enhanced with broadcast repeaters
  • (+) direct reception via satellite

Video On Deamnd (VoD)

Video on demand using Adaptive Multirate dispatch using AWS Transcoder

Componets

  1. HTML5 webpage on chrome browser for WebRTC input : contains the client side script to record the video and send the blob to server side for processing.
  2. Amazon EC2 instance : The amazon ec2 instance hosts the web interface for login and video recording . It converts the incoming blob / webm format to mp4  . After the video conversion it uploads the video mp4 to s3 bucket.
  3. Amazon S3 bucket : The s3 bucket is connected to the transcoder via pipeline and holds the video storage as well.
  4. Amazon transcoder : The transcoder provides adaptive multirate dispatch on viewer access .  
  5. RDS for any mysql storage ( optional ) : Optional for record keeping credentials, storage links, linked information etc.

WebRTC for IPTV and VOD

WebRTC has been applied in the basic communication sector with overwhelming results. However there the capability to stream media is not just limited to communication it can be applied to stream multimedia content from streaming servers as well. This section describes the application of WebRTC in IPTV ( IP Television ), VOD ( Video on Demand ), Online FM ( audio from Radio stations online ) applications. All this without the need to download plugins or any additional installations of third party products. Also with the inclusion of the

An architecture representing some of these use cases in the context of WebRTc based media transmission is depicted below.


Call Continuity from Mobile GSM/LTE network to VoIP/WebRTC

WebRTC is an evolving technology which promises simplified communication platform and stack for developers and hassslefree experience for users. It has the potential to provides in-context, call routed to the best personnel in service calls. Real time mapping of caller’s IP , locations and source metadata can be used for IVR eliminated. Such a complete collaboration tool is possible through WebRTC which is easy set-up, requires no installation no pugins and no download. Extremely secure, WebRTC can interoperate with existing VoIP, video conferencing and even PSTN. The only concern is the Integration with legacy PSTN and teleco environment.

In the present age of IP telephony when telecom convergence is the big thing all around the world, need of the hours is to enable fixed and mobile Service Providers ( SP )  to monetize the subscriber’s phone by extending it to new web based services. SPs can offer a WebRTC Communicator endpoint that uses the same phone number as the subscriber’s fixed or mobile phone. Advanced features enable calls to be transferred between fixed-line, mobile and WebRTC endpoints.

Position of WebRTC on Network protocol stack.

GSM is incompatible with WebRTC media stream due to legacy codecs, even if the WebRTC UA was to support these codecs the signalling translation will be a dffucult feat. Signalling is used for subscriber mobility, subscriber registration, call establishment, etc. Mobile Application Part (MAP), Base Station System Application part (BSSAP), Direct Transfer Application part (DTAP), ISDN User Part (ISUP) are some of the protocols making up GSM. In my opinion Some of the ways to integrate WebRTC to GSM backened could be

  • Develop GSM-To-IP Interworking Component and integrate it with GSM network components (like BTS ).
  • Integrate solution with H.323 based VoIP (Voice Over IP) components like Gatekeeper, Gateways/PBXs, to provide a complete voice/data network solution

Using telco service provider’s SIP trunk , if available, is the easiest way to conect to such backened communication systems.

  • A interface – connection between MSC and BSC;
  • Abis interface – connection between BSC and BTS;
  • D interface – connection between MSC and HLR;
  • Um interface – radio connection between MS and BTS.

GPRS/UMTS Mobile Network can be compatible to WebRTC via Data based communication on GPRS gateway.

LTE Network using Evolves Packet Core can communicate with WebRTC using realtime transcoding and SIP (Session initiation protocol) endpoints conneted to core IMS. AnICE server provides the reflexive IP addresses that the WebRTC implementation needs; the signaling gateway converts the WebRTC webapp’s communication into SIP/IMS signaling and the media relay converts the WebRTC media framing into the telco conformant representation.

Interworking between a WebRTC enabled browser and IMS based Telco Backened : A session is established so that the web app sends an initial INVITE, including an SDP offer for the “outgoing” stream, to the gateway. The signalling gateway will reserve the resources from the media relay in both directions. Consequently, the signalling gateway will send an SDP answer to the initial INVITE and create an SDP offer of its own. This SDP offer is carried in a SIP UPDATE. Once the media between the web app and media relay is set, the session will progress towards IMS and will be handled like any other session. At this point, the media relay has mapped two unidirectional “web app streams” into one bidirectional “IMS stream” and will forward all media between the two. The mapping is done for both audio and video streams, meaning that we are able to support both audio and video calls between WebRTC and Telco clients and conferences.

WebRTC bypasses many limitation of earlier p2p (Peer-to-peer media) streaming frameworks like NATS. It opens avenues for innovative cross-platform use cases such as Healthcare, service technicians on call, Retail and financial communications, phone payments and insurance claims. Other applications such as Unified communication and collaboration are applicable for sales, CRM, remote education etc.

Transfer mobile callto WebRTC session
Transfer mobile callto WebRTC session

SPs can offer 3rd Party WebRTC endpoints to access the user’s phone number and subscription . E.g. enable web applications such as Facebook, Amazon or Netflix to allow their users to make/receive calls or messages directly from the web applications

Revenue Streams :

  • monthly fee for access to WebRTC endpoints and for receiving calls from by 3rd Party WebRTC endpoints
  • One time upgrade fees for Accessing the Web service integration with telecom network like a plan upgrade

Brownie points

  • No software is required to be downloaded on the subscriber’s computer, tablet or mobile phone
  • No desktop support required for the service provider

Plans For Consumer Customers:

  • Subscribers can use the WebRTC endpoints on their computers, tablets or mobile phones as a fixed-line device at home, as a desktop solution when away from home and to avoid international tolls when traveling
  • Subscribers can connect their web services (e.g. Websites , Facebook, Amazon, Netflix) to their fixed or mobile services subscriptions using their SP-provided phone number

Plans For SP Enterprise Customers:

  • Enterprises can deploy a WebRTC endpoint for their employees that provides a single corporate communications endpoint that can be connected to any of the corporation’s UC/PBX and Call Recording systems
  • Employees can use the WebRTC endpoint as their office phone at work, home or when traveling
  • Connects to all leading UC/PBX and Recording platforms simultaneously
  • Enterprises can deploy a single WebRTC endpoint across all their UC/PBX and Recording platforms – current and future
  • Easy for IT departments to deploy – no software is required to be downloaded to employees’ computers, tablets or mobile phones
  • Enables corporate policies and features from the WebRTC endpoint including
  • Displaying the corporate identity
  • Routing calls via corporate networks
  • Tracking and Recording calls and messages

WebRTC communication over Web Services

This post is about communication from any application to WebRTC using Web Services.

HTTP and XML is the basis for Web services

Advertisement Engine with WebRTC

WSDL
  • WSDL stands for Web Services Description Language
  • It specifies the location of the service and the operations (or methods) the service exposes.
  •  XML-based language for describing Web services.

SOAP
  • SOAP stands for Simple Object Access Protocol
  • SOAP is an XML based protocol for accessing Web Services.
  • SOAP is based on XML

UDDI
  • UDDI stands for Universal Description, Discovery and Integration
  • UDDI is a directory service where companies can search for Web services.
  • UDDI is described in WSDL
  • UDDI communicates via SOAP

RDF
  • RDF stands for Resource Description Framework
  • RDF is a framework for describing resources on the web
  • RDF is written in XML
uses :Web services can offer application-components like: currency conversion, weather reports, or even language translation as services.
…………..

E-Learning

True that the number of teacher today are not enough to teach the number of kids . For example even in India there is often 1 teacher for a class of 60 students in one subject. Also the experience and output of learning from a human teacher cannot be ever replaced by a software or ebook or application no matter how user-friendly or informative it is .

In this post I am going to describe an e-learning platform which harness the power of Internet for the purpose of distance education and where students around the world volunteer to teach each other any subject they wish to. This will be made possible through a combination of real time communication technologies like WebRTC and plethora of knowledge repositories.

Aim :

Platform to connect volunteers ( children ) teach each other a subject in a stipulated time through Web based Real Time Communication.

Working :

A student enrolls himself for a subject or a course it could be anything from arithmetic to french language . Another student who know French language for example find this in portal and sign up to be teacher for that child. They can anytime connect with each other in audio , video , message , file sharing , screen sharing session through WebRTC and learn the subject. The students earn reward points .

e-leaning service on WebRTC
e-leaning service on WebRTC

Technologies  :

  • WebRTC for communication
  • MySQL for data storage
  • Apache Tomcat as Webserver
  • HTML5
  • CSS
  • JavaScript

Conclusion :

By encouraging a child to take responsibility and teach another child , we will not only encourage friendship between them but also give them a sense of accomplishment .


WebRTC business benefits to OTT and telecom carriers


Historically, RTC has been corporate and complex, requiring expensive audio and video technologies to be licensed or developed in house. Integrating RTC technology with existing content, data and services has been difficult and time consuming, particularly on the web.

OTT
OTT ( Over The Top ) Applications


Now with WebRTC the operator finally gets a chance to take the shift the focus from OTT ( Over The Top service providers like SKype , Google chat WebEx etc that were otherwise eating away the Operators revenue ) to its very own WebRTC client Server solution , hence making the VOIP calls chargeable , while at the same time being available from any client ( web or softphone based )

To read about how WebRTC integrates with the SIP/IMS systems read

What will be the outcome of WebRTC Adoption?

In simple words, it’s a phenomenal change in decentralizing communication platforms from proprietary vendors who heavily depended on patented and royalty bound technologies and protocols. It will revolutionize internet telephony. Also it will emerge to be platform-independent ( ie any browser, any desktop operating system any mobile Operating system).

WebRTC allows anybody to introduce real-time communication to their web page as simple as introducing a table.

Where are we now with WebRTC ?

WebRTC has now implemented open standards for real-time, plugin-free video, audio and data communication. Many web services already use RTC, but need downloads, native apps or plugins. These includes Skype, Facebook (which uses Skype Flash ) and Google Hangouts (which use the Google Talk plugin).

Downloading, installing and updating plugins can be complex, error prone and annoying , such as Flash , Java.,etc. Plugins can be difficult to deploy, debug, troubleshoot, test and maintain—and may require licensing and integration with complex, expensive technology. It’s often difficult to persuade people to install plugins in the first place/ bookmark it or keep it activated at all times.

2015

Can I use... Support tables for HTML5, CSS3, etc.png

update 2021

WebRTC support across various browsers , pic source : caniuse.com
disruptive graph
Biz users
ic source : Disruptiveanalysis

The APIs and standards of WebRTC can democratize and decentralize tools for content creation and communication—for telephony, gaming, video production, music making, news gathering and many other applications.

In 2015, edge and Safari were the most difficult to work with around WebRTC.

(2015) pic source: iswebrtcreadyyet.com

Now (2021) almost all the browser have support for WebRTC basic API and advanced API support such as mediaStreamRecorder is in progress as well.

(2021) pic source: iswebrtcreadyyet.com

WebRTC Usecases

WebRTC is a flexible, free lightweight tool that can be used to quickly build p2p real-time communication applications. Due to the easy to programmable nature of WebRTC API, many applications have switched to using the media streaming and communication capabilities of browser-based WebRTC user agents such as conferencing and web dialling, telemedicine and e-learning applications.
even innovative use cases such as broadcasting, gaming, IPTV based applications integrate with WebRTC for the royalty free codecs and media stack.
WebRTC endpoints can also integrate with telecom endpoints ( PSTN, GSM, 3G, LTE phone and 5G phones) using gateways and trunks.

Communication Agent

UCC is communication agent which is used to support wide range of rich communication related services

Unified Communications

Application – CRM , call centres using ACD

Github Repo – https://github.com/altanai/unifiedCommunicator

Collaboration and whiteboarding

Application

  • interview portals
  • exam portals
  • brainstorming

Broadcasting and Streaming

Robotics Media streaming

E-learning

e-leaning service on WebRTC

Telemedicine

Smart cities and Self Driving Cars

WebRTC for IPTV and VOD

Telco usecase

Interoperability of WebRTC Clients with 5G UE via IMS network

Blockchain integration

References :

Read more