<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Bolt Data Connect – Help Docs</title>
    <link>/docs/</link>
    <description>Recent content in Help Docs on Bolt Data Connect</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    
	  <atom:link href="/docs/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: App Tour</title>
      <link>/docs/salesforce/app-tour/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/app-tour/</guid>
      <description>
        
        
        &lt;h2 id=&#34;launching-the-app&#34;&gt;Launching the App&lt;/h2&gt;
&lt;p&gt;Once you install the Salesforce App, you&amp;quot;ll find the new Bolt Data Connect App in the Salesforce App Launcher.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/assets/app-launcher.png&#34;
         alt=&#34;App Launcher&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;App Launcher&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
&lt;p&gt;If you don&amp;rsquo;t see what you&amp;quot;re looking for, use the &amp;ldquo;Search apps or items..&amp;rdquo; search bar provided in the App Launcher to search for &amp;ldquo;Bolt Data Connect&amp;rdquo;&lt;/p&gt;
&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/salesforce/assets/app-launcher-search.png&#34;
         alt=&#34;App Launcher Search&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;App Launcher Search&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;/div&gt;

&lt;h2 id=&#34;iot-dashboard&#34;&gt;IoT Dashboard&lt;/h2&gt;
&lt;p&gt;The IoT Dashboard is a Salesforce Dashboard &amp;amp; Reports giving you a view of all of your &amp;ldquo;Things&amp;rdquo; connected to Bolt Data Connect and the Thing Types, Status, Alert History and Sensor Data available in Salesforce.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/assets/iot-dashboard.png&#34;
         alt=&#34;IoT Dashboard&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;IoT Dashboard&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;iot-console&#34;&gt;IoT Console&lt;/h2&gt;
&lt;p&gt;The IoT Console is the centralized dashboard for viewing all IoT Things within an Org.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/assets/iot-console.gif&#34;
         alt=&#34;IoT Console&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;IoT Console&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id=&#34;navigation&#34;&gt;Navigation&lt;/h3&gt;
&lt;p&gt;The Navigation Panel provides multiple ways to slice your Things. Here you can find all Things by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Category&lt;/strong&gt;: A completely customizable tree, grouping Things by whichever fields your Admin configures. Check out &lt;a href=&#34;../iot-setup/thing-object#field-definitions&#34;&gt;Thing Object Settings&lt;/a&gt; for more details on how to configure this.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Status&lt;/strong&gt;: Things change status based on the rules established for each Thing-Type&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Search&lt;/strong&gt;: If you know the exact asset you&amp;quot;re looking for.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/assets/nav-panels.png&#34;
         alt=&#34;Navigation Panels&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Navigation Panels&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;views&#34;&gt;Views&lt;/h3&gt;
&lt;p&gt;The View Panel shows you Things that match criteria specified in the Navigation Panel. There are currently two Views available: a Map View and a Data View. The Map View shows Things as pins on a global map, while the Data View shows Things in a tabular view.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/assets/iot-console-map.png&#34;
         alt=&#34;View - Map&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;View - Map&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Additionally, in the Data View, you can view the History for any device by selecting the down arrow on any row.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/assets/iot-console-data.png&#34;
         alt=&#34;View - Data Table&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;View - Data Table&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;In the Data View you have the ability to view the sensor chart, sensor data-table, filter and save new sensor snapshots.&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
Historical data is not stored in Salesforce, but rather in the IoT Cloud, and is only fetched here for troubleshooting and diagnostics. This helps reduce the load on your Salesforce Data Limits.
&lt;/div&gt;

&lt;h2 id=&#34;iot-setup&#34;&gt;IoT Setup&lt;/h2&gt;
&lt;p&gt;For your Salesforce Org Admins, the Bolt Data Connect App provides an &lt;a href=&#34;../iot-setup&#34;&gt;IoT Setup&lt;/a&gt; page to configure how the IoT Cloud integrates with your Salesforce Org. Here you can completely control the behavior of the Cloud and Edge Processing, as well as the Salesforce automation and integrations.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/assets/iot-setup.png&#34;
         alt=&#34;IoT Setup&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;IoT Setup&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: App Tour</title>
      <link>/docs/servicenow/app-tour/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/servicenow/app-tour/</guid>
      <description>
        
        
        &lt;h2 id=&#34;launching-the-app&#34;&gt;Launching the App&lt;/h2&gt;
&lt;p&gt;Once you install the ServiceNow App, you&amp;quot;ll find the new Bolt Data Connect App Modules in the ServiceNow All Menu.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/assets/app-all-menu.png&#34;
         alt=&#34;App Modules&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;App Modules&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;connected-assets-workspace&#34;&gt;Connected Assets Workspace&lt;/h2&gt;
&lt;p&gt;The Connected Assets Workspace is a ServiceNow Now Experience Workspace. The home page displays a Dashboard containing Visualizations which gives you a view of all of your &amp;ldquo;Things&amp;rdquo; connected to Bolt Data Connect and the Thing Types, Status, Alert History and Sensor Data available in Salesforce.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/assets/connected-asset-workspace-home.png&#34;
         alt=&#34;IoT Dashboard&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;IoT Dashboard&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;iot-console&#34;&gt;IoT Console&lt;/h2&gt;
&lt;p&gt;The IoT Console is the centralized dashboard for viewing all Connected Assets within an Instance.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-console/assets/iot-console-map-usa-filter.png&#34;
         alt=&#34;IoT Console Map&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;IoT Console Map&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-console/assets/iot-console-cards.png&#34;
         alt=&#34;IoT Console Cards&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;IoT Console Cards&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- ### Navigation

The Navigation Panel provides multiple ways to slice your Things. Here you can find all Things by:

- **Category**: A completely customizable tree, grouping Things by whichever fields your Admin configures. Check out [Thing Object Settings](../iot-setup/thing-object#field-definitions) for more details on how to configure this.
- **Status**: Things change status based on the rules established for each Thing-Type
- **Search**: If you know the exact asset you&#34;re looking for.

  &lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/assets/nav-panels.png&#34;
           alt=&#34;Navigation Panels&#34;/&gt;&lt;figcaption&gt;
              &lt;p&gt;Navigation Panels&lt;/p&gt;
          &lt;/figcaption&gt;
  &lt;/figure&gt;


### Views

The View Panel shows you Things that match criteria specified in the Navigation Panel. There are currently two Views available: a Map View and a Data View. The Map View shows Things as pins on a global map, while the Data View shows Things in a tabular view.

&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/assets/iot-console-map.png&#34;
         alt=&#34;View - Map&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;View - Map&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


Additionally, in the Data View, you can view the History for any device by selecting the down arrow on any row.

&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/assets/iot-console-data.png&#34;
         alt=&#34;View - Data Table&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;View - Data Table&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


In the Data View you have the ability to view the sensor chart, sensor data-table, filter and save new sensor snapshots.



&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
Historical data is not stored in Salesforce, but rather in the IoT Cloud, and is only fetched here for troubleshooting and diagnostics. This helps reduce the load on your Salesforce Data Limits.
&lt;/div&gt;
 --&gt;
&lt;h2 id=&#34;iot-setup&#34;&gt;IoT Setup&lt;/h2&gt;
&lt;p&gt;For your ServiceNow Instance Admins, the Bolt Data Connect App provides an &lt;a href=&#34;../iot-setup&#34;&gt;IoT Setup&lt;/a&gt; Module to configure how the IoT Cloud integrates with your ServiceNow Instance. Here you can completely control the behavior of the Cloud and Edge Processing, as well as the ServiceNow automation and integrations.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/assets/iot-setup.png&#34;
         alt=&#34;IoT Setup Module&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;IoT Setup Module&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Servitization Testing</title>
      <link>/docs/salesforce/servitization/servitization-testing/</link>
      <pubDate>Fri, 05 May 2023 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/servitization/servitization-testing/</guid>
      <description>
        
        
        &lt;p&gt;Servitization Testing is typically a challenge due to long testing cycles (driven by Monthly / Quarterly output), complicated testing procedures, and error-prone manual entry of sensor / calculated values.&lt;/p&gt;
&lt;h2 id=&#34;testing-console&#34;&gt;Testing Console&lt;/h2&gt;
&lt;p&gt;On the Servitization Plan, the &lt;code&gt;Console&lt;/code&gt; tab provides a Testing Console to ease the testing effort, by automating the required steps and simplifying the process.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/servitization/assets/servitization-test-console.png&#34;
         alt=&#34;Servitization Test Console&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Servitization Test Console&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The following steps can be executed in a single click, and just a few minutes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Post Device Values: By sending an IoT Command to the Gateway / Connector, the IoT Values from a specific Date/Time can be retrieved and reprocessed by the IoT Cloud. Simply select the dates and Covered Things desired. This allows the tester to &amp;ldquo;roll the clock back&amp;rdquo; and control the test without manual data entry (and possible human error).&lt;/li&gt;
&lt;li&gt;Run Sensor Data Job: Executes the Sensor Data Sync Job to download Sensor Data from the IoT Cloud into Salesforce, for the specific Covered Things selected. (See the IoT Setup &amp;gt; Sensor Data settings for details)&lt;/li&gt;
&lt;li&gt;Run Servitization Job: Executes the Servitization Job for this specific Plan and Target Date. (Similar to clicking the Execute button on the Plan)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;iot-command-template-servitization-target-date&#34;&gt;IoT Command Template: Servitization Target Date&lt;/h3&gt;
&lt;p&gt;The IoT Command Template named &lt;code&gt;Servitization Target Date&lt;/code&gt; will be sent for each Covered Thing in Step 1 above. This template needs to be customized with specific values and the appropriate connector id.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Topic&lt;/dt&gt;
&lt;dd&gt;Update with the appropriate MQTT Topic for the Connector in use&lt;/dd&gt;
&lt;dt&gt;Body&lt;/dt&gt;
&lt;dd&gt;Update with any custom fields / values needed by the Connector&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/servitization/assets/iot-command-template.png&#34;
         alt=&#34;Servitization Target Date Command Template&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Servitization Target Date Command Template&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: App Connectivity</title>
      <link>/docs/salesforce/iot-setup/global-settings/app-connectivity/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/global-settings/app-connectivity/</guid>
      <description>
        
        
        &lt;p&gt;First, we’ll need to establish the connection between your Salesforce Org and the IoT Cloud infrastructure. Once that connection is established, we can configure Salesforce Object Customization, Salesforce Process Customization, and Thing-Type Customization. Then, we’ll create a new Thing and demonstrate connectivity. Let’s get Things set-up!&lt;/p&gt;
&lt;p&gt;In order for the Bolt Data Connect Salesforce App to communicate with the IoT infrastructure, we need to authorize Salesforce to access the IoT Cloud, and we need authorize the IoT Cloud to access Salesforce.&lt;/p&gt;
&lt;h3 id=&#34;authorize-salesforce-to-access-the-hahahugoshortcodes4hbhb&#34;&gt;Authorize Salesforce to access the IoT Cloud&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;First, your Bolt Data Connect support representative should provide you with an API Token, an Access Key, and a Secret Key. Keep this information safe. It’s essentially your username and password to your IoT Cloud.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Let us know&lt;/h4&gt;
Should you ever learn or suspect these Keys have been compromised, please rotate your keys — twice — as soon as possible, and notify your Bolt Data Connect representative.
&lt;/div&gt;

&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;From the Bolt Data Connect App (if you’re not already there, follow the &lt;a href=&#34;/docs/salesforce/app_tour#launching-the-app&#34;&gt;Launching the App&lt;/a&gt; section in the App Tour), go to the IoT Setup tab.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Global Settings&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In the &lt;span class=&#34;doc fieldname&#34;&gt;IoT API Token&lt;/span&gt; field enter the API Token you received in Step 1.&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;IoT Cloud API&lt;/strong&gt; link next to &lt;span class=&#34;doc fieldname&#34;&gt;API Named Credential&lt;/span&gt;.
&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;Edit&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In the &lt;span class=&#34;doc fieldname&#34;&gt;AWS Access Key ID&lt;/span&gt; field, enter the Access Key received in Step 1.&lt;/li&gt;
&lt;li&gt;Next to &lt;span class=&#34;doc fieldname&#34;&gt;AWS Secret Access Key&lt;/span&gt; field, enter the Secret Key received in Step 1.&lt;/li&gt;
&lt;li&gt;You shouldn’t need to modify any other settings here. Click Save and close the tab (if it opened in a new tab).&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;authorize-the-hahahugoshortcodes9hbhb-to-access-your-salesforce-org&#34;&gt;Authorize the IoT Cloud to access your Salesforce Org&lt;/h3&gt;
&lt;p&gt;In order for the IoT Cloud to send Alerts to your Salesforce Org, you must Authorize the app to access the Salesforce APIs associated with your Org.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;From the Bolt Data Connect App (if you’re not already there, follow the &lt;a href=&#34;/docs/salesforce/app_tour#launching-the-app&#34;&gt;Launching the App&lt;/a&gt; section in the App Tour), go to the IoT Setup tab.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Global Settings&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Next to the &lt;em&gt;Connected Application&lt;/em&gt; label, select &lt;strong&gt;Authorize&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/connected-application-2.png&#34;
         alt=&#34;Authorize the Connected Application&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Authorize the Connected Application&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;You’ll be redirected to a &lt;em&gt;Salesforce Authorization&lt;/em&gt; screen. Select &lt;strong&gt;Allow&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Heads Up&lt;/h4&gt;
Verify the URL in this window is accurate. You must be logged in as a User of the Org in which you wish to authorize the IoT Cloud integrations (this is the User the IoT Cloud will use to send Alerts and trigger platform events). If you need to switch to another User, you can select the &amp;ldquo;Not you?&amp;rdquo; link to be redirected to (login.salesforce.com)[https://login.salesforce.com] to log-in and authorize as a different User within your Org.
&lt;/div&gt;

&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/connected-application-oauth-1.png&#34;
         alt=&#34;Allow the IoT Cloud to access your Org&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Allow the IoT Cloud to access your Org&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;After selecting &lt;strong&gt;Allow&lt;/strong&gt;, the status of the authorization will be displayed.&lt;/li&gt;
&lt;li&gt;When successful, the authorization status message window will close automatically (or you can close it manually if you chose). In the unlikely event you encounter an error during authorization, please let us know as soon as practical!&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/connected-application-oauth-2.png&#34;
         alt=&#34;Authorization success message&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Authorization success message&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
Bolt Data Connect does not collect any data from you or your Org; this authorization only provides the IoT Cloud with the ability to send alerts to your Org. The IoT Cloud is never given your login credentials.
&lt;/div&gt;

&lt;ol start=&#34;7&#34;&gt;
&lt;li&gt;
&lt;p&gt;That’s it! This should only be required once, but should you ever need to re-establish this authorization, you can repeat these steps at any time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To revoke authorization at any time, you can follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select Settings (Salesforce Settings Gear).&lt;/li&gt;
&lt;li&gt;Select Users, then Users and find the User you used to Authorize.&lt;/li&gt;
&lt;li&gt;Scrolling down, you should find the &amp;ldquo;OAuth Connected Apps&amp;rdquo; section where you can select Revoke to revoke access to the Connected App.&lt;/li&gt;
&lt;li&gt;You can re-authorize the IoT Cloud at any time by following the steps above.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can check which Saleforce User is currently authorized by the IoT Cloud at any time.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to the IoT Admin Page, then select Global Settings.&lt;/li&gt;
&lt;li&gt;The User should be displayed next to the Connected Application label:&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/connected-application-2.png&#34;
         alt=&#34;Authorization check&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Authorization check&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;rotating-hahahugoshortcodes20hbhb-access-keys&#34;&gt;Rotating Bolt Data Connect Access Keys&lt;/h3&gt;
&lt;p&gt;The Bolt Data Connect Access Keys can be rotated at any time. This helps limit any unintended access to your data. We recommend that you refresh Access Keys at least every 45 days, but the more frequent, the better.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;From the Bolt Data Connect App (if you’re not already there, follow the Launching the App section in the App Tour), go to the IoT Setup tab.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select Global Settings.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You’ll need to have the Named Credential open in a separate window/tab:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select the IoT Cloud API link (should open in a new tab; if not, keep this tab/window open to the Named Credential and open a new tab to the IoT Setup tab, Global Settings).&lt;/li&gt;
&lt;li&gt;Select Edit.&lt;/li&gt;
&lt;li&gt;In the next step you’ll be editing the following fields: AWS Access Key ID and AWS Secret Access Key.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/named-credential-1.png&#34;
         alt=&#34;Named credential fields&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Named credential fields&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Once the Named Credential tab/window is staged, back on the IoT Admin page, select Rotate Keys.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New Keys should appear under the Rotate Keys button with a copy link next to each.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/named-credential-2.png&#34;
         alt=&#34;New keys&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;New keys&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;Select &amp;ldquo;Copy&amp;rdquo; next to AWS Access Key ID, and paste into the respective field on the Named Credential.&lt;/li&gt;
&lt;li&gt;Repeat for AWS Secret Access Key.&lt;/li&gt;
&lt;li&gt;Select Save on the Named Credential and close that tab/window.&lt;/li&gt;
&lt;li&gt;To clear the keys from the Global Settings screen, return to the IoT Setup tab.&lt;/li&gt;
&lt;li&gt;To test the new keys, return to the Global Settings screen from the IoT Setup tab (which automatically checks who’s authorized) or visit the IoT Console and search for a Thing.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;iot-connector-api&#34;&gt;IoT Connector API&lt;/h3&gt;
&lt;p&gt;For customers with their own IoT Cloud, we&amp;rsquo;ve fully exposed the IoT Cloud Connector API to allow you to use the Bolt Data Connect Salesforce App with your own IoT Cloud by following a few simple steps. (See below)&lt;/p&gt;
&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/iot-cloud-connector-overview.png&#34;
         alt=&#34;IoT Cloud Connector&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;IoT Cloud Connector&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ol&gt;
&lt;li&gt;Call the /IoTAlert Web Service from your IoT Cloud&lt;/li&gt;
&lt;li&gt;Implement the IoT Connector Apex class [SPKI.IoT_Connector_API] to call your IoT Cloud&amp;rsquo;s exposed APIs&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/iot-connector-api.png&#34;
         alt=&#34;IoT Cloud Connector API&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;IoT Cloud Connector API&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: App Connectivity</title>
      <link>/docs/servicenow/iot-setup/global-settings/app-connectivity/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/servicenow/iot-setup/global-settings/app-connectivity/</guid>
      <description>
        
        
        &lt;p&gt;First, we’ll need to establish the connection between your ServiceNow Instance and the IoT Cloud infrastructure.&lt;/p&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- Once that connection is established, we can configure ServiceNow Object Customization, Salesforce Process Customization, and Thing-Type Customization. Then, we’ll create a new Thing and demonstrate connectivity. Let’s get Things set-up! --&gt;
&lt;p&gt;In order for the Bolt Data Connect ServiceNow App to communicate with the IoT infrastructure, we need to authorize the ServiceNow Instance to access the IoT Cloud, and we need authorize the IoT Cloud to access Salesforce.&lt;/p&gt;
&lt;h3 id=&#34;authorize-the-servicenow-instance-to-access-the-hahahugoshortcodes4hbhb&#34;&gt;Authorize the ServiceNow Instance to access the IoT Cloud&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;First, your Bolt Data Connect support representative should provide you with an API Token, an Access Key, and a Secret Key. Keep this information safe. It’s essentially your username and password to your IoT Cloud.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Let us know&lt;/h4&gt;
Should you ever learn or suspect these Keys have been compromised, please notify your Bolt Data Connect representative.&lt;/p&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- rotate your keys &amp;mdash; twice &amp;mdash; as soon as possible, and --&gt;
&lt;/div&gt;

&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;From the ServiceNow All Menu -&amp;gt; Bolt Data Connect -&amp;gt; IoT Setup module, select Settings.&lt;/li&gt;
&lt;li&gt;In the &lt;span class=&#34;doc fieldname&#34;&gt;Instance-Specific API Token&lt;/span&gt; field enter the API Token you received in Step 1.&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;IoT Cloud&lt;/strong&gt; link next to &lt;span class=&#34;doc fieldname&#34;&gt;Credential Alias&lt;/span&gt;.
&lt;ol&gt;
&lt;li&gt;Select the credential that shows up in the related list towards the bottom of the page.&lt;/li&gt;
&lt;li&gt;In the &lt;span class=&#34;doc fieldname&#34;&gt;AWS Access Key ID&lt;/span&gt; field, enter the Access Key received in Step 1.&lt;/li&gt;
&lt;li&gt;In the &lt;span class=&#34;doc fieldname&#34;&gt;AWS Secret Access Key&lt;/span&gt; field, enter the Secret Key received in Step 1.&lt;/li&gt;
&lt;li&gt;You shouldn’t need to modify any other settings here. Click Update and close the tab (if it opened in a new tab).&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;authorize-the-hahahugoshortcodes9hbhb-to-access-your-servicenow-instance&#34;&gt;Authorize the IoT Cloud to access your ServiceNow Instance&lt;/h3&gt;
&lt;p&gt;In order for the IoT Cloud to send Alerts to your ServiceNow Instance, you must Authorize the app to access the ServiceNow APIs associated with your instance.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;From the ServiceNow All Menu -&amp;gt; Bolt Data Connect -&amp;gt; IoT Setup module, select Settings.&lt;/li&gt;
&lt;li&gt;Below the &lt;em&gt;Connected Application&lt;/em&gt; label, select &lt;strong&gt;Authorize&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/connected-application-1.png&#34;
         alt=&#34;Authorize the Connected Application&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Authorize the Connected Application&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;You’ll be redirected to a ServiceNow Authorization_ screen. Select &lt;strong&gt;Allow&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Heads Up&lt;/h4&gt;
Verify the URL in this window is accurate. You must be logged in as a User of the Instance in which you wish to authorize the IoT Cloud integrations (this is the User the IoT Cloud will use to send Alerts and trigger platform events). If you need to switch to another User, you can select the &amp;ldquo;Not you?&amp;rdquo; link to be redirected to your Instance&amp;rsquo;s login page to log-in and authorize as a different User within your Instance.
&lt;/div&gt;

&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/connected-application-oauth-1.png&#34;
         alt=&#34;Allow the IoT Cloud to access your Org&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Allow the IoT Cloud to access your Org&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;After selecting &lt;strong&gt;Allow&lt;/strong&gt;, refresh the page. The status of the authorization will be displayed.&lt;/li&gt;
&lt;li&gt;When successful, the authorization status message window will close automatically (or you can close it manually if you chose). In the unlikely event you encounter an error during authorization, please let us know as soon as practical!&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/connected-application-oauth-2.png&#34;
         alt=&#34;Authorization success message&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Authorization success message&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
Bolt Data Connect does not collect any data from you or your Instance; this authorization only provides the IoT Cloud with the ability to send alerts to your Instance. The IoT Cloud is never given your login credentials.
&lt;/div&gt;

&lt;ol start=&#34;7&#34;&gt;
&lt;li&gt;
&lt;p&gt;That’s it! This should only be required once, but should you ever need to re-establish this authorization, you can repeat these steps at any time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To revoke authorization at any time, you can follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select All (ServiceNow All Modules)&lt;/li&gt;
&lt;li&gt;Search for &lt;code&gt;System OAuth&lt;/code&gt; and select &lt;code&gt;Manage Tokens&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;You should find up to three tokens with the name &lt;code&gt;IoT Cloud&lt;/code&gt;. You can either delete these records or select them and click &lt;code&gt;Revoke Access&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;You can re-authorize the IoT Cloud at any time by following the steps above.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can check which ServiceNow User is currently authorized by the IoT Cloud at any time.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to the Settings module found under All -&amp;gt; Bolt Data Connect -&amp;gt; IoT Setup -&amp;gt; Settings.&lt;/li&gt;
&lt;li&gt;The User should be displayed next to the Connected Application label:&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/connected-application-2.png&#34;
         alt=&#34;Authorization check&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Authorization check&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- ### Rotating Bolt Data Connect Access Keys

The Bolt Data Connect Access Keys can be rotated at any time. This helps limit any unintended access to your data. We recommend that you refresh Access Keys at least every 45 days, but the more frequent, the better.

1. From the Bolt Data Connect App (if you’re not already there, follow the Launching the App section in the App Tour), go to the IoT Setup tab.
1. Select Global Settings.
1. You’ll need to have the Named Credential open in a separate window/tab:

   1. Select the IoT Cloud API link (should open in a new tab; if not, keep this tab/window open to the Named Credential and open a new tab to the IoT Setup tab, Global Settings).
   1. Select Edit.
   1. In the next step you’ll be editing the following fields: AWS Access Key ID and AWS Secret Access Key.

   &lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/named-credential-1.png&#34;
            alt=&#34;Named credential fields&#34;/&gt;&lt;figcaption&gt;
               &lt;p&gt;Named credential fields&lt;/p&gt;
           &lt;/figcaption&gt;
   &lt;/figure&gt;


1. Once the Named Credential tab/window is staged, back on the IoT Admin page, select Rotate Keys.
1. New Keys should appear under the Rotate Keys button with a copy link next to each.

&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/named-credential-2.png&#34;
         alt=&#34;New keys&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;New keys&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


6. Select &#34;Copy&#34; next to AWS Access Key ID, and paste into the respective field on the Named Credential.
1. Repeat for AWS Secret Access Key.
1. Select Save on the Named Credential and close that tab/window.
1. To clear the keys from the Global Settings screen, return to the IoT Setup tab.
1. To test the new keys, return to the Global Settings screen from the IoT Setup tab (which automatically checks who’s authorized) or visit the IoT Console and search for a Thing. --&gt;
&lt;!-- NOT IMPLEMENTED YET --&gt;
&lt;!-- ### IoT Connector API

For customers with their own IoT Cloud, we&#39;ve fully exposed the IoT Cloud Connector API to allow you to use the Bolt Data Connect Salesforce App with your own IoT Cloud by following a few simple steps. (See below)

&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/iot-cloud-connector-overview.png&#34;
         alt=&#34;IoT Cloud Connector&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;IoT Cloud Connector&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


1. Call the /IoTAlert Web Service from your IoT Cloud
1. Implement the IoT Connector Apex class [SPKI.IoT_Connector_API] to call your IoT Cloud&#39;s exposed APIs

&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/iot-connector-api.png&#34;
         alt=&#34;IoT Cloud Connector API&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;IoT Cloud Connector API&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
 --&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Licensing</title>
      <link>/docs/salesforce/iot-setup/global-settings/licensing/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/global-settings/licensing/</guid>
      <description>
        
        
        &lt;h2 id=&#34;view-licenses&#34;&gt;View Licenses&lt;/h2&gt;
&lt;p&gt;From the Global Settings page, you can easiliy view the Bolt Data Connect licensing across all of your orgs (Dev, Test, Production, etc.) and all of the Application Layers (Salesforce, IoT Cloud and Edge Gateway).&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/view-licenses.png&#34;
         alt=&#34;View Licenses&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;View Licenses&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id=&#34;salesforce-licenses&#34;&gt;Salesforce Licenses&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;Standard Licenses&lt;/dt&gt;
&lt;dd&gt;The number of Standard Bolt Data Connect Salesforce User licenses used / total available.&lt;/dd&gt;
&lt;dt&gt;Community Licenses&lt;/dt&gt;
&lt;dd&gt;The number of Community (Experience Cloud) Bolt Data Connect Salesforce User licenses used / total available.&lt;/dd&gt;
&lt;dt&gt;Last License Check&lt;/dt&gt;
&lt;dd&gt;The most recent date of synchronizing the Licenses with Salesforce.&lt;/dd&gt;
&lt;dt&gt;License Status&lt;/dt&gt;
&lt;dd&gt;The status of the License from Salesforce App Exchange.&lt;/dd&gt;
&lt;dt&gt;License Expiration&lt;/dt&gt;
&lt;dd&gt;The date of the License Expiration from Salesforce App Exchange.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id=&#34;cloud-licenses&#34;&gt;Cloud Licenses&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;Organization&lt;/dt&gt;
&lt;dd&gt;The parent / local IoT Cloud accounts connected to this org&lt;/dd&gt;
&lt;dt&gt;License Usage&lt;/dt&gt;
&lt;dd&gt;A calculation of the total percentage of device licenses used across all orgs&lt;/dd&gt;
&lt;dt&gt;Thing Message Rates&lt;/dt&gt;
&lt;dd&gt;A list of licensed message rates along with the purchased and used count of each&lt;/dd&gt;
&lt;dt&gt;Hardware Device Types&lt;/dt&gt;
&lt;dd&gt;A list of licensed devices types along with the purchased and used count of each&lt;/dd&gt;
&lt;/dl&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;License Flexibility&lt;/h4&gt;
As Thing Type &amp;ldquo;Message Rate&amp;rdquo; definitions are changed, licensing is evaluated and updated. We&amp;rsquo;ve implemented a flexible license usage policy, allowing you to use any Message Rate below or equal to the purchased rate.
&lt;/div&gt;

&lt;h2 id=&#34;license-alarms&#34;&gt;License Alarms&lt;/h2&gt;
&lt;p&gt;License Alarms can now be configured and automatically created into Salesforce so that administrators can monitor and automate actions on both Salesforce App and Device Licenses.&lt;/p&gt;
&lt;p&gt;To view the License Logs and Alarms, create a Report:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Report Type: &lt;strong&gt;IoT Admin Logs&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Filters:
&lt;ul&gt;
&lt;li&gt;Show Me: All IoT Admin Logs&lt;/li&gt;
&lt;li&gt;Log Type: &amp;ldquo;Licensing&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You will find 2 records for each Licensing event, with the following &lt;em&gt;Job / Record Id&lt;/em&gt; values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;APP_LICENSES&lt;/strong&gt; : Lists the results of the Salesforce App Licensing check&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DEVICE_LICENSES&lt;/strong&gt; : Lists the results of the IoT Cloud Device Licensing check&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/licenses-alarms.png&#34;
         alt=&#34;License Alarms&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;License Alarms&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Each of the above records will have one of the following &lt;em&gt;Job Status&lt;/em&gt; values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Success&lt;/strong&gt; : Indicates that the license check was successful and no alarms were created.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Warning&lt;/strong&gt; : Indicates that one of the following alarms was included:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Less than 30 days remaining on Salesforce Licenses&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Salesforce License Usage is above 80% threshold&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Device License Usage is above 90% threshold&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;No Device Licenses found&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Error&lt;/strong&gt; : Indicates that one of the following alarm errors was encountered:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Salesforce License Usage Exceeded&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Could not load Managed Package licensing data&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Licensing</title>
      <link>/docs/servicenow/iot-setup/global-settings/licensing/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/servicenow/iot-setup/global-settings/licensing/</guid>
      <description>
        
        
        &lt;h2 id=&#34;view-licenses&#34;&gt;View Licenses&lt;/h2&gt;
&lt;p&gt;From the Settings module, you can easiliy view the Bolt Data Connect licensing across all of your Instances (Dev, Test, Production, etc.) and all of the Application Layers (ServiceNow, IoT Cloud and Edge Gateway).&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/view-licenses.png&#34;
         alt=&#34;View Licenses&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;View Licenses&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id=&#34;servicenow-licenses&#34;&gt;ServiceNow Licenses&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;Standard Licenses&lt;/dt&gt;
&lt;dd&gt;The number of Standard Bolt Data Connect IoT User licenses used.&lt;/dd&gt;
&lt;dt&gt;Admin Licenses&lt;/dt&gt;
&lt;dd&gt;The number of Admin Bolt Data Connect IoT User licenses used.&lt;/dd&gt;
&lt;dt&gt;Portal Licenses&lt;/dt&gt;
&lt;dd&gt;The number of Portal Bolt Data Connect ServiceNow User licenses used.&lt;/dd&gt;
&lt;dt&gt;Last License Check&lt;/dt&gt;
&lt;dd&gt;The most recent date of synchronizing the Licenses with ServiceNow.&lt;/dd&gt;
&lt;dt&gt;License Status&lt;/dt&gt;
&lt;dd&gt;The status of the License from ServiceNow.&lt;/dd&gt;
&lt;dt&gt;License Expiration&lt;/dt&gt;
&lt;dd&gt;The date of the License Expiration from ServiceNow.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id=&#34;iot-cloud-licenses&#34;&gt;IoT Cloud Licenses&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;Organization&lt;/dt&gt;
&lt;dd&gt;The parent / local IoT Cloud accounts connected to this Instance&lt;/dd&gt;
&lt;dt&gt;License Usage&lt;/dt&gt;
&lt;dd&gt;A calculation of the total percentage of device licenses used across all Instances&lt;/dd&gt;
&lt;dt&gt;Thing Message Rates&lt;/dt&gt;
&lt;dd&gt;A list of licensed message rates along with the purchased and used count of each&lt;/dd&gt;
&lt;dt&gt;Hardware Device Types&lt;/dt&gt;
&lt;dd&gt;A list of licensed devices types along with the purchased and used count of each&lt;/dd&gt;
&lt;/dl&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;License Flexibility&lt;/h4&gt;
As Thing Type &amp;ldquo;Message Rate&amp;rdquo; definitions are changed, licensing is evaluated and updated. We&amp;rsquo;ve implemented a flexible license usage policy, allowing you to use any Message Rate below or equal to the purchased rate.
&lt;/div&gt;

&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- ## License Alarms

License Alarms can now be configured and automatically created into Salesforce so that administrators can monitor and automate actions on both Salesforce App and Device Licenses.

To view the License Logs and Alarms, create a Report:

- Report Type: **IoT Admin Logs**
- Filters:
  - Show Me: All IoT Admin Logs
  - Log Type: &#34;Licensing&#34;

You will find 2 records for each Licensing event, with the following _Job / Record Id_ values:

- **APP_LICENSES** : Lists the results of the Salesforce App Licensing check
- **DEVICE_LICENSES** : Lists the results of the IoT Cloud Device Licensing check

&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/licenses-alarms.png&#34;
         alt=&#34;License Alarms&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;License Alarms&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


Each of the above records will have one of the following _Job Status_ values:

- **Success** : Indicates that the license check was successful and no alarms were created.
- **Warning** : Indicates that one of the following alarms was included:
  - _Less than 30 days remaining on Salesforce Licenses_
  - _Salesforce License Usage is above 80% threshold_
  - _Device License Usage is above 90% threshold_
  - _No Device Licenses found_
- **Error** : Indicates that one of the following alarm errors was encountered:
  - _Salesforce License Usage Exceeded_
  - _Could not load Managed Package licensing data_ --&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Thing Object</title>
      <link>/docs/salesforce/iot-setup/global-settings/thing-object/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/global-settings/thing-object/</guid>
      <description>
        
        
        &lt;ol&gt;
&lt;li&gt;From the Bolt Data Connect App (if you’re not already there, follow the Launching the App section in the App Tour), go to the IoT Setup tab.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Global Settings&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In the Thing Object Settings section of the Global Settings page, select the Salesforce Object in the &lt;span class=&#34;doc fieldname&#34;&gt;Thing Object&lt;/span&gt; field.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/iot-setup-thing-object.png&#34;
         alt=&#34;Global Settings - Thing Object Settings&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Global Settings - Thing Object Settings&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;field-definitions&#34;&gt;Field Definitions&lt;/h2&gt;
&lt;p&gt;Once you select an Object you can decide which Salesforce fields to bind to the following:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Thing Label&lt;/dt&gt;
&lt;dd&gt;This field is used as the label in the IoT Console Views.&lt;/dd&gt;
&lt;dt&gt;Thing External ID Field&lt;/dt&gt;
&lt;dd&gt;This field is used as the primary key for data operations on a Thing (it’s how the data is indexed and must be unique within your Org).&lt;/dd&gt;
&lt;/dl&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Heads up&lt;/h4&gt;
This field is the most important, as it allows your Thing’s data to be organized and accessed properly. Without this field, your Things&amp;rsquo; data will just exist in the IoT Cloud and will be inaccessible from Salesforce.
&lt;/div&gt;

&lt;dl&gt;
&lt;dt&gt;Thing Status Field&lt;/dt&gt;
&lt;dd&gt;This field is used in the IoT Console Navigation Pane and IoT Console Views.&lt;/dd&gt;
&lt;dt&gt;Thing Type&lt;/dt&gt;
&lt;dd&gt;This field is used as the identifier for which Thing-Type to assume for the given Thing. If a Thing has an undefined Thing Type, every message will be sent to the Cloud, unaggregated, and no Alerts will be provided (other than the built-in Offline Alert). For cost management purposes, it is highly recommended, that every Thing be assigned a Thing Type.&lt;/dd&gt;
&lt;dt&gt;Thing Gateway&lt;/dt&gt;
&lt;dd&gt;This field is used to determine which gateway will receive and manage your Things data. Without this field, your Thing’s data will not be aggregated or stored (i.e. your Thing won’t have anyone to talk to and its data will be lost). Must be a Lookup(IoT Gateway) field.&lt;/dd&gt;
&lt;dt&gt;Context Data Field&lt;/dt&gt;
&lt;dd&gt;This behind the scenes field will track the status of the context data syncing. Must be a Long Text Area field.&lt;/dd&gt;
&lt;dt&gt;Last Alert Response Field&lt;/dt&gt;
&lt;dd&gt;This behind the scenes field will track the most recent Alert Response and it&amp;rsquo;s results. Must be a Text field.&lt;/dd&gt;
&lt;dt&gt;Thing Latitude/Longitude Fields&lt;/dt&gt;
&lt;dd&gt;These fields are used to plot each Thing on the Map View in the IoT Console. Must be either two separate numeric fields, or a single Geo-Location field.&lt;/dd&gt;
&lt;dt&gt;Category Labels/Fields&lt;/dt&gt;
&lt;dd&gt;These fields determine the top-level navigation nodes in the IoT Console Navigation Pane Category Mode.&lt;/dd&gt;
&lt;dt&gt;Sub-Category Fields&lt;/dt&gt;
&lt;dd&gt;These fields determine the second-level navigation node in the IoT Console Navigation Pane Category Mode.&lt;/dd&gt;
&lt;/dl&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: System Settings</title>
      <link>/docs/salesforce/iot-setup/global-settings/system-settings/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/global-settings/system-settings/</guid>
      <description>
        
        
        &lt;h2 id=&#34;error-handling&#34;&gt;Error Handling&lt;/h2&gt;
&lt;p&gt;From the Global Settings page, scroll to the section labeled &amp;ldquo;System Settings&amp;rdquo;, to control how the background jobs will handle any unexpected errors. There are currently two settings available:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log Thing Errors to Chatter&lt;/li&gt;
&lt;li&gt;Log Servitization Errors to Chatter&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/global-error-handling.png&#34;
         alt=&#34;Error Handling&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Error Handling&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;These settings, when enabled, will log any errors from background jobs to the Chatter Feed of the appropriate record. For Thing Errors they will be attached to the Asset, or your custom Thing Object if configured. For Servitization Errors they will be attached to the Servitization Plan.&lt;/p&gt;
&lt;p&gt;Alternatively, if either these fields are NOT enabled the default behavior is to create &amp;ldquo;IoT Admin Log&amp;rdquo; records. This Custom Object can easily be accessed with Reports or as an Object Tab with List Views.&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Chatter&lt;/h4&gt;
&lt;p&gt;If either of the above values are enabled, remember to also Enable the Feed Tracking of the corresponding Object (e.g. Servitization Plan, Asset, etc.) as seen in the following Setup screen.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/feed-tracking.png&#34;
         alt=&#34;Feed Tracking&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Feed Tracking&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;/div&gt;

&lt;h2 id=&#34;platform-event-handling&#34;&gt;Platform Event Handling&lt;/h2&gt;
&lt;p&gt;From the Global Settings page, scroll to the section labeled &amp;ldquo;System Settings&amp;rdquo;, to control how the Platform Events received from the IoT Cloud will be handled.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/global-system-settings.png&#34;
         alt=&#34;System Settings&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;System Settings&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;By enabling the field &amp;ldquo;Disable Platform Event Triggers&amp;rdquo;, the managed Apex Triggers will no longer process the Platform Events. Instead, we&amp;rsquo;ve provided the following Platform Event Triggered Flows we recommend you activate:&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/platform-event-triggered-flows.png&#34;
         alt=&#34;Platform Event Triggered Flows&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Platform Event Triggered Flows&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;IMPORTANT&lt;/h4&gt;
&lt;p&gt;The reason for choosing to activate the Flows instead of the Apex Triggers is to change the User that will run the automation including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IoT Alert History record creation&lt;/li&gt;
&lt;li&gt;IoT Alert Responses&lt;/li&gt;
&lt;li&gt;IoT Downtime record creation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Apex Triggers are run as the &amp;ldquo;Automated Process&amp;rdquo; user whereas the Flows will run as the user configured in the &lt;a href=&#34;../app-connectivity/&#34;&gt;Global Settings App-Connectivity&lt;/a&gt; section.&lt;/p&gt;

&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Thing Type Editing</title>
      <link>/docs/salesforce/iot-setup/thing-types/thing-type-specification/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/thing-types/thing-type-specification/</guid>
      <description>
        
        
        &lt;p&gt;Thing-Types define the configuration for Edge Processing.&lt;/p&gt;
&lt;h2 id=&#34;top-level-configuration&#34;&gt;Top Level Configuration&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Label&lt;/dt&gt;
&lt;dd&gt;The label to use for the Thing-Type specification.&lt;/dd&gt;
&lt;dt&gt;Is Active&lt;/dt&gt;
&lt;dd&gt;If a Thing&amp;rsquo;s Thing-Type is not active (i.e. this option is deselected), the Thing&amp;rsquo;s data will not be aggregated and every message will be forwarded from the Gateway to the Cloud. It is not recommended to deactivate a Thing-Type that is assigned to Things, except for brief troubleshooting; otherwise, it could potentially result in higher costs and missed Alerts.&lt;/dd&gt;
&lt;dt&gt;Sample Message&lt;/dt&gt;
&lt;dd&gt;Used to auto-populate the Sensors section of the Thing-Type Specification.&lt;/dd&gt;
&lt;dt&gt;Aggregate Type&lt;/dt&gt;
&lt;dd&gt;Determines when to send the aggregated messages. It can be configured to &amp;ldquo;None&amp;rdquo;, &amp;ldquo;Seconds&amp;rdquo;, or &amp;ldquo;Count&amp;rdquo;.&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;None&lt;/strong&gt;: Forward every message received from the device to the cloud.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seconds&lt;/strong&gt;: Aggregate the last N seconds of Thing data, where N is defined by the Aggregate Interval field.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Count&lt;/strong&gt;: Aggregate the last N messages from a Thing, where N is defined by the Aggregate Interval field.&lt;/li&gt;
&lt;/ul&gt;
&lt;dl&gt;
&lt;dt&gt;Aggregate Interval&lt;/dt&gt;
&lt;dd&gt;Used in conjunction with the Aggregate Type field to determine the frequency of aggregation performed on the Gateway.&lt;/dd&gt;
&lt;dt&gt;Offline Timeout (Seconds)&lt;/dt&gt;
&lt;dd&gt;Used to determine if a Thing is offline. If a device has not communicated in the time specified in this field, then an Offline Alert is sent to Salesforce.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;digital-twin-children&#34;&gt;Digital Twin Children&lt;/h2&gt;
&lt;p&gt;See the &lt;a href=&#34;../../digital-twins/&#34;&gt;Digital Twins&lt;/a&gt; page for details on configuring this section.&lt;/p&gt;
&lt;h2 id=&#34;sensors&#34;&gt;Sensors&lt;/h2&gt;
&lt;p&gt;This section defines all the Sensors for the Thing-Type. Note if you have a sample message in JSON format, you can paste the message in the Sample Message field and select Parse to auto-fill the Sensors section.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Label&lt;/dt&gt;
&lt;dd&gt;The display name of the sensor data on plots.&lt;/dd&gt;
&lt;dt&gt;Sensor Name&lt;/dt&gt;
&lt;dd&gt;The name of the field in the actual Thing&amp;rsquo;s data message.&lt;/dd&gt;
&lt;/dl&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Example&lt;/h4&gt;
Sensor Name = &lt;code&gt;sensorABC&lt;/code&gt;, expects a field like &lt;code&gt;{... &amp;quot;sensorABC&amp;quot;: 123, ...}&lt;/code&gt; to be in the data message from the Thing.
&lt;/div&gt;

&lt;dl&gt;
&lt;dt&gt;Data Type&lt;/dt&gt;
&lt;dd&gt;Specifies the type of data expected from each Sensor.&lt;/dd&gt;
&lt;dt&gt;Aggregate Function&lt;/dt&gt;
&lt;dd&gt;Determines how the data is aggregated in the Gateway.&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NONE&lt;/strong&gt;: Use the last received value as the value for the Sensor for Calculations, Alerts, and Cloud updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SUM&lt;/strong&gt;: Sum all values received during the &lt;span class=&#34;doc fieldname&#34;&gt;Aggregate Interval&lt;/span&gt; as the value for the Sensor for Calculations, Alerts, and Cloud updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AVG&lt;/strong&gt;: Average all values received during the &lt;span class=&#34;doc fieldname&#34;&gt;Aggregate Interval&lt;/span&gt; as the value for the Sensor for Calculations, Alerts, and Cloud updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MIN&lt;/strong&gt;: Use the minimum of all values received during the &lt;span class=&#34;doc fieldname&#34;&gt;Aggregate Interval&lt;/span&gt; as the value for the Sensor for Calculations, Alerts, and Cloud updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MAX&lt;/strong&gt;: Use the maximum of all values received during the &lt;span class=&#34;doc fieldname&#34;&gt;Aggregate Interval&lt;/span&gt; as the value for the Sensor for Calculations, Alerts, and Cloud updates.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;sensor-settings&#34;&gt;Sensor Settings&lt;/h3&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-sensor-settings.png&#34;
         alt=&#34;Sensor Settings&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Sensor Settings&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;dl&gt;
&lt;dt&gt;Include Undefined Sensors&lt;/dt&gt;
&lt;dd&gt;When not selected any unrecognized sensor value(s) will be trimmed from the messages before processing&lt;/dd&gt;
&lt;dt&gt;Enable Sensor Type Conversion&lt;/dt&gt;
&lt;dd&gt;When selected the raw sensor values will be convereted into the Data Types specified below&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;context-fields&#34;&gt;Context Fields&lt;/h2&gt;
&lt;p&gt;Context Fields are configured in the &lt;a href=&#34;../context-data#thing-type-context-fields&#34;&gt;Context Data Setup Page&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;ml-models&#34;&gt;ML Models&lt;/h2&gt;
&lt;p&gt;This section defines all the ML Models available on a Gateway. These Models have been developed by a Data Scientist and uploaded to the BDC IoT Cloud. &lt;strong&gt;NOTE:&lt;/strong&gt; This section is only available on Gateway Thing Types.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;See &lt;a href=&#34;../../machine-learning/&#34;&gt;Machine Learning&lt;/a&gt; for more information.&lt;/strong&gt;&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Label&lt;/dt&gt;
&lt;dd&gt;The label to use for the Calculated Field.&lt;/dd&gt;
&lt;dt&gt;Model Name&lt;/dt&gt;
&lt;dd&gt;The unique name of the model.&lt;/dd&gt;
&lt;dt&gt;Input Features&lt;/dt&gt;
&lt;dd&gt;The features required by this model. These will be mapped in the ML Inferences.&lt;/dd&gt;
&lt;dt&gt;Model Parameters&lt;/dt&gt;
&lt;dd&gt;Configuration values for the model itself.&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-gateway-model.png&#34;
         alt=&#34;ML Models&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;ML Models&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;ml-inferences&#34;&gt;ML Inferences&lt;/h2&gt;
&lt;p&gt;This section defines all the ML Inference Fields for a Thing-Type. Each of these represent a result of executing an ML Model with a set of input values from IoT Sensors.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Label&lt;/dt&gt;
&lt;dd&gt;The label to use for the ML Inference field.&lt;/dd&gt;
&lt;dt&gt;Name&lt;/dt&gt;
&lt;dd&gt;The name of the ML Inference field. It&amp;rsquo;s also the name referenced by other Calculations and Alerts.&lt;/dd&gt;
&lt;dt&gt;Model&lt;/dt&gt;
&lt;dd&gt;The ML Model (defined on the corresponding Gateway Thing Type) that will be executed.&lt;/dd&gt;
&lt;dt&gt;Data Type&lt;/dt&gt;
&lt;dd&gt;Determines the assumed data type for the result of the Calculation.&lt;/dd&gt;
&lt;dt&gt;Formula&lt;/dt&gt;
&lt;dd&gt;The mapping of Model Input Features to IoT Sensor values.&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-model-inference.png&#34;
         alt=&#34;ML Inferences&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;ML Inferences&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;calculated-fields&#34;&gt;Calculated Fields&lt;/h2&gt;
&lt;p&gt;This section defines all the Calculated Fields for a Thing-Type. All Sensor data is aggregated prior to computing the Calculated Fields. It can be assumed that all Sensor data is up-to-date in conformance with the aggregation settings defined by each Sensor.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Label&lt;/dt&gt;
&lt;dd&gt;The label to use for the Calculated Field.&lt;/dd&gt;
&lt;dt&gt;Field Name&lt;/dt&gt;
&lt;dd&gt;The name of the field when this calculation is sent to the Cloud. It&amp;rsquo;s also the name referenced by other Calculations and Alerts.&lt;/dd&gt;
&lt;/dl&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Example&lt;/h4&gt;
Field Name = &lt;code&gt;calcABC&lt;/code&gt; results in &lt;code&gt;{... &amp;quot;calcABC&amp;quot;: 123, ...}&lt;/code&gt;, when data is sent to the Cloud and referenced as &lt;code&gt;calculation.calcABC&lt;/code&gt; in other Calculations and Alerts.
&lt;/div&gt;

&lt;dl&gt;
&lt;dt&gt;Data Type&lt;/dt&gt;
&lt;dd&gt;Determines the assumed data type for the result of the Calculation.&lt;/dd&gt;
&lt;dt&gt;Formula&lt;/dt&gt;
&lt;dd&gt;The actual formula to evaluate. The formula should be any Javascript statement that returns an assignable value. The formula can use any Sensor, Calculated Field, or Context Field in the computation. Sensor values are available in the &lt;code&gt;sensor&lt;/code&gt; namespace (e.g. &lt;code&gt;sensor.sensorABC&lt;/code&gt;), other Calculated Fields are available in the &lt;code&gt;calculation&lt;/code&gt; namespace (e.g. &lt;code&gt;calculation.calcABC&lt;/code&gt;), and Context Fields are available in the &lt;code&gt;context&lt;/code&gt; namespace (e.g. &lt;code&gt;context.contextABC&lt;/code&gt;).&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;alert-conditions&#34;&gt;Alert Conditions&lt;/h2&gt;
&lt;p&gt;This section defines all the Alert Conditions for a Thing-Type. Alerts are a special subset of Calculated Fields. Alerts are computed after all Calculated Fields have been computed, so it can be assumed that all Calculated Fields are using the most recent data. The result of the Alert calculation should be a boolean value, True if an Alert should be sent to Salesforce, False otherwise.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Label&lt;/dt&gt;
&lt;dd&gt;The label to use for the Alert Condition.&lt;/dd&gt;
&lt;dt&gt;Condition Name&lt;/dt&gt;
&lt;dd&gt;The name of the field when this alert is sent to the Cloud.&lt;/dd&gt;
&lt;/dl&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Example&lt;/h4&gt;
Condition Name = &lt;code&gt;alertABC&lt;/code&gt; results in &lt;code&gt;{... &amp;quot;alertABC&amp;quot;: 123, ...}&lt;/code&gt;, when data is sent to the Cloud.
&lt;/div&gt;

&lt;dl&gt;
&lt;dt&gt;Alert Type&lt;/dt&gt;
&lt;dd&gt;Determines the type of Alert sent to Salesforce. Each Alert sent to Salesforce will include this Alert Type, which can be used in your Processes to take actions (like update the IoT Thing Status for a given Thing).&lt;/dd&gt;
&lt;dt&gt;Alert Interval / Units&lt;/dt&gt;
&lt;dd&gt;Determines how often this Alert is re-broadcasted. If the Alert condition has persisted longer than the amount of time specified by this field, the Alert will be sent to Salesforce again, to retrigger any automated processes. It is recommended to keep the Alert Interval at rather large values to avoid retriggering your processes.&lt;/dd&gt;
&lt;dt&gt;Impacts Uptime&lt;/dt&gt;
&lt;dd&gt;When enabled, this Alert Type will impact Uptime calculations for &amp;ldquo;Downtime Periods&amp;rdquo; and &amp;ldquo;Servitization&amp;rdquo;&lt;/dd&gt;
&lt;dt&gt;Formula&lt;/dt&gt;
&lt;dd&gt;The actual formula to evaluate. The formula should be a Javascript statement, and can use any Sensor or Calculated Field in the calculation. The formula should result in a boolean value; It will be evaluated as if it&amp;rsquo;s boolean — i.e. if the value is &amp;ldquo;falsy&amp;rdquo; it will result in no Alert. Otherwise it will result in an Alert. Sensor values are available in the &lt;code&gt;sensor&lt;/code&gt; namespace (e.g. &lt;code&gt;sensor.sensorABC&lt;/code&gt;), Calculated Fields are available in the &lt;code&gt;calculation&lt;/code&gt; namespace (e.g. &lt;code&gt;calculation.calcABC&lt;/code&gt;), Context Fields are available in the &lt;code&gt;context&lt;/code&gt; namespace (e.g. &lt;code&gt;context.contextABC&lt;/code&gt;), and other Alert Conditions are available in the &lt;code&gt;alert&lt;/code&gt; namespace (e.g. &lt;code&gt;alert.alertABC&lt;/code&gt;).&lt;/dd&gt;
&lt;/dl&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Examples&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;The formula, &lt;code&gt;sensor.SensorA &amp;gt; 40&lt;/code&gt; executes the relational operation, comparing &lt;em&gt;SensorA&lt;/em&gt; to the literal 40. If this Condition Name was, &lt;code&gt;DeviceThawed&lt;/code&gt;, then the resulting message to the Cloud could be:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
 &amp;#34;sensor&amp;#34;: {
  &amp;#34;SensorA&amp;#34;: 39
 },
 &amp;#34;alert&amp;#34;: {
  &amp;#34;DeviceThawed&amp;#34;: false
 }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;- OR -&lt;/em&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
 sensor: {
  &amp;#34;SensorA&amp;#34;: 41
 },
 alert: {
  &amp;#34;DeviceThawed&amp;#34;: true
 }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&amp;hellip; with the later triggering an Alert with the defined Alert Type to Salesforce. Anytime an Alert is sent to Salesforce, the accompanying data message is included and can be used in your Process Builders or Flows. See the Processes section for more details.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The formula, &lt;code&gt;calculation.CalcA === &amp;quot;Cold&amp;quot;&lt;/code&gt; executes the strictly-equal equality operator, comparing &lt;code&gt;CalcA&lt;/code&gt; to the literal &lt;code&gt;&amp;quot;Cold&amp;quot;&lt;/code&gt;. If this Condition Name was, &lt;code&gt;DeviceCold&lt;/code&gt;, then the resulting message to the Cloud could be:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
 &amp;#34;sensor&amp;#34;: {
  &amp;#34;SensorA&amp;#34;: 39
 },
 &amp;#34;calculation&amp;#34;: {
  CalcA: &amp;#34;Cold&amp;#34;
 },
 &amp;#34;alert&amp;#34;: {
  &amp;#34;DeviceCold&amp;#34;: true
 }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;dl&gt;
&lt;dt&gt;Sample Result&lt;/dt&gt;
&lt;dd&gt;This field is automatically calculated based on the formula entered using the data provided in the sample message to populate the sensor and calculation namespaces.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;formula-editor&#34;&gt;Formula Editor&lt;/h2&gt;
&lt;p&gt;The Formula Editor now helps in writing formulas (both Calculated Fields and Alert Conditions). It allows the user to select any sensor, calculated field, digital twin value, function, or operator and will insert them at your cursor position.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-formula-editor.png&#34;
         alt=&#34;Formula Editor&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Formula Editor&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Examples&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;The formula, &lt;code&gt;sensor.SensorA + sensor.SensorB&lt;/code&gt;, will add the aggregated value of &lt;em&gt;SensorA&lt;/em&gt; to the aggregated value of &lt;em&gt;SensorB&lt;/em&gt;. If this Calculated Field name was &lt;code&gt;CalcA&lt;/code&gt;, then the resulting message to the Cloud could be:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
 sensor: {
  &amp;#34;SensorA&amp;#34;: 40,
  &amp;#34;SensorB&amp;#34;: 2
 },
 calculation: {
  &amp;#34;CalcA&amp;#34;: 42
 }
}
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;The formula, &lt;code&gt;(sensor.SensorA &amp;gt; 40) ? &amp;quot;Not Cold&amp;quot; : &amp;quot;Cold&amp;quot;&lt;/code&gt;, will execute the Javascript ternary operator (basically an assignable if-else statement). If this Calculated Field name was &lt;code&gt;ColdState&lt;/code&gt;, then the resulting message to the Cloud could be:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
 sensor: {
  &amp;#34;SensorA&amp;#34;: 39
 },
 calculation: {
  &amp;#34;ColdState&amp;#34;: &amp;#34;Cold&amp;#34;
 }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;- OR -&lt;/em&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
 &amp;#34;sensor&amp;#34;: {
  &amp;#34;SensorA&amp;#34;: 41
 },
 &amp;#34;calculation&amp;#34;: {
  &amp;#34;ColdState&amp;#34;: &amp;#34;Not Cold&amp;#34;
 }
}.
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;dl&gt;
&lt;dt&gt;Sample Result&lt;/dt&gt;
&lt;dd&gt;This field is automatically calculated based on the formula entered using the data provided in the sample message to populate the sensor and calculation namespace.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;state-machine-editor&#34;&gt;State Machine Editor&lt;/h2&gt;
&lt;p&gt;A State Machine is a special kind of Calculated Field which tracks the active &amp;ldquo;State&amp;rdquo;, as well as any other custom local variables. When one of the conditional transitions changes the state, actions will be executed allowing you to implement any custom business logic necessary. For a full overview of the undelying State Machine engine see: &lt;a href=&#34;../../../../edge-processing/state-machines&#34;&gt;State Machines&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The editor simplifies the creation / updating of these State Machines. Use the buttons at the top of the window for adding new Local Variable, States and Transitions.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-statemachine-editor.png&#34;
         alt=&#34;State Machine Editor&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;State Machine Editor&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id=&#34;local-variables&#34;&gt;Local Variables&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;Variable&lt;/dt&gt;
&lt;dd&gt;The unique name of this variable&lt;/dd&gt;
&lt;dt&gt;Value&lt;/dt&gt;
&lt;dd&gt;Typically a sensor value. If instead you&amp;rsquo;d like to create a track a non-sensor value, use the &amp;ldquo;Formula&amp;hellip;&amp;rdquo; option&lt;/dd&gt;
&lt;dt&gt;Initialize Only&lt;/dt&gt;
&lt;dd&gt;This variable will only be updated on initialization, not on every step. This allows you to modify and save the value in entry / during / exit actions&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id=&#34;states&#34;&gt;States&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;State&lt;/dt&gt;
&lt;dd&gt;The unique name of the state. These state names can use a dot-notation to create sub-states as well (e.g. &amp;ldquo;running.normal&amp;rdquo; &amp;amp; &amp;ldquo;running.hot&amp;rdquo; would be sub-states of &amp;ldquo;running&amp;rdquo;)&lt;/dd&gt;
&lt;dt&gt;Initial&lt;/dt&gt;
&lt;dd&gt;Exactly 1 State must be marked as the initial state for each &amp;ldquo;level&amp;rdquo; (for sub-states). This is the state the machine will begin in for that &amp;ldquo;level&amp;rdquo;&lt;/dd&gt;
&lt;dt&gt;Entry / During / Exit Actions&lt;/dt&gt;
&lt;dd&gt;Click Add / Edit to modify the formulas. These actions are executed corresponding to state changes / steps.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id=&#34;transitions&#34;&gt;Transitions&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;Priority&lt;/dt&gt;
&lt;dd&gt;Numeric sort order for transitions, should be unique to the &amp;ldquo;From State&amp;rdquo;&lt;/dd&gt;
&lt;dt&gt;From State&lt;/dt&gt;
&lt;dd&gt;When the machine is in this active state, the condition will be evaluated. The first transition condition, ordered by Priority, which evalues to true will be executed.&lt;/dd&gt;
&lt;dt&gt;To State&lt;/dt&gt;
&lt;dd&gt;The state which will become active after the transition&lt;/dd&gt;
&lt;dt&gt;Condition&lt;/dt&gt;
&lt;dd&gt;Must evaluate to true/false. If true, this transition will execute.&lt;/dd&gt;
&lt;/dl&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Thing Type Editing</title>
      <link>/docs/servicenow/iot-setup/thing-types/thing-type-specification/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/servicenow/iot-setup/thing-types/thing-type-specification/</guid>
      <description>
        
        
        &lt;p&gt;Thing-Types define the configuration for Edge Processing.&lt;/p&gt;
&lt;h2 id=&#34;top-level-configuration&#34;&gt;Top Level Configuration&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Label&lt;/dt&gt;
&lt;dd&gt;The label to use for the Thing-Type specification.&lt;/dd&gt;
&lt;dt&gt;Is Active&lt;/dt&gt;
&lt;dd&gt;If a Thing&amp;rsquo;s Thing-Type is not active (i.e. this option is deselected), the Thing&amp;rsquo;s data will not be aggregated and every message will be forwarded from the Gateway to the Cloud. It is not recommended to deactivate a Thing-Type that is assigned to Things, except for brief troubleshooting; otherwise, it could potentially result in higher costs and missed Alerts.&lt;/dd&gt;
&lt;dt&gt;Sample Message&lt;/dt&gt;
&lt;dd&gt;Used to auto-populate the Sensors section of the Thing-Type Specification.&lt;/dd&gt;
&lt;dt&gt;Aggregate Type&lt;/dt&gt;
&lt;dd&gt;Determines when to send the aggregated messages. It can be configured to &amp;ldquo;None&amp;rdquo;, &amp;ldquo;Seconds&amp;rdquo;, or &amp;ldquo;Count&amp;rdquo;.&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;None&lt;/strong&gt;: Forward every message received from the device to the cloud.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seconds&lt;/strong&gt;: Aggregate the last N seconds of Thing data, where N is defined by the Aggregate Interval field.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Count&lt;/strong&gt;: Aggregate the last N messages from a Thing, where N is defined by the Aggregate Interval field.&lt;/li&gt;
&lt;/ul&gt;
&lt;dl&gt;
&lt;dt&gt;Aggregate Interval&lt;/dt&gt;
&lt;dd&gt;Used in conjunction with the Aggregate Type field to determine the frequency of aggregation performed on the Gateway.&lt;/dd&gt;
&lt;dt&gt;Offline Timeout (Seconds)&lt;/dt&gt;
&lt;dd&gt;Used to determine if a Thing is offline. If a device has not communicated in the time specified in this field, then an Offline Alert is sent to ServiceNow.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id=&#34;sensor-settings&#34;&gt;Sensor Settings&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;Include Undefined Sensors&lt;/dt&gt;
&lt;dd&gt;When not selected any unrecognized sensor value(s) will be trimmed from the messages before processing&lt;/dd&gt;
&lt;dt&gt;Enable Sensor Type Conversion&lt;/dt&gt;
&lt;dd&gt;When selected the raw sensor values will be convereted into the Data Types specified below&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/thing-types/assets/thingtypes-page.png&#34;
         alt=&#34;Thing Type Record Page&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Type Record Page&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;digital-twin-children&#34;&gt;Digital Twin Children&lt;/h2&gt;
&lt;p&gt;See the &lt;a href=&#34;../../digital-twins/&#34;&gt;Digital Twins&lt;/a&gt; page for details on configuring this section.&lt;/p&gt;
&lt;h2 id=&#34;sensors&#34;&gt;Sensors&lt;/h2&gt;
&lt;p&gt;This section defines all the Sensors for the Thing-Type. Note if you have a sample message in JSON format, you can paste the message in the Sample Message field and select Parse to auto-fill the Sensors section.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Label&lt;/dt&gt;
&lt;dd&gt;The display name of the sensor data on plots.&lt;/dd&gt;
&lt;dt&gt;Sensor Name&lt;/dt&gt;
&lt;dd&gt;The name of the field in the actual Thing&amp;rsquo;s data message.&lt;/dd&gt;
&lt;/dl&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Example&lt;/h4&gt;
Sensor Name = &lt;code&gt;sensorABC&lt;/code&gt;, expects a field like &lt;code&gt;{... &amp;quot;sensorABC&amp;quot;: 123, ...}&lt;/code&gt; to be in the data message from the Thing.
&lt;/div&gt;

&lt;dl&gt;
&lt;dt&gt;Data Type&lt;/dt&gt;
&lt;dd&gt;Specifies the type of data expected from each Sensor.&lt;/dd&gt;
&lt;dt&gt;Aggregate Function&lt;/dt&gt;
&lt;dd&gt;Determines how the data is aggregated in the Gateway.&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NONE&lt;/strong&gt;: Use the last received value as the value for the Sensor for Calculations, Alerts, and Cloud updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SUM&lt;/strong&gt;: Sum all values received during the &lt;span class=&#34;doc fieldname&#34;&gt;Aggregate Interval&lt;/span&gt; as the value for the Sensor for Calculations, Alerts, and Cloud updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AVG&lt;/strong&gt;: Average all values received during the &lt;span class=&#34;doc fieldname&#34;&gt;Aggregate Interval&lt;/span&gt; as the value for the Sensor for Calculations, Alerts, and Cloud updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MIN&lt;/strong&gt;: Use the minimum of all values received during the &lt;span class=&#34;doc fieldname&#34;&gt;Aggregate Interval&lt;/span&gt; as the value for the Sensor for Calculations, Alerts, and Cloud updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MAX&lt;/strong&gt;: Use the maximum of all values received during the &lt;span class=&#34;doc fieldname&#34;&gt;Aggregate Interval&lt;/span&gt; as the value for the Sensor for Calculations, Alerts, and Cloud updates.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;context-fields&#34;&gt;Context Fields&lt;/h2&gt;
&lt;p&gt;Context Fields are configured in the &lt;a href=&#34;../context-data#thing-type-context-fields&#34;&gt;Context Data Setup Page&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;ml-models&#34;&gt;ML Models&lt;/h2&gt;
&lt;p&gt;This section defines all the ML Models available on a Gateway. These Models have been developed by a Data Scientist and uploaded to the BDC IoT Cloud. &lt;strong&gt;NOTE:&lt;/strong&gt; This section is only available on Gateway Thing Types.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;See &lt;a href=&#34;../../machine-learning/&#34;&gt;Machine Learning&lt;/a&gt; for more information.&lt;/strong&gt;&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Label&lt;/dt&gt;
&lt;dd&gt;The label to use for the Calculated Field.&lt;/dd&gt;
&lt;dt&gt;Model Name&lt;/dt&gt;
&lt;dd&gt;The unique name of the model.&lt;/dd&gt;
&lt;dt&gt;Input Features&lt;/dt&gt;
&lt;dd&gt;The features required by this model. These will be mapped in the ML Inferences.&lt;/dd&gt;
&lt;dt&gt;Model Parameters&lt;/dt&gt;
&lt;dd&gt;Configuration values for the model itself.&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/thing-types/assets/thingtypes-gateway-model.png&#34;
         alt=&#34;ML Models&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;ML Models&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;ml-inferences&#34;&gt;ML Inferences&lt;/h2&gt;
&lt;p&gt;This section defines all the ML Inference Fields for a Thing-Type. Each of these represent a result of executing an ML Model with a set of input values from IoT Sensors.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Label&lt;/dt&gt;
&lt;dd&gt;The label to use for the ML Inference field.&lt;/dd&gt;
&lt;dt&gt;Name&lt;/dt&gt;
&lt;dd&gt;The name of the ML Inference field. It&amp;rsquo;s also the name referenced by other Calculations and Alerts.&lt;/dd&gt;
&lt;dt&gt;Model&lt;/dt&gt;
&lt;dd&gt;The ML Model (defined on the corresponding Gateway Thing Type) that will be executed.&lt;/dd&gt;
&lt;dt&gt;Data Type&lt;/dt&gt;
&lt;dd&gt;Determines the assumed data type for the result of the Calculation.&lt;/dd&gt;
&lt;dt&gt;Formula&lt;/dt&gt;
&lt;dd&gt;The mapping of Model Input Features to IoT Sensor values.&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/thing-types/assets/thingtypes-model-inference.png&#34;
         alt=&#34;ML Inferences&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;ML Inferences&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;calculated-fields&#34;&gt;Calculated Fields&lt;/h2&gt;
&lt;p&gt;This section defines all the Calculated Fields for a Thing-Type. All Sensor data is aggregated prior to computing the Calculated Fields. It can be assumed that all Sensor data is up-to-date in conformance with the aggregation settings defined by each Sensor.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Label&lt;/dt&gt;
&lt;dd&gt;The label to use for the Calculated Field.&lt;/dd&gt;
&lt;dt&gt;Field Name&lt;/dt&gt;
&lt;dd&gt;The name of the field when this calculation is sent to the Cloud. It&amp;rsquo;s also the name referenced by other Calculations and Alerts.&lt;/dd&gt;
&lt;/dl&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Example&lt;/h4&gt;
Field Name = &lt;code&gt;calcABC&lt;/code&gt; results in &lt;code&gt;{... &amp;quot;calcABC&amp;quot;: 123, ...}&lt;/code&gt;, when data is sent to the Cloud and referenced as &lt;code&gt;calculation.calcABC&lt;/code&gt; in other Calculations and Alerts.
&lt;/div&gt;

&lt;dl&gt;
&lt;dt&gt;Data Type&lt;/dt&gt;
&lt;dd&gt;Determines the assumed data type for the result of the Calculation.&lt;/dd&gt;
&lt;dt&gt;Formula&lt;/dt&gt;
&lt;dd&gt;The actual formula to evaluate. The formula should be any Javascript statement that returns an assignable value. The formula can use any Sensor, Calculated Field, or Context Field in the computation. Sensor values are available in the &lt;code&gt;sensor&lt;/code&gt; namespace (e.g. &lt;code&gt;sensor.sensorABC&lt;/code&gt;), other Calculated Fields are available in the &lt;code&gt;calculation&lt;/code&gt; namespace (e.g. &lt;code&gt;calculation.calcABC&lt;/code&gt;), and Context Fields are available in the &lt;code&gt;context&lt;/code&gt; namespace (e.g. &lt;code&gt;context.contextABC&lt;/code&gt;).&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;alert-conditions&#34;&gt;Alert Conditions&lt;/h2&gt;
&lt;p&gt;This section defines all the Alert Conditions for a Thing-Type. Alerts are a special subset of Calculated Fields. Alerts are computed after all Calculated Fields have been computed, so it can be assumed that all Calculated Fields are using the most recent data. The result of the Alert calculation should be a boolean value, True if an Alert should be sent to ServiceNow, False otherwise.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Label&lt;/dt&gt;
&lt;dd&gt;The label to use for the Alert Condition.&lt;/dd&gt;
&lt;dt&gt;Condition Name&lt;/dt&gt;
&lt;dd&gt;The name of the field when this alert is sent to the Cloud.&lt;/dd&gt;
&lt;/dl&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Example&lt;/h4&gt;
Condition Name = &lt;code&gt;alertABC&lt;/code&gt; results in &lt;code&gt;{... &amp;quot;alertABC&amp;quot;: 123, ...}&lt;/code&gt;, when data is sent to the Cloud.
&lt;/div&gt;

&lt;dl&gt;
&lt;dt&gt;Alert Type&lt;/dt&gt;
&lt;dd&gt;Determines the type of Alert sent to ServiceNow. Each Alert sent to ServiceNow will include this Alert Type, which can be used in your Processes to take actions (like update the IoT Thing Status for a given Thing).&lt;/dd&gt;
&lt;dt&gt;Alert Interval / Units&lt;/dt&gt;
&lt;dd&gt;Determines how often this Alert is re-broadcasted. If the Alert condition has persisted longer than the amount of time specified by this field, the Alert will be sent to ServiceNow again to retrigger any automated processes. It is recommended to keep the Alert Interval at rather large values to avoid retriggering your processes.&lt;/dd&gt;
&lt;/dl&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- Impacts Uptime
: When enabled, this Alert Type will impact Uptime calculations for &#34;Downtime Periods&#34; and &#34;Servitization&#34; --&gt;
&lt;dl&gt;
&lt;dt&gt;Formula&lt;/dt&gt;
&lt;dd&gt;The actual formula to evaluate. The formula should be a Javascript statement, and can use any Sensor or Calculated Field in the calculation. The formula should result in a boolean value; It will be evaluated as if it&amp;rsquo;s boolean — i.e. if the value is &amp;ldquo;falsy&amp;rdquo; it will result in no Alert. Otherwise it will result in an Alert. Sensor values are available in the &lt;code&gt;sensor&lt;/code&gt; namespace (e.g. &lt;code&gt;sensor.sensorABC&lt;/code&gt;), Calculated Fields are available in the &lt;code&gt;calculation&lt;/code&gt; namespace (e.g. &lt;code&gt;calculation.calcABC&lt;/code&gt;), Context Fields are available in the &lt;code&gt;context&lt;/code&gt; namespace (e.g. &lt;code&gt;context.contextABC&lt;/code&gt;), and other Alert Conditions are available in the &lt;code&gt;alert&lt;/code&gt; namespace (e.g. &lt;code&gt;alert.alertABC&lt;/code&gt;).&lt;/dd&gt;
&lt;/dl&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Examples&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;The formula, &lt;code&gt;sensor.SensorA &amp;gt; 40&lt;/code&gt; executes the relational operation, comparing &lt;em&gt;SensorA&lt;/em&gt; to the literal 40. If this Condition Name was, &lt;code&gt;DeviceThawed&lt;/code&gt;, then the resulting message to the Cloud could be:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
 &amp;#34;sensor&amp;#34;: {
  &amp;#34;SensorA&amp;#34;: 39
 },
 &amp;#34;alert&amp;#34;: {
  &amp;#34;DeviceThawed&amp;#34;: false
 }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;- OR -&lt;/em&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
 sensor: {
  &amp;#34;SensorA&amp;#34;: 41
 },
 alert: {
  &amp;#34;DeviceThawed&amp;#34;: true
 }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&amp;hellip; with the later triggering an Alert with the defined Alert Type to ServiceNow. Anytime an Alert is sent to ServiceNow, the accompanying data message is included and can be used in your Flows. See the Processes section for more details.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The formula, &lt;code&gt;calculation.CalcA === &amp;quot;Cold&amp;quot;&lt;/code&gt; executes the strictly-equal equality operator, comparing &lt;code&gt;CalcA&lt;/code&gt; to the literal &lt;code&gt;&amp;quot;Cold&amp;quot;&lt;/code&gt;. If this Condition Name was, &lt;code&gt;DeviceCold&lt;/code&gt;, then the resulting message to the Cloud could be:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
 &amp;#34;sensor&amp;#34;: {
  &amp;#34;SensorA&amp;#34;: 39
 },
 &amp;#34;calculation&amp;#34;: {
  CalcA: &amp;#34;Cold&amp;#34;
 },
 &amp;#34;alert&amp;#34;: {
  &amp;#34;DeviceCold&amp;#34;: true
 }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;dl&gt;
&lt;dt&gt;Sample Result&lt;/dt&gt;
&lt;dd&gt;This field is automatically calculated based on the formula entered using the data provided in the sample message to populate the sensor and calculation namespaces.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;formula-editor&#34;&gt;Formula Editor&lt;/h2&gt;
&lt;p&gt;The Formula Editor Page now helps in writing formulas (both Calculated Fields and Alert Conditions). It allows the user to select data pills for any sensor, calculated field, digital twin value, function, or operator and copy them to the clipboard. The user can then paste the value anywhere in their formula field.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/thing-types/assets/formula-pills.png&#34;
         alt=&#34;Formula Editor with Data Pills&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Formula Editor with Data Pills&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Examples&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;The formula, &lt;code&gt;sensor.SensorA + sensor.SensorB&lt;/code&gt;, will add the aggregated value of &lt;em&gt;SensorA&lt;/em&gt; to the aggregated value of &lt;em&gt;SensorB&lt;/em&gt;. If this Calculated Field name was &lt;code&gt;CalcA&lt;/code&gt;, then the resulting message to the Cloud could be:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
 sensor: {
  &amp;#34;SensorA&amp;#34;: 40,
  &amp;#34;SensorB&amp;#34;: 2
 },
 calculation: {
  &amp;#34;CalcA&amp;#34;: 42
 }
}
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;The formula, &lt;code&gt;(sensor.SensorA &amp;gt; 40) ? &amp;quot;Not Cold&amp;quot; : &amp;quot;Cold&amp;quot;&lt;/code&gt;, will execute the Javascript ternary operator (basically an assignable if-else statement). If this Calculated Field name was &lt;code&gt;ColdState&lt;/code&gt;, then the resulting message to the Cloud could be:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
 sensor: {
  &amp;#34;SensorA&amp;#34;: 39
 },
 calculation: {
  &amp;#34;ColdState&amp;#34;: &amp;#34;Cold&amp;#34;
 }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;- OR -&lt;/em&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
 &amp;#34;sensor&amp;#34;: {
  &amp;#34;SensorA&amp;#34;: 41
 },
 &amp;#34;calculation&amp;#34;: {
  &amp;#34;ColdState&amp;#34;: &amp;#34;Not Cold&amp;#34;
 }
}.
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;dl&gt;
&lt;dt&gt;Sample Result&lt;/dt&gt;
&lt;dd&gt;This field is automatically calculated based on the formula entered using the data provided in the sample message to populate the sensor and calculation namespace.&lt;/dd&gt;
&lt;/dl&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- ## State Machine Editor

A State Machine is a special kind of Calculated Field which tracks the active &#34;State&#34;, as well as any other custom local variables. When one of the conditional transitions changes the state, actions will be executed allowing you to implement any custom business logic necessary. For a full overview of the undelying State Machine engine see: [State Machines](../../../../edge-processing/state-machines).

The editor simplifies the creation / updating of these State Machines. Use the buttons at the top of the window for adding new Local Variable, States and Transitions.

&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-statemachine-editor.png&#34;
         alt=&#34;State Machine Editor&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;State Machine Editor&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


### Local Variables

Variable
: The unique name of this variable

Value
: Typically a sensor value. If instead you&#39;d like to create a track a non-sensor value, use the &#34;Formula...&#34; option

Initialize Only
: This variable will only be updated on initialization, not on every step. This allows you to modify and save the value in entry / during / exit actions

### States

State
: The unique name of the state. These state names can use a dot-notation to create sub-states as well (e.g. &#34;running.normal&#34; &amp; &#34;running.hot&#34; would be sub-states of &#34;running&#34;)

Initial
: Exactly 1 State must be marked as the initial state for each &#34;level&#34; (for sub-states). This is the state the machine will begin in for that &#34;level&#34;

Entry / During / Exit Actions
: Click Add / Edit to modify the formulas. These actions are executed corresponding to state changes / steps.

### Transitions

Priority
: Numeric sort order for transitions, should be unique to the &#34;From State&#34;

From State
: When the machine is in this active state, the condition will be evaluated. The first transition condition, ordered by Priority, which evalues to true will be executed.

To State
: The state which will become active after the transition

Condition
: Must evaluate to true/false. If true, this transition will execute. --&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Thing Type Export</title>
      <link>/docs/salesforce/iot-setup/thing-types/thing-type-export/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/thing-types/thing-type-export/</guid>
      <description>
        
        
        &lt;p&gt;Thing Types definitions can be exported as a PDF document. This document captures the Sensors, Digital Twin Roles, Calculated Fields and Alert Conditions for all Thing Types. It&amp;rsquo;s a great way to capture and record the settings for sign-off / validation with the team.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-export1.png&#34;
         alt=&#34;Thing Types Export&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Types Export&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Thing Type Synchronizing</title>
      <link>/docs/salesforce/iot-setup/thing-types/thing-type-syncing/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/thing-types/thing-type-syncing/</guid>
      <description>
        
        
        &lt;p&gt;Thing Types definitions are stored in both Salesforce and the IoT Cloud. You can update and Save them to Salesforce, and choose when to &amp;ldquo;Push&amp;rdquo; them to the cloud. The &amp;ldquo;Last Modified&amp;rdquo; and &amp;ldquo;Last Synchronized&amp;rdquo; Dates help you to track their status.&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
In addition to synchronizing to/from the IoT Cloud, the Thing Types and all other Bolt Data Connect Metadata can be deployed between Sandboxes or Salesforce Orgs as Custom Metadata, using Change Sets, Packages, or any other Standard Salesforce Deployment tools.
&lt;/div&gt;

&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-change-mgmt.png&#34;
         alt=&#34;Thing Types Change Mgmt&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Types Change Mgmt&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
&lt;p&gt;As part of the Winter &amp;lsquo;25 Release, the &amp;ldquo;Last Modified&amp;rdquo; and &amp;ldquo;Last Synchronized&amp;rdquo; fields behave differently:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;System Modstamp is the last modified date from the Custom Metadata record&lt;/li&gt;
&lt;li&gt;Last Synchronized is no longer deployable between orgs. This removes confusion around whether or not Thing Types are synchronized after deploying them between Salesforce orgs.&lt;/li&gt;
&lt;li&gt;The new &amp;ldquo;Multi-Sync&amp;rdquo; action is available as described below.&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;

&lt;h2 id=&#34;import-new-thing-types&#34;&gt;Import New Thing Types…&lt;/h2&gt;
&lt;p&gt;From the main Thing Types screen, you can Import Thing Types from the IoT Cloud into Salesforce.&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
This import only brings the high level definition, but the full details can be imported using the &amp;ldquo;Sync ∇&amp;rdquo; functionality below.
&lt;/div&gt;

&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-import.png&#34;
         alt=&#34;Thing Types Import&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Types Import&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;multi-sync-δ-push-multiple-thing-types-to-the-hahahugoshortcodes7hbhb&#34;&gt;Multi-Sync Δ (Push multiple Thing Types to the IoT Cloud)&lt;/h2&gt;
&lt;p&gt;From the main Thing Types screen, you can deploy multiple Thing Type definitions to the IoT Cloud (and the Edge Gateways).&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-multi-sync.png&#34;
         alt=&#34;Thing Types Multi Sync&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Types Multi Sync&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;sync--pull-from-the-hahahugoshortcodes10hbhb&#34;&gt;Sync ∇ (Pull from the IoT Cloud)&lt;/h2&gt;
&lt;p&gt;When Editing a Thing Type, you can choose to Sync the full definition from the IoT Cloud into Salesforce. This would typically be used if the Thing Type has been edited and you wish to rollback, or if you are setting up a new Salesforce org but reusing a IoT Cloud org.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-sync-pull.png&#34;
         alt=&#34;Thing Types Sync ∇&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Types Sync ∇&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;sync-δ-push-to-the-hahahugoshortcodes14hbhb&#34;&gt;Sync Δ (Push to the IoT Cloud)&lt;/h2&gt;
&lt;p&gt;To deploy the latest Thing Type definition to the IoT Cloud (and the Edge Gateways), simply Sync the Thing Type.&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
This Sync button is only enabled when the Thing Type has been successfully &amp;ldquo;Saved&amp;rdquo; since it was last Synchronized.
&lt;/div&gt;

&lt;h2 id=&#34;audit-trail-from-the-hahahugoshortcodes17hbhb&#34;&gt;Audit Trail (From the IoT Cloud)&lt;/h2&gt;
&lt;p&gt;To view the history of a Thing Type definition in the IoT Cloud, use the &lt;strong&gt;View History&lt;/strong&gt; button to view the Audit Trail.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-audit-trail.png&#34;
         alt=&#34;Thing Type Audit Trail&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Type Audit Trail&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;View Detail&lt;/strong&gt; button shows the detailed content behind each change&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Revert&lt;/strong&gt; button will replace the Thing Type editor with the previous values. After reviewing the changes the user can then Save and Sync as they wish. As with all Custom Metadata, we CANNOT delete records.. that still needs to be done manually through the Salesforce Setup screen.&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Thing Type Synchronizing</title>
      <link>/docs/servicenow/iot-setup/thing-types/thing-type-syncing/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/servicenow/iot-setup/thing-types/thing-type-syncing/</guid>
      <description>
        
        
        &lt;p&gt;Thing Types definitions are stored in both ServiceNow and the IoT Cloud. You can update and Save them to ServiceNow, and choose when to &amp;ldquo;Push&amp;rdquo; them to the cloud. The &amp;ldquo;Last Modified&amp;rdquo; and &amp;ldquo;Last Synchronized&amp;rdquo; Dates help you to track their status.&lt;/p&gt;
&lt;!-- NOT IMPLEMENTED? --&gt;
&lt;!-- 

&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
In addition to synchronizing to/from the IoT Cloud, the Thing Types and all other Bolt Data Connect Metadata can be deployed between Sandboxes or ServiceNow Instances as Custom Metadata, using Change Sets, Packages, or any other Standard ServiceNow Deployment tools.
&lt;/div&gt;
 --&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- &lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-change-mgmt.png&#34;
         alt=&#34;Thing Types Change Mgmt&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Types Change Mgmt&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
 --&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- 

&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
&lt;p&gt;As part of the Winter &amp;lsquo;25 Release, the &amp;ldquo;Last Modified&amp;rdquo; and &amp;ldquo;Last Synchronized&amp;rdquo; fields behave differently:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;System Modstamp is the last modified date from the Custom Metadata record&lt;/li&gt;
&lt;li&gt;Last Synchronized is no longer deployable between orgs. This removes confusion around whether or not Thing Types are synchronized after deploying them between Salesforce orgs.&lt;/li&gt;
&lt;li&gt;The new &amp;ldquo;Multi-Sync&amp;rdquo; action is available as described below.&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
 --&gt;
&lt;h2 id=&#34;import-new-thing-types&#34;&gt;Import New Thing Types…&lt;/h2&gt;
&lt;p&gt;From the main Thing Types screen, you can select the Import action to Import Thing Types from either the IoT Cloud or a local file into ServiceNow. There are two tabs, Remote Configurations and Upload File.&lt;/p&gt;
&lt;h3 id=&#34;remote-configurations&#34;&gt;Remote Configurations&lt;/h3&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
This import brings the full details of the selected thing types and their dependencies stored on the IoT Cloud.
&lt;/div&gt;

&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/thing-types/assets/thingtypes-import.png&#34;
         alt=&#34;Thing Types Import&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Types Import&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/thing-types/assets/thingtypes-import-workspace.png&#34;
         alt=&#34;Thing Types Workspace Import&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Types Workspace Import&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id=&#34;upload-file&#34;&gt;Upload File&lt;/h3&gt;
&lt;p&gt;Select a file saved using the &lt;a href=&#34;#export-thing-types&#34;&gt;Export&lt;/a&gt; action to import all of the thing types and their dependencies.&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
This import brings the full details of the selected thing types and their dependencies stored on the local file.
&lt;/div&gt;

&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/thing-types/assets/thingtypes-import-upload.png&#34;
         alt=&#34;Upload Thing Types&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Upload Thing Types&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- ## Multi-Sync Δ (Push multiple Thing Types to the IoT Cloud)

From the main Thing Types screen, you can deploy multiple Thing Type definitions to the IoT Cloud (and the Edge Gateways).

&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-multi-sync.png&#34;
         alt=&#34;Thing Types Multi Sync&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Types Multi Sync&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
 --&gt;
&lt;h1 id=&#34;export-thing-types&#34;&gt;Export Thing Types&lt;/h1&gt;
&lt;p&gt;From the main Thing Types list page in the workspace, you can select thing types and click the Export action to save your thing types configurations to a local file. This file can be used to backup and move changes between instances.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/thing-types/assets/thingtypes-export.png&#34;
         alt=&#34;Export Thing Types&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Export Thing Types&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h1 id=&#34;sync&#34;&gt;Sync&lt;/h1&gt;
&lt;h2 id=&#34;sync--pull-from-the-hahahugoshortcodes14hbhb&#34;&gt;Sync ∇ (Pull from the IoT Cloud)&lt;/h2&gt;
&lt;p&gt;When Editing a Thing Type, you can choose to Sync the full definition from the IoT Cloud into ServiceNow. This would typically be used if the Thing Type has been edited and you wish to rollback, or if you are setting up a new ServiceNow Instance but reusing a IoT Cloud org.&lt;/p&gt;
&lt;h2 id=&#34;sync-δ-push-to-the-hahahugoshortcodes17hbhb&#34;&gt;Sync Δ (Push to the IoT Cloud)&lt;/h2&gt;
&lt;p&gt;To deploy the latest Thing Type definition to the IoT Cloud (and the Edge Gateways), simply Sync the Thing Type.&lt;/p&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- 

&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
This Sync button is only enabled when the Thing Type has been successfully &amp;ldquo;Saved&amp;rdquo; since it was last Synchronized.
&lt;/div&gt;
 --&gt;
&lt;h2 id=&#34;audit-trail-from-the-hahahugoshortcodes20hbhb&#34;&gt;Audit Trail (From the IoT Cloud)&lt;/h2&gt;
&lt;p&gt;To view the history of a Thing Type definition in the IoT Cloud, use the &lt;strong&gt;View History&lt;/strong&gt; UI Action to view the Audit Trail.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/thing-types/assets/thingtypes-audit-trail.png&#34;
         alt=&#34;Thing Type Audit Trail&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Type Audit Trail&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;View Detail&lt;/strong&gt; button shows the detailed content behind each change&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Revert&lt;/strong&gt; button will replace the Thing Type editor with the previous values. After reviewing the changes the user can then Save and Sync as they wish. This &lt;strong&gt;will not&lt;/strong&gt; delete any records, including sensors, digital twin roles, alert conditions, calculated fields, context fields, ml models, and model interfaces. These records need to be deleted manually through any supported method in ServiceNow.&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Visual Twins</title>
      <link>/docs/salesforce/iot-setup/visual-twins/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/visual-twins/</guid>
      <description>
        
        
        &lt;p&gt;Visual Twins represent an Image and Annotations for each &lt;code&gt;Thing Type&lt;/code&gt; that together form a visual representation of a device with the &lt;code&gt;Sensors&lt;/code&gt;, &lt;code&gt;Calculated Fields&lt;/code&gt; and &lt;code&gt;Alert Conditions&lt;/code&gt; overlayed on the image where they visually correlate.&lt;/p&gt;
&lt;h2 id=&#34;visual-twin-setup&#34;&gt;Visual Twin Setup&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Select a Thing Type to setup/edit it&amp;rsquo;s Visual Twin. If this is a first time setup you will see a message asking you to drag-and-drop an image file onto the editor.&lt;/li&gt;
&lt;li&gt;Use the palette of drawing tools (Rectangles, Circles or Polygons) to draw the annotation areas. We recommend you use the selector tool to right-click and name these annotation areas so that the next steps are easier.&lt;/li&gt;
&lt;li&gt;Select all of the Fields for a specific area in the &amp;ldquo;Available Fields&amp;rdquo; section.&lt;/li&gt;
&lt;li&gt;Use the selector tool to right-click on the desired area and choose &amp;ldquo;Bind Values&amp;rdquo;. You will see these fields are now listed in the &amp;ldquo;Field Bindings&amp;rdquo; section for the desired area.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/visual-twin-editor.png&#34;
         alt=&#34;Visual Twin Editor&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Visual Twin Editor&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
To remove fields from an annotation area, simply unselect the fields and click the update button at the bottom of the &amp;ldquo;Field Bindings&amp;rdquo; section. You will see the fields are now returned to the &amp;ldquo;Available Fields&amp;rdquo; section.
&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Digital Twins</title>
      <link>/docs/salesforce/iot-setup/digital-twins/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/digital-twins/</guid>
      <description>
        
        
        &lt;p&gt;Digital Twins represent a group of &lt;code&gt;Things&lt;/code&gt; that together form a composite device. They are closely related, each playing a &lt;code&gt;role&lt;/code&gt; in a reusable &lt;code&gt;Digital Twin Type&lt;/code&gt;, and can use values from the other &lt;code&gt;Things&lt;/code&gt; in their own &lt;code&gt;Calculated Fields&lt;/code&gt; and &lt;code&gt;Alert Conditions&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;digital-twin-field-bindings&#34;&gt;Digital Twin Field Bindings&lt;/h2&gt;
&lt;p&gt;The 1st step in setting up Digital Twins is to configure which &lt;code&gt;Thing&lt;/code&gt; Fields to use to represent the hierarchical and &lt;code&gt;role&lt;/code&gt; relationship values.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/digital-twin-setup.png&#34;
         alt=&#34;Digital Twin Settings&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Digital Twin Settings&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;dl&gt;
&lt;dt&gt;Digital Twin Root&lt;/dt&gt;
&lt;dd&gt;The fields from the &lt;code&gt;Thing&lt;/code&gt; Object to the &lt;code&gt;Root&lt;/code&gt; Thing and it&amp;rsquo;s unique Thing Identifier.&lt;/dd&gt;
&lt;dt&gt;Digital Twin Parent&lt;/dt&gt;
&lt;dd&gt;The fields from the &lt;code&gt;Thing&lt;/code&gt; Object to the immediate &lt;code&gt;Parent&lt;/code&gt; Thing and it&amp;rsquo;s unique Thing Identifier.&lt;/dd&gt;
&lt;dt&gt;Digital Twin Role Name&lt;/dt&gt;
&lt;dd&gt;The field to hold the role name that this &lt;code&gt;Thing&lt;/code&gt; plays in the &lt;code&gt;Digital Twin Type&lt;/code&gt;.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;digital-twin-children-in-thing-types&#34;&gt;Digital Twin Children (in Thing Types)&lt;/h2&gt;
&lt;p&gt;The next step is defining the child &lt;code&gt;roles&lt;/code&gt; in the Thing Type defintions that make up the &lt;code&gt;Digital Twin Types&lt;/code&gt;. Go to the Thing Types setup page, and click into the desired parent &lt;code&gt;Thing Type&lt;/code&gt;.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/digital-twin-children.png&#34;
         alt=&#34;Digital Twin Children&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Digital Twin Children&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;dl&gt;
&lt;dt&gt;Role Name&lt;/dt&gt;
&lt;dd&gt;The role that the child Thing Type plays in the related group of Things.&lt;/dd&gt;
&lt;dt&gt;Child Thing Type&lt;/dt&gt;
&lt;dd&gt;The &lt;code&gt;Thing Type&lt;/code&gt; of the Child.&lt;/dd&gt;
&lt;/dl&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
These role names are especially important when multiple instances of the same Thing Type are used as children in a parent Thing Type.
&lt;/div&gt;

&lt;h2 id=&#34;digital-twin-types&#34;&gt;Digital Twin Types&lt;/h2&gt;
&lt;p&gt;After the &lt;code&gt;Digital Twin Children&lt;/code&gt; are configured in one or more &lt;code&gt;Thing Types&lt;/code&gt;, the Digital Twin Setup screen will now display all of the &lt;code&gt;Digital Twin Types&lt;/code&gt; across all of the &lt;code&gt;Thing Types&lt;/code&gt;.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/digital-twin-types.png&#34;
         alt=&#34;Digital Twin Types&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Digital Twin Types&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
Multi-level Digital Twin Types can be created by adding &lt;code&gt;Digital Twin Children&lt;/code&gt; in the child Thing Types.
&lt;/div&gt;

&lt;h2 id=&#34;digital-twin-diagram--editor&#34;&gt;Digital Twin Diagram / Editor&lt;/h2&gt;
&lt;p&gt;On the Thing Record Page, add the &lt;code&gt;IoT Digital Twin&lt;/code&gt; and easily view/edit the Digital Twin from any Thing in the configured Hierarchy.&lt;/p&gt;
&lt;p&gt;The Diagram shows all of the most recent sensors and calculated fields from all Things in the same Digital Twin.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/digital-twin-diagram.png&#34;
         alt=&#34;Digital Twin Editor&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Digital Twin Editor&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The Editor allows the user to assign Things into the roles in the Digital Twin, as well as easily navigate to any other thing in the Digital Twin.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/digital-twin-editor.png&#34;
         alt=&#34;Digital Twin Editor&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Digital Twin Editor&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id=&#34;digital-twin-api&#34;&gt;Digital Twin API&lt;/h3&gt;
&lt;p&gt;We expose a REST Web Service to retrieve the Digital Twin data for any &amp;ldquo;Thing&amp;rdquo;.
Use the following URL to retrieve the Digital Twin data:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;&#34;&gt;YOUR_SALESFORCE_DOMAIN/services/apexrest/SPKI/DigitalTwin/SALESFORCE_ID&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The REST service will return JSON in the following structure:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
  &amp;#34;thingType&amp;#34; : &amp;#34;XXX&amp;#34;,
  &amp;#34;sensors&amp;#34; : [
    { &amp;#34;key&amp;#34;: &amp;#34;SENSOR_NAME_X&amp;#34;, &amp;#34;value&amp;#34;: &amp;#34;XXX&amp;#34; },
    { &amp;#34;key&amp;#34;: &amp;#34;SENSOR_NAME_Y&amp;#34;, &amp;#34;value&amp;#34;: &amp;#34;YYY&amp;#34; }
  ],
  &amp;#34;role&amp;#34; : “XXX”,
  &amp;#34;id&amp;#34; : &amp;#34;SALESFORCE_ID&amp;#34;,
  &amp;#34;externalId&amp;#34; : &amp;#34;UNIQUE_KEY&amp;#34;,
  &amp;#34;children&amp;#34; : [ … Recursive structure for nested Digital Twins … ]
}
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: Digital Twins</title>
      <link>/docs/servicenow/iot-setup/digital-twins/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/servicenow/iot-setup/digital-twins/</guid>
      <description>
        
        
        &lt;p&gt;Digital Twins represent a group of &lt;code&gt;IoT Connected Assets&lt;/code&gt; that together form a composite device. They are closely related, each playing a &lt;code&gt;role&lt;/code&gt; in a reusable &lt;code&gt;Digital Twin Type&lt;/code&gt;, and can use values from the other &lt;code&gt;IoT Connected Assets&lt;/code&gt; in their own &lt;code&gt;Calculated Fields&lt;/code&gt; and &lt;code&gt;Alert Conditions&lt;/code&gt;.&lt;/p&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- ## Digital Twin Field Bindings

The 1st step in setting up Digital Twins is to configure which `IoT Connected Asset` Fields to use to represent the hierarchical and `role` relationship values.

&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/digital-twin-setup.png&#34;
         alt=&#34;Digital Twin Settings&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Digital Twin Settings&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


Digital Twin Root
: The fields from the `IoT Connected Asset` Object to the `Root` IoT Connected Asset and its unique IoT Connected Asset Identifier.

Digital Twin Parent
: The fields from the `IoT Connected Asset` Object to the immediate `Parent` IoT Connected Asset and its unique IoT Connected Asset Identifier.

Digital Twin Role Name
: The field to hold the role name that this `IoT Connected Asset` plays in the `Digital Twin Type`. --&gt;
&lt;h2 id=&#34;digital-twin&#34;&gt;Digital Twin&lt;/h2&gt;
&lt;p&gt;The first step is creating an IoT Digital Twin Role record in the Thing Type record that make up the &lt;code&gt;IoT Digital Twin Role&lt;/code&gt;. Go to the Thing Types setup page, and click into the desired parent &lt;code&gt;Thing Type&lt;/code&gt;.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/digital-twin-children.png&#34;
         alt=&#34;Digital Twin Children&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Digital Twin Children&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;dl&gt;
&lt;dt&gt;Name&lt;/dt&gt;
&lt;dd&gt;The role that the child Thing Type plays in the related group of IoT Connected Assets.&lt;/dd&gt;
&lt;dt&gt;Label&lt;/dt&gt;
&lt;dd&gt;The label of the IoT Digital Twin Role.&lt;/dd&gt;
&lt;dt&gt;IoT Thing Type&lt;/dt&gt;
&lt;dd&gt;The &lt;code&gt;Thing Type&lt;/code&gt; of the Parent.&lt;/dd&gt;
&lt;dt&gt;Child Thing Type&lt;/dt&gt;
&lt;dd&gt;The &lt;code&gt;Thing Type&lt;/code&gt; of the Child.&lt;/dd&gt;
&lt;/dl&gt;
&lt;!-- NOT IMPLEMENTED HERE --&gt;
&lt;!-- 

&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
These role names are especially important when multiple instances of the same Thing Type are used as children in a parent Thing Type.
&lt;/div&gt;
 --&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- ## Digital Twin Types

After the `Digital Twin Children` are configured in one or more `Thing Types`, the Digital Twin Setup screen will now display all of the `Digital Twin Types` across all of the `Thing Types`.

&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/digital-twin-types.png&#34;
         alt=&#34;Digital Twin Types&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Digital Twin Types&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;




&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
Multi-level Digital Twin Types can be created by adding &lt;code&gt;Digital Twin Children&lt;/code&gt; in the child Thing Types.
&lt;/div&gt;
 --&gt;
&lt;h2 id=&#34;digital-twin-diagram&#34;&gt;Digital Twin Diagram&lt;/h2&gt;
&lt;p&gt;On the IoT Connected Asset Record Page, you will see the &lt;code&gt;IoT Digital Twin&lt;/code&gt; section where you can easily view the Digital Twin from any Connected Asset in the configured Hierarchy.&lt;/p&gt;
&lt;p&gt;The Diagram shows all of the most recent sensors and calculated fields from all Connected Assets in the same Digital Twin.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/digital-twin-diagram.png&#34;
         alt=&#34;Digital Twin Diagram&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Digital Twin Diagram&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- The Editor allows the user to assign Things into the roles in the Digital Twin, as well as easily navigate to any other thing in the Digital Twin.

&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/digital-twin-editor.png&#34;
         alt=&#34;Digital Twin Editor&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Digital Twin Editor&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
 --&gt;
&lt;!-- NOT IMPLEMENTED? --&gt;
&lt;!-- ### Digital Twin API

We expose a REST Web Service to retrieve the Digital Twin data for any &#34;Thing&#34;.
Use the following URL to retrieve the Digital Twin data:

[YOUR_SALESFORCE_DOMAIN/services/apexrest/SPKI/DigitalTwin/SALESFORCE_ID]()

The REST service will return JSON in the following structure:

```
{
  &#34;thingType&#34; : &#34;XXX&#34;,
  &#34;sensors&#34; : [
    { &#34;key&#34;: &#34;SENSOR_NAME_X&#34;, &#34;value&#34;: &#34;XXX&#34; },
    { &#34;key&#34;: &#34;SENSOR_NAME_Y&#34;, &#34;value&#34;: &#34;YYY&#34; }
  ],
  &#34;role&#34; : “XXX”,
  &#34;id&#34; : &#34;SALESFORCE_ID&#34;,
  &#34;externalId&#34; : &#34;UNIQUE_KEY&#34;,
  &#34;children&#34; : [ … Recursive structure for nested Digital Twins … ]
}
``` --&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Context Data</title>
      <link>/docs/salesforce/iot-setup/context-data/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/context-data/</guid>
      <description>
        
        
        &lt;p&gt;Easily Sync Salesforce Data (related to the Thing Object) to the IoT Cloud and Edge Gateway. This Context data can be used in Calculations and Alert Conditions (by using the &lt;code&gt;context&lt;/code&gt; group - e.g. &lt;code&gt;context.someField == &#39;Gold&#39;&lt;/code&gt;), to enhance and provide flexibility in your Thing-Type Specifications.&lt;/p&gt;
&lt;p&gt;All Context fields are synced on a schedule, or can be manually synced for special cases and troubleshooting.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/context-1.png&#34;
         alt=&#34;Context Data Settings&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Context Data Settings&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;global-context-fields&#34;&gt;Global Context Fields&lt;/h2&gt;
&lt;p&gt;Global Context Fields are synced for all Things, regardless of their Thing-Type.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Select &lt;strong&gt;New&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the new row, select &lt;strong&gt;Global Settings&lt;/strong&gt; from the dropdown.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Define the reader friendly &lt;span class=&#34;doc fieldname&#34;&gt;Label&lt;/span&gt; for the field.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Define the &lt;span class=&#34;doc fieldname&#34;&gt;Field Name&lt;/span&gt; to use in calculations and alerts.&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Name Restrictions&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Must start with a letter.&lt;/li&gt;
&lt;li&gt;Can only contain letters, numbers, and &lt;code&gt;_&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Must not contain any spaces.&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select the Object field to associate with this Context field.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;thing-type-context-fields&#34;&gt;Thing-Type Context Fields&lt;/h2&gt;
&lt;p&gt;Thing-Type Context Fields are only synced for Things which match the Thing-Type specified.&lt;/p&gt;
&lt;p&gt;Steps for Thing-Type Context Fields are the same as for &lt;a href=&#34;#global-context-fields&#34;&gt;Global Context&lt;/a&gt; fields, except Step 2: select the desired Thing-Type from the drop down in place of &lt;em&gt;Global Settings&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&#34;context-synchronization&#34;&gt;Context Synchronization&lt;/h2&gt;
&lt;p&gt;The sync schedule for the Context fields is managed in the lower section of the Context Data settings page.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If an existing schedule has already been configured, select &lt;strong&gt;Disable&lt;/strong&gt; prior to configuring the new schedule.&lt;/li&gt;
&lt;li&gt;In the &lt;span class=&#34;doc fieldname&#34;&gt;Schedule&lt;/span&gt; drop-down menu, select the desired frequency.&lt;/li&gt;
&lt;li&gt;Enter the appropriate value in the &lt;span class=&#34;doc fieldname&#34;&gt;At&lt;/span&gt; field.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Hourly&lt;/em&gt;: Define how many minutes past the hour to run the sync.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Daily&lt;/em&gt;: Define the time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Weekly&lt;/em&gt;: Define the day of the week and time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Monthly&lt;/em&gt;: Define which day of the month and the time of day.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Enable&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;FYI&lt;/h4&gt;
The &lt;code&gt;chron&lt;/code&gt; expression is shown in the &lt;span class=&#34;doc fieldname&#34;&gt;Status&lt;/span&gt; field.
&lt;/div&gt;

&lt;h2 id=&#34;remove-context-field&#34;&gt;Remove Context Field&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Select the link under the &lt;span class=&#34;doc fieldname&#34;&gt;Custom Metadata Record&lt;/span&gt; column.&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;Delete&lt;/strong&gt; button toward the top of the metadata record.&lt;/li&gt;
&lt;/ol&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Context Data</title>
      <link>/docs/servicenow/iot-setup/context-data/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/servicenow/iot-setup/context-data/</guid>
      <description>
        
        
        &lt;p&gt;Easily Sync ServiceNow Data (related to the IoT Connected Assets) to the IoT Cloud and Edge Gateway. This Context data can be used in Calculations and Alert Conditions (by using the &lt;code&gt;context&lt;/code&gt; group - e.g. &lt;code&gt;context.someField == &#39;Gold&#39;&lt;/code&gt;), to enhance and provide flexibility in your Thing-Type Specifications.&lt;/p&gt;
&lt;p&gt;All IoT Context fields are synced with a scheduled job, or can be manually synced for special cases and troubleshooting.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/context.png&#34;
         alt=&#34;Context Data Record Page&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Context Data Record Page&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;global-context-fields&#34;&gt;Global Context Fields&lt;/h2&gt;
&lt;p&gt;IoT Context Fields without a specified Thing Type are known as Global Context Fields. Global Context Fields are synced for all Connected Assets, regardless of their Thing-Type.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Select &lt;strong&gt;New&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the new record screen, leave the Thing Type field empty.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Define the reader friendly &lt;span class=&#34;doc fieldname&#34;&gt;Label&lt;/span&gt; for the field.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Define the &lt;span class=&#34;doc fieldname&#34;&gt;Field Name&lt;/span&gt; to use in calculations and alerts.&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Name Restrictions&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Must start with a letter.&lt;/li&gt;
&lt;li&gt;Can only contain letters, numbers, and &lt;code&gt;_&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Must not contain any spaces.&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select the Asset Table corresponding to the asset type for your connected asset.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select the Asset Field to associate a field on the Asset Table with this IoT Context Field.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;thing-type-iot-context-fields&#34;&gt;Thing-Type IoT Context Fields&lt;/h2&gt;
&lt;p&gt;Thing-Type IoT Context Fields are only synced for Connected Assets which match the Thing-Type specified.&lt;/p&gt;
&lt;p&gt;Steps for Thing-Type IoT Context Fields are the same as for &lt;a href=&#34;#global-context-fields&#34;&gt;Global Context&lt;/a&gt; fields, except Step 2: select the desired Thing-Type in the Thing Type field.&lt;/p&gt;
&lt;h2 id=&#34;context-synchronization&#34;&gt;Context Synchronization&lt;/h2&gt;
&lt;p&gt;The sync schedule for IoT Context Fields is managed in the IoT_Context_Job scheduled job. This can be found in All -&amp;gt; System Definition -&amp;gt; Scheduled Jobs.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the &lt;span class=&#34;doc fieldname&#34;&gt;Run&lt;/span&gt; field, select the desired frequency.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Periodically&lt;/em&gt;: Define the time between runs.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Daily&lt;/em&gt;: Define the time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Weekly&lt;/em&gt;: Define the day of the week and time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Monthly&lt;/em&gt;: Define which day of the month and the time of day.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;In the field that shows up depending on your choice, fill out the appropriate values according to your desired frequency.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Active&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Save the record.&lt;/li&gt;
&lt;/ol&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- 

&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;FYI&lt;/h4&gt;
The &lt;code&gt;chron&lt;/code&gt; expression is shown in the &lt;span class=&#34;doc fieldname&#34;&gt;Status&lt;/span&gt; field.
&lt;/div&gt;
 --&gt;
&lt;h2 id=&#34;remove-iot-context-field&#34;&gt;Remove IoT Context Field&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Open the desired IoT Context Field record to be deleted.&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;Delete&lt;/strong&gt; button toward the top of the record.&lt;/li&gt;
&lt;/ol&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Sensor Data</title>
      <link>/docs/salesforce/iot-setup/sensor-data/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/sensor-data/</guid>
      <description>
        
        
        &lt;p&gt;Sensor data typically lives solely in the IoT Cloud. We realize there are some workflows which required importing data into Saleforce Objects. For such workflows, we enable a Sensor Data Sync which pulls the latest sensor data from the IoT Cloud into the Object you specify in IoT Setup.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/sensor-data-sync.png&#34;
         alt=&#34;Sensor Data Settings&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Sensor Data Settings&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;field-definitions&#34;&gt;Field Definitions&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Sensor Object&lt;/dt&gt;
&lt;dd&gt;This field defines the Object to pull data into.&lt;/dd&gt;
&lt;dd&gt;The Object must have at least 4 fields to tie to: &lt;code&gt;External ID&lt;/code&gt;, &lt;code&gt;Sensor Name&lt;/code&gt;, &lt;code&gt;Sensor Value&lt;/code&gt;, and &lt;code&gt;Thing Lookup&lt;/code&gt;.&lt;/dd&gt;
&lt;dt&gt;Sensor External ID&lt;/dt&gt;
&lt;dd&gt;The field to hold the External ID of the sensor data object.&lt;/dd&gt;
&lt;dt&gt;Sensor Name&lt;/dt&gt;
&lt;dd&gt;The field to hold the name of the sensor data.&lt;/dd&gt;
&lt;dt&gt;Sensor Value&lt;/dt&gt;
&lt;dd&gt;The field to hold the value of the sensor data.&lt;/dd&gt;
&lt;dt&gt;Sensor Timestamp&lt;/dt&gt;
&lt;dd&gt;The field to hold the timestamp of the sensor data.&lt;/dd&gt;
&lt;dt&gt;Thing Lookup&lt;/dt&gt;
&lt;dd&gt;The field to hold the Lookup to the related Thing Object.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;asset-attributes&#34;&gt;Asset Attributes&lt;/h2&gt;
&lt;p&gt;Asset Attributes is a new Standard Object used in Salesforce Field Service and Manufacturing Cloud in Usage-Based and Condition-Based PM Plans. We’ve added support for populating these objects automatically by synchronizing the values from the IoT Cloud as well as automating the creation of the Asset Attribute Definitions.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Asset attributes provide a better understanding of the condition of assets and let mobile workers repair and maintain those assets in the field more efficiently. An asset usually has multiple attributes. You can create attributes by defining the values and data types of attribute definitions and associating them with the asset attributes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Ability to easily sync and populate Asset Attributes with clicks-not-code&lt;/li&gt;
&lt;li&gt;Full automation of Asset Attribute Definitions, reducing manual setup tasks&lt;/li&gt;
&lt;li&gt;Ability to filter which Sensors / Calculated Fields / Alert Conditions are sync’d to better support the Asset Attributes data limits&lt;/li&gt;
&lt;li&gt;Asset attribute support in Servitization Plans&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/sensor-data-sync-asset-attr.png&#34;
         alt=&#34;Sensor Data Asset Attributes&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Sensor Data Asset Attributes&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;25 Attributes per Asset limit&lt;/li&gt;
&lt;li&gt;Asset Attribute is a “External Object”, and not allowed to have Custom Fields&lt;/li&gt;
&lt;li&gt;Due to being an External Object, No “Timestamp” Field is available, only the “Last Modified”. This impacts the Servitization ability to bill accurately.&lt;/li&gt;
&lt;li&gt;We Auto-Create Attribute Definitions by Field Name &amp;amp; Data Type (Sensor/CalcField/AlertCondition) - so these names to be be unique or consistent across all of the configured Thing Types&lt;/li&gt;
&lt;li&gt;See &lt;a href=&#34;https://help.salesforce.com/s/articleView?id=sf.fs_asset_attrib_manage_monit_consider.htm&amp;amp;type=5&#34;&gt;Asset Attributes Limitations&lt;/a&gt; for full details&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h2 id=&#34;advanced-sensor-bindings&#34;&gt;Advanced Sensor Bindings&lt;/h2&gt;
&lt;p&gt;A sensor value can be used as the &amp;ldquo;Timestamp&amp;rdquo; of the synchronized Sensor Data. This Timestamp influences downstream processes like Servitization and Reporting. If these fields are NOT filled in, the system will use the default Timestamp in our IoT metadata which indicates the date/time when we received the IoT message.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Timestamp Sensor&lt;/dt&gt;
&lt;dd&gt;The name of the Sensor (or Calculated Field) to use as the Timestamp of all Sensor Data values&lt;/dd&gt;
&lt;dt&gt;Timestamp Format&lt;/dt&gt;
&lt;dd&gt;The format of the above Timestamp Sensor. Choices are: GMT, Local, Epoch. If using GMT or Local the value should be an ISO formatted date-time, whereas Epoch should be in milliseconds.&lt;/dd&gt;
&lt;dt&gt;Sync Thing Status&lt;/dt&gt;
&lt;dd&gt;Indicator of whether or not to Sync the Thing Status (Normal/Alert/Offline) from the IoT Cloud to Salesforce.&lt;/dd&gt;
&lt;dt&gt;Sync All Fields&lt;/dt&gt;
&lt;dd&gt;Indicator of whether or not to Sync All Fields from the IoT Cloud to Salesforce. If unselected, an editor will be displayed to select which IoT Fields to synchronize, including helper buttons to select all, servitized values only, or sensors only.&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/sensor-data-sync-fields.png&#34;
         alt=&#34;Sensor Data Asset Attributes&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Sensor Data Asset Attributes&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;sensor-synchronization&#34;&gt;Sensor Synchronization&lt;/h2&gt;
&lt;p&gt;The sync schedule for the Sensor Data is managed in the lower section of the Sensor Data settings page.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If an existing schedule has already been configured, select &lt;strong&gt;Disable&lt;/strong&gt; prior to configuring a new schedule.&lt;/li&gt;
&lt;li&gt;In the &lt;span class=&#34;doc fieldname&#34;&gt;Schedule&lt;/span&gt; drop-down menu, select the desired frequency.&lt;/li&gt;
&lt;li&gt;Enter the appropriate value in the &lt;span class=&#34;doc fieldname&#34;&gt;At&lt;/span&gt; field
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Hourly&lt;/em&gt;: Define how many minutes past the hour to run the sync.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Daily&lt;/em&gt;: Define the time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Weekly&lt;/em&gt;: Define the day of the week and time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Monthly&lt;/em&gt;: Define which day of the month and the time of day.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Enable&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;FYI&lt;/h4&gt;
The &lt;code&gt;chron&lt;/code&gt; expression is shown in the &lt;span class=&#34;doc fieldname&#34;&gt;Status&lt;/span&gt; field.
&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Sensor Data</title>
      <link>/docs/servicenow/iot-setup/sensor-data/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/servicenow/iot-setup/sensor-data/</guid>
      <description>
        
        
        &lt;p&gt;Sensor data typically lives solely in the IoT Cloud. We realize there are some workflows which required importing data into ServiceNow Tables. For such workflows, we enable a Sensor Data Sync which pulls the latest sensor data from the IoT Cloud into the Asset Attributes Table.&lt;/p&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- &lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/sensor-data-sync.png&#34;
         alt=&#34;Sensor Data Settings&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Sensor Data Settings&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


## Field Definitions

Sensor Object
: This field defines the Object to pull data into.
: The Object must have at least 4 fields to tie to: `External ID`, `Sensor Name`, `Sensor Value`, and `Thing Lookup`.

Sensor External ID
: The field to hold the External ID of the sensor data object.

Sensor Name
: The field to hold the name of the sensor data.

Sensor Value
: The field to hold the value of the sensor data.

Sensor Timestamp
: The field to hold the timestamp of the sensor data.

Thing Lookup
: The field to hold the Lookup to the related Thing Object. --&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- &lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/sensor-data-sync-asset-attr.png&#34;
         alt=&#34;Sensor Data Asset Attributes&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Sensor Data Asset Attributes&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
 --&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- ## Advanced Sensor Bindings

A sensor value can be used as the &#34;Timestamp&#34; of the synchronized Sensor Data. This Timestamp influences downstream processes like Servitization and Reporting. If these fields are NOT filled in, the system will use the default Timestamp in our IoT metadata which indicates the date/time when we received the IoT message.

Timestamp Sensor
: The name of the Sensor (or Calculated Field) to use as the Timestamp of all Sensor Data values

Timestamp Format
: The format of the above Timestamp Sensor. Choices are: GMT, Local, Epoch. If using GMT or Local the value should be an ISO formatted date-time, whereas Epoch should be in milliseconds.

Sync Thing Status
: Indicator of whether or not to Sync the Thing Status (Normal/Alert/Offline) from the IoT Cloud to Salesforce.

Sync All Fields
: Indicator of whether or not to Sync All Fields from the IoT Cloud to Salesforce. If unselected, an editor will be displayed to select which IoT Fields to synchronize, including helper buttons to select all, servitized values only, or sensors only.

&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/sensor-data-sync-fields.png&#34;
         alt=&#34;Sensor Data Asset Attributes&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Sensor Data Asset Attributes&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
 --&gt;
&lt;h2 id=&#34;sensor-synchronization&#34;&gt;Sensor Synchronization&lt;/h2&gt;
&lt;p&gt;The sync schedule for the Sensor Data is managed in the IoT_Attributes_Job scheduled job. This can be found in All -&amp;gt; System Definition -&amp;gt; Scheduled Jobs.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the &lt;span class=&#34;doc fieldname&#34;&gt;Run&lt;/span&gt; field, select the desired frequency.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Periodically&lt;/em&gt;: Define the time between runs.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Daily&lt;/em&gt;: Define the time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Weekly&lt;/em&gt;: Define the day of the week and time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Monthly&lt;/em&gt;: Define which day of the month and the time of day.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;In the field that shows up depending on your choice, fill out the appropriate values according to your desired frequency.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Active&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Save the record.&lt;/li&gt;
&lt;/ol&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- 

&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;FYI&lt;/h4&gt;
The &lt;code&gt;chron&lt;/code&gt; expression is shown in the &lt;span class=&#34;doc fieldname&#34;&gt;Status&lt;/span&gt; field.
&lt;/div&gt;
 --&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Auto Registration</title>
      <link>/docs/salesforce/iot-setup/auto-registration/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/auto-registration/</guid>
      <description>
        
        
        &lt;p&gt;The Auto-Registration settings focus on how the IoT Registration records are processed.&lt;/p&gt;
&lt;figure class=&#34;doc figure normal&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/auto-registration.png&#34;
         alt=&#34;Auto-Registration Setup&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Auto-Registration Setup&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;registration-settings&#34;&gt;Registration Settings&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Registration to Thing Lookup&lt;/dt&gt;
&lt;dd&gt;The field on the IoT Registration object to hold the Lookup to the related Thing Object.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id=&#34;registration-expressions&#34;&gt;Registration Expressions&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;Thing Expression&lt;/dt&gt;
&lt;dd&gt;The expression used to find/lookup the corresponding Thing/Asset record&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/auto-registration-expression.png&#34;
         alt=&#34;Thing Expression&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Expression&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;This expression will be used by the Auto-Registration job to lookup the Thing record.
Match fields from the Thing/Asset to the IoT Registration record. If necessary, custom formula fields or other automated fields can be added to either object and configured here.&lt;/p&gt;
&lt;h2 id=&#34;registration-job&#34;&gt;Registration Job&lt;/h2&gt;
&lt;p&gt;The schedule for the Registration Job is managed in the lower section of the page.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If an existing schedule has already been configured, select &lt;strong&gt;Disable&lt;/strong&gt; prior to configuring a new schedule.&lt;/li&gt;
&lt;li&gt;In the &lt;span class=&#34;doc fieldname&#34;&gt;Schedule&lt;/span&gt; drop-down menu, select the desired frequency.&lt;/li&gt;
&lt;li&gt;Enter the appropriate value in the &lt;span class=&#34;doc fieldname&#34;&gt;At&lt;/span&gt; field
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Hourly&lt;/em&gt;: Define how many minutes past the hour to run the sync.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Daily&lt;/em&gt;: Define the time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Weekly&lt;/em&gt;: Define the day of the week and time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Monthly&lt;/em&gt;: Define which day of the month and the time of day.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Enable&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;FYI&lt;/h4&gt;
The &lt;code&gt;chron&lt;/code&gt; expression is shown in the &lt;span class=&#34;doc fieldname&#34;&gt;Status&lt;/span&gt; field.
&lt;/div&gt;

&lt;h2 id=&#34;iot-registration-object&#34;&gt;IoT Registration Object&lt;/h2&gt;
&lt;p&gt;IoT Registration records will be auto-created by the IoT Cloud as unrecognized IoT Things are detected, or they can also be created in Salesforce by an integration or any other automation. As the Auto-Registration Job runs it will try to assign any missing data and then call the IoT Cloud API to Register the Thing/Asset.&lt;/p&gt;
&lt;p&gt;Admins can create reports on this object to monitor the status / values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Status will change from New to Registered if successfully registered&lt;/li&gt;
&lt;li&gt;The &lt;em&gt;Is Missing Data&lt;/em&gt; field will be checked if the Thing, Gateway or Thing Type cannot be determined&lt;/li&gt;
&lt;li&gt;The &lt;em&gt;Results&lt;/em&gt; field will contain details from the API calls&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/things/assets/auto-registration-success.png&#34;
         alt=&#34;IoT Registration Objects&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;IoT Registration Objects&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;NOTE&lt;/h4&gt;
If the status is set to &amp;ldquo;Removed&amp;rdquo; the Auto-Registration Job will call the IoT Cloud API to Deregister the Thing/Asset and then change the status to &amp;ldquo;Deregistered&amp;rdquo;.
&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Auto Registration</title>
      <link>/docs/servicenow/iot-setup/auto-registration/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/servicenow/iot-setup/auto-registration/</guid>
      <description>
        
        
        &lt;h2 id=&#34;iot-registration&#34;&gt;IoT Registration&lt;/h2&gt;
&lt;p&gt;IoT Registration records will be auto-created by the IoT Cloud as unrecognized Connected Assets are detected, or they can also be created in ServiceNow by an integration or any other automation. As the Auto-Registration Business Rule runs it will try to assign any missing data and then call the IoT Cloud API to Register the Connected Asset. By default, IoT Registration records contain text fields containing the IoT Thing ID and the Gateway ID. A flow must be created to fill in the fields for an Asset record, a Gateway Record, and a Thing Type record based on these two fields. This process will be different for every Client due to different naming conventions and preferences. Once these fields are updated on the record, the Auto-Registration Business Rule will check the record fr any missing data. If there is missing data, the Business Rule will set the Missing Data field to true and will provide details in the Results field. If the necessary fields are not missing, the Business Rule will create a Connected Asset record and register it with the IoT Cloud.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/auto-registration-missing-field.png&#34;
         alt=&#34;Registration Record with a Missing Asset Field&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Registration Record with a Missing Asset Field&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/auto-registration-success.png&#34;
         alt=&#34;Successful Registration Record&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Successful Registration Record&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;NOTE&lt;/h4&gt;
Any update to an IoT Registration record will cause the Auto-Registration Business Rule to check the updated record and attempt to create and register an Asset. For example, manually adding an Asset to an IoT Registration record that is only missing an Asset field will result in the Auto-Registration Business Rule to attempt to create and register a Connected Asset.
&lt;/div&gt;

&lt;h3 id=&#34;example-auto-registration-flow&#34;&gt;Example Auto-Registration Flow&lt;/h3&gt;
&lt;p&gt;The provided example is not the only way to implement this. As long as the Asset, Gateway, and Thing Type fields are filled in and the IoT Registration record is updated, the Auto-Registration Business Rule will attempt to create and register a Connected Asset.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/auto-registration-flow.png&#34;
         alt=&#34;Example Auto Registration Flow&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Example Auto Registration Flow&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;For the following example implementation for Flow Step 1 above, the Client has a unified naming rule set for all Assets, Connected Assets, and Thing Types as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Connected Asset&amp;rsquo;s IoT Thing ID&amp;rsquo;s always begin with the Thing Type name&lt;/li&gt;
&lt;li&gt;Asset Tags always start with &amp;ldquo;P1&amp;rdquo; (ex: P10001, P10002, P19993, etc)&lt;/li&gt;
&lt;li&gt;Connected Asset&amp;rsquo;s IoT Thing ID&amp;rsquo;s always have &amp;ldquo;_P1&amp;rdquo; followed by the Asset Tag they relate to after the Thing Type name (ex: Brewing_Keg_P10001, Brewing_Keg_P10002, Brewing_Keg_P19993, etc)&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/auto-registration-flow-asset-tag.png&#34;
         alt=&#34;Example Auto Registration Flow&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Example Auto Registration Flow&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/auto-registration-flow-thing-id.png&#34;
         alt=&#34;Example Auto Registration Flow&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Example Auto Registration Flow&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Geo-Coding</title>
      <link>/docs/salesforce/iot-setup/geo-coding/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/geo-coding/</guid>
      <description>
        
        
        &lt;p&gt;Bolt Data Connect can be configured to automatically lookup the Geo-Code (longitude/latitude) of Connected Assets (or other related objects).&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/geo-coding.png&#34;
         alt=&#34;Automatic Geo-Coding&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Automatic Geo-Coding&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;address-definitions&#34;&gt;Address Definitions&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Address SObject&lt;/dt&gt;
&lt;dd&gt;Select the Object which needs to be Geo-Coded&lt;/dd&gt;
&lt;dt&gt;Compound Address Field OR Address Fields&lt;/dt&gt;
&lt;dd&gt;Fill in EITHER the Compound Address Field OR the individual Address Fields&lt;/dd&gt;
&lt;dt&gt;Formatted Address Field&lt;/dt&gt;
&lt;dd&gt;Select a field to save the formatted address. This is required for optimizing calls and reducing costs.&lt;/dd&gt;
&lt;dt&gt;GeoCode Field OR Longitude/Latitude Fields&lt;/dt&gt;
&lt;dd&gt;Fill in EITHER the GeoCode Field OR the individual Longitude/Latitude Fields&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/geo-coding-address-definition.png&#34;
         alt=&#34;IoT Address Definition&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;IoT Address Definition&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;NOTE&lt;/h4&gt;
We have pre-loaded a record for the standard Asset object, but it can be edited or cloned in the Salesforce &lt;strong&gt;Setup&lt;/strong&gt; &amp;gt; &lt;strong&gt;Custom Metadata&lt;/strong&gt; screen.
&lt;/div&gt;

&lt;h2 id=&#34;address-formats&#34;&gt;Address Formats&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Address Format&lt;/dt&gt;
&lt;dd&gt;The formatted combination/order of the address fields&lt;/dd&gt;
&lt;dt&gt;Countries&lt;/dt&gt;
&lt;dd&gt;The Country Codes which will utilize this format&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/geo-coding-address-formats.png&#34;
         alt=&#34;IoT Address Formats&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;IoT Address Formats&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;NOTE&lt;/h4&gt;
We have pre-loaded records for all major Country formats, but it can be edited in the Salesforce &lt;strong&gt;Setup&lt;/strong&gt; &amp;gt; &lt;strong&gt;Custom Metadata&lt;/strong&gt; screen.
&lt;/div&gt;

&lt;h2 id=&#34;geo-coding-job&#34;&gt;Geo-Coding Job&lt;/h2&gt;
&lt;p&gt;The Geo-Code Job will automatically process all the records of the configured objects which have not yet been Geo-Coded.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If an existing schedule has already been configured, select &lt;strong&gt;Disable&lt;/strong&gt; prior to configuring a new schedule.&lt;/li&gt;
&lt;li&gt;In the &lt;span class=&#34;doc fieldname&#34;&gt;Schedule&lt;/span&gt; drop-down menu, select the desired frequency.&lt;/li&gt;
&lt;li&gt;Enter the appropriate value in the &lt;span class=&#34;doc fieldname&#34;&gt;At&lt;/span&gt; field
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Hourly&lt;/em&gt;: Define how many minutes past the hour to run the sync.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Daily&lt;/em&gt;: Define the time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Weekly&lt;/em&gt;: Define the day of the week and time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Monthly&lt;/em&gt;: Define which day of the month and the time of day.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Enable&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;FYI&lt;/h4&gt;
The &lt;code&gt;chron&lt;/code&gt; expression is shown in the &lt;span class=&#34;doc fieldname&#34;&gt;Status&lt;/span&gt; field.
&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Data Snapshots</title>
      <link>/docs/salesforce/iot-setup/data-snapshots/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/data-snapshots/</guid>
      <description>
        
        
        &lt;p&gt;Data Snapshots provide a mechanism to capture sensor data for a specific slice of time. Each Data Snapshot is automatically associated to a Thing, but can also be associated with a secondary parent Object.&lt;/p&gt;
&lt;p&gt;You can define a list of allowable secondary parent Objects on the Data Snapshot setup screen.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/data-snapshot.png&#34;
         alt=&#34;Data Snapshot Setup Screen&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Data Snapshot Setup Screen&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Once configured, Data Snapshots can be viewed on the Parent Object within the IoT Thing Chart Lightning Web Component.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/data-snapshot-wo.png&#34;
         alt=&#34;Data Snapshot on an example Work Order&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Data Snapshot on an example Work Order&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;add-parent-object&#34;&gt;Add Parent Object&lt;/h2&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
Each Parent Object must have a lookup field for the configured Thing Object.
&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;New&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select the new Parent Object from the &lt;span class=&#34;doc fieldname&#34;&gt;Parent Object&lt;/span&gt; field.&lt;/li&gt;
&lt;li&gt;Select the field from the new Parent Object used to lookup the related Thing Object.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;remove-parent-object&#34;&gt;Remove Parent Object&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Under the Parent Object you wish to remove, select the &lt;strong&gt;View Metadata&lt;/strong&gt; link.&lt;/li&gt;
&lt;li&gt;On the new screen, select the &lt;strong&gt;Delete&lt;/strong&gt; button toward the top of the metadata record.&lt;/li&gt;
&lt;/ol&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Alert History</title>
      <link>/docs/salesforce/iot-setup/alert-history/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/alert-history/</guid>
      <description>
        
        
        &lt;p&gt;Bolt Data Connect can be configured to send IoT Alerts from the IoT Cloud to Salesforce when certain conditions or signals are received from the connected Things. These IoT Alerts are Platform Events, and can be processed in real time using Process Builders, Flows or Triggers. If you would like to also save copies of these IoT Alerts in Salesforce, simply enable this setting and Bolt Data Connect will automatically save received IoT Alerts in the &amp;ldquo;IoT Alert History&amp;rdquo; Object.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/alert-history.png&#34;
         alt=&#34;Alert History Setup&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Alert History Setup&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;field-definitions&#34;&gt;Field Definitions&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Save Alert History&lt;/dt&gt;
&lt;dd&gt;This field enables / disables the creation of &amp;ldquo;IoT Alert History&amp;rdquo; records.&lt;/dd&gt;
&lt;dt&gt;Thing Lookup&lt;/dt&gt;
&lt;dd&gt;The field on the &amp;ldquo;IoT Alert History&amp;rdquo; Object which represents the Lookup to the related Thing Object. (Default should be &amp;ldquo;IoT Asset&amp;rdquo;)&lt;/dd&gt;
&lt;dt&gt;History to Save (Days)&lt;/dt&gt;
&lt;dd&gt;The number of days of history to save (used by the Cleanup job below).&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;alert-history-cleanup&#34;&gt;Alert History Cleanup&lt;/h2&gt;
&lt;p&gt;The Cleanup Job will delete these &amp;ldquo;IoT Alert History&amp;rdquo; records based on the provided &amp;ldquo;Days&amp;rdquo; above.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If an existing schedule has already been configured, select &lt;strong&gt;Disable&lt;/strong&gt; prior to configuring a new schedule.&lt;/li&gt;
&lt;li&gt;In the &lt;span class=&#34;doc fieldname&#34;&gt;Schedule&lt;/span&gt; drop-down menu, select the desired frequency.&lt;/li&gt;
&lt;li&gt;Enter the appropriate value in the &lt;span class=&#34;doc fieldname&#34;&gt;At&lt;/span&gt; field
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Hourly&lt;/em&gt;: Define how many minutes past the hour to run the sync.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Daily&lt;/em&gt;: Define the time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Weekly&lt;/em&gt;: Define the day of the week and time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Monthly&lt;/em&gt;: Define which day of the month and the time of day.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Enable&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;FYI&lt;/h4&gt;
The &lt;code&gt;chron&lt;/code&gt; expression is shown in the &lt;span class=&#34;doc fieldname&#34;&gt;Status&lt;/span&gt; field.
&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Alert History</title>
      <link>/docs/servicenow/iot-setup/alert-history/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/servicenow/iot-setup/alert-history/</guid>
      <description>
        
        
        &lt;p&gt;Bolt Data Connect is configured to send IoT Alerts from the IoT Cloud to ServiceNow when certain conditions or signals are received from the IoT Connected Assets. These alerts create IoT Alert History records, and can be processed in real time using Flows with Record Created Triggers.&lt;/p&gt;
&lt;p&gt;Here is a sample Flow which creates a Work Order that can customize and automate alerts in any way.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/flow-example-1.png&#34;
         alt=&#34;Record Create Trigger in Flow Designer&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Record Create Trigger in Flow Designer&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/flow-example-2.png&#34;
         alt=&#34;Create Workflow in Flow Designer&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Create Workflow in Flow Designer&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- If you would like to also save copies of these IoT Alerts in Salesforce, simply enable this setting and Bolt Data Connect will automatically save received IoT Alerts in the &#34;IoT Alert History&#34; Object. --&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- &lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/alert-history.png&#34;
         alt=&#34;Alert History Setup&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Alert History Setup&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
 --&gt;
&lt;!-- NOT IMPLEMENTED --&gt;
&lt;!-- ## Field Definitions

Save Alert History
: This field enables / disables the creation of &#34;IoT Alert History&#34; records.

Thing Lookup
: The field on the &#34;IoT Alert History&#34; Object which represents the Lookup to the related Thing Object. (Default should be &#34;IoT Asset&#34;)

History to Save (Days)
: The number of days of history to save (used by the Cleanup job below).

## Alert History Cleanup

The Cleanup Job will delete these &#34;IoT Alert History&#34; records based on the provided &#34;Days&#34; above.

1. If an existing schedule has already been configured, select **Disable** prior to configuring a new schedule.
1. In the &lt;span class=&#34;doc fieldname&#34;&gt;Schedule&lt;/span&gt; drop-down menu, select the desired frequency.
1. Enter the appropriate value in the &lt;span class=&#34;doc fieldname&#34;&gt;At&lt;/span&gt; field
   - _Hourly_: Define how many minutes past the hour to run the sync.
   - _Daily_: Define the time of day.
   - _Weekly_: Define the day of the week and time of day.
   - _Monthly_: Define which day of the month and the time of day.
1. Select **Enable**.



&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;FYI&lt;/h4&gt;
The &lt;code&gt;chron&lt;/code&gt; expression is shown in the &lt;span class=&#34;doc fieldname&#34;&gt;Status&lt;/span&gt; field.
&lt;/div&gt;
 --&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Servitization Setup</title>
      <link>/docs/salesforce/iot-setup/servitization/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/servitization/</guid>
      <description>
        
        
        

&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
For an explanation of what Servitization is, visit the &lt;a href=&#34;../../servitization&#34;&gt;Servitization&lt;/a&gt; help document.
&lt;/div&gt;

&lt;p&gt;The below settings control how the Servitization job will generate Servitization Details and also control which output Objects will be created from the details.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/servitization-setup.png&#34;
         alt=&#34;Servitization Settings&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Servitization Settings&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;field-definitions&#34;&gt;Field Definitions&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Servitization Detail to Thing Lookup&lt;/dt&gt;
&lt;dd&gt;Select the Servitization Detail field which represents a lookup to the Thing Object. (Typically &amp;ldquo;Asset&amp;rdquo;)&lt;/dd&gt;
&lt;dt&gt;Servitization Coverage to Thing Lookup&lt;/dt&gt;
&lt;dd&gt;Select the Servitization Coverage field which represents a lookup to the Thing Object. (Typically &amp;ldquo;Asset&amp;rdquo;)&lt;/dd&gt;
&lt;dt&gt;Thing Business Hours&lt;/dt&gt;
&lt;dd&gt;The field from your Thing object which is a Lookup to Business Hours. OPTIONAL: Only needed if each Thing needs to specify the Business Hours to use. Can also specify a default on each Servitization Plan.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;servitization-mappings&#34;&gt;Servitization Mappings&lt;/h2&gt;
&lt;p&gt;These Object Mappings specify which output Objects are created, and the field level mappings of each. For example, you might want to create an &amp;ldquo;Order/OrderLine&amp;rdquo; to represent your Servitization Output. Alternatively, you might instead want to user &amp;ldquo;Quote/QuoteLine&amp;rdquo; or &amp;ldquo;Proforma Invoice/Lines&amp;rdquo;.&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
Click into the Output Mapping first, save and return to this screen before clicking into the Output Line Mapping.
&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Select the Target Object first


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
Source Objects are predefined and are available in Field Mappings below
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;For any output field you&amp;rsquo;d like to populate, select a Mapping Type.&lt;/li&gt;
&lt;li&gt;Select the Source Field or specify a Value


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Hint&lt;/h4&gt;
Formula fields are powerful for source fields
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Click Save and return to Servitization Settings&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/object-mappings.png&#34;
         alt=&#34;Servitization Settings&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Servitization Settings&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
The Mapping Type of &amp;ldquo;IoT Field&amp;rdquo; is not applicable to Servitization. It is primarily for Alert Handling mappings.
&lt;/div&gt;

&lt;h2 id=&#34;servitization-job-scheduling&#34;&gt;Servitization Job Scheduling&lt;/h2&gt;
&lt;p&gt;The schedule for the Servitization generation is managed in the lower section of the Servitization settings page.&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Recommendation&lt;/h4&gt;
We recommend a daily schedule, even if your output is Weekly or Monthly. This allows for a more granular capturing of Servitization Details.
&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;If an existing schedule has already been configured, select &lt;strong&gt;Disable&lt;/strong&gt; prior to configuring a new schedule.&lt;/li&gt;
&lt;li&gt;In the &lt;span class=&#34;doc fieldname&#34;&gt;Schedule&lt;/span&gt; drop-down menu, select the desired frequency.&lt;/li&gt;
&lt;li&gt;Enter the appropriate value in the &lt;span class=&#34;doc fieldname&#34;&gt;At&lt;/span&gt; field
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Hourly&lt;/em&gt;: Define how many minutes past the hour to run the sync.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Daily&lt;/em&gt;: Define the time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Weekly&lt;/em&gt;: Define the day of the week and time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Monthly&lt;/em&gt;: Define which day of the month and the time of day.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Enable&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;FYI&lt;/h4&gt;
The &lt;code&gt;chron&lt;/code&gt; expression is shown in the &lt;span class=&#34;doc fieldname&#34;&gt;Status&lt;/span&gt; field.
&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Thing Downtime</title>
      <link>/docs/salesforce/iot-setup/thing-downtime/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/thing-downtime/</guid>
      <description>
        
        
        &lt;p&gt;Thing Downtime records can be populated automatically by using the &lt;code&gt;Offline&lt;/code&gt; and &lt;code&gt;Normal&lt;/code&gt; Thing Status Alerts sent from the IoT Cloud.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/thing-downtime.png&#34;
         alt=&#34;Thing Downtime Settings&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Downtime Settings&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;field-definitions&#34;&gt;Field Definitions&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Downtime Start&lt;/dt&gt;
&lt;dd&gt;The field from the &lt;code&gt;Thing&lt;/code&gt; Object to hold the Datetime of when a new Downtime has begun.&lt;/dd&gt;
&lt;dd&gt;This field will only be populated when a Thing is currently &lt;code&gt;Offline&lt;/code&gt;. When the Thing returns to &lt;code&gt;Normal&lt;/code&gt; this field will be cleared and a related &lt;code&gt;Downtime Object&lt;/code&gt; will be created.&lt;/dd&gt;
&lt;dt&gt;Downtime Object&lt;/dt&gt;
&lt;dd&gt;This field defines the Object to create to represent a Downtime Period of time.&lt;/dd&gt;
&lt;dd&gt;The Object must have at least 4 fields to tie to: &lt;code&gt;Downtime Type&lt;/code&gt;, &lt;code&gt;Start Datetime&lt;/code&gt;, &lt;code&gt;End Datetime&lt;/code&gt;, and &lt;code&gt;Thing Lookup&lt;/code&gt;.&lt;/dd&gt;
&lt;dt&gt;Downtime Type&lt;/dt&gt;
&lt;dd&gt;The field to hold the type of Downtime (will always be populated with a value of &lt;code&gt;Unplanned&lt;/code&gt; in this field for automatically created records based on Thing Status IoT Alerts).&lt;/dd&gt;
&lt;dt&gt;Start Datetime&lt;/dt&gt;
&lt;dd&gt;The field to hold the value of the Date/Time when the Downtime Period began.&lt;/dd&gt;
&lt;dt&gt;End Datetime&lt;/dt&gt;
&lt;dd&gt;The field to hold the value of the Date/Time when the Downtime Period ended.&lt;/dd&gt;
&lt;dt&gt;Thing Lookup&lt;/dt&gt;
&lt;dd&gt;The field to hold the Lookup to the related Thing Object.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;sample-downtime&#34;&gt;Sample Downtime&lt;/h2&gt;
&lt;p&gt;Following is a sample Thing Downtime Object that was created based on the settings seen above.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/thing-downtime-period.png&#34;
         alt=&#34;Sample Thing Downtime&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Sample Thing Downtime&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Data Lake Calculations Setup</title>
      <link>/docs/salesforce/iot-setup/data-lake-calculations/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/data-lake-calculations/</guid>
      <description>
        
        
        &lt;p&gt;The below settings control which metric frequency(s) and calulations will be collected for each Thing Type.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/data-lake-calculations.png&#34;
         alt=&#34;Data Lake Calculations Editor&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Data Lake Calculations Editor&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;data-lake-calculation-editor&#34;&gt;Data Lake Calculation Editor&lt;/h2&gt;
&lt;h3 id=&#34;metrics-frequencys&#34;&gt;Metrics Frequency(s)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Select the 1 Month, 3 Month, 6 Month and/or 12 Month Frequency fields to enable the calculation of metrics for each of these time periods. These frequency values will be calculated for all of the selected Metrics Fields below.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;metrics-fields&#34;&gt;Metrics Fields&lt;/h3&gt;
&lt;p&gt;Select the metric calculations for each of the Thing Type&amp;rsquo;s:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sensors&lt;/li&gt;
&lt;li&gt;Calculated Fields&lt;/li&gt;
&lt;li&gt;Model Inferences&lt;/li&gt;
&lt;li&gt;Alert Conditions&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;
&lt;p&gt;All fields can calculate COUNT values, but only Numeric fields allow for the calculation of the following values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MIN&lt;/li&gt;
&lt;li&gt;MAX&lt;/li&gt;
&lt;li&gt;AVG&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h2 id=&#34;data-lake-calculations-synchronization&#34;&gt;Data Lake Calculations Synchronization&lt;/h2&gt;
&lt;p&gt;When the Job below is run, the calculated metrics from the IoT Cloud will be imported into the following fields on the &lt;strong&gt;IoT Sensor Data&lt;/strong&gt; Object in Salesforce:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SPKI__DLC_1_Month_XXX&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SPKI__DLC_3_Month_XXX&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SPKI__DLC_6_Month_XXX&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SPKI__DLC_12_Month_XXX&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/data-lake-calculations-fields.png&#34;
         alt=&#34;Data Lake Calculations Sync Fields&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Data Lake Calculations Sync Fields&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id=&#34;count-metrics&#34;&gt;COUNT Metrics&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The COUNT values of Boolean fields (including all Alert Conditions) will synchronize to the &lt;strong&gt;COUNT_True&lt;/strong&gt; and &lt;strong&gt;COUNT_False&lt;/strong&gt; fields.&lt;/li&gt;
&lt;li&gt;All other field types will synchronize to the &lt;strong&gt;COUNT_JSON&lt;/strong&gt; field, with all unique values and counts in JSON format.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;data-lake-calculations-job-scheduling&#34;&gt;Data Lake Calculations Job Scheduling&lt;/h2&gt;
&lt;p&gt;The schedule for the Data Lake Calculations sync job is managed in the lower section of the Data Lake Calculations settings page, ONLY when a Thing Type is NOT selected.&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Recommendation&lt;/h4&gt;
We recommend a monthly schedule, since these metrics are only calculated in the IoT Cloud monthly as well.
&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;If an existing schedule has already been configured, select &lt;strong&gt;Disable&lt;/strong&gt; prior to configuring a new schedule.&lt;/li&gt;
&lt;li&gt;In the &lt;span class=&#34;doc fieldname&#34;&gt;Schedule&lt;/span&gt; drop-down menu, select the desired frequency.&lt;/li&gt;
&lt;li&gt;Enter the appropriate value in the &lt;span class=&#34;doc fieldname&#34;&gt;At&lt;/span&gt; field
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Hourly&lt;/em&gt;: Define how many minutes past the hour to run the sync.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Daily&lt;/em&gt;: Define the time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Weekly&lt;/em&gt;: Define the day of the week and time of day.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Monthly&lt;/em&gt;: Define which day of the month and the time of day.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Enable&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;FYI&lt;/h4&gt;
The &lt;code&gt;chron&lt;/code&gt; expression is shown in the &lt;span class=&#34;doc fieldname&#34;&gt;Status&lt;/span&gt; field.
&lt;/div&gt;

&lt;h2 id=&#34;data-lake-calculations-dashboard--reports&#34;&gt;Data Lake Calculations Dashboard &amp;amp; Reports&lt;/h2&gt;
&lt;p&gt;We&amp;rsquo;ve including Reports to show all synchronized metrics for each Frequency.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/data-lake-calculations-dashboard.png&#34;
         alt=&#34;Data Lake Calculations Dashboard&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Data Lake Calculations Dashboard&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Machine Learning</title>
      <link>/docs/salesforce/iot-setup/machine-learning/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/iot-setup/machine-learning/</guid>
      <description>
        
        
        &lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/ml-process.png&#34;
         alt=&#34;Machine Learning in BDC IoT Cloud&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Machine Learning in BDC IoT Cloud&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The diagram illustrates the integration of Machine Learning (ML) Data Science with a BDC IoT Cloud ecosystem, involving various components responsible for data processing, model training, and IoT operations.&lt;/p&gt;
&lt;h2 id=&#34;machine-learning-model-process&#34;&gt;Machine Learning Model Process&lt;/h2&gt;
&lt;p&gt;The machine learning model process involves data engineering, where raw data is prepared and then stored in a repository. Data scientists build and train machine learning models using this data. The trained ML models generate inferences based on IoT data, enabling the BDC IoT Cloud to manage and automate IoT devices through the Rules-Engine. Salesforce provides external business integration to align IoT operations with business processes.&lt;/p&gt;
&lt;h4 id=&#34;data-pipeline-data-engineering&#34;&gt;Data Pipeline (Data Engineering)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Preprocess Data&lt;/strong&gt;: Raw data is collected and preprocessed for quality and format consistency by a &lt;strong&gt;Data Engineer&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Data Repository&lt;/strong&gt;: Once preprocessed, the data is stored in a repository, which serves as input for the &lt;strong&gt;Model Pipeline&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;model-pipeline-data-science&#34;&gt;Model Pipeline (Data Science)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Feature Engineering and Training&lt;/strong&gt;: The &lt;strong&gt;Data Scientist&lt;/strong&gt; processes data from the repository, applying feature engineering techniques and training machine learning models.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evaluation&lt;/strong&gt;: After training, the model undergoes evaluation to ensure its performance on test datasets.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;release-pipeline&#34;&gt;Release Pipeline&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;strong&gt;Release Pipeline&lt;/strong&gt; handles the deployment of the trained and evaluated model. This process includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Deploy&lt;/strong&gt;: Deploying the model to production infrastructure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Approve&lt;/strong&gt;: Stakeholder approval.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Profile&lt;/strong&gt;: Analyzing the model’s performance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validate&lt;/strong&gt;: Ensuring the model meets functional and performance requirements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Package&lt;/strong&gt;: Packaging the final model for release.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The model is stored in the &lt;strong&gt;Model Registry&lt;/strong&gt;, which serves as a centralized repository for managing and tracking machine learning models. The Model Registry ensures that every version of the model, along with its metadata (such as deployment versions, and associated configurations) is easily accessible for future use or updates.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;bdc-data-cloud-and-salesforce&#34;&gt;BDC Data Cloud and Salesforce&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;strong&gt;ML Model&lt;/strong&gt; developed in the &lt;strong&gt;Machine Learning Data Science&lt;/strong&gt; section produces &lt;strong&gt;Model Inferences&lt;/strong&gt; based on IoT data. These inferences are fed into the &lt;strong&gt;BDC IoT Rules-Engine&lt;/strong&gt;, where they help automate processes within the &lt;strong&gt;BDC IoT Cloud&lt;/strong&gt; by applying decision-making logic.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The interation between &lt;strong&gt;Salesforce&lt;/strong&gt; and  &lt;strong&gt;BDC IoT Cloud&lt;/strong&gt; helps to synchronize customer data, device management, and analytics with business processes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Machine Learning</title>
      <link>/docs/servicenow/iot-setup/machine-learning/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/servicenow/iot-setup/machine-learning/</guid>
      <description>
        
        
        &lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/servicenow/iot-setup/assets/ml-process.png&#34;
         alt=&#34;Machine Learning in BDC IoT Cloud&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Machine Learning in BDC IoT Cloud&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The diagram illustrates the integration of Machine Learning (ML) Data Science with a BDC IoT Cloud ecosystem, involving various components responsible for data processing, model training, and IoT operations.&lt;/p&gt;
&lt;h2 id=&#34;machine-learning-model-process&#34;&gt;Machine Learning Model Process&lt;/h2&gt;
&lt;p&gt;The machine learning model process involves data engineering, where raw data is prepared and then stored in a repository. Data scientists build and train machine learning models using this data. The trained ML models generate inferences based on IoT data, enabling the BDC IoT Cloud to manage and automate IoT devices through the Rules-Engine. ServiceNow provides external business integration to align IoT operations with business processes.&lt;/p&gt;
&lt;h4 id=&#34;data-pipeline-data-engineering&#34;&gt;Data Pipeline (Data Engineering)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Preprocess Data&lt;/strong&gt;: Raw data is collected and preprocessed for quality and format consistency by a &lt;strong&gt;Data Engineer&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Data Repository&lt;/strong&gt;: Once preprocessed, the data is stored in a repository, which serves as input for the &lt;strong&gt;Model Pipeline&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;model-pipeline-data-science&#34;&gt;Model Pipeline (Data Science)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Feature Engineering and Training&lt;/strong&gt;: The &lt;strong&gt;Data Scientist&lt;/strong&gt; processes data from the repository, applying feature engineering techniques and training machine learning models.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evaluation&lt;/strong&gt;: After training, the model undergoes evaluation to ensure its performance on test datasets.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;release-pipeline&#34;&gt;Release Pipeline&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;strong&gt;Release Pipeline&lt;/strong&gt; handles the deployment of the trained and evaluated model. This process includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Deploy&lt;/strong&gt;: Deploying the model to production infrastructure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Approve&lt;/strong&gt;: Stakeholder approval.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Profile&lt;/strong&gt;: Analyzing the model’s performance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validate&lt;/strong&gt;: Ensuring the model meets functional and performance requirements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Package&lt;/strong&gt;: Packaging the final model for release.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The model is stored in the &lt;strong&gt;Model Registry&lt;/strong&gt;, which serves as a centralized repository for managing and tracking machine learning models. The Model Registry ensures that every version of the model, along with its metadata (such as deployment versions, and associated configurations) is easily accessible for future use or updates.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;bdc-data-cloud-and-servicenow&#34;&gt;BDC Data Cloud and ServiceNow&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;strong&gt;ML Model&lt;/strong&gt; developed in the &lt;strong&gt;Machine Learning Data Science&lt;/strong&gt; section produces &lt;strong&gt;Model Inferences&lt;/strong&gt; based on IoT data. These inferences are fed into the &lt;strong&gt;BDC IoT Rules-Engine&lt;/strong&gt;, where they help automate processes within the &lt;strong&gt;BDC IoT Cloud&lt;/strong&gt; by applying decision-making logic.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The interation between &lt;strong&gt;ServiceNow&lt;/strong&gt; and  &lt;strong&gt;BDC IoT Cloud&lt;/strong&gt; helps to synchronize customer data, device management, and analytics with business processes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Writing Formulas</title>
      <link>/docs/scripting/other/formulas/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/scripting/other/formulas/</guid>
      <description>
        
        
        &lt;p&gt;Edge processing takes sensor data, aggregates it, and computes all the
Calculations and Alerts all according to your Thing Type Specifications.&lt;/p&gt;
&lt;p&gt;The following section describes the syntax for writing these functions. The base
syntax for all these formulas is &lt;strong&gt;JavaScript&lt;/strong&gt; (specifically Node.js).&lt;/p&gt;
&lt;h2 id=&#34;function-basics&#34;&gt;Function Basics&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s assume our Example IoT Connected Asset produces a message which looks like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-typescript&#34; data-lang=&#34;typescript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;thing_message&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;pressure_volts&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;number&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;temperature&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;number&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The Gateway starts building the following message:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-typescript&#34; data-lang=&#34;typescript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;message&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;pressure_volts&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;temperature_volts&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;on&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Let&amp;rsquo;s write the function for a Calculation named &lt;code&gt;pressure_psi&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pressure_volts&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Sensor Namespace&lt;/h4&gt;
In the above formula we have access to the current IoT Connected Asset&amp;rsquo;s aggregated sensor
data under the namespace &lt;code&gt;sensor&lt;/code&gt;. There are 4 additional namespaces covered
in &lt;a href=&#34;#namespaces&#34;&gt;Namespaces&lt;/a&gt;.
&lt;/div&gt;

&lt;p&gt;The Gateway message now looks like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-typescript&#34; data-lang=&#34;typescript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;message&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;pressure_volts&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;temperature_volts&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;on&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;calculation&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;pressure_psi&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now let&amp;rsquo;s write a formula for an alert on pressure named &lt;code&gt;overpressure&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;on&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;calculation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pressure_psi&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;15&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;JavaScript&lt;/h4&gt;
Any valid JavaScript which returns a value can be used in these Calculations and
Alerts. Take a look at &lt;a href=&#34;../javascript-basics&#34;&gt;JavaScript Basics&lt;/a&gt; for help on
basic operators.
&lt;/div&gt;

&lt;p&gt;Our Gateway message now looks something like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-typescript&#34; data-lang=&#34;typescript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;message&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;pressure_volts&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;temperature_volts&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;on&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;calculation&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;pressure_psi&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;alert&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;overpressure&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is the basic structure you&amp;rsquo;re putting together when building your Thing
Type specification.&lt;/p&gt;
&lt;h2 id=&#34;namespaces&#34;&gt;Namespaces&lt;/h2&gt;
&lt;p&gt;There are 5 base namespaces which can be used to access data from these formulas:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;sensor&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Provides access to all the latest aggregated sensor values. Aggregation is
defined by the &lt;code&gt;Thing Type specification&lt;/code&gt; &lt;a href=&#34;/docs/salesforce/iot-setup/thing-types/thing-type-specification/#sensors&#34;&gt;Salesforce&lt;/a&gt;, &lt;a href=&#34;/docs/servicenow/iot-setup/thing-types/thing-type-specification/#sensors&#34;&gt;ServiceNow&lt;/a&gt;.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;calculation&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Provides access to all the latest calculated values. Calculations are defined by
the &lt;code&gt;Thing Type specification&lt;/code&gt; &lt;a href=&#34;/docs/salesforce/iot-setup/thing-types/thing-type-specification/#calculated-fields&#34;&gt;Salesforce&lt;/a&gt;, &lt;a href=&#34;/docs/servicenow/iot-setup/thing-types/thing-type-specification/#calculated-fields&#34;&gt;ServiceNow&lt;/a&gt;.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;alert&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Provides access to all the latest alert values. Alerts are defined by the &lt;code&gt;Thing Type specification&lt;/code&gt; &lt;a href=&#34;/docs/salesforce/iot-setup/thing-types/thing-type-specification/#alert-conditions&#34;&gt;Salesforce&lt;/a&gt;, &lt;a href=&#34;/docs/servicenow/iot-setup/thing-types/thing-type-specification/#alert-conditions&#34;&gt;ServiceNow&lt;/a&gt;.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;context&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Provides access to all the latest context values. Context is defined by the &lt;code&gt;Context settings&lt;/code&gt; &lt;a href=&#34;/docs/salesforce/iot-setup/context-data/&#34;&gt;Salesforce&lt;/a&gt;, &lt;a href=&#34;/docs/servicenow/iot-setup/context-data/&#34;&gt;ServiceNow&lt;/a&gt;.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;a href=&#34;/docs/servicenow/iot-setup/context-data/&#34;&gt;Context settings&lt;/a&gt;.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;twin&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Provides access to all the the following values:&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;role&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;the &lt;strong&gt;Digital Twin&lt;/strong&gt; role for the referenced IoT Connected Asset&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;priority&#34;&gt;Priority&lt;/h2&gt;
&lt;p&gt;When specifying calculations and alerts in the &lt;code&gt;thing-type specification&lt;/code&gt; (&lt;a href=&#34;/docs/salesforce/iot-setup/thing-types/thing-type-specification&#34;&gt;Salesforce&lt;/a&gt;, &lt;a href=&#34;/docs/servicenow/iot-setup/thing-types/thing-type-specification&#34;&gt;ServiceNow&lt;/a&gt;), the priority defines the execution order of each calculation/alert. Alerts are always evaluated after all calculations. Within each group (calculations and alerts), formulas are evaluated in priority order from smallest (0) to largest (infitinity). A calculatoin with priority &lt;code&gt;0&lt;/code&gt; will be evaluated before a calculation with priority &lt;code&gt;1&lt;/code&gt; and so on. For elements with equal priority, their order relative to each other is arbitrary. So in the following example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;calcA&lt;/code&gt;: priority = 0&lt;/li&gt;
&lt;li&gt;&lt;code&gt;calcB&lt;/code&gt;: priority = 10&lt;/li&gt;
&lt;li&gt;&lt;code&gt;calcC&lt;/code&gt;: priority = 10&lt;/li&gt;
&lt;li&gt;&lt;code&gt;calcD&lt;/code&gt;: priority = 11&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;hellip; &lt;code&gt;calcA&lt;/code&gt; is evaluated first followed by &lt;code&gt;calcC&lt;/code&gt; and &lt;code&gt;calcB&lt;/code&gt; (in no defined order), then finally &lt;code&gt;calcD&lt;/code&gt; is evaluated. Once all the calculations are evaluated, the alerts are then evaluated.&lt;/p&gt;
&lt;p&gt;When referring to calculations which are evaluated later in the cycle from within calculations which happen earlier, there will be a unit-delay in the value retrieved.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;calcA&lt;/code&gt;: priority = 0, formula = &lt;code&gt;(calculation.calcB === undefined) ? 0 : calculation.calcB + 1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;calcB&lt;/code&gt;: priority = 1, formula = &lt;code&gt;calculation.calcA + 1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;On the first pass, &lt;code&gt;calculation.calcB&lt;/code&gt; will be &lt;code&gt;undefined&lt;/code&gt;, so &lt;code&gt;calcA&lt;/code&gt; will be &lt;code&gt;0&lt;/code&gt;, &lt;code&gt;calcB&lt;/code&gt; is then &lt;code&gt;1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;On the second pass, &lt;code&gt;calcA&lt;/code&gt; will be &lt;code&gt;2&lt;/code&gt;, &lt;code&gt;calcB&lt;/code&gt; will be &lt;code&gt;3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&amp;hellip; and so on&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;specification-metadata-access&#34;&gt;Specification Metadata Access&lt;/h2&gt;
&lt;p&gt;In general, when you reference a sensor, calculation, or alert within a formula, it implicitly retrieves it&amp;rsquo;s current value (i.e. &lt;code&gt;calculation.calcAbc&lt;/code&gt; implicitly becomes &lt;code&gt;calculation.calcAbc.value&lt;/code&gt;). Alternatively, there are other metadata which can be retrieved from the given element.&lt;/p&gt;
&lt;p&gt;In addition to the implicit &lt;code&gt;value&lt;/code&gt;, the following parameters are available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sensor
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;name&lt;/strong&gt;: the calculation name (e.g. &lt;code&gt;sensor.sensorAbc.name = &amp;quot;sensorAbc&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;label&lt;/strong&gt;: the calculation label (e.g. &lt;code&gt;sensor.sensorAbc.label = &amp;quot;Sensor ABC&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dataType&lt;/strong&gt;: the calculation data-type (e.g. &lt;code&gt;sensor.sensorAbc.dataType = &amp;quot;Number&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;aggregateType&lt;/strong&gt;: the sensor&amp;rsquo;s aggregation-type (e.g. &lt;code&gt;sensor.sensorAbc.aggregateType = &amp;quot;Seconds&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;aggregateFunction&lt;/strong&gt;: the sensor&amp;rsquo;s aggregation-function (e.g. &lt;code&gt;sensor.sensorAbc.aggregateFunction = &amp;quot;MAX&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;aggregateInterval&lt;/strong&gt;: the sensor&amp;rsquo;s aggregation-interval (e.g. &lt;code&gt;sensor.sensorAbc.aggregateType = 300&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;isStored&lt;/strong&gt;: true if the sensor is stored in the cloud (e.g. &lt;code&gt;sensor.sensorAbc.isStored = true&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;storageDataType&lt;/strong&gt;: the cloud storage type (e.g. &lt;code&gt;sensor.sensorAbc.isStored = &amp;quot;Double&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Calculation
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;name&lt;/strong&gt;: the calculation name (e.g. &lt;code&gt;calculation.calcAbc.name = &amp;quot;calcAbc&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;label&lt;/strong&gt;: the calculation label (e.g. &lt;code&gt;calculation.calcAbc.label = &amp;quot;Calculation ABC&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;formula&lt;/strong&gt;: the calculation formula (e.g. &lt;code&gt;calculation.calcAbc.formula = &amp;quot;1 + 1&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;priority&lt;/strong&gt;: the calculation priority (e.g. &lt;code&gt;calculation.calcAbc.priority = 14&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;isActive&lt;/strong&gt;: true if the calculation is active (e.g. &lt;code&gt;calculation.calcAbc.isActive = true&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;isStored&lt;/strong&gt;: true if the calculation is stored in the cloud (e.g. &lt;code&gt;calculation.calcAbc.isStored = true&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;storageDataType&lt;/strong&gt;: the cloud storage type (e.g. &lt;code&gt;calculation.calcAbc.isStored = &amp;quot;Double&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Alert
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;name&lt;/strong&gt;: the alert name (e.g. &lt;code&gt;alert.alertAbc.name = &amp;quot;alertAbc&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;label&lt;/strong&gt;: the alert label (e.g. &lt;code&gt;alert.alertAbc.label = &amp;quot;Alert ABC&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;alertType&lt;/strong&gt;: the alert-type (e.g. &lt;code&gt;alert.alertAbc.alertType = &amp;quot;Threshold&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;alertInterval&lt;/strong&gt;: the interval which the alert re-drives to ServiceNow (e.g. &lt;code&gt;alert.alertAbc.alertInterval = 3600&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;formula&lt;/strong&gt;: the alert formula (e.g. &lt;code&gt;alert.alertAbc.formula = &amp;quot;calculation.calcAbc &amp;gt; 1&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;priority&lt;/strong&gt;: the alert priority (e.g. &lt;code&gt;alert.alertAbc.priority = 14&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;isActive&lt;/strong&gt;: true if the alert is active (e.g. &lt;code&gt;alert.alertAbc.isActive = true&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;isStored&lt;/strong&gt;: true if the alert is stored in the cloud (e.g. &lt;code&gt;alert.alertAbc.isStored = true&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id=&#34;example-1-constant&#34;&gt;Example 1 Constant&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;: &lt;code&gt;example1&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: Always return a constant value for the calculation or alert.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Formula&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;hello world&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;: constant &lt;code&gt;{ ... example1: &#39;hello world&#39; ... }&lt;/code&gt; in each message&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;example-2-basic-arithmetic&#34;&gt;Example 2 Basic Arithmetic&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;: &lt;code&gt;example2&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: Scale sensorA&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Formula&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensorA&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;sensorA&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;example2&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;32&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;example-3-conditional&#34;&gt;Example 3 Conditional&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;: &lt;code&gt;example3&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: If the IoT Connected Asset&amp;rsquo;s sensorA is over 10, calculate, otherwise return 0.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Formula&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensorA&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensorB&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;50&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;sensorA:&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;3,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;sensorB:&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;6,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;example3:&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;sensorA:&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;11,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;sensorB:&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;6,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;example3:&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;300&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Alternate&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensorA&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensorB&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;50&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;example-4-digital-twin&#34;&gt;Example 4 Digital Twin&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;: &lt;code&gt;example4&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: If the IoT Connected Asset&amp;rsquo;s parent is powered on, calculate, otherwise return 0.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Formula&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;$parent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;calculation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;powerOn&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensorB&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$parent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;inputVoltage&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;parentId&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;inputVoltage&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;calculation&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;powerOn&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;sensorB&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;example4&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0.5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;parentId&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;inputVoltage&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;parentId&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;calculation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;powerOn&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;sensorB&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;example4&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Alternate&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$parent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;calculation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;powerOn&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensorB&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$parent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;inputVoltage&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;example-5-context&#34;&gt;Example 5 Context&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;: &lt;code&gt;example5&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: If the IoT Connected Asset&amp;rsquo;s entitlement level is either &lt;em&gt;Platinum&lt;/em&gt; or &lt;em&gt;Gold&lt;/em&gt;, evaluate the threshold, otherwise return false.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Formula&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;platinum&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;gold&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;].&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;includes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;context&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;entitlementLevel&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toLowerCase&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;calculation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someValue&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;context&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;entitlementLevel&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Gold&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;someValue&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;101&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;example5&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;context&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;entitlementLevel&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Silver&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;someValue&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;101&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;example5&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Alternates&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;([&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;platinum&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;gold&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;].&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;includes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;context&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;entitlementLevel&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toLowerCase&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()))&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;calculation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someValue&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;isCovered&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;level&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;coveredLevels&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;platinum&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;gold&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;coveredLevels&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;includes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;level&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toLowerCase&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;isCovered&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;context&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;entitlementLevel&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;calculation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someValue&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: Expressions &amp; Operators</title>
      <link>/docs/scripting/javascript-basics/expressions-and-operators/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/scripting/javascript-basics/expressions-and-operators/</guid>
      <description>
        
        
        &lt;h2 id=&#34;arithmetic&#34;&gt;Arithmetic&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;+&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Addition&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newNumber&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newString&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;11&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;-&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Subtraction&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newNumber&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newString&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 0 - number-like strings are &amp;#39;coerced&amp;#39; into numbers
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newString&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;one&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// NaN (or &amp;#39;Not-a-Number&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;/&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Division&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newNumber&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 0.5
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newString&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 0.5
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newString&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;two&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// NaN
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;*&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Multiplication&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newNumber&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newString&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newString&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;two&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// NaN
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;%&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Remainder (Modulo)&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newNumber&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2.3&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 0.3
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newString&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2.3&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 0.3
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newString&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2.3&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;one&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// NaN
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;**&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Exponentiation&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newNumber&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;**&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 8
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newString&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;**&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 8
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newString&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;**&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;three&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// NaN
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;relational&#34;&gt;Relational&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;in&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Object contains property (looking at keys only)&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;hasSomething&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;something&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;something&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;another&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;hasElephant&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;something&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;something&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;another&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;hasOne&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;something&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;another&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Less-than&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;isSmall&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;notSmall&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;notSmall&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;&amp;lt;=&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Less-than-or-equal-to&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;isSmall&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;notSmall&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;notSmall&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Greater-than&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;isSmall&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;notSmall&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;notSmall&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;&amp;gt;=&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Greater-than-or-equal-to&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;isSmall&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;notSmall&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;notSmall&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;equality&#34;&gt;Equality&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;==&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Equality (allowing coercion)&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;notEqual&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;equalNumbers&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;similarString&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;similarBool&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;!=&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Inequality (allowing coercion)&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;notEqual&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;equalNumbers&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;similarString&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;similarBool&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;===&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Identity (disallowing coercion)&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;notEqual&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;equalNumbers&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;similarString&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;similarBool&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;!==&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Nonidentity (disallowing coercion)&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;notEqual&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!==&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;equalNumbers&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!==&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;similarString&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!==&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;similarBool&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!==&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;logical&#34;&gt;Logical&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Logical AND&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;allTrue&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;someFalse&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;allFalse&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;||&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Logical OR (also a falsy-coalescing operator)&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;allTrue&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;someFalse&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;allFalse&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Falsy-Coalescing is used to return the first non-falsy value
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;firstIsGood&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;first&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;second&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;first&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;firstIsUndefined&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;undefined&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;second&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;second&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;firstIsNull&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;null&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;second&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;second&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;firstIsFalse&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;second&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;second&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;firstIs0&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;second&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;second&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;assignment&#34;&gt;Assignment&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;=&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Assignment&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;*=&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Multiplication assignment&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 4 (a = a * 2)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;/=&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Division assignment&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 1 (a = a / 2)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;+=&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Addition assignment&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 4 (a = a + 2)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;-=&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Subtraction assignment&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 0 (a = a - 2)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;[a, b] = [1, 2]&lt;/code&gt;, &lt;code&gt;{a, b} = {a: 1, b: 2}&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Destructuring assignment&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;anArray&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;anObject&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;aKey&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;bKey&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;first&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;second&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;anArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// first = 1, second = 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;aKey&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;anObject&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// aKey = 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;,&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Evaluate multiple, return last&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;result&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 0.75
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;miscellaneous&#34;&gt;Miscellaneous&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;(condition ? ifTrue : ifFalse)&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;ternary operator&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;getFirst&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;first&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;second&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;first&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;getSecond&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;first&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;second&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;second&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;?.&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;optional chaining operator&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;something&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;nullChild&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Note: (`something.child` is `undefined`)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;undefinedChainOkay&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;something&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;child&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;?&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;grandchild&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// returns `undefined`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;undefinedChainError&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;something&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;child&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;grandchild&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// throws error (trying to access `grandchild` of `undefined`)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;nullChainOkay&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;something&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;nullChild&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;?&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;grandchild&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// returns `undefined`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;nullChainError&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;something&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;nullChild&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;grandchild&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// throws error (trying to access `grandchild` of `null`)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: Statements</title>
      <link>/docs/scripting/javascript-basics/statements/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/scripting/javascript-basics/statements/</guid>
      <description>
        
        
        &lt;h2 id=&#34;declarations&#34;&gt;Declarations&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;let&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Block-scoped variable&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;someVar&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;someOtherVar&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;someVar&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// sub-scopes have access to variables from parent scope
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;subScopedVar&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;40&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// subScopedVar =&amp;gt; undefined, since it was defined in a child scope
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;const&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Block-scoped constant&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;someVar&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// NOT VALID, const variables must be assigned at declaration
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;someOtherVar&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;someOtherVar&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// NOT VALID, can&amp;#39;t assign a value to a const variable
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;subScopedVar&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;40&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// subScopedVar =&amp;gt; undefined, since it was defined in a child scope
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;flow-control&#34;&gt;Flow control&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;try...catch&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Handle errors&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;try&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// do something &amp;#39;risky&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;catch&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;error&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// gracefully handle error, return some default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;if...else&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Conditional&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someCondition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// do something
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;anotherCondition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// do something else
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// just do this
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;switch&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Conditional&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;switch&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someInput&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;firstValue&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// do something when `someInput === firstValue`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;break&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// exits this switch-case and continue execution after the switch
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;secondValue&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// do something when `someInput === secondValue`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// without a `break` execution will &amp;#34;fall-through&amp;#34; to the next block even if
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// `someInput !== thirdValue`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;thirdValue&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// do something when `someInput === thirdValue` (or since there&amp;#39;s no `break`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// above, also `someInput === secondValue`)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;break&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;fourthValue&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;fifthValue&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// do something when `someInput === fourthValue || someInput === fifthValue`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;anotherValue&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// can be used in place of break, this will return
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// `anotherValue` to the caller
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;default&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// do something if `someInput` hasn&amp;#39;t matched any of the other cases
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;break&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;iteration&#34;&gt;Iteration&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;for&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;standard for-loop&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// do something while `i` iterates through [0, 1, 2, 3, 4, 5, 6, 7, 8]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someCondition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;break&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// exit early if some `someCondition` happens
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someOtherCondition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;continue&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// stop executing this loop and start next iteration (don&amp;#39;t execute MORE below)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;/* MORE */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;for...in&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;object property for-loop&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;someObject&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;first&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;second&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;third&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;three&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;key&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;someObject&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// do something while `key` iterates through [&amp;#39;first&amp;#39;, &amp;#39;second&amp;#39;, &amp;#39;third&amp;#39;] (order not guaranteed)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;currentValue&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;someObject&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;key&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someCondition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;break&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// exit early if some `someCondition` happens
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someOtherCondition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;continue&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// stop executing this loop and start next iteration (don&amp;#39;t execute MORE below)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;/* MORE */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;for...of&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;iterable for-loop&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;someArray&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;of&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;someArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// do something while `item` iterates through [&amp;#39;a&amp;#39;, &amp;#39;b&amp;#39;, &amp;#39;c&amp;#39;]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someCondition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;break&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// exit early if some `someCondition` happens
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someOtherCondition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;continue&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// stop executing this loop and start next iteration (don&amp;#39;t execute MORE below)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;/* MORE */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;while&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;while-loop&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;done&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;while&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;done&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// do something
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someCondition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;break&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// exit early if some `someCondition` happens
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someOtherCondition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;continue&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// stop executing this loop and start next iteration (don&amp;#39;t execute MORE below)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;/* MORE */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;finallyCondition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;done&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;do...while&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;do-while-loop (like a while-loop, except the body executes at least once)&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;done&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// do something
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000&#34;&gt;done&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someCondition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;break&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// exit early if some `someCondition` happens
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someOtherCondition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;continue&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// stop executing this loop and start next iteration (don&amp;#39;t execute MORE below)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;/* MORE */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;finallyCondition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;done&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;while&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;done&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: Standard Objects</title>
      <link>/docs/scripting/javascript-basics/standard-objects/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/scripting/javascript-basics/standard-objects/</guid>
      <description>
        
        
        &lt;p&gt;The following JavaScript standard objects are available for use in Calculations
and Alerts.&lt;/p&gt;
&lt;h2 id=&#34;values&#34;&gt;Values&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;Infinity&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Numeric property representing infinity&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;Infinity&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;Infinity&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;Infinity&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;NaN&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Property representing something that is not a number&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// NaN
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;NaN&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;undefined&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Property representing something that is not defined&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;someObject&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;someObject&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;c&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;undefined&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;functions&#34;&gt;Functions&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;isFinite&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Check if number is not Infinity&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;isFinite&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;Infinity&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;isFinite&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;Infinity&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;isFinite&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false (divide by zero)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;isFinite&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;42&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;isFinite&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;abc&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;isNaN&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Check if value is Not-A-Number&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;isNaN&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;isNaN&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;Infinity&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false ... debatable
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;isNaN&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;42&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;isNaN&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;abc&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;parseFloat&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Parse a number from a string as a float&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;parseFloat&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1.234&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 1.234
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;parseFloat&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 1.0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;parseFloat&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;a1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// NaN
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;parseInt&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Parse a number from a string as an integer&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;parseFloat&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1.234&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;parseFloat&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;parseFloat&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;a1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// NaN
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;decodeURI&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Decode a URI encoded string&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;encoded&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;%7B%22a%22:1,%20%22b%22:2%7D&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;decodeURI&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;encoded&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// {&amp;#34;a&amp;#34;:1, &amp;#34;b&amp;#34;:2}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;encodeURI&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Encode a string for URI&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;raw&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;a&amp;#34;:1, &amp;#34;b&amp;#34;:2}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;encodeURI&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;raw&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// %7B%22a%22:1,%20%22b%22:2%7D
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;fundamentals&#34;&gt;Fundamentals&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;Error&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The standard Error Object in JavaScript&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;try&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;e&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;Error&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Im an Error&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Properties &amp;amp; Methods
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000&#34;&gt;e&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;Error&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000&#34;&gt;e&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;message&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;Im an Error&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000&#34;&gt;e&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toString&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;Error: Im an Error&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;throw&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;e&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;catch&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;error&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;console&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;log&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;error&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;Error: Im an Error&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;numbers--dates&#34;&gt;Numbers &amp;amp; Dates&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;Number&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Wrapper Object for a number&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;123&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 123
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;Number&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;123&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// returns the number 123
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Number&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;unicorn&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// NaN
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Number&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;undefined&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// NaN
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Properties &amp;amp; Methods
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;c&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;123.456789&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;c&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toExponential&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;1.235e+2&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;c&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toFixed&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 123.46
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;c&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toPrecision&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 123.4
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;c&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toString&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;123.456789&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;BigInt&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Wrapper Object for integers larger than can be stored in Number&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;n&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 1, note the `n` in the literal specifies this is a **BigInt**
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// ... relational comparison to Number works intuitively
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;BigInt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Number&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;MAX_SAFE_INTEGER&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 9007199254740991n
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;n&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 18014398509481982n
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Properties &amp;amp; Methods
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;c&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;123&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;n&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;c&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toString&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;123&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;Date&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Represents a date object. Fundamentally represented as an integer of the
number of milliseconds since January 1, 1970 00:00:00 UTC&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;Date&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;now&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 1607096922047, number of milliseconds from 1/1/1970 to
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// the time the statement executes
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Date&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;parse&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2020-12-04T15:52:32.939Z&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// returns a Date object for the time
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// specified by the input string
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;Date&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Date object representing &amp;#39;now&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;Date&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Date object for the milliseconds `value`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;Date&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;dateString&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Date object by parsing `dateString`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;Date&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;year&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;monthIndex&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;day&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;hours&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;minutes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;seconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;milliseconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Date object by specifying elements
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;/* | -- optional -----------------------------| */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;Date&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Date: 2020-12-04T15:59:00.946Z
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getTime&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 1607097540946
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getUTCDate&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 4 (day of the month 1-31)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getUTCDay&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 5 (day of the week 0-6)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getUTCFullYear&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 2020
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getUTCHours&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 15
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getUTCMilliseconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 946
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getUTCMinutes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 59
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getUTCMonth&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 11 (month of the year 0-11)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getUTCSeconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toUTCString&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;Fri, 04 Dec 2020 15:59:00 GMT&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toString&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;Fri Dec 04 2020 09:59:00 GMT-0600 (Central Standard Time)&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toISOString&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;2020-12-04T15:59:00.946Z&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toDateString&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;Fri Dec 04 2020&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toTimeString&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;09:59:00 GMT-0600 (Central Standard Time)&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&amp;hellip; plus many more: see &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date&#34;&gt;Mozilla: Date&lt;/a&gt;&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;Math&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Collection of mathematical properties and methods (works with &lt;code&gt;Number&lt;/code&gt;, but not &lt;code&gt;BitInt&lt;/code&gt;)&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Constants
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;E&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Euler&amp;#39;s constant and the base of natural logarithms; approximately 2.718.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;PI&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Ratio of the a circle&amp;#39;s circumference to its diameter; approximately 3.14159.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Functions
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;abs&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Returns the absolute value of x.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ceil&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Returns the smallest integer greater than or equal to x.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;floor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;//Returns the largest integer less than or equal to x.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;round&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Returns the value of the number x rounded to the nearest integer.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sin&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Returns the sine of x.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;cos&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Returns the cosine of x.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;tan&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Returns the tangent of x.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;asin&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Returns the arcsine of x.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;acos&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Returns the arccosine of x.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;atan&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Returns the arctangent of x.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;atan2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;y&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Returns the arctangent of the quotient of its arguments.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;exp&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Returns Ex, where x is the argument, and E is Euler&amp;#39;s constant (2.718…, the base of the natural logarithm).
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;log&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;//Returns the natural logarithm (ln) of x.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;log10&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;//Returns the base-10 logarithm of x.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;log2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;//Returns the base-2 logarithm of x.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;max&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;...);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;//Returns the largest of zero or more numbers.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;min&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;...);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;//Returns the smallest of zero or more numbers.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pow&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;y&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;//Returns base x to the exponent power y (that is, xy).
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sqrt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Returns the positive square root of x.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sign&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Returns the sign of the x, indicating whether x is positive, negative, or zero.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;random&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Returns a pseudo-random number between 0 and 1.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&amp;hellip; plus many more: see &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math&#34;&gt;Mozilla: Math&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;text&#34;&gt;Text&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;String&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Wrapper Object for a string&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;A string   &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;b&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;A string using double quotes&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;typeOfQuotes&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;back-tick&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;c&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;`A format string using &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;typeOfQuotes&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; quotes`&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;A format string using back-tick quotes&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;d&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Another string&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;Another string&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;length&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 8
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;charAt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;t&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;charCodeAt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 116
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;includes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;str&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;startsWith&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;A &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;endsWith&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;ing&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;indexOf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;str&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;indexOf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;who&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// -1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Return a new string ... (doesn&amp;#39;t modify `a`)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toLowerCase&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// a string
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toUpperCase&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// A STRING
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;replace&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;ing&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;ong&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;A strong   &amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;concat&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;with some more string&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;A string   with some more string&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;repeat&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;A string   A string   A string   A string   &amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;trim&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;A string&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;trimStart&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;A string   &amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;trimEnd&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;A string&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;split&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// [ &amp;#39;A&amp;#39;, &amp;#39;string&amp;#39;, &amp;#39;&amp;#39;, &amp;#39;&amp;#39;, &amp;#39;&amp;#39; ]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;indexed-collections&#34;&gt;Indexed Collections&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;Array&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Array of JavaScript elements&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;items&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;items2&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;Array&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// []
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;items3&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;Array&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// [ undefined, undefined, undefined, undefined, undefined ]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;items&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;];&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;a&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Array&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;isArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;items&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;Array&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;isArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;items&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;concat&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;([&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;f&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// [&amp;#39;a&amp;#39;, &amp;#39;b&amp;#39;, 3, 4, 5, &amp;#39;f&amp;#39;]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;every&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;typeof&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;string&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;forEach&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;/* do something */&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// returns void
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;map&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;/* do something */&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// returns an array with each result of `do something`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;includes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;includes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;indexOf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;indexOf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// -1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;find&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;b&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;find&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// undefined
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;find&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 4
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;findIndex&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;findIndex&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// -1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;findIndex&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;item&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 3
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;join&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;:&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;a:b:3:4:5:f&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lastElement&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pop&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;f&amp;#39;, newArray = [&amp;#39;a&amp;#39;, &amp;#39;b&amp;#39;, 3, 4, 5]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;push&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;g&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// [&amp;#39;a&amp;#39;, &amp;#39;b&amp;#39;, 3, 4, 5, &amp;#39;g&amp;#39;]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;firstElement&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;shift&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;a&amp;#39;, newArray = [&amp;#39;b&amp;#39;, 3, 4, 5, &amp;#39;g&amp;#39;]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;unshift&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// [1, &amp;#39;b&amp;#39;, 3, 4, 5, &amp;#39;g&amp;#39;]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;subArray&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;slice&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// [3, 4] from index 2 to less than 4 (newArray is unmodified)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;deletedElements&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;splice&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// [3, 4, 5, &amp;#39;g&amp;#39;] from index 2 delete 4 elements (newArray = [1, &amp;#39;b&amp;#39;])
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;noDeletedElements&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;splice&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;d&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;e&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// [] from index 2 delete 0 elements, then insert &amp;#39;c&amp;#39;, &amp;#39;d&amp;#39;, &amp;#39;e&amp;#39; (newArray = [1, &amp;#39;b&amp;#39;, &amp;#39;c&amp;#39;, &amp;#39;d&amp;#39;, &amp;#39;e&amp;#39;])
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;toString&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;1,b,c,d,e&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;newArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;reverse&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// [ &amp;#39;e&amp;#39;, &amp;#39;d&amp;#39;, &amp;#39;c&amp;#39;, &amp;#39;b&amp;#39;, 1 ] (newArray = [ &amp;#39;e&amp;#39;, &amp;#39;d&amp;#39;, &amp;#39;c&amp;#39;, &amp;#39;b&amp;#39;, 1 ])
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&amp;hellip; plus many more: see &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array&#34;&gt;Mozilla: Array&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The following typed Arrays are also available: &lt;code&gt;Int8Array&lt;/code&gt;, &lt;code&gt;Uint8Array&lt;/code&gt;, &lt;code&gt;Uint8ClampedArray&lt;/code&gt;, &lt;code&gt;Int16Array&lt;/code&gt;, &lt;code&gt;Uint16Array&lt;/code&gt;, &lt;code&gt;Int32Array&lt;/code&gt;, &lt;code&gt;Uint32Array&lt;/code&gt;, &lt;code&gt;Float32Array&lt;/code&gt;, &lt;code&gt;Float64Array&lt;/code&gt;, &lt;code&gt;BigInt64Array&lt;/code&gt;, and &lt;code&gt;BigUint64Array&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;keyed-collections&#34;&gt;Keyed Collections&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Map&lt;/dt&gt;
&lt;dd&gt;See &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map&#34;&gt;Mozilla Map&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;Set&lt;/dt&gt;
&lt;dd&gt;See &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set&#34;&gt;Mozilla Set&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;WeakMap&lt;/dt&gt;
&lt;dd&gt;See &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap&#34;&gt;Mozilla WeakMap&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;WeakSet&lt;/dt&gt;
&lt;dd&gt;See &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet&#34;&gt;Mozilla WeakSet&lt;/a&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;miscellaneous&#34;&gt;Miscellaneous&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;JSON&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;serialize / deserialize JSON&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;JSON&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;parse&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;a&amp;#34;:1, &amp;#34;b&amp;#34;: 2}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// {a:1, b: 2}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;JSON&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;stringify&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;({&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;first&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;first&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;second&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;second&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;});&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;{&amp;#34;first&amp;#34;:&amp;#34;first&amp;#34;,&amp;#34;second&amp;#34;:&amp;#34;second&amp;#34;}&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;JSON&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;stringify&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;([&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// &amp;#39;[&amp;#34;a&amp;#34;,&amp;#34;b&amp;#34;,&amp;#34;c&amp;#34;]&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: Delay</title>
      <link>/docs/scripting/core-libraries/delay/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/scripting/core-libraries/delay/</guid>
      <description>
        
        
        &lt;h2 id=&#34;available-functions&#34;&gt;Available Functions&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id=&#34;samplessignal-delay-initial&#34;&gt;&lt;code&gt;samples(signal, delay, initial)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Delay a signal by some amount of &amp;ldquo;samples&amp;rdquo;&lt;/p&gt;
&lt;h4 id=&#34;usage&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;delay&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;samples&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;signal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;delay&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;delay&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;samples&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;signal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;delay&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;initial&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;signal&lt;/dt&gt;
&lt;dd&gt;[any] raw value&lt;/dd&gt;
&lt;dt&gt;delay&lt;/dt&gt;
&lt;dd&gt;[number] number of samples to delay the output&lt;/dd&gt;
&lt;dt&gt;initial&lt;/dt&gt;
&lt;dd&gt;[any] (optional) value to use for the first &lt;code&gt;delay&lt;/code&gt; seconds (defaults to first received value)&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/scripting/core-libraries/assets/sampleDelay_2samples.png&#34;/&gt;
&lt;/figure&gt;
&lt;hr&gt;
&lt;h3 id=&#34;timesignal-delay-initial&#34;&gt;&lt;code&gt;time(signal, delay, initial)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Delay a signal by some amount of time&lt;/p&gt;
&lt;h4 id=&#34;usage-1&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;delay&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;time&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;signal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;delay&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;delay&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;time&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;signal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;delay&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;initial&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-1&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;signal&lt;/dt&gt;
&lt;dd&gt;[any] raw value&lt;/dd&gt;
&lt;dt&gt;delay&lt;/dt&gt;
&lt;dd&gt;[number] time, in seconds, to delay the output&lt;/dd&gt;
&lt;dt&gt;initial&lt;/dt&gt;
&lt;dd&gt;[any] (optional) value to use for the first &lt;code&gt;delay&lt;/code&gt; seconds (defaults to first received value)&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/scripting/core-libraries/assets/delayTime_2seconds.png&#34;/&gt;
&lt;/figure&gt;
&lt;hr&gt;
&lt;h3 id=&#34;timetotruesignal-delay&#34;&gt;&lt;code&gt;timeToTrue(signal, delay)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Delay the rising edge of a signal for &lt;strong&gt;delay&lt;/strong&gt; seconds. Falling edges are passed through without delay. The output takes the value of the input after &lt;strong&gt;delay&lt;/strong&gt; seconds from the last rising edge. So if the input is &lt;code&gt;false&lt;/code&gt; at &lt;strong&gt;delay&lt;/strong&gt; seconds, the output stays &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&#34;usage-2&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;delay&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;timeToTrue&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;signal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;delay&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-2&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;signal&lt;/dt&gt;
&lt;dd&gt;[boolean] raw value&lt;/dd&gt;
&lt;dt&gt;delay&lt;/dt&gt;
&lt;dd&gt;[number] time, in seconds, to delay the output rising edge&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/scripting/core-libraries/assets/timeDelayToTrue_2seconds.png&#34;/&gt;
&lt;/figure&gt;
&lt;hr&gt;
&lt;h3 id=&#34;timetofalsesignal-delay&#34;&gt;&lt;code&gt;timeToFalse(signal, delay)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Delay the falling edge of a signal for &lt;strong&gt;delay&lt;/strong&gt; seconds. Rising edges are passed through without delay. The output takes the value of the input after &lt;strong&gt;delay&lt;/strong&gt; seconds from the last rising edge. So if the input is &lt;code&gt;true&lt;/code&gt; at &lt;strong&gt;delay&lt;/strong&gt; seconds, the output stays &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&#34;usage-3&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;delay&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;timeToFalse&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;signal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;delay&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-3&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;signal&lt;/dt&gt;
&lt;dd&gt;[boolean] raw value&lt;/dd&gt;
&lt;dt&gt;delay&lt;/dt&gt;
&lt;dd&gt;[number] time, in seconds, to delay the output falling edge&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/scripting/core-libraries/assets/timeDelayToFalse_2seconds.png&#34;/&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Filter</title>
      <link>/docs/scripting/core-libraries/filter/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/scripting/core-libraries/filter/</guid>
      <description>
        
        
        &lt;h2 id=&#34;available-functions&#34;&gt;Available Functions&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id=&#34;firstorderlagsignal-tau&#34;&gt;&lt;code&gt;firstOrderLag(signal, tau)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Filter a signal using a first-order low-pass filter.&lt;/p&gt;
&lt;h4 id=&#34;usage&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;filter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;firstOrderLag&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;signal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;tau&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;signal&lt;/dt&gt;
&lt;dd&gt;[number] unfiltered value&lt;/dd&gt;
&lt;dt&gt;tau&lt;/dt&gt;
&lt;dd&gt;[number] time-constant. Large values result in more filtering.&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/scripting/core-libraries/assets/step-response-first-order-lag.png&#34;
         alt=&#34;Effect of tau on time-response&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Effect of &lt;em&gt;tau&lt;/em&gt; on time-response&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Logic</title>
      <link>/docs/scripting/core-libraries/logic/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/scripting/core-libraries/logic/</guid>
      <description>
        
        
        &lt;h2 id=&#34;available-functions&#34;&gt;Available Functions&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id=&#34;latchrosset-reset&#34;&gt;&lt;code&gt;latchROS(set, reset)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Latch output to &lt;code&gt;true&lt;/code&gt; when the &lt;code&gt;set&lt;/code&gt; argument is &lt;code&gt;true&lt;/code&gt;. Reset the output to &lt;code&gt;false&lt;/code&gt; when &lt;code&gt;reset&lt;/code&gt; is &lt;code&gt;true&lt;/code&gt;. Prioritize &lt;code&gt;reset&lt;/code&gt; over &lt;code&gt;set&lt;/code&gt; if both inputs are &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&#34;usage&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;logic&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;latchROS&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;reset&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;set&lt;/dt&gt;
&lt;dd&gt;[boolean] latches the output to &lt;code&gt;true&lt;/code&gt;&lt;/dd&gt;
&lt;dt&gt;reset&lt;/dt&gt;
&lt;dd&gt;[boolean] resets the output to &lt;code&gt;false&lt;/code&gt; regardless of the value of &lt;strong&gt;set&lt;/strong&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/scripting/core-libraries/assets/latchROS.png&#34;/&gt;
&lt;/figure&gt;
&lt;hr&gt;
&lt;h3 id=&#34;latchsorset-reset&#34;&gt;&lt;code&gt;latchSOR(set, reset)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Latch output to &lt;code&gt;true&lt;/code&gt; when the &lt;code&gt;set&lt;/code&gt; argument is &lt;code&gt;true&lt;/code&gt;. Reset the output to &lt;code&gt;false&lt;/code&gt; when &lt;code&gt;reset&lt;/code&gt; is &lt;code&gt;true&lt;/code&gt;. Prioritize &lt;code&gt;set&lt;/code&gt; over &lt;code&gt;reset&lt;/code&gt; if both inputs are &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&#34;usage-1&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;logic&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;latchROS&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;set&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;reset&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-1&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;set&lt;/dt&gt;
&lt;dd&gt;[boolean] latches the output to &lt;code&gt;true&lt;/code&gt;&lt;/dd&gt;
&lt;dt&gt;reset&lt;/dt&gt;
&lt;dd&gt;[boolean] resets the output to &lt;code&gt;false&lt;/code&gt; only if &lt;strong&gt;set&lt;/strong&gt; is false&lt;/dd&gt;
&lt;/dl&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/scripting/core-libraries/assets/latchSOR.png&#34;/&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: State</title>
      <link>/docs/scripting/core-libraries/state/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/scripting/core-libraries/state/</guid>
      <description>
        
        
        &lt;h2 id=&#34;core-concepts&#34;&gt;Core Concepts&lt;/h2&gt;
&lt;p&gt;For more information on the core concepts surrounding the usage of state machines see &lt;a href=&#34;/docs/edge-processing/state-machines/&#34;&gt;State Machine Concepts&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;State Machine Editor&lt;/h4&gt;
In the 1.10 Release, a new State Machine Editor was introduced. With this editor, creating state machines is now even easier and all of the scripting below is generated by the GUI editor. See &lt;a href=&#34;/docs/servicenow/iot-setup/thing-types/thing-type-specification/#state-machine-editor&#34;&gt;State Machine Editor&lt;/a&gt;. The following page is primarily useful only if you&amp;rsquo;re manually reviewing the state-machine created with the new editor.
&lt;/div&gt;

&lt;h3 id=&#34;conceptual-components-applied&#34;&gt;Conceptual Components Applied&lt;/h3&gt;
&lt;h4 id=&#34;machines&#34;&gt;Machines&lt;/h4&gt;
&lt;p&gt;Machines are created using &lt;a href=&#34;#createmachine&#34;&gt;&lt;code&gt;core.state.createMachine()&lt;/code&gt;&lt;/a&gt;,
which returns a &lt;strong&gt;&lt;code&gt;Machine&lt;/code&gt;&lt;/strong&gt; Object. Refer to the
&lt;a href=&#34;#machine&#34;&gt;Machine Class Definition&lt;/a&gt; for more details on the available methods.
When referring to a machine in other calculations and alerts (e.g.
&lt;code&gt;calculation.myStateMachine&lt;/code&gt;), the returned value will be the string
representation of the active state using dot-notation for the current active
hierarchy (e.g. &lt;code&gt;&#39;B.A.B&#39;&lt;/code&gt;).&lt;/p&gt;
&lt;h4 id=&#34;states&#34;&gt;States&lt;/h4&gt;
&lt;p&gt;States are added to a Machine prior to &lt;code&gt;initialization()&lt;/code&gt;. The encapsulate a set
of Actions and Transitions. The current active state can be accessed by
referencing the state-machine directly in other calculations and alerts (e.g.
&lt;code&gt;calculation.myStateMachine&lt;/code&gt;).&lt;/p&gt;
&lt;h4 id=&#34;actions&#34;&gt;Actions&lt;/h4&gt;
&lt;p&gt;Actions are be evaluated at state-entry, during-state-execution, and at
state-exit. Actions define an arbitrary set of logic to be evaluated at the
specified time.&lt;/p&gt;
&lt;p&gt;For more information see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#machineaddentryactionstatename-action&#34;&gt;&lt;code&gt;.addEntryAction(stateName, action)&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#machineaddduringactionstatename-action&#34;&gt;&lt;code&gt;.addDuringAction(stateName, action)&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#machineaddexitactionstatename-action&#34;&gt;&lt;code&gt;.addExitAction(stateName, action)&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The primary use-case for actions will likely be to update the state-machine&amp;rsquo;s
local variables. Every State-Action is passed 3 positional arguments when
evaluated: &lt;code&gt;local&lt;/code&gt;, &lt;code&gt;event&lt;/code&gt;, and &lt;code&gt;state&lt;/code&gt; (see &lt;a href=&#34;#stateaction&#34;&gt;StateAction&lt;/a&gt; for
more details on the contents of these arguments).&lt;/p&gt;
&lt;h4 id=&#34;transitions&#34;&gt;Transitions&lt;/h4&gt;
&lt;p&gt;Transition conditions are evaluated at the start of each &amp;ldquo;step&amp;rdquo; while the
&lt;em&gt;From-State&lt;/em&gt; is active. Transitions can be added between states with the
&lt;a href=&#34;#machineaddtransitionfrom-to-options&#34;&gt;&lt;code&gt;.addTransition(from, to, options)&lt;/code&gt;&lt;/a&gt;
function. Users can optionally define a condition in which to take the
transition. If a condition isn&amp;rsquo;t specified, the transition is automatically
taken on the &amp;ldquo;step&amp;rdquo; after the &lt;em&gt;From-State&lt;/em&gt; becomes active. It is also possible to
define TransitionActions which are evaluated when a transition is evaluated,
however it is recommended to use &lt;strong&gt;StateActions&lt;/strong&gt; unless &lt;strong&gt;TransitionAction&lt;/strong&gt; is
the only way to satisfy the requirement.&lt;/p&gt;
&lt;h2 id=&#34;simple-applied-example&#34;&gt;Simple Applied Example&lt;/h2&gt;
&lt;p&gt;For this example, we&amp;rsquo;ll create the following state-machine:&lt;/p&gt;
&lt;figure class=&#34;doc figure narrow&#34;&gt;&lt;img src=&#34;/docs/scripting/core-libraries/assets/state-machine-basic-example.svg&#34;
         alt=&#34;Simple State-Machine Example&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Simple State-Machine Example&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The calculated field for the &lt;strong&gt;&lt;code&gt;myStateMachineCalculation&lt;/code&gt;&lt;/strong&gt; calculation:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// #region initialize
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;createMachine&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addState&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;High&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addState&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Low&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;initial&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addState&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;High.Transitioning&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;initial&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addState&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;High.Active&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addTransition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;High&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Low&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;condition&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;event&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;input1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addTransition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Low&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;High&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;condition&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;event&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;input1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addTransition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;High.Transitioning&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;High.Active&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;condition&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;event&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;after&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;transitionTimeSec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;sec&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addDuringAction&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Low&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;event&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;lowStepCount&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addEntryAction&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;High&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;event&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;highEntryTime&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;Date&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addExitAction&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;High&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;event&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;highDuration&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;Date&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;().&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getTime&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;highEntryTime&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getTime&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;withLocal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;transitionTimeSec&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;input1&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensorA&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;input2&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;calculation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;otherCalculation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;initialize&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// #endregion initialize
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// #region step
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;stepMachine&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;input1&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensorA&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;input2&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;calculation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;otherCalculation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;otherMachineState&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;calculation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;otherMachine&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// this will be the string-value of the active state in the &amp;#34;otherMachine&amp;#34; state-machine
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;otherMachineInternalVariable&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getLocal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;otherMachine&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;otherMachineInternalVariable&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// #endregion step
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;withLocal&lt;/code&gt; is used to set any local variables which may be required during
initialization or isn&amp;rsquo;t updated during &lt;code&gt;stepMachine&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Example 1: the machine has an Action on an initial transition which reads a
local variable
&lt;code&gt;withLocal&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Example 2: the machine has local variables which are &amp;ldquo;constant&amp;rdquo; and aren&amp;rsquo;t
updated as part of &lt;code&gt;stepMachine&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;The internal variable &lt;strong&gt;&lt;code&gt;highDuration&lt;/code&gt;&lt;/strong&gt; can be accessed in other calculations / alerts by using the following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getLocal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;myStateMachineCalculation&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;highDuration&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;available-functions&#34;&gt;Available Functions&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id=&#34;createmachine&#34;&gt;&lt;code&gt;createMachine()&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Create a new state machine.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This machine is created using the name of the calculation to which it is assigned to (e.g. if &lt;code&gt;calculation.myStateMachine = core.state.createMachine() ...&lt;/code&gt;, the machine will be named &lt;code&gt;myStateMachine&lt;/code&gt;, see &lt;a href=&#34;#getLocalmachine-variable&#34;&gt;&lt;code&gt;core.state.getLocal&lt;/code&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&#34;usage&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;machine&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;createMachine&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments&#34;&gt;Arguments&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;None&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;stepmachineoptions&#34;&gt;&lt;code&gt;stepMachine(options)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Step the machine using the options provided.&lt;/p&gt;
&lt;h4 id=&#34;usage-1&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;stepMachine&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;variableA&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;variableB&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensorA&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;event&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;timestamp&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;Date&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2021-09-07T19:20:24.611Z&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;MY_SUPER_EVENT&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-1&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;options&lt;/dt&gt;
&lt;dd&gt;[dictionary] dictionary with the following fields:&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;local&lt;/strong&gt;: [dictionary] key:values to update the machine local variables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;event&lt;/strong&gt;: [Event] an event definition for event-driven state-machines&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;getlocalmachine-variable&#34;&gt;&lt;code&gt;getLocal(machine, variable)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Retrieve data from the local variables of a state-machine.&lt;/p&gt;
&lt;h4 id=&#34;usage-2&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;core&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getLocal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;myStateMachine&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;variableA&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-2&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;machine&lt;/dt&gt;
&lt;dd&gt;[string] the name of the machine to fetch data from (i.e. the calculation name)&lt;/dd&gt;
&lt;dt&gt;variable&lt;/dt&gt;
&lt;dd&gt;[string] the name of the local variable to fetch&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;available-condition-functions&#34;&gt;Available Condition Functions&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id=&#34;aftercount-unit&#34;&gt;&lt;code&gt;after(count, unit)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Evaluates to true after the specified time since the current state has been
activated.&lt;/p&gt;
&lt;h4 id=&#34;usage-3&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addTransition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;from&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;to&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;condition&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;event&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;after&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;sec&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-3&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;count&lt;/dt&gt;
&lt;dd&gt;[number] the number of units to wait before returning &lt;code&gt;true&lt;/code&gt;&lt;/dd&gt;
&lt;dt&gt;unit&lt;/dt&gt;
&lt;dd&gt;[&amp;lsquo;min&amp;rsquo; | &amp;lsquo;sec&amp;rsquo; | &amp;lsquo;msec&amp;rsquo;] (default: &amp;lsquo;sec&amp;rsquo;) the time-unit of &lt;code&gt;count&lt;/code&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;hr&gt;
&lt;h3 id=&#34;aftereventcount-unit-event&#34;&gt;&lt;code&gt;afterEvent(count, unit, event)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Evaluates to true after the specified time since the specified event was last
received.&lt;/p&gt;
&lt;h4 id=&#34;usage-4&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addTransition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;from&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;to&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;condition&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;event&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;afterEvent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;sec&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;MY_EVENT_NAME&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-4&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;count&lt;/dt&gt;
&lt;dd&gt;[number] the number of units to wait before returning &lt;code&gt;true&lt;/code&gt;&lt;/dd&gt;
&lt;dt&gt;unit&lt;/dt&gt;
&lt;dd&gt;[&amp;lsquo;min&amp;rsquo; | &amp;lsquo;sec&amp;rsquo; | &amp;lsquo;msec&amp;rsquo;] (default: &amp;lsquo;sec&amp;rsquo;) the time-unit of &lt;code&gt;count&lt;/code&gt;&lt;/dd&gt;
&lt;dt&gt;event&lt;/dt&gt;
&lt;dd&gt;[string] the name of the event to trigger on&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;available-classes&#34;&gt;Available Classes&lt;/h2&gt;
&lt;h3 id=&#34;machine&#34;&gt;&lt;code&gt;Machine&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The primary state-machine class used to track and manage a given state machine.&lt;/p&gt;
&lt;h4 id=&#34;usage-5&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;myMachine&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Machine&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;options&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-5&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;name&lt;/dt&gt;
&lt;dd&gt;[string] the name of the state-machine&lt;/dd&gt;
&lt;dt&gt;options&lt;/dt&gt;
&lt;dd&gt;[dictionary] with the following fields:&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;parallel&lt;/strong&gt; [boolean] if the top-level states are parallel states (default: false)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;currentTime&lt;/strong&gt; [Date] the initial time used within the machine&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;machinewithlocalvariables&#34;&gt;&lt;code&gt;Machine.withLocal(variables)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Fully override the state-machine&amp;rsquo;s local variables with that provided.&lt;/p&gt;
&lt;h4 id=&#34;usage-6&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;myMachine&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;withLocal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;variableA&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;variableB&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-6&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;variables&lt;/dt&gt;
&lt;dd&gt;[dictionary] key:values to update the machine local variables&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id=&#34;machinesetlocalvariables&#34;&gt;&lt;code&gt;Machine.setLocal(variables)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Override specific keys within a state-machine&amp;rsquo;s local variables.&lt;/p&gt;
&lt;h4 id=&#34;usage-7&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;myMachine&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;setLocal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;variableA&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-7&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;variables&lt;/dt&gt;
&lt;dd&gt;[dictionary] key:values to update the machine local variables&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id=&#34;machineaddstatename-options&#34;&gt;&lt;code&gt;Machine.addState(name, options)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Add a state to the state-machine.&lt;/p&gt;
&lt;h4 id=&#34;usage-8&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;myMachine&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addState&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;State1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;initial&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addState&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;State1.ChildA&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;initial&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;initialTransitionActions&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;event&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;variableA&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addState&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;State1.ChildB&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-8&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;name&lt;/dt&gt;
&lt;dd&gt;[string] the fully qualified name of the state (using dot-notation (&lt;code&gt;.&lt;/code&gt;) for nested states)
options&lt;/dd&gt;
&lt;dd&gt;[dictionary] dictionary with the following fields:&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;initial&lt;/strong&gt;: [boolean] determines if the state is the initial when it&amp;rsquo;s parent becomes active (from inactive)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;initialTransitionActions&lt;/strong&gt;: [&lt;a href=&#34;#transitionaction&#34;&gt;TransitionAction&lt;/a&gt; | Array&amp;lt;&lt;a href=&#34;#transitionaction&#34;&gt;TransitionAction&lt;/a&gt;&amp;gt;] the action(s) to execute when the initial-transition is taken&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;machineaddentryactionstatename-action&#34;&gt;&lt;code&gt;Machine.addEntryAction(stateName, action)&lt;/code&gt;&lt;/h3&gt;
&lt;h3 id=&#34;machineaddduringactionstatename-action&#34;&gt;&lt;code&gt;Machine.addDuringAction(stateName, action)&lt;/code&gt;&lt;/h3&gt;
&lt;h3 id=&#34;machineaddexitactionstatename-action&#34;&gt;&lt;code&gt;Machine.addExitAction(stateName, action)&lt;/code&gt;&lt;/h3&gt;
&lt;h3 id=&#34;machineaddtransitionfrom-to-options&#34;&gt;&lt;code&gt;Machine.addTransition(from, to, options)&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Add a transition to the state-machine.&lt;/p&gt;
&lt;h4 id=&#34;usage-9&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;myMachine&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addTransition&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;State1.ChildA&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;State1.ChildB&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;condition&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;event&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;event&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;type&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;MY_SUPER_EVENT&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-9&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;from&lt;/dt&gt;
&lt;dd&gt;[string] the fully qualified name of the from-state&lt;/dd&gt;
&lt;dt&gt;to&lt;/dt&gt;
&lt;dd&gt;[string] the fully qualified name of the to-state&lt;/dd&gt;
&lt;dt&gt;options&lt;/dt&gt;
&lt;dd&gt;[dictionary] dictionary with the following fields:&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;condition&lt;/strong&gt;: [&lt;a href=&#34;#condition&#34;&gt;Condition&lt;/a&gt;] The condition on which to take the transition&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;actions&lt;/strong&gt;: [&lt;a href=&#34;#transitionaction&#34;&gt;TransitionAction&lt;/a&gt; | Array&amp;lt;&lt;a href=&#34;#transitionaction&#34;&gt;TransitionAction&lt;/a&gt;&amp;gt;] the action(s) to execute when the initial-transition is taken&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;priority&lt;/strong&gt;: [number] the order in which this transition-condition is evaluated with respect to all transitions out of the active state&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;machineinitialize&#34;&gt;&lt;code&gt;Machine.initialize()&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Initialize a state-machine.&lt;/p&gt;
&lt;h4 id=&#34;usage-10&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;myMachine&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;initialize&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-10&#34;&gt;Arguments&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;None&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;available-types&#34;&gt;Available Types&lt;/h2&gt;
&lt;h3 id=&#34;stateaction&#34;&gt;&lt;code&gt;StateAction&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;A callable function to evaluate during one of the 3 execution phases of a state.&lt;/p&gt;
&lt;h4 id=&#34;interface&#34;&gt;Interface&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-typescript&#34; data-lang=&#34;typescript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;event&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Promise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-11&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;local&lt;/dt&gt;
&lt;dd&gt;the current local-variables of the state-machine are passed into this positional argument at evaluation&lt;/dd&gt;
&lt;dt&gt;event&lt;/dt&gt;
&lt;dd&gt;the active event (if any) of the state-machine is passed into this positional argument at evaluation&lt;/dd&gt;
&lt;dt&gt;state&lt;/dt&gt;
&lt;dd&gt;[dictionary] with the following fields:&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;stepCount&lt;/strong&gt;: [number] represents the total steps taken since the entry of into the active state&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;entryTime&lt;/strong&gt;: [Date] represents the machine-time in which the state was activated&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;currentTime&lt;/strong&gt;: [Date] represents the current machine-time&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;events&lt;/strong&gt;: [dictionary] key:values with keys representing all events which have occurred during the current state and their &lt;a href=&#34;#eventstats&#34;&gt;EventStats&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;transitionaction&#34;&gt;&lt;code&gt;TransitionAction&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;A callable function to evaluate during the execution of the transition.&lt;/p&gt;
&lt;h4 id=&#34;interface-1&#34;&gt;Interface&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-typescript&#34; data-lang=&#34;typescript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;event&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Promise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-12&#34;&gt;Arguments&lt;/h4&gt;
&lt;dl&gt;
&lt;dt&gt;local&lt;/dt&gt;
&lt;dd&gt;the current local-variables of the state-machine are passed into this positional argument at evaluation&lt;/dd&gt;
&lt;dt&gt;event&lt;/dt&gt;
&lt;dd&gt;the active event (if any) of the state-machine is passed into this positional argument at evaluation&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id=&#34;condition&#34;&gt;&lt;code&gt;Condition&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;A callable function to evaluate to determine if a condition is true or false.&lt;/p&gt;
&lt;h4 id=&#34;interface-2&#34;&gt;Interface&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-typescript&#34; data-lang=&#34;typescript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;local&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;event&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;state&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Promise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;boolean&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;boolean&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;arguments-13&#34;&gt;Arguments&lt;/h4&gt;
&lt;p&gt;same as &lt;a href=&#34;#stateaction&#34;&gt;StateAction&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;event&#34;&gt;&lt;code&gt;Event&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;An interface defining a Machine &lt;strong&gt;Event&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id=&#34;interface-3&#34;&gt;Interface&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-typescript&#34; data-lang=&#34;typescript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Event&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;timestamp&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;Date&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;eventstats&#34;&gt;&lt;code&gt;EventStats&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;An interface defining statistics of a given &lt;strong&gt;Event&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id=&#34;interface-4&#34;&gt;Interface&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-typescript&#34; data-lang=&#34;typescript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Event&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;latestTimestamp&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;Date&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;count&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;number&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: Digital Twin</title>
      <link>/docs/scripting/other/digitaltwin/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/scripting/other/digitaltwin/</guid>
      <description>
        
        
        &lt;p&gt;To reference data from other IoT Connected Assets from a given IoT Connected Asset&amp;rsquo;s calculations and
alerts, the following keys provide a way of traversing your Digital Twin
hierarchy. From any of the following keys, you can define a role-path to the
role which you are interested in.&lt;/p&gt;
&lt;h2 id=&#34;available-keys&#34;&gt;Available Keys&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id=&#34;self&#34;&gt;&lt;code&gt;$self&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Retrieve a reference to another component with respect to &amp;ldquo;myself&amp;rdquo;.&lt;/p&gt;
&lt;h4 id=&#34;usage&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Get Reference to My Child&amp;#39;s Child
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$self&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;child_A&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;childs_child&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Get Reference to My Child&amp;#39;s Child
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// **Note** this is illustrative only, as you can access sensors /
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// calculations / directly without this
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$self&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Use reference to access the aggregated value of `sensorA`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$self&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;child_A&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;childs_child&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensorA&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;parent&#34;&gt;&lt;code&gt;$parent&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Retrieve a reference to another component with respect to &amp;ldquo;my parent&amp;rdquo;.&lt;/p&gt;
&lt;h4 id=&#34;usage-1&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Get Reference to My Sibling
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$parent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sibling_A&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Get Reference to My Parent directly
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$parent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Use reference to access the aggregated value of `sensorA`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$parent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sibling_A&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensorA&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;root&#34;&gt;&lt;code&gt;$root&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Retrieve a reference to another component with respect to &amp;ldquo;my top-level root&amp;rdquo;.&lt;/p&gt;
&lt;h4 id=&#34;usage-2&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Get Reference to My Family Member
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$root&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someRole&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;subassembly&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Get Reference to My Root directly
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$root&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Use reference to access the aggregated value of `sensorA`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$root&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;someRole&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;subassembly&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensorA&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;context&#34;&gt;&lt;code&gt;$context&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Retrieve a reference to another component by referencing an External ID defined
in a Context Field. When using the &lt;code&gt;$context&lt;/code&gt; key, you must supply a context
field name. Formula processing will assume the referenced field is the External
ID to another IoT Connected Asset and attempt to access its data.&lt;/p&gt;
&lt;h4 id=&#34;usage-3&#34;&gt;Usage&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Get Reference to an arbitrary IoT Connected Asset&amp;#39;s child
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$context&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;contextFieldName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;child_A&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Get Reference to an arbitrary IoT Connected Asset directly
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$context&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;contextFieldName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Use reference to access the aggregated value of `sensorA`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$context&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;contextFieldName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensorA&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id=&#34;digital-twin-definition&#34;&gt;Digital Twin Definition&lt;/h3&gt;
&lt;p&gt;Let&amp;rsquo;s assume we have the following Digital Twin Role Hierarchy:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(role : thingType)
bike : Bicycle
  ├ rearWheel : Wheel
  │   ├ brake : Brake
  │   └ tire : Tire
  │
  ├ frontWheel : Wheel
  │   ├ brake : Brake
  │   └ tire : Tire
  │
  └ bottomBracket : BottomBracket
      ├ crank : Crank
      ├ bearing : Bearing
      ├ leftPedal : Pedal
      └ rightPedal : Pedal
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;digital-twin-instantiation&#34;&gt;Digital Twin Instantiation&lt;/h3&gt;
&lt;p&gt;Let&amp;rsquo;s then assume the following instance of this Digital Twin:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(externalID : role)
BIKE001 : bike
  ├ WHEEL001 : rearWheel
  |   ├ BRAKE001 : brake
  |   └ TIRE001 : tire
  |
  ├ WHEEL002 : frontWheel
  |   ├ BRAKE002 : brake
  |   └ TIRE002 : tire
  |
  └ BRACKET001 : bottomBracket
      ├ CRANK001 : crank
      ├ BEARING001 : bearing
      ├ PEDAL001 : leftPedal
      └ PEDAL002 : rightPedal
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;referencing-data&#34;&gt;Referencing Data&lt;/h3&gt;
&lt;p&gt;On the &lt;code&gt;Bicycle&lt;/code&gt; thing type let&amp;rsquo;s write the formula for a &lt;strong&gt;Calculation&lt;/strong&gt; named
&lt;code&gt;tirePressureDifference&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;$self&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;frontWheel&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;tire&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pressure&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$self&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;rearWheel&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;tire&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pressure&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then in the &lt;code&gt;Tire&lt;/code&gt; Thing Type (which will execute for each tire) let&amp;rsquo;s add
the following formula for an &lt;strong&gt;Alert&lt;/strong&gt; named &lt;code&gt;tirePressureAbnormal&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$root&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;calculation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;tirePressureDifference&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// if parent is &amp;#39;rearWheel&amp;#39;, sibling is &amp;#39;frontWheel&amp;#39; else sibling is &amp;#39;rearWheel&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;siblingPressure&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;$parent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;twin&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;role&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;rearWheel&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$root&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;frontWheel&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pressure&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$root&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;rearWheel&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pressure&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// check if I&amp;#39;m the &amp;#34;low&amp;#34; one
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sensor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pressure&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;siblingPressure&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Some further examples of traversing this Digital Twin:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From &lt;code&gt;PEDAL001&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;$parent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// BRACKET001
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;$parent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;bearing&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// BEARING001
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;$parent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$parent&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;frontWheel&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// WHEEL002
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;$root&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;frontWheel&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// WHEEL002
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;From &lt;code&gt;WHEEL002&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;$root&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;bottomBracket&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// BRACKET001
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;$self&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;tire&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// TIRE002
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: State Machines</title>
      <link>/docs/scripting/other/state-machines/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/scripting/other/state-machines/</guid>
      <description>
        
        
        &lt;h2 id=&#34;components&#34;&gt;Components&lt;/h2&gt;
&lt;h3 id=&#34;machines&#34;&gt;Machines&lt;/h3&gt;
&lt;p&gt;A collection of States, Transitions and Actions. At the end of any given step
each serial-sub-state within a machine will contain exactly one active state.&lt;/p&gt;
&lt;h3 id=&#34;states&#34;&gt;States&lt;/h3&gt;
&lt;p&gt;A state encapsulates a set of logic to be evaluated when active. States can be
hierarchical. A parent state is active if any of its child-states are active.
Each state has three phases of execution, &lt;code&gt;entry&lt;/code&gt;, &lt;code&gt;during&lt;/code&gt;, and &lt;code&gt;exit&lt;/code&gt;. When a
State changes from inactive to active, its &lt;code&gt;entry&lt;/code&gt; actions are evaluated. When a
State starts active and ends active (in a given step), its &lt;code&gt;during&lt;/code&gt; actions are
evaluated. When a State changes from active to inactive, its &lt;code&gt;exit&lt;/code&gt; actions are
evaluated.&lt;/p&gt;
&lt;h3 id=&#34;actions&#34;&gt;Actions&lt;/h3&gt;
&lt;p&gt;Actions define processing within various scopes. Actions can be used to update
the Machine local variables, set global variables, or make call-outs to external
web services.&lt;/p&gt;
&lt;h3 id=&#34;transitions&#34;&gt;Transitions&lt;/h3&gt;
&lt;p&gt;The Transition defines a path between two states, the From-State and the
To-State. Once a transition is executed, the From-State becomes inactive and the
To-State becomes active. Transitions can include Actions which are evaluated
once the transition is executed&lt;/p&gt;
&lt;h3 id=&#34;events&#34;&gt;Events&lt;/h3&gt;
&lt;p&gt;An alternate input-scheme which can be used instead-of or alongside local
variables. Events can be useful if your approach includes combining several
calculations ahead of evaluating the state-machine. The catch is that only a
single Event can be handled by the state-machine for any given step.&lt;/p&gt;
&lt;h2 id=&#34;execution&#34;&gt;Execution&lt;/h2&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/scripting/assets/state-machine-execution.svg&#34;
         alt=&#34;State Machine Execution&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;State Machine Execution&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id=&#34;initialization&#34;&gt;Initialization&lt;/h3&gt;
&lt;p&gt;Once a Machine is created, it will sit in an uninitialized state, whereby no
state is active and no transitions have been evaluated. If the first call to
&lt;code&gt;myMachine.step()&lt;/code&gt; happens before the machine is initialized, it will automatically
initialize the Machine. It&amp;rsquo;s best practice to explicitly initialize the Machine,
once construction is complete by calling &lt;code&gt;myMachine.initialize()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;During initialization, at each level in the hierarchy, the initial state is
determined during construction by explicitly specifying &lt;code&gt;{initial: true}&lt;/code&gt; in the
desired state&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;if two states at the same level are specified as &lt;code&gt;initial&lt;/code&gt;, the last one
specified wins&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;From the top of the hierarchy down, each initial-transition is identified and
evaluated. The machine is fully initialized once every state has the appropriate
number of active states as defined by it&amp;rsquo;s Decomposition (serial vs parallel).&lt;/p&gt;
&lt;h3 id=&#34;step&#34;&gt;Step&lt;/h3&gt;
&lt;p&gt;Once a Machine is initialized, it can be &amp;ldquo;stepped&amp;rdquo; through time. Each step
represents a discrete point in time (in our specific case, the machine is
&amp;ldquo;stepped&amp;rdquo; upon receipt of each IoT Message).&lt;/p&gt;
&lt;p&gt;During the step, all Transitions from the active state hierarchy are evaluated
from the top, down. That is to say, given active state, &lt;code&gt;B.B.B&lt;/code&gt;, all Transitions
out of the top state &lt;code&gt;B&lt;/code&gt; are evaluated in priority order, executing the first
Transition who&amp;rsquo;s condition expression evaluates to &lt;code&gt;true&lt;/code&gt; or who&amp;rsquo;s condition
doesn&amp;rsquo;t exists (i.e. an Unconditional Transition). If no Transitions at level
&lt;code&gt;B&lt;/code&gt; are to be executed, all Transitions at the &lt;code&gt;B.B&lt;/code&gt; level are evaluated in the
same manor until either a Transition is identified to evaluate, or no
Transitions are to be taken.&lt;/p&gt;
&lt;p&gt;If a Transition is identified to evaluate, first the &lt;code&gt;exit&lt;/code&gt; actions in the
lowest level From-State are evaluated, then the &lt;code&gt;exit&lt;/code&gt; actions are evaluated up
the hierarchy until the lowest-common State between From-State and To-State.
Meaning in a transition from &lt;code&gt;B.B.B&lt;/code&gt; to &lt;code&gt;B.B.A&lt;/code&gt;, only the &lt;code&gt;exit&lt;/code&gt; actions from
&lt;code&gt;B.B.B&lt;/code&gt; are evaluated (since &lt;code&gt;B.B&lt;/code&gt; is never exited during the transition).
Whereas if transitioning from &lt;code&gt;B.B.B&lt;/code&gt; to &lt;code&gt;A.B&lt;/code&gt;, the &lt;code&gt;exit&lt;/code&gt; actions at &lt;code&gt;B.B.B&lt;/code&gt;,
&lt;code&gt;B.B&lt;/code&gt;, and &lt;code&gt;B&lt;/code&gt; are evaluated.&lt;/p&gt;
&lt;p&gt;If no Transitions are to be evaluated, the &lt;code&gt;during&lt;/code&gt; actions of the current
active state are evaluated from the top, down.&lt;/p&gt;
&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;
&lt;h3 id=&#34;full-example&#34;&gt;Full Example&lt;/h3&gt;
&lt;p&gt;Illustrative (not functional) State Machine containing all possible features of
the State Machine library.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/scripting/assets/state-machine-full.svg&#34;/&gt;
&lt;/figure&gt;
&lt;p&gt;Initialization:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The initial transition into &lt;strong&gt;B&lt;/strong&gt; is evaluated and the local variable,
&lt;code&gt;time0&lt;/code&gt; is set to &lt;code&gt;now&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B&lt;/strong&gt; is activated.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B&lt;/strong&gt; entry actions are evaluated, incrementing the machine variable, &lt;code&gt;bEntry&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;States &lt;strong&gt;B.A&lt;/strong&gt; and &lt;strong&gt;B.B&lt;/strong&gt; run in parallel (indicated by the dashed
border). &lt;strong&gt;B.A&lt;/strong&gt; and &lt;strong&gt;B.B&lt;/strong&gt; are activated.&lt;/li&gt;
&lt;li&gt;So, the initial transitions into &lt;strong&gt;B.A.B&lt;/strong&gt; and &lt;strong&gt;B.B.B&lt;/strong&gt; are executed.&lt;/li&gt;
&lt;li&gt;Both &lt;strong&gt;B.A.B&lt;/strong&gt; and &lt;strong&gt;B.B.B&lt;/strong&gt; are activated.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Step 1:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Both &lt;strong&gt;B.A.B&lt;/strong&gt; and &lt;strong&gt;B.B.B&lt;/strong&gt; are active.&lt;/li&gt;
&lt;li&gt;First there exists a transition at the top level, &lt;code&gt;somethingElse &amp;lt; 50&lt;/code&gt;. If
this evaluates to &lt;code&gt;true&lt;/code&gt;, then all active children of &lt;code&gt;B&lt;/code&gt; are exited and
deactivated from the bottom up. For this example let&amp;rsquo;s assume
&lt;code&gt;somethingElse = 100&lt;/code&gt;, so this transition will not be executed.&lt;/li&gt;
&lt;li&gt;Since the transition from &lt;strong&gt;B.B.B&lt;/strong&gt; to &lt;strong&gt;B.B.A&lt;/strong&gt; is unconditional, it is
marked for evaluation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B.B.B&lt;/strong&gt; exit actions are evaluated (local variable, &lt;code&gt;bbbExit&lt;/code&gt; is
incremented)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B.B.B&lt;/strong&gt; is deactivated&lt;/li&gt;
&lt;li&gt;If there were any actions defined on this transition, they&amp;rsquo;d be evaluated
here.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B.B.A&lt;/strong&gt; is activated&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B.B.A&lt;/strong&gt; entry actions are evaluated (local variable, &lt;code&gt;bba&lt;/code&gt; is now &lt;code&gt;true&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B&lt;/strong&gt; during actions are evaluated (&lt;code&gt;bDuring&lt;/code&gt; is incremented)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Step 2:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Both &lt;strong&gt;B.A.B&lt;/strong&gt; and &lt;strong&gt;B.B.A&lt;/strong&gt; are active.&lt;/li&gt;
&lt;li&gt;There are two transitions out of &lt;strong&gt;B.B.A&lt;/strong&gt; (priority can be set on
transitions to handle this case). If &lt;code&gt;something &amp;lt; 10&lt;/code&gt;, then transition 1
would be marked for evaluation, otherwise, transition 2 is unconditional,
so it will be marked for evaluation by default. For this example, let&amp;rsquo;s
say &lt;code&gt;something = 6&lt;/code&gt;, so transition 1 is marked for evaluation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B.B.A&lt;/strong&gt; is deactivated&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B.A.B&lt;/strong&gt; is deactivated&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B.A&lt;/strong&gt; is deactivated&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B.B&lt;/strong&gt; is deactivated&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B.B&lt;/strong&gt; exit actions are evaluated (&lt;code&gt;bbExit&lt;/code&gt; is incremented)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;B&lt;/strong&gt; is deactivated&lt;/li&gt;
&lt;li&gt;If there were any actions defined on this transition, they&amp;rsquo;d be evaluated
here.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A&lt;/strong&gt; is activated&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A.A&lt;/strong&gt; is activated&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;advanced-topics&#34;&gt;Advanced Topics&lt;/h2&gt;
&lt;h3 id=&#34;state-decomposition&#34;&gt;State-Decomposition&lt;/h3&gt;
&lt;p&gt;At any given level in the state-hierarchy, there are two possible modes of
execution: Serial (default) and Parallel. Serial decomposition defines that at
a given level, there is only ever a single active state at the end of any
give step. Contrary, Parallel decomposition defines that all states at a given
level are active. In the examples below, the Serial State Machine will only
ever have a single active state (e.g. &lt;code&gt;&#39;A.B&#39;&lt;/code&gt; or &lt;code&gt;&#39;B.A.B&#39;&lt;/code&gt;), whereas the
Parallel State Machine will have 3 active states at any given time (e.g.
&lt;code&gt;[&#39;A.A&#39;, &#39;B.A.B&#39;, &#39;B.B.A&#39;]&lt;/code&gt; etc.)&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/scripting/assets/state-machine-serial.svg&#34;
         alt=&#34;Serial State Machine&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Serial State Machine&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/scripting/assets/state-machine-parallel.svg&#34;
         alt=&#34;Parallel State Machine&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Parallel State Machine&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Salesforce Mobile</title>
      <link>/docs/mobile/sf-mobile/</link>
      <pubDate>Thu, 01 Jul 2021 00:00:00 +0000</pubDate>
      
      <guid>/docs/mobile/sf-mobile/</guid>
      <description>
        
        
        &lt;p&gt;We&amp;rsquo;ve built full a parity of features into the Salesforce Mobile App components as with our Salesforce Desktop / Lightning experience. A few items will look slightly different due to form factor, but all the functionality is available in the mobile app.&lt;/p&gt;
&lt;h2 id=&#34;iot-console-mobile&#34;&gt;IoT Console (Mobile)&lt;/h2&gt;
&lt;p&gt;The IoT Console search works identically, just scroll down after searching to see your results either in the map or data tabs.&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/mobile/assets/sf-mobile-iot-console-all.png&#34;
         alt=&#34;Salesforce Mobile - IoT Console&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Salesforce Mobile - IoT Console&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;The map is fully interactive, just look on the desktop.&lt;/li&gt;
&lt;li&gt;Click on a map pin to see the detail popup.&lt;/li&gt;
&lt;li&gt;When in the data view, you&amp;rsquo;ll notice the results are returned as &amp;ldquo;cards&amp;rdquo; instead of a table to render nicely in a small form factor. - All the same data and functionality is available.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;thing-components-mobile&#34;&gt;Thing Components (Mobile)&lt;/h2&gt;
&lt;p&gt;When you click into a Thing (Asset), the same Lightning Components are available, including the IoT Thing Details and Thing Command&amp;hellip;&lt;/p&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/mobile/assets/sf-mobile-thing-all.png&#34;
         alt=&#34;Salesforce Mobile - Thing Components&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Salesforce Mobile - Thing Components&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;All Thing Details functionality is available, including Register, Sync Context &amp;amp; Manual Sensor Entry&lt;/li&gt;
&lt;li&gt;The fully interactive IoT Thing Data and Snapshots component is also available.&lt;/li&gt;
&lt;li&gt;The Digital Twin diagram and editor is also available.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: ServiceNow Mobile Agent</title>
      <link>/docs/mobile/sn-mobile/</link>
      <pubDate>Thu, 01 Jul 2021 00:00:00 +0000</pubDate>
      
      <guid>/docs/mobile/sn-mobile/</guid>
      <description>
        
        
        &lt;p&gt;We&amp;rsquo;ve built features from our ServiceNow Desktop Application into the ServiceNow Mobile Agent App.&lt;/p&gt;
&lt;h2 id=&#34;navigation&#34;&gt;Navigation&lt;/h2&gt;
&lt;p&gt;There are three navigation tabs in the Mobile Agent App. They are All Connected Assets, All Alert Histories,and All Asset Attributes. These tabs enable you to view their respecive lists in the Mobile App. Record Cards can be tapped to view more information about each record.&lt;/p&gt;
&lt;figure class=&#34;doc figure narrow&#34;&gt;&lt;img src=&#34;/docs/mobile/assets/mobile-agent-connected-assets.png&#34;
         alt=&#34;Mobile Agent All Connected Assets Tab&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Mobile Agent All Connected Assets Tab&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;On the All Connected Assets tab, each record has two additional actions. You can swipe left and right on each record to display additional actions related to each record. Sliding Right reveals buttons to navigate to two related lists. These lists are the Alert Histories and the Asset Attributes for the record.&lt;/p&gt;
&lt;figure class=&#34;doc figure narrow&#34;&gt;&lt;img src=&#34;/docs/mobile/assets/mobile-agent-connected-asset-slide-right.png&#34;
         alt=&#34;Sliding Right on Records&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Sliding Right on Records&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Sliding left reveals buttons to open the IoT Copilot chat, the Thing Chart, and the Digital Twin.&lt;/p&gt;
&lt;figure class=&#34;doc figure narrow&#34;&gt;&lt;img src=&#34;/docs/mobile/assets/mobile-agent-connected-asset-slide-left.png&#34;
         alt=&#34;Sliding Left on Records&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Sliding Left on Records&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The following Mobile Components can do everything the Desktop variantes can do except for attaching chart or digital twin data to the IoT Copilot.&lt;/p&gt;
&lt;h3 id=&#34;mobile-iot-copilot&#34;&gt;Mobile IoT Copilot&lt;/h3&gt;
&lt;figure class=&#34;doc figure narrow&#34;&gt;&lt;img src=&#34;/docs/mobile/assets/mobile-agent-iot-copilot.png&#34;
         alt=&#34;Movile IoT Copilot Display&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Movile IoT Copilot Display&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id=&#34;mobile-thing-chart&#34;&gt;Mobile Thing Chart&lt;/h3&gt;
&lt;figure class=&#34;doc figure narrow&#34;&gt;&lt;img src=&#34;/docs/mobile/assets/mobile-agent-thing-chart.png&#34;
         alt=&#34;Mobile Thing Chart Display&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Mobile Thing Chart Display&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id=&#34;mobile-digital-twin&#34;&gt;Mobile Digital Twin&lt;/h3&gt;
&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/mobile/assets/mobile-agent-digital-twin-1.png&#34;
         alt=&#34;Mobile Digital Twin Display Part 1&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Mobile Digital Twin Display Part 1&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&#34;doc figure&#34;&gt;&lt;img src=&#34;/docs/mobile/assets/mobile-agent-digital-twin-2.png&#34;
         alt=&#34;Mobile Digital Twin Display Part 2&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Mobile Digital Twin Display Part 2&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Release 6.1 (Winter &#39;26)</title>
      <link>/docs/salesforce/release/6.1/</link>
      <pubDate>Mon, 29 Dec 2025 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/release/6.1/</guid>
      <description>
        
        
        &lt;h2 id=&#34;new-features&#34;&gt;New Features:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../things/#iot-copilot&#34;&gt;IoT Copilot Insights&lt;/a&gt; The new IoT Copilot feature improves on the way you interact with connected assets in Bolt Data Connect.
&lt;ul&gt;
&lt;li&gt;Using natural language in a chat window, you can ask questions about an asset’s performance based on IoT telemetry data and alert history, unlocking instant insights.&lt;/li&gt;
&lt;li&gt;Each Thing Type can also define natural-language IoT Copilot Instructions, to provide context and insight.&lt;/li&gt;
&lt;li&gt;Ask Copilot about Digital Twin or Thing Chart data views with a single click!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/things/assets/iot-copilot.png&#34;
         alt=&#34;IoT Copilot&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;IoT Copilot&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../iot-setup/data-lake-calculations/&#34;&gt;Data Lake Calculations&lt;/a&gt; Gain insights into your IoT Data Lake by defining Data Lake Calculations for each of your Thing Types. By simply selecting the Frequency(s) and desired Metrics, the IoT Cloud will then calculate and synchronize the metrics values into the &amp;ldquo;IoT Sensor Data&amp;rdquo; records.  These new Data Lake Calculation metrics values are also available in Reports and Dashboards.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/data-lake-calculations.png&#34;
         alt=&#34;Data Lake Calculations Editor&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Data Lake Calculations Editor&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../simulators/#salesforce-simulators&#34;&gt;Improved Simulators&lt;/a&gt; New Salesforce Based Simulators provide a more convenient, stable framework for running Simulators.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Salesforce Hosted:&lt;/strong&gt; Running in Salesforce ensures reliability and stability, with the same easy-to-use user interface, saving time and reducing complexity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copy between Orgs:&lt;/strong&gt; Since the Simulator Config and setup is saved as Custom Metadata and Settings, it&amp;rsquo;s easy to copy or deploy between sandboxes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/simulators/assets/simulator-console-sf.png&#34;
         alt=&#34;Salesforce Based Simulators&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Salesforce Based Simulators&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Release 5.1 (Winter &#39;25)</title>
      <link>/docs/salesforce/release/5.1/</link>
      <pubDate>Mon, 27 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/release/5.1/</guid>
      <description>
        
        
        &lt;h2 id=&#34;new-features&#34;&gt;New Features:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../things/#connected-asset-agent&#34;&gt;Connected Asset Agent&lt;/a&gt; The new Connected Asset Agent feature revolutionizes the way you interact with connected assets in Bolt Data Connect. Using natural language in a chat window, you can ask questions about an asset’s performance based on IoT telemetry data and alert history, unlocking instant insights.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; For Salesforce orgs using &lt;strong&gt;Agentforce&lt;/strong&gt;, the Connected Asset Agent integrates easily via Agentforce Actions. This integration enables users to access real-time insights on asset performance directly within Agentforce, providing a richer user experience.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure narrow&#34;&gt;&lt;img src=&#34;/docs/salesforce/things/assets/connected-asset-agent.png&#34;
         alt=&#34;Connected Asset Agent&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Connected Asset Agent&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../iot-setup/thing-types/thing-type-syncing/&#34;&gt;Change Management Tools&lt;/a&gt; Managing assets is now even easier with significant upgrades to the Change Management features in Bolt Data Connect. These improvements provide enhanced clarity, stability, and efficiency in tracking changes and deploying assets. They also streamline the syncing of Thing Type setups and configurations, making deployments faster and simpler.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Simplified Deployments to Production:&lt;/strong&gt; The deployment process from sandbox to production environments is now more intuitive with a simplified user interface, saving time and reducing complexity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Batch Syncing for Improved Efficiency:&lt;/strong&gt; Previously, each Thing Type needed to be synced individually. Now, with just a single click, multiple Thing Types can be synced from Salesforce to the IoT Cloud at once, reducing sync time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comprehensive Audit Trail:&lt;/strong&gt; Access, compare and restore to historical versions of your setups and configurations. This feature helps you debug issues and identify what changes have recently been made for full transparency.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-change-mgmt.gif&#34;
         alt=&#34;Enhanced Change Management Tools&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Enhanced Change Management Tools&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../iot-setup/geo-coding/&#34;&gt;Automatic Geo-Coding&lt;/a&gt; Managing a large number of assets requires precise location tracking. With this release, assets are automatically geo-coded with latitude and longitude coordinates, calculated using the Address fields on the Salesforce objects. This eliminates the need to manually look up coordinates for individual asset locations, saving time and enabling admins to maximize the map view in the IoT Console for all assets.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/geo-coding.png&#34;
         alt=&#34;Automatic Geo-Coding&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Automatic Geo-Coding&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../things/#sensor-gauges&#34;&gt;Sensor Gauges&lt;/a&gt; This NEW lightning web component allows Customers to easily create a custom Screen Flow and render whichever sensor values they want to as Gauges or Progress Bars/Rings.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/things/assets/sensor-gauges.png&#34;
         alt=&#34;Sensor Gauges&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Sensor Gauges&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Release 4.4 (Summer &#39;24)</title>
      <link>/docs/salesforce/release/4.4/</link>
      <pubDate>Sun, 08 Sep 2024 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/release/4.4/</guid>
      <description>
        
        
        &lt;h2 id=&#34;new-features&#34;&gt;New Features:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../iot-setup/thing-types/thing-type-specification/#ml-models&#34;&gt;Machine Learning (AI/ML)&lt;/a&gt; Define Machine Learning (ML) Models and Inferences that will be executed in the IoT Cloud. The resulting ML Inferences are available in the Calculated Fields, Alert Conditions, Visualizations and the IoT Database and Data Lake.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Create/Upload ML Models&lt;/strong&gt; Any ML Model can be created by a data-scientist and uploaded the IoT Cloud (e.g. Anomaly Detection, Value Predictions, etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Define ML Inferences&lt;/strong&gt; in Thing Types in IoT Setup&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/thing-types/assets/thingtypes-gateway-model.png&#34;
         alt=&#34;ML Models and Inferences&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;ML Models and Inferences&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../iot-setup/auto-registration/&#34;&gt;Enhanced Auto-Registration&lt;/a&gt; NEW IoT Registration records can now be auto-created by the IoT Cloud as unrecognized IoT Things are detected, or created in Salesforce by an integration. The Auto-Registration job can also be configured and scheduled to automatically find, populate, and register/deregister the related IoT Things.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/auto-registration.png&#34;
         alt=&#34;Auto-Registration Setup&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Auto-Registration Setup&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../translations/&#34;&gt;Language Translations&lt;/a&gt; Added support for Translations to all of the Visualizations and end-user components as well as multiple out-of-the-box Language Translations.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/translations/assets/translations-all-screens.gif&#34;
         alt=&#34;Language Translations&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Language Translations&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../things/#thing-timeline&#34;&gt;Thing Timeline&lt;/a&gt; The NEW Thing Timeline component can be added to the Thing/Asset page to show important events including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IoT Registrations&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IoT Alert History&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Asset Downtime Periods&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cases &amp;amp; Work Orders&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Servitization Coverage&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/things/assets/thing-timeline-v2.png&#34;
         alt=&#34;Thing Timeline&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Timeline&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../iot-setup/global-settings/licensing/#license-alarms&#34;&gt;License Alarms&lt;/a&gt; License Alarms can now be configured and automatically created into Salesforce so that administrators can monitor and automate actions on both Salesforce App and Device Licenses.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/licenses-alarms.png&#34;
         alt=&#34;License Alarms&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;License Alarms&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Release 4.1 (Winter &#39;24)</title>
      <link>/docs/salesforce/release/4.1/</link>
      <pubDate>Wed, 01 Nov 2023 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/release/4.1/</guid>
      <description>
        
        
        &lt;h2 id=&#34;new-features&#34;&gt;New Features:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../iot-setup/visual-twins/&#34;&gt;Visual Twin Editor&lt;/a&gt; Drag-and-drop image selector / editor where the admin can assign an image to each Thing Type and annotate shapes on the image for binding the Sensors, Calculated Fields, and Alert Conditions.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure normal&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/visual-twin-editor.png&#34;
         alt=&#34;Visual Twin Editor&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Visual Twin Editor&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../things/#visual-twins&#34;&gt;Visual Twin Viewer&lt;/a&gt; View &amp;amp; interact with the configured Visual Twin, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Twin Timeline:&lt;/strong&gt; The history of points-in-time are available to review / compare values, with easy navigation using arrow-keys and support for both in-memory values and snapshots.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Visual Twin Snapshots:&lt;/strong&gt; Any Visual Twin point-in-time can be saved to Salesforce as an IoT Data Snapshot record. These snapshots are loaded in the viewer on the timeline for reviewing / comparison.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Visual Twin Streaming:&lt;/strong&gt; The ability to subscribe to the IoT stream of data is also available, allowing the user to view the latest values as they arrive.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure normal&#34;&gt;&lt;img src=&#34;/docs/salesforce/things/assets/visual-twin-timeline.png&#34;
         alt=&#34;Visual Twin Viewer&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Visual Twin Viewer&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../things/#digital-twins&#34;&gt;Digital Twin Enhancements&lt;/a&gt; The Digital Twin component has been enhanced to include a number of new features, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Digital Twin Legend &amp;amp; Iconography:&lt;/strong&gt; Visually distinguish Sensors (blue dots), Calculated Fields (black plus-signs) and Alert Conditions (green/yellow triangles based on false/true values). In addition, Things/Assets are now represented as color-coded Standard Asset icons.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Digital Twin Timeline:&lt;/strong&gt; The history of points-in-time are available to review / compare values, with easy navigation using arrow-keys and support for both in-memory values and snapshots.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Digital Twin Snapshots:&lt;/strong&gt; Any Digital Twin point-in-time (full asset hierarchy) can be saved to Salesforce as an IoT Data Snapshot record. These snapshots are loaded in the viewer on the timeline for reviewing / comparison.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Digital Twin Streaming:&lt;/strong&gt; The ability to subscribe to the IoT stream of data for ALL Assets in the Digital Twin Hierarchy is also available, allowing the user to view the latest values as they arrive.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/things/assets/digital-twin-timeline.png&#34;
         alt=&#34;Digital Twin Enhancements&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Digital Twin Enhancements&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../simulators/&#34;&gt;Simulator Enhancements&lt;/a&gt; Stream your Bolt Data Connect IoT Data into Salesforce Data Cloud. We automate the schema and integration to make the setup painless and make it easy to analyze and act on your IoT Devices in Data Cloud.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;../../simulators/#local-simulators&#34;&gt;Local Simulators&lt;/a&gt;:&lt;/strong&gt; The same Simulator configurations run in the Salesforce browser, giving better stablity and control. (&lt;strong&gt;NOTE:&lt;/strong&gt; This also allows Simulators to be used in BDC-Lite &amp;amp; Demo-Kit)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;../../simulators/#replay-files&#34;&gt;Simulator Replay Files&lt;/a&gt;:&lt;/strong&gt; Admins can now download Thing Chart data, representing an interesting use-case or problematic scenario, (optionally) modify the data, and upload to a Local Simulator to replay the same data. This enables them to test very specific scenarios and have complete control over simulated values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;../../simulators/#simulator-configuration-co-pilot&#34;&gt;Simulator Co-Pilot&lt;/a&gt;:&lt;/strong&gt; Save time and avoid missed sensors and modes by using the new Simulator Config Co-Pilot feature to auto-Generate Simulator Definitions using analytics and introspection of the rules.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;../../simulators/#simulator-console-permissions&#34;&gt;Simulator Config Permission&lt;/a&gt;:&lt;/strong&gt; Ability to restrict the editing of the Simulator Configurations, separate than the use / control of the Simulators themselves​&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/release/assets/simulator-enhancements-winter24.gif&#34;
         alt=&#34;Simulator Enhancements&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Simulator Enhancements&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../iot-setup/sensor-data/#asset-attributes&#34;&gt;Sensor Data: Asset Attributes&lt;/a&gt; Asset Attributes is a new Standard Object used in Salesforce Field Service and Manufacturing Cloud in Usage-Based and Condition-Based PM Plans. We’ve added support for populating these objects automatically by synchronizing the values from the IoT Cloud as well as automating the creation of the Asset Attribute Definitions.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure normal&#34;&gt;&lt;img src=&#34;/docs/salesforce/iot-setup/assets/sensor-data-sync-asset-attr.png&#34;
         alt=&#34;Sensor Data Asset Attributes&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Sensor Data Asset Attributes&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../things/#thing-registration-thing-details&#34;&gt;Thing Registration Certificates&lt;/a&gt; The Thing Registration action now returns the generated security certificates needed for connecting to the IoT Cloud. The Administrator can now download these certificates to handle the edge connectivity without leaving Salesforce.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure normal&#34;&gt;&lt;img src=&#34;/docs/salesforce/things/assets/thing-details-register-certs.png&#34;
         alt=&#34;Thing Registration Certificates&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Registration Certificates&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../gateways/#alarms-and-metrics&#34;&gt;Smart Gateways&lt;/a&gt; We&amp;rsquo;ve added more intelligent monitoring of our Gateways, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gateway Alarms:&lt;/strong&gt; Central monitoring of important runtime problems and warnings from Gateways and their connected Things.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gateway Metrics:&lt;/strong&gt; The Telemetry data sent by the Gateways now includes key metrics for each Thing Type being processed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/gateways/assets/gateway-metrics.png&#34;
         alt=&#34;Gateway Metrics&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Gateway Metrics&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IoT Audit Trail:&lt;/strong&gt; A new Audit Trail table in the IoT Cloud captures key events such as Register API, Gateway Integration Update API, and Thing Type Update API. The Audit table includes columns for Audit-Type, Datetime, Textual Difference (DIFF), and JSON Value. This enhancement ensures a comprehensive record of crucial actions.
&lt;blockquote&gt;
&lt;p&gt;NOTE: This IoT Audit Trail data is not currently exposed in Salesforce, but you can create a Case with support (&lt;a href=&#34;mailto:bolt-data-connect-support@bolt-data.com&#34;&gt;bolt-data-connect-support@bolt-data.com&lt;/a&gt;) if you need access for any reason.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Release 3.3 (Summer &#39;23)</title>
      <link>/docs/salesforce/release/3.3/</link>
      <pubDate>Thu, 20 Jul 2023 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/release/3.3/</guid>
      <description>
        
        
        &lt;h2 id=&#34;new-features&#34;&gt;New Features:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../gateways/#gateway-management-console&#34;&gt;Gateway Management Console&lt;/a&gt; The &lt;code&gt;Console&lt;/code&gt; tab on a Gateway allows you to send/receive messages (IoT Commands) to the Gateway. The catalog of out-of-the-box Command Templates now includes 11 commands.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure normal&#34;&gt;&lt;img src=&#34;/docs/salesforce/gateways/assets/gateway-mgmt-console-commands.png&#34;
         alt=&#34;Gateway Management Console - Command List&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Gateway Management Console - Command List&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../things/#alerts&#34;&gt;Thing Chart Enhancements&lt;/a&gt; The Thing Data &amp;amp; Snapshots component has been enhanced to include a number of new features, including:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IoT Alerts:&lt;/strong&gt; Shown as color-coded vertical annotations with the Alert Type labels&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enhanced Legend:&lt;/strong&gt; Separated from Chart widget to adapt to high volumes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Split Axis:&lt;/strong&gt; Splits the values across 3 Axes based on the maximum absolute values&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/things/assets/thing-data-chart-split.png&#34;
         alt=&#34;Thing Chart Enhancements&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Thing Chart Enhancements&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../data-cloud&#34;&gt;Data Cloud Integration&lt;/a&gt; Stream your Bolt Data Connect IoT Data into Salesforce Data Cloud. We automate the schema and integration to make the setup painless and make it easy to analyze and act on your IoT Devices in Data Cloud.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/data-cloud/assets/data-cloud-explorer.png&#34;
         alt=&#34;Data Cloud Integration&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Data Cloud Integration&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Release 3.2 (Spring &#39;23)</title>
      <link>/docs/salesforce/release/3.2/</link>
      <pubDate>Fri, 05 May 2023 00:00:00 +0000</pubDate>
      
      <guid>/docs/salesforce/release/3.2/</guid>
      <description>
        
        
        &lt;h2 id=&#34;new-features&#34;&gt;New Features:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../gateways/#gateway-management-console&#34;&gt;Gateway Management Console&lt;/a&gt; The &lt;code&gt;Console&lt;/code&gt; tab on a Gateway allows you to send/receive messages (IoT Commands) to the Gateway. The catalog of out-of-the-box Command Templates will expand in future releases.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/gateways/assets/gateway-mgmt-console.png&#34;
         alt=&#34;Gateway Management Console&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Gateway Management Console&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../things/#manual-sensor-entry-thing-details&#34;&gt;Manual Sensor Entry&lt;/a&gt; The Thing Details component allows you to manually submit Sensor Values for this specific Thing to the IoT Cloud.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/things/assets/manual-sensor-entry.png&#34;
         alt=&#34;Manual Sensor Entry&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Manual Sensor Entry&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../servitization/servitization-testing/&#34;&gt;Servitization Testing Console&lt;/a&gt; On the Servitization Plan, the &lt;code&gt;Console&lt;/code&gt; tab provides a Testing Console to ease the Servitization Plan testing effort, by automating the required steps and simplifying the process.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&#34;doc figure wide&#34;&gt;&lt;img src=&#34;/docs/salesforce/servitization/assets/servitization-test-console.png&#34;
         alt=&#34;Servitization Test Console&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Servitization Test Console&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../iot-setup/sensor-data/#advanced-sensor-bindings&#34;&gt;Sensor Data Sync Advanced Options&lt;/a&gt; A sensor value can be used as the &amp;ldquo;Timestamp&amp;rdquo; of the synchronized Sensor Data. This Timestamp influences downstream processes like Servitization and Reporting. If these fields are NOT filled in, the system will use the default Timestamp in our IoT metadata which indicates the date/time when we received the IoT message.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
  </channel>
</rss>
