devxlogo

Connecting to the Web: I/O Programming in Android

Connecting to the Web: I/O Programming in Android

o far all the previous articles in this Android series have been concerned with location-based services and the use of Google Maps for mapping applications. In this article, let’s turn our attention to some bread-and-butter issues?like connecting your Android application to the Web to download files.

Very often, you need to connect your Android application to the outside world, such as downloading images as well as consuming web services. This article will show you how to make your Android application communicate with the outside world using an HTTP connection. You’ll also learn how to parse XML files so that useful information can be extracted from XML documents.

Figure 1. The New Project: The new Android project is called HttpDownload.

Creating the Project
Using Eclipse, create a new Android project and name it HttpDownload, as shown in Figure 1.

In the HttpDownload.java file, first import the various namespaces that you will need for this project (see Listing 1).

As you’ll be accessing the Internet, you’ll need to add the relevant permissions to your AndroidManifest.xml file:

                                                                                    

Let’s define a helper function called OpenHttpConnection() that opens a connection to a HTTP server and returns an InputStream object (Listing 2).

To open a connection to a server, you first create an instance of the URL class and initialize it with the URL of the server. When the connection is established, you pass this connection to an URLConnection object. You then verify whether the protocol is indeed HTTP; if not you will throw an IOException. The URLConnection object is then cast into an HttpURLConnection object and you set the various properties of the HTTP connection. Next, you connect to the HTTP server and get a response from the server. If the response code is HTTP_OK, you then get the InputStream object from the connection so that you can begin to read incoming data from the server. The function then returns the InputStream object obtained.

In the main.xml file, insert the and elements. These will allow you to visually display the downloaded images and text (Listing 3).

Downloading Images
The first thing you want to do is to download some images stored on a web server. To do this, define the DownloadImage() function as follows:

    private Bitmap DownloadImage(String URL)    {                Bitmap bitmap = null;        InputStream in = null;                try {            in = OpenHttpConnection(URL);            bitmap = BitmapFactory.decodeStream(in);            in.close();        } catch (IOException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        }        return bitmap;                    }

The DownloadImage() function takes in a string containing the URL of the image to download. It then calls the OpenHttpConnection() function to obtain an InputStream object for reading the image data. The InputStream object is sent to the decodeStream() method of the BitmapFactory class. The decodeStream() method decodes an InputStream object into a bitmap. The decoded bitmap is then returned by the DownloadImage() function.

To test the DownloadImage() function, modify the onCreate() event as follows:

@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                Bitmap bitmap =             DownloadImage(            "http://www.streetcar.org/mim/cable/images/cable-01.jpg");        img = (ImageView) findViewById(R.id.img);        img.setImageBitmap(bitmap);    }

Press F11 in Eclipse to test the application on the Android emulator. Figure 2 shows the image downloaded and displayed in the ImageView view.


Figure 2. The Downloaded Image: The image is downloaded and displayed in the ImageView view.
 
Figure 3. The Downloaded File: The text file is downloaded and displayed in a TextView view.

Downloading Text
Now, let’s try to download text files from the web and display them using the TextView view. First, define the DownloadText() function as shown in Listing 4.

As usual, you call the OpenHttpConnnection() function to obtain an InputStream object. The InputStream object is then used by the InputStreamReader class so that characters can be read from the stream. The characters are read into a char array and then copied into a string variable. The string variable is then returned.

To test the DownloadText() function, modify the onCreate() event as follows:

    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                /*        Bitmap bitmap =             DownloadImage(            "http://www.streetcar.org/mim/cable/images/cable-01.jpg");        img = (ImageView) findViewById(R.id.img);        img.setImageBitmap(bitmap);        */        String str =            DownloadText("http://www.appleinsider.com/appleinsider.rss");        txt = (TextView) findViewById(R.id.text);        txt.setText(str);            }   

Press F11 in Eclipse to test the application on the Android emulator. Figure 3 shows the file downloaded and displayed in the TextView view.

Downloading RSS Feeds
Very often, you need to download XML files and parse the contents (a good example of this is consuming web services). And so in this section, you will learn how to download a RSS feed and then extract the relevant parts (such as the </span> element) and display its content.</p><table border="0" cellspacing="0" cellpadding="5" align="RIGHT" width="239"><tr><td valign="top"><a href="javascript:showSupportItem('figure4')"><img loading="lazy" decoding="async" border="0" alt="" src="http://assets.devx.com/articlefigs/39810_4.jpg" width="150" height="150"></a></td><td width="12"></td></tr><tr><td class="smallfont"><a href="javascript:showSupportItem('figure4')"><strong>Figure 4.</a> An Example:</strong> The “<em><item>/<title>“</em> element contains the title of each posting.</td></tr></table><p>Define the <span class="pf">DownloadRSS()</span> function as shown in <a href="javascript:showSupportItem('listing5')">Listing 5</a>.</p><p>First, call the <span class="pf">OpenHttpConnnection()</span> function to obtain an <span class="pf">InputStream</span> object. To process XML documents, use the following classes:</p><ul><li> <em>Document</em>: This represents an XML document.</li><li> <em>DocumentBuilder</em>: This converts a XML source (such as files, streams, and so on) into a Document.</li><li> <em>DocumentBuilderFactory</em>: This provides a factory for <span class="pf">DocumentBuilder</span> instances.</li></ul><p>Essentially, the <span class="pf">InputStream</span> object is used to read the XML data and then parsed into a <span class="pf">Document</span> object.</p><p>After the XML document is loaded into a <span class="pf">Document</span> object, you locate the relevant elements to extract. In particular, for an RSS document, the “<span class="pf"><item>/<title>“</span> element contains the title of each posting (see <a href="javascript:showSupportItem('figure4')">Figure 4</a>).</p><table border="0" cellspacing="0" cellpadding="5" align="RIGHT" width="239"><tr><td valign="top"><a href="javascript:showSupportItem('figure5')"><img loading="lazy" decoding="async" border="0" alt="" src="http://assets.devx.com/articlefigs/39810_5.jpg" width="150" height="150"></a></td><td width="12"></td></tr><tr><td class="smallfont"><a href="javascript:showSupportItem('figure5')"><strong>Figure 5.</a> The RSS Feed:</strong> Displaying all the titles of the postings in a RSS feed using the Toast class.</td></tr></table><p>Once the title of each posting is retrieved, it is displayed using the Toast class. To test the DownloadRSS() function, modify the onCreate() event as shown in <a href="javascript:showSupportItem('listing6')">Listing 6</a>.</p><p>Press F11 in Eclipse to test the application on the Android emulator. <a href="javascript:showSupportItem('figure5')">Figure 5</a> shows the titles of all the postings contained within the RSS feed displayed by the Toast class.</p><p>That’s it! If you have interesting ideas involving things you can do with HTTP downloads, send me an email.</p><p></div></div><div class="elementor-element elementor-element-2298440 elementor-widget elementor-widget-image" data-id="2298440" data-element_type="widget" data-widget_type="image.default"><div class="elementor-widget-container"> <img decoding="async" width="150" height="68" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_150,h_68/https://www.devx.com/wp-content/uploads/DevX-1-150x68.png" class="attachment-thumbnail size-thumbnail wp-image-24484" alt="devxblackblue" srcset="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_150/https://www.devx.com/wp-content/uploads/DevX-1-150x68.png 150w, https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300/https://www.devx.com/wp-content/uploads/DevX-1-300x135.png 300w, https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_1024/https://www.devx.com/wp-content/uploads/DevX-1-1024x461.png 1024w, https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_768/https://www.devx.com/wp-content/uploads/DevX-1-768x346.png 768w, https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_1536/https://www.devx.com/wp-content/uploads/DevX-1-1536x691.png 1536w, https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_2000/https://www.devx.com/wp-content/uploads/DevX-1.png 2000w" sizes="(max-width: 150px) 100vw, 150px" /></div></div><div class="elementor-element elementor-element-b24b1f0 elementor-widget elementor-widget-heading" data-id="b24b1f0" data-element_type="widget" data-widget_type="heading.default"><div class="elementor-widget-container"><h2 class="elementor-heading-title elementor-size-default">About Our Editorial Process</h2></div></div><div class="elementor-element elementor-element-bf49e8d elementor-widget elementor-widget-text-editor" data-id="bf49e8d" data-element_type="widget" data-widget_type="text-editor.default"><div class="elementor-widget-container"><style>/*! elementor - v3.20.0 - 10-04-2024 */ .elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}</style><p>At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.</p><p>See our full <a href="https://www.devx.com/publication-guidelines/">editorial policy</a>.</p></div></div><div class="elementor-element elementor-element-0f1a6bf elementor-widget elementor-widget-heading" data-id="0f1a6bf" data-element_type="widget" data-widget_type="heading.default"><div class="elementor-widget-container"><h2 class="elementor-heading-title elementor-size-default">About Our Journalist</h2></div></div><div class="elementor-element elementor-element-4b5870b elementor-author-box--link-yes elementor-author-box--align-left elementor-author-box--name-yes elementor-author-box--biography-yes elementor-widget elementor-widget-author-box" data-id="4b5870b" data-element_type="widget" data-widget_type="author-box.default"><div class="elementor-widget-container"><div class="elementor-author-box"><div class="elementor-author-box__text"> <a href="https://www.devx.com/author/devx-admin/"><h3 class="elementor-author-box__name"> Charlie Frank</h3> </a><div class="elementor-author-box__bio"> Charlie has over a decade of experience in website administration and technology management. As the site admin, he oversees all technical aspects of running a high-traffic online platform, ensuring optimal performance, security, and user experience.</div> <a class="elementor-author-box__button elementor-button elementor-size-xs" href="https://www.devx.com/author/devx-admin/"> View Author </a></div></div></div></div></div></div></div></section><div class="elementor-element elementor-element-39bd7056 elementor-grid-1 elementor-posts--thumbnail-left elementor-grid-tablet-1 elementor-grid-mobile-1 load-more-align-center elementor-widget elementor-widget-posts" data-id="39bd7056" data-element_type="widget" data-settings="{"classic_columns":"1","classic_row_gap":{"unit":"px","size":0,"sizes":[]},"pagination_type":"load_more_on_click","classic_columns_tablet":"1","classic_columns_mobile":"1","classic_row_gap_tablet":{"unit":"px","size":"","sizes":[]},"classic_row_gap_mobile":{"unit":"px","size":"","sizes":[]},"load_more_spinner":{"value":"fas fa-spinner","library":"fa-solid"}}" data-widget_type="posts.classic"><div class="elementor-widget-container"><link rel="stylesheet" href="https://www.devx.com/wp-content/plugins/elementor-pro/assets/css/widget-posts.min.css"><div class="elementor-posts-container elementor-posts elementor-posts--skin-classic elementor-grid"><article class="elementor-post elementor-grid-item post-48923 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/restaurant365-raises-175m-for-strategic-growth/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Strategic-Growth-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48922" alt=""Strategic Growth"" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/restaurant365-raises-175m-for-strategic-growth/" > Restaurant365 raises $175M for strategic growth </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> May 17, 2024 </span> <span class="elementor-post-time"> 5:14 PM </span></div></div></article><article class="elementor-post elementor-grid-item post-48911 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/2024-tech-power-players-highlight-ai-focus/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/AI-Power-Players-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48910" alt="AI Power Players" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/2024-tech-power-players-highlight-ai-focus/" > 2024 Tech Power Players highlight AI focus </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> May 17, 2024 </span> <span class="elementor-post-time"> 3:24 PM </span></div></div></article><article class="elementor-post elementor-grid-item post-48965 post type-post status-publish format-standard has-post-thumbnail hentry category-tip-bank"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/tip-bank/how-to-avoid-money-transfer-scams/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Generational-Wealth-Disparity-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-47475" alt="Generational Wealth Disparity; Money Transfer Scams" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/tip-bank/how-to-avoid-money-transfer-scams/" > How to Avoid Money Transfer Scams   </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Rashan Dixon </span> <span class="elementor-post-date"> May 17, 2024 </span> <span class="elementor-post-time"> 2:39 PM </span></div></div></article><article class="elementor-post elementor-grid-item post-48961 post type-post status-publish format-standard has-post-thumbnail hentry category-tip-bank"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/tip-bank/5-tips-for-working-with-an-onsite-interpreter/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="200" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_200/https://www.devx.com/wp-content/uploads/EV-Global-Demand-300x200.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-29367" alt="EV Global Demand; Onsite Interpreter" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/tip-bank/5-tips-for-working-with-an-onsite-interpreter/" > 5 Tips For Working With An Onsite Interpreter </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Kyle Lewis </span> <span class="elementor-post-date"> May 17, 2024 </span> <span class="elementor-post-time"> 1:55 PM </span></div></div></article><article class="elementor-post elementor-grid-item post-48909 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/startup-fay-bridges-dieticians-insurance-and-clients/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Bridging-Dieticians-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48908" alt=""Bridging Dieticians"" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/startup-fay-bridges-dieticians-insurance-and-clients/" > Startup Fay bridges dieticians, insurance, and clients </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Rashan Dixon </span> <span class="elementor-post-date"> May 17, 2024 </span> <span class="elementor-post-time"> 1:45 PM </span></div></div></article><article class="elementor-post elementor-grid-item post-48921 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/google-and-samsung-extend-software-updates-to-seven-years/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Extended-Updates-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48920" alt="Extended Updates" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/google-and-samsung-extend-software-updates-to-seven-years/" > Google and Samsung extend software updates to seven years </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Noah Nguyen </span> <span class="elementor-post-date"> May 17, 2024 </span> <span class="elementor-post-time"> 1:36 PM </span></div></div></article><article class="elementor-post elementor-grid-item post-48953 post type-post status-publish format-standard has-post-thumbnail hentry category-enterprise-zone"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/enterprise-zone/integrating-artificial-intelligence-into-software-development-practices/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="251" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_251/https://www.devx.com/wp-content/uploads/How-AI-is-Influencing-Educational-Practices-300x251.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-45205" alt="How AI is Influencing educational institutions; software development practices" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/enterprise-zone/integrating-artificial-intelligence-into-software-development-practices/" > Integrating Artificial Intelligence into Software Development Practices </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Kyle Lewis </span> <span class="elementor-post-date"> May 17, 2024 </span> <span class="elementor-post-time"> 12:51 PM </span></div></div></article><article class="elementor-post elementor-grid-item post-48951 post type-post status-publish format-standard has-post-thumbnail hentry category-tip-bank"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/tip-bank/how-iot-tech-will-transform-logistics/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Logistics-Expansion-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-45553" alt=""Logistics Expansion"; IoT Capabilities" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/tip-bank/how-iot-tech-will-transform-logistics/" > How IoT Tech Will Transform Logistics </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Kyle Lewis </span> <span class="elementor-post-date"> May 17, 2024 </span> <span class="elementor-post-time"> 12:38 PM </span></div></div></article><article class="elementor-post elementor-grid-item post-48919 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/palo-alto-networks-to-acquire-ibms-qradar/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Palo-Alto-QRadar-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48918" alt=""Palo Alto QRadar"" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/palo-alto-networks-to-acquire-ibms-qradar/" > Palo Alto Networks to acquire IBM’s QRadar </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Noah Nguyen </span> <span class="elementor-post-date"> May 17, 2024 </span> <span class="elementor-post-time"> 11:41 AM </span></div></div></article><article class="elementor-post elementor-grid-item post-48903 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/bitcoins-resilient-rise-amid-economic-instability/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Resilient-Bitcoin-Rise-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48902" alt="Resilient Bitcoin Rise" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/bitcoins-resilient-rise-amid-economic-instability/" > Bitcoin’s resilient rise amid economic instability </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> May 17, 2024 </span> <span class="elementor-post-time"> 11:30 AM </span></div></div></article><article class="elementor-post elementor-grid-item post-48917 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/google-and-samsung-extend-smartphone-lifespan-with-longer-software-support/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Extended-Lifespan-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48916" alt=""Extended Lifespan"" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/google-and-samsung-extend-smartphone-lifespan-with-longer-software-support/" > Google and Samsung extend smartphone lifespan with longer software support </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> May 17, 2024 </span> <span class="elementor-post-time"> 8:29 AM </span></div></div></article><article class="elementor-post elementor-grid-item post-48907 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/usd-cad-rebounds-amid-federal-reserve-rate-cut-discussions/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Rate-Cut-Rebounds-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48906" alt=""Rate Cut Rebounds"" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/usd-cad-rebounds-amid-federal-reserve-rate-cut-discussions/" > USD/CAD rebounds amid Federal Reserve rate cut discussions </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Rashan Dixon </span> <span class="elementor-post-date"> May 17, 2024 </span> <span class="elementor-post-time"> 8:19 AM </span></div></div></article><article class="elementor-post elementor-grid-item post-48915 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/palo-alto-networks-strategizes-ibm-cloud-software-acquisition/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Cloud-Software-Acquisition-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48914" alt=""Cloud Software Acquisition"" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/palo-alto-networks-strategizes-ibm-cloud-software-acquisition/" > Palo Alto Networks strategizes IBM cloud software acquisition </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Rashan Dixon </span> <span class="elementor-post-date"> May 17, 2024 </span> <span class="elementor-post-time"> 7:55 AM </span></div></div></article><article class="elementor-post elementor-grid-item post-48913 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/securing-financial-growth-for-small-businesses-through-government-grants/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Government-Grants-1-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48912" alt="Government Grants" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/securing-financial-growth-for-small-businesses-through-government-grants/" > Securing financial growth for small businesses through government grants </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> May 17, 2024 </span> <span class="elementor-post-time"> 7:33 AM </span></div></div></article><article class="elementor-post elementor-grid-item post-48905 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/asian-forex-market-shows-post-cpi-strength-us-dollar-wanes/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Asian-Forex-Strength-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48904" alt="Asian Forex Strength" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/asian-forex-market-shows-post-cpi-strength-us-dollar-wanes/" > Asian forex market shows post-CPI strength, US dollar wanes </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> May 17, 2024 </span> <span class="elementor-post-time"> 7:27 AM </span></div></div></article><article class="elementor-post elementor-grid-item post-48878 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/financial-strain-for-ohio-teachers-due-to-pension-system-changes/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Pension-Strain-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48877" alt=""Pension Strain"" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/financial-strain-for-ohio-teachers-due-to-pension-system-changes/" > Financial strain for Ohio teachers due to pension system changes </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Rashan Dixon </span> <span class="elementor-post-date"> May 16, 2024 </span> <span class="elementor-post-time"> 5:59 PM </span></div></div></article><article class="elementor-post elementor-grid-item post-48876 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/upcoming-social-security-payments-scheduled-for-may/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/May-Payments-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48875" alt="May Payments" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/upcoming-social-security-payments-scheduled-for-may/" > Upcoming social security payments scheduled for May </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> May 16, 2024 </span> <span class="elementor-post-time"> 5:21 PM </span></div></div></article><article class="elementor-post elementor-grid-item post-48870 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/meta-discontinues-workplace-for-strategic-refocus/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Strategic-Refocus-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48869" alt="Strategic Refocus" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/meta-discontinues-workplace-for-strategic-refocus/" > Meta discontinues Workplace for strategic refocus </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Johannah Lopez </span> <span class="elementor-post-date"> May 16, 2024 </span> <span class="elementor-post-time"> 3:57 PM </span></div></div></article><article class="elementor-post elementor-grid-item post-48882 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/ilya-sutskever-exits-openai-over-managerial-disagreements/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Sutskever-Exits-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48881" alt=""Sutskever Exits"" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/ilya-sutskever-exits-openai-over-managerial-disagreements/" > Ilya Sutskever exits OpenAI over managerial disagreements </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> April Isaacs </span> <span class="elementor-post-date"> May 16, 2024 </span> <span class="elementor-post-time"> 3:55 PM </span></div></div></article><article class="elementor-post elementor-grid-item post-48884 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/harbor-lab-raises-16m-for-maritime-software-expansion/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Maritime-Software-Expansion-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48883" alt=""Maritime Software Expansion"" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/harbor-lab-raises-16m-for-maritime-software-expansion/" > Harbor Lab raises $16m for maritime software expansion </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> May 16, 2024 </span> <span class="elementor-post-time"> 1:55 PM </span></div></div></article><article class="elementor-post elementor-grid-item post-48880 post type-post status-publish format-standard has-post-thumbnail hentry category-news"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/addressing-the-future-of-social-security/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Future-Security-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48879" alt=""Future Security"" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/addressing-the-future-of-social-security/" > Addressing the future of social security </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> May 16, 2024 </span> <span class="elementor-post-time"> 1:19 PM </span></div></div></article><article class="elementor-post elementor-grid-item post-48886 post type-post status-publish format-standard has-post-thumbnail hentry category-news tag-canoo tag-ev-market"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/canoo-faces-high-losses-amid-ev-market-challenges/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/High-Losses-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48885" alt=""High Losses"" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/canoo-faces-high-losses-amid-ev-market-challenges/" > Canoo faces high losses amid EV market challenges </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> May 16, 2024 </span> <span class="elementor-post-time"> 11:24 AM </span></div></div></article><article class="elementor-post elementor-grid-item post-48874 post type-post status-publish format-standard has-post-thumbnail hentry category-news tag-austin tag-highway-expansion tag-jimmy-baltierra tag-texas"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/austin-highway-expansion-threatens-local-businesses/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Highway-Expansion-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48873" alt=""Highway Expansion"" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/austin-highway-expansion-threatens-local-businesses/" > Austin highway expansion threatens local businesses </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> May 16, 2024 </span> <span class="elementor-post-time"> 8:33 AM </span></div></div></article><article class="elementor-post elementor-grid-item post-48872 post type-post status-publish format-standard has-post-thumbnail hentry category-news tag-edition-of-wealth tag-ev-pulse-2"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/consumer-saving-strategies-amid-economic-volatility/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Economic-Saving-Strategies-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48871" alt="Economic Saving Strategies" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/consumer-saving-strategies-amid-economic-volatility/" > Consumer-saving strategies amid economic volatility </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> April Isaacs </span> <span class="elementor-post-date"> May 16, 2024 </span> <span class="elementor-post-time"> 7:30 AM </span></div></div></article><article class="elementor-post elementor-grid-item post-48799 post type-post status-publish format-standard has-post-thumbnail hentry category-news tag-highway-b-renovation tag-hometown-pharmacy tag-mike-witte tag-oso-brewing tag-post-road-state-54"> <a class="elementor-post__thumbnail__link" href="https://www.devx.com/news/highway-b-renovation-tests-local-businesses-resilience/" ><div class="elementor-post__thumbnail"><img decoding="async" width="300" height="171" src="https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_300,h_171/https://www.devx.com/wp-content/uploads/Highway-Renovation-300x171.jpg" class="elementor-animation-grow attachment-medium size-medium wp-image-48798" alt=""Highway Renovation"" /></div> </a><div class="elementor-post__text"><h3 class="elementor-post__title"> <a href="https://www.devx.com/news/highway-b-renovation-tests-local-businesses-resilience/" > Highway B renovation tests local businesses’ resilience </a></h3><div class="elementor-post__meta-data"> <span class="elementor-post-author"> Cameron Wiggins </span> <span class="elementor-post-date"> May 15, 2024 </span> <span class="elementor-post-time"> 5:46 PM </span></div></div></article></div> <span class="e-load-more-spinner"> <i aria-hidden="true" class="fas fa-spinner"></i> </span><div class="e-load-more-anchor" data-page="1" data-max-page="800" data-next-page="https://www.devx.com/wireless-zone/39810/2/"></div><div class="elementor-button-wrapper"> <a href="#" class="elementor-button-link elementor-button elementor-animation-grow" role="button"> <span class="elementor-button-content-wrapper"> <span class="elementor-button-text">Show More</span> </span> </a></div><div class="e-load-more-message"></div></div></div></div></div><div class="elementor-column elementor-col-20 elementor-top-column elementor-element elementor-element-270dc71" data-id="270dc71" data-element_type="column"><div class="elementor-widget-wrap"></div></div><div class="elementor-column elementor-col-20 elementor-top-column elementor-element elementor-element-8905b95 elementor-hidden-tablet" data-id="8905b95" data-element_type="column"><div class="elementor-widget-wrap elementor-element-populated"><div class="elementor-element elementor-element-2f83f51 elementor-widget elementor-widget-html" data-id="2f83f51" data-element_type="widget" data-widget_type="html.default"><div class="elementor-widget-container"> <ins style="display: block; width: 100%" class="direqt-embed" data-bot-id="660c2a84041d59991d8be45b" data-start-hint="poll" data-story-id="auto" data-gtm="true" data-layout="overlay" ></ins></div></div></div></div></div></section></div></div><footer data-elementor-type="footer" data-elementor-id="23300" class="elementor elementor-23300 elementor-location-footer"><div class="elementor-section-wrap"><footer class="elementor-section elementor-top-section elementor-element elementor-element-1588a538 elementor-section-height-min-height elementor-section-content-middle elementor-section-full_width elementor-section-height-default elementor-section-items-middle" data-id="1588a538" data-element_type="section" data-settings="{"background_background":"classic"}"><div class="elementor-container elementor-column-gap-no"><div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-9d2a788" data-id="9d2a788" data-element_type="column"><div class="elementor-widget-wrap"></div></div><div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-2e0ce949" data-id="2e0ce949" data-element_type="column"><div class="elementor-widget-wrap elementor-element-populated"><div class="elementor-element elementor-element-4f9ec08 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="4f9ec08" data-element_type="widget" data-widget_type="divider.default"><div class="elementor-widget-container"><style>/*! elementor - v3.20.0 - 10-04-2024 */ .elementor-widget-divider{--divider-border-style:none;--divider-border-width:1px;--divider-color:#0c0d0e;--divider-icon-size:20px;--divider-element-spacing:10px;--divider-pattern-height:24px;--divider-pattern-size:20px;--divider-pattern-url:none;--divider-pattern-repeat:repeat-x}.elementor-widget-divider .elementor-divider{display:flex}.elementor-widget-divider .elementor-divider__text{font-size:15px;line-height:1;max-width:95%}.elementor-widget-divider .elementor-divider__element{margin:0 var(--divider-element-spacing);flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(--divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:flex;margin:0;direction:ltr}.elementor-widget-divider--view-line_icon .elementor-divider-separator,.elementor-widget-divider--view-line_text .elementor-divider-separator{align-items:center}.elementor-widget-divider--view-line_icon .elementor-divider-separator:after,.elementor-widget-divider--view-line_icon .elementor-divider-separator:before,.elementor-widget-divider--view-line_text .elementor-divider-separator:after,.elementor-widget-divider--view-line_text .elementor-divider-separator:before{display:block;content:"";border-block-end:0;flex-grow:1;border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-left .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-left .elementor-divider__element{margin-left:0}.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-right .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-right .elementor-divider__element{margin-right:0}.elementor-widget-divider--element-align-start .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-start .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-start .elementor-divider__element{margin-inline-start:0}.elementor-widget-divider--element-align-end .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-end .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-end .elementor-divider__element{margin-inline-end:0}.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator{border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--separator-type-pattern{--divider-border-style:none}.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before,.elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator{width:100%;min-height:var(--divider-pattern-height);-webkit-mask-size:var(--divider-pattern-size) 100%;mask-size:var(--divider-pattern-size) 100%;-webkit-mask-repeat:var(--divider-pattern-repeat);mask-repeat:var(--divider-pattern-repeat);background-color:var(--divider-color);-webkit-mask-image:var(--divider-pattern-url);mask-image:var(--divider-pattern-url)}.elementor-widget-divider--no-spacing{--divider-pattern-size:auto}.elementor-widget-divider--bg-round{--divider-pattern-repeat:round}.rtl .elementor-widget-divider .elementor-divider__text{direction:rtl}.e-con-inner>.elementor-widget-divider,.e-con>.elementor-widget-divider{width:var(--container-widget-width,100%);--flex-grow:var(--container-widget-flex-grow)}</style><div class="elementor-divider"> <span class="elementor-divider-separator"> </span></div></div></div><section class="elementor-section elementor-inner-section elementor-element elementor-element-73a9986 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="73a9986" data-element_type="section"><div class="elementor-container elementor-column-gap-default"><div class="elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-7f08930" data-id="7f08930" data-element_type="column"><div class="elementor-widget-wrap elementor-element-populated"><div class="elementor-element elementor-element-269b367 elementor-nav-menu__align-right elementor-nav-menu--dropdown-tablet elementor-nav-menu__text-align-aside elementor-nav-menu--toggle elementor-nav-menu--burger elementor-widget elementor-widget-nav-menu" data-id="269b367" data-element_type="widget" data-settings="{"layout":"horizontal","submenu_icon":{"value":"<i class=\"fas fa-caret-down\"><\/i>","library":"fa-solid"},"toggle":"burger"}" data-widget_type="nav-menu.default"><div class="elementor-widget-container"><nav class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-underline e--animation-fade"><ul id="menu-1-269b367" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-23808"><a href="https://www.devx.com/" class="elementor-item">Home</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23809"><a href="https://www.devx.com/advertise/" class="elementor-item">Advertise</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23816"><a href="https://www.devx.com/about/" class="elementor-item">About</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-46262"><a href="https://www.devx.com/publication-guidelines/" class="elementor-item">Guidelines</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-47967"><a href="https://www.devx.com/expert-review-board/" class="elementor-item">Experts</a></li></ul></nav><div class="elementor-menu-toggle" role="button" tabindex="0" aria-label="Menu Toggle" aria-expanded="false"> <i aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--open eicon-menu-bar"></i><i aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--close eicon-close"></i> <span class="elementor-screen-only">Menu</span></div><nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true"><ul id="menu-2-269b367" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-23808"><a href="https://www.devx.com/" class="elementor-item" tabindex="-1">Home</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23809"><a href="https://www.devx.com/advertise/" class="elementor-item" tabindex="-1">Advertise</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23816"><a href="https://www.devx.com/about/" class="elementor-item" tabindex="-1">About</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-46262"><a href="https://www.devx.com/publication-guidelines/" class="elementor-item" tabindex="-1">Guidelines</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-47967"><a href="https://www.devx.com/expert-review-board/" class="elementor-item" tabindex="-1">Experts</a></li></ul></nav></div></div></div></div><div class="elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-21928d3" data-id="21928d3" data-element_type="column"><div class="elementor-widget-wrap"></div></div><div class="elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-869862d" data-id="869862d" data-element_type="column"><div class="elementor-widget-wrap elementor-element-populated"><div class="elementor-element elementor-element-5d5f4dc5 e-grid-align-left elementor-shape-rounded elementor-grid-0 elementor-widget elementor-widget-social-icons" data-id="5d5f4dc5" data-element_type="widget" data-widget_type="social-icons.default"><div class="elementor-widget-container"><style>/*! elementor - v3.20.0 - 10-04-2024 */ .elementor-widget-social-icons.elementor-grid-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-mobile-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-tablet-0 .elementor-widget-container{line-height:1;font-size:0}.elementor-widget-social-icons:not(.elementor-grid-0):not(.elementor-grid-tablet-0):not(.elementor-grid-mobile-0) .elementor-grid{display:inline-grid}.elementor-widget-social-icons .elementor-grid{grid-column-gap:var(--grid-column-gap,5px);grid-row-gap:var(--grid-row-gap,5px);grid-template-columns:var(--grid-template-columns);justify-content:var(--justify-content,center);justify-items:var(--justify-content,center)}.elementor-icon.elementor-social-icon{font-size:var(--icon-size,25px);line-height:var(--icon-size,25px);width:calc(var(--icon-size,25px) + 2*var(--icon-padding,.5em));height:calc(var(--icon-size,25px) + 2*var(--icon-padding,.5em))}.elementor-social-icon{--e-social-icon-icon-color:#fff;display:inline-flex;background-color:#69727d;align-items:center;justify-content:center;text-align:center;cursor:pointer}.elementor-social-icon i{color:var(--e-social-icon-icon-color)}.elementor-social-icon svg{fill:var(--e-social-icon-icon-color)}.elementor-social-icon:last-child{margin:0}.elementor-social-icon:hover{opacity:.9;color:#fff}.elementor-social-icon-android{background-color:#a4c639}.elementor-social-icon-apple{background-color:#999}.elementor-social-icon-behance{background-color:#1769ff}.elementor-social-icon-bitbucket{background-color:#205081}.elementor-social-icon-codepen{background-color:#000}.elementor-social-icon-delicious{background-color:#39f}.elementor-social-icon-deviantart{background-color:#05cc47}.elementor-social-icon-digg{background-color:#005be2}.elementor-social-icon-dribbble{background-color:#ea4c89}.elementor-social-icon-elementor{background-color:#d30c5c}.elementor-social-icon-envelope{background-color:#ea4335}.elementor-social-icon-facebook,.elementor-social-icon-facebook-f{background-color:#3b5998}.elementor-social-icon-flickr{background-color:#0063dc}.elementor-social-icon-foursquare{background-color:#2d5be3}.elementor-social-icon-free-code-camp,.elementor-social-icon-freecodecamp{background-color:#006400}.elementor-social-icon-github{background-color:#333}.elementor-social-icon-gitlab{background-color:#e24329}.elementor-social-icon-globe{background-color:#69727d}.elementor-social-icon-google-plus,.elementor-social-icon-google-plus-g{background-color:#dd4b39}.elementor-social-icon-houzz{background-color:#7ac142}.elementor-social-icon-instagram{background-color:#262626}.elementor-social-icon-jsfiddle{background-color:#487aa2}.elementor-social-icon-link{background-color:#818a91}.elementor-social-icon-linkedin,.elementor-social-icon-linkedin-in{background-color:#0077b5}.elementor-social-icon-medium{background-color:#00ab6b}.elementor-social-icon-meetup{background-color:#ec1c40}.elementor-social-icon-mixcloud{background-color:#273a4b}.elementor-social-icon-odnoklassniki{background-color:#f4731c}.elementor-social-icon-pinterest{background-color:#bd081c}.elementor-social-icon-product-hunt{background-color:#da552f}.elementor-social-icon-reddit{background-color:#ff4500}.elementor-social-icon-rss{background-color:#f26522}.elementor-social-icon-shopping-cart{background-color:#4caf50}.elementor-social-icon-skype{background-color:#00aff0}.elementor-social-icon-slideshare{background-color:#0077b5}.elementor-social-icon-snapchat{background-color:#fffc00}.elementor-social-icon-soundcloud{background-color:#f80}.elementor-social-icon-spotify{background-color:#2ebd59}.elementor-social-icon-stack-overflow{background-color:#fe7a15}.elementor-social-icon-steam{background-color:#00adee}.elementor-social-icon-stumbleupon{background-color:#eb4924}.elementor-social-icon-telegram{background-color:#2ca5e0}.elementor-social-icon-threads{background-color:#000}.elementor-social-icon-thumb-tack{background-color:#1aa1d8}.elementor-social-icon-tripadvisor{background-color:#589442}.elementor-social-icon-tumblr{background-color:#35465c}.elementor-social-icon-twitch{background-color:#6441a5}.elementor-social-icon-twitter{background-color:#1da1f2}.elementor-social-icon-viber{background-color:#665cac}.elementor-social-icon-vimeo{background-color:#1ab7ea}.elementor-social-icon-vk{background-color:#45668e}.elementor-social-icon-weibo{background-color:#dd2430}.elementor-social-icon-weixin{background-color:#31a918}.elementor-social-icon-whatsapp{background-color:#25d366}.elementor-social-icon-wordpress{background-color:#21759b}.elementor-social-icon-x-twitter{background-color:#000}.elementor-social-icon-xing{background-color:#026466}.elementor-social-icon-yelp{background-color:#af0606}.elementor-social-icon-youtube{background-color:#cd201f}.elementor-social-icon-500px{background-color:#0099e5}.elementor-shape-rounded .elementor-icon.elementor-social-icon{border-radius:10%}.elementor-shape-circle .elementor-icon.elementor-social-icon{border-radius:50%}</style><div class="elementor-social-icons-wrapper elementor-grid"> <span class="elementor-grid-item"> <a class="elementor-icon elementor-social-icon elementor-social-icon-linkedin elementor-repeater-item-5c0ce3c" href="https://www.linkedin.com/company/devx" target="_blank"> <span class="elementor-screen-only">Linkedin</span> <i class="fab fa-linkedin"></i> </a> </span> <span class="elementor-grid-item"> <a class="elementor-icon elementor-social-icon elementor-social-icon-twitter elementor-repeater-item-828f132" href="https://twitter.com/DevX_Com" target="_blank"> <span class="elementor-screen-only">Twitter</span> <i class="fab fa-twitter"></i> </a> </span></div></div></div></div></div></div></section><section class="elementor-section elementor-inner-section elementor-element elementor-element-e509954 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="e509954" data-element_type="section"><div class="elementor-container elementor-column-gap-default"><div class="elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-f77ca98" data-id="f77ca98" data-element_type="column"><div class="elementor-widget-wrap elementor-element-populated"><div class="elementor-element elementor-element-c500cdf elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="c500cdf" data-element_type="widget" data-widget_type="divider.default"><div class="elementor-widget-container"><div class="elementor-divider"> <span class="elementor-divider-separator"> </span></div></div></div><div class="elementor-element elementor-element-fbeb59f elementor-nav-menu__align-center elementor-nav-menu--dropdown-tablet elementor-nav-menu__text-align-aside elementor-nav-menu--toggle elementor-nav-menu--burger elementor-widget elementor-widget-nav-menu" data-id="fbeb59f" data-element_type="widget" data-settings="{"layout":"horizontal","submenu_icon":{"value":"<i class=\"fas fa-caret-down\"><\/i>","library":"fa-solid"},"toggle":"burger"}" data-widget_type="nav-menu.default"><div class="elementor-widget-container"><nav class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-underline e--animation-fade"><ul id="menu-1-fbeb59f" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27045"><a href="https://www.devx.com/a-terms/" class="elementor-item">A</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27044"><a href="https://www.devx.com/b-terms/" class="elementor-item">B</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27043"><a href="https://www.devx.com/c-terms/" class="elementor-item">C</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27152"><a href="https://www.devx.com/d-terms/" class="elementor-item">D</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27153"><a href="https://www.devx.com/e-terms/" class="elementor-item">E</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27154"><a href="https://www.devx.com/f-terms/" class="elementor-item">F</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27155"><a href="https://www.devx.com/g-terms/" class="elementor-item">G</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27156"><a href="https://www.devx.com/h-terms/" class="elementor-item">H</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27157"><a href="https://www.devx.com/i-terms/" class="elementor-item">I</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27158"><a href="https://www.devx.com/j-terms/" class="elementor-item">J</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27159"><a href="https://www.devx.com/k-terms/" class="elementor-item">K</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27137"><a href="https://www.devx.com/l-terms/" class="elementor-item">L</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27151"><a href="https://www.devx.com/m-terms/" class="elementor-item">M</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27150"><a href="https://www.devx.com/n-terms/" class="elementor-item">N</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27149"><a href="https://www.devx.com/o-terms/" class="elementor-item">O</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27148"><a href="https://www.devx.com/p-terms/" class="elementor-item">P</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27147"><a href="https://www.devx.com/q-terms/" class="elementor-item">Q</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27146"><a href="https://www.devx.com/r-terms/" class="elementor-item">R</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27145"><a href="https://www.devx.com/s-terms/" class="elementor-item">S</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27144"><a href="https://www.devx.com/t-terms/" class="elementor-item">T</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27143"><a href="https://www.devx.com/u-terms/" class="elementor-item">U</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27142"><a href="https://www.devx.com/v-terms/" class="elementor-item">V</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27141"><a href="https://www.devx.com/w-terms/" class="elementor-item">W</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27140"><a href="https://www.devx.com/x-terms/" class="elementor-item">X</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27139"><a href="https://www.devx.com/y-terms/" class="elementor-item">Y</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27138"><a href="https://www.devx.com/z-terms/" class="elementor-item">Z</a></li></ul></nav><div class="elementor-menu-toggle" role="button" tabindex="0" aria-label="Menu Toggle" aria-expanded="false"> <i aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--open eicon-menu-bar"></i><i aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--close eicon-close"></i> <span class="elementor-screen-only">Menu</span></div><nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true"><ul id="menu-2-fbeb59f" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27045"><a href="https://www.devx.com/a-terms/" class="elementor-item" tabindex="-1">A</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27044"><a href="https://www.devx.com/b-terms/" class="elementor-item" tabindex="-1">B</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27043"><a href="https://www.devx.com/c-terms/" class="elementor-item" tabindex="-1">C</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27152"><a href="https://www.devx.com/d-terms/" class="elementor-item" tabindex="-1">D</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27153"><a href="https://www.devx.com/e-terms/" class="elementor-item" tabindex="-1">E</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27154"><a href="https://www.devx.com/f-terms/" class="elementor-item" tabindex="-1">F</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27155"><a href="https://www.devx.com/g-terms/" class="elementor-item" tabindex="-1">G</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27156"><a href="https://www.devx.com/h-terms/" class="elementor-item" tabindex="-1">H</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27157"><a href="https://www.devx.com/i-terms/" class="elementor-item" tabindex="-1">I</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27158"><a href="https://www.devx.com/j-terms/" class="elementor-item" tabindex="-1">J</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27159"><a href="https://www.devx.com/k-terms/" class="elementor-item" tabindex="-1">K</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27137"><a href="https://www.devx.com/l-terms/" class="elementor-item" tabindex="-1">L</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27151"><a href="https://www.devx.com/m-terms/" class="elementor-item" tabindex="-1">M</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27150"><a href="https://www.devx.com/n-terms/" class="elementor-item" tabindex="-1">N</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27149"><a href="https://www.devx.com/o-terms/" class="elementor-item" tabindex="-1">O</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27148"><a href="https://www.devx.com/p-terms/" class="elementor-item" tabindex="-1">P</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27147"><a href="https://www.devx.com/q-terms/" class="elementor-item" tabindex="-1">Q</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27146"><a href="https://www.devx.com/r-terms/" class="elementor-item" tabindex="-1">R</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27145"><a href="https://www.devx.com/s-terms/" class="elementor-item" tabindex="-1">S</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27144"><a href="https://www.devx.com/t-terms/" class="elementor-item" tabindex="-1">T</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27143"><a href="https://www.devx.com/u-terms/" class="elementor-item" tabindex="-1">U</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27142"><a href="https://www.devx.com/v-terms/" class="elementor-item" tabindex="-1">V</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27141"><a href="https://www.devx.com/w-terms/" class="elementor-item" tabindex="-1">W</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27140"><a href="https://www.devx.com/x-terms/" class="elementor-item" tabindex="-1">X</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27139"><a href="https://www.devx.com/y-terms/" class="elementor-item" tabindex="-1">Y</a></li><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27138"><a href="https://www.devx.com/z-terms/" class="elementor-item" tabindex="-1">Z</a></li></ul></nav></div></div><div class="elementor-element elementor-element-6963de5 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="6963de5" data-element_type="widget" data-widget_type="divider.default"><div class="elementor-widget-container"><div class="elementor-divider"> <span class="elementor-divider-separator"> </span></div></div></div></div></div></div></section></div></div><div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-c5e10d2" data-id="c5e10d2" data-element_type="column"><div class="elementor-widget-wrap"></div></div></div></footer><section class="elementor-section elementor-top-section elementor-element elementor-element-a4f01a6 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="a4f01a6" data-element_type="section"><div class="elementor-container elementor-column-gap-default"><div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-a1bc5b1" data-id="a1bc5b1" data-element_type="column"><div class="elementor-widget-wrap"></div></div><div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-e4f110b" data-id="e4f110b" data-element_type="column"><div class="elementor-widget-wrap elementor-element-populated"><div class="elementor-element elementor-element-4a914653 elementor-widget elementor-widget-heading" data-id="4a914653" data-element_type="widget" data-widget_type="heading.default"><div class="elementor-widget-container"><p class="elementor-heading-title elementor-size-default">©2024 Copyright DevX - All Rights Reserved. Registration or use of this site constitutes acceptance of our Terms of Service and Privacy Policy.</p></div></div><div class="elementor-element elementor-element-d2cf216 elementor-widget elementor-widget-text-editor" data-id="d2cf216" data-element_type="widget" data-widget_type="text-editor.default"><div class="elementor-widget-container"><p><strong><a href="https://www.devx.com/sitemap/">Sitemap</a> — </strong><strong><a href="https://www.devx.com/privacy-policy/">Privacy Policy</a></strong></p></div></div></div></div><div class="elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-1daca18" data-id="1daca18" data-element_type="column"><div class="elementor-widget-wrap"></div></div></div></section></div></footer> <script defer src="data:text/javascript;base64,c2V0SW50ZXJ2YWwoKCk9Pntjb25zdCBlbGVtZW50b3JQYWdlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tjbGFzcyo9ImVsZW1lbnRvciJdJykKY29uc3QgYWRUaHJpdmVMb2FkZWQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXS5jbGFzc0xpc3QuY29udGFpbnMoJ2FkdGhyaXZlLWRldmljZS1waG9uZScpfHxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdLmNsYXNzTGlzdC5jb250YWlucygnYWR0aHJpdmUtZGV2aWNlLXRhYmxldCcpfHxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdLmNsYXNzTGlzdC5jb250YWlucygnYWR0aHJpdmUtZGV2aWNlLWRlc2t0b3AnKQppZighYWRUaHJpdmVMb2FkZWQpe2NvbnNvbGUubG9nKCdXYWl0aW5nIGZvciBBZFRocml2ZS4uLicpCnJldHVybn0KaWYoZWxlbWVudG9yUGFnZSl7Y29uc3QgYWRzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5hZHRocml2ZS1hZCBpZnJhbWUiKTthZHMuZm9yRWFjaChhZD0+e2lmKHR5cGVvZiBhZC53aWR0aCE9PSJ1bmRlZmluZWQiJiZhZC53aWR0aCE9PSIxIil7YWQuc3R5bGUud2lkdGg9YWQud2lkdGgrInB4Ijt9fSl9fSw1MCk7"></script> <script data-no-optimize='1' data-cfasync='false' id='cls-insertion-cad9f10'>'use strict';(function(){function v(c,b){function a(){this.constructor=c}if("function"!==typeof b&&null!==b)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");N(c,b);c.prototype=null===b?Object.create(b):(a.prototype=b.prototype,new a)}function S(c,b){var a={},d;for(d in c)Object.prototype.hasOwnProperty.call(c,d)&&0>b.indexOf(d)&&(a[d]=c[d]);if(null!=c&&"function"===typeof Object.getOwnPropertySymbols){var e=0;for(d=Object.getOwnPropertySymbols(c);e<d.length;e++)0>b.indexOf(d[e])&&Object.prototype.propertyIsEnumerable.call(c,d[e])&&(a[d[e]]=c[d[e]])}return a}function I(c,b,a,d){var e=arguments.length,f=3>e?b:null===d?d=Object.getOwnPropertyDescriptor(b,a):d,g;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)f=Reflect.decorate(c,b,a,d);else for(var h=c.length-1;0<=h;h--)if(g=c[h])f=(3>e?g(f):3<e?g(b,a,f):g(b,a))||f;return 3<e&&f&&Object.defineProperty(b,a,f),f}function B(c,b){if("object"===typeof Reflect&&"function"===typeof Reflect.metadata)return Reflect.metadata(c,b)}function L(c){var b="function"===typeof Symbol&&Symbol.iterator,a=b&&c[b],d=0;if(a)return a.call(c);if(c&&"number"===typeof c.length)return{next:function(){c&&d>=c.length&&(c=void 0);return{value:c&&c[d++],done:!c}}};throw new TypeError(b?"Object is not iterable.":"Symbol.iterator is not defined.");}function r(c,b){var a="function"===typeof Symbol&&c[Symbol.iterator];if(!a)return c;c=a.call(c);var d,e=[];try{for(;(void 0===b||0<b--)&&!(d=c.next()).done;)e.push(d.value)}catch(g){var f={error:g}}finally{try{d&&!d.done&&(a=c["return"])&&a.call(c)}finally{if(f)throw f.error;}}return e}function w(c,b,a){if(a||2===arguments.length)for(var d=0,e=b.length,f;d<e;d++)!f&&d in b||(f||(f=Array.prototype.slice.call(b,0,d)),f[d]=b[d]);return c.concat(f||Array.prototype.slice.call(b))}function T(c,b){void 0===b&&(b={});b=b.insertAt;if(c&&"undefined"!==typeof document){var a=document.head||document.getElementsByTagName("head")[0],d=document.createElement("style");d.type="text/css";"top"===b?a.firstChild?a.insertBefore(d,a.firstChild):a.appendChild(d):a.appendChild(d);d.styleSheet?d.styleSheet.cssText=c:d.appendChild(document.createTextNode(c))}}window.adthriveCLS.buildDate="2024-05-16";var N=function(c,b){N=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,d){a.__proto__=d}||function(a,d){for(var e in d)Object.prototype.hasOwnProperty.call(d,e)&&(a[e]=d[e])};return N(c,b)},y=function(){y=Object.assign||function(c){for(var b,a=1,d=arguments.length;a<d;a++){b=arguments[a];for(var e in b)Object.prototype.hasOwnProperty.call(b,e)&&(c[e]=b[e])}return c};return y.apply(this,arguments)};"function"===typeof SuppressedError?SuppressedError:function(c,b,a){a=Error(a);return a.name="SuppressedError",a.error=c,a.suppressed=b,a};var q=new(function(){function c(){}c.prototype.info=function(b,a){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];this.call.apply(this,w([console.info,b,a],r(d),!1))};c.prototype.warn=function(b,a){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];this.call.apply(this,w([console.warn,b,a],r(d),!1))};c.prototype.error=function(b,a){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];this.call.apply(this,w([console.error,b,a],r(d),!1));this.sendErrorLogToCommandQueue.apply(this,w([b,a],r(d),!1))};c.prototype.event=function(b,a){for(var d,e=2;e<arguments.length;e++);"debug"===(null===(d=window.adthriveCLS)||void 0===d?void 0:d.bucket)&&this.info(b,a)};c.prototype.sendErrorLogToCommandQueue=function(b,a){for(var d=[],e=2;e<arguments.length;e++)d[e-2]=arguments[e];window.adthrive=window.adthrive||{};window.adthrive.cmd=window.adthrive.cmd||[];window.adthrive.cmd.push(function(){void 0!==window.adthrive.logError&&"function"===typeof window.adthrive.logError&&window.adthrive.logError(b,a,d)})};c.prototype.call=function(b,a,d){for(var e=[],f=3;f<arguments.length;f++)e[f-3]=arguments[f];f=["%c".concat(a,"::").concat(d," ")];var g=["color: #999; font-weight: bold;"];0<e.length&&"string"===typeof e[0]&&f.push(e.shift());g.push.apply(g,w([],r(e),!1));try{Function.prototype.apply.call(b,console,w([f.join("")],r(g),!1))}catch(h){console.error(h)}};return c}()),u=function(c,b){return null==c||c!==c?b:c},na=function(c){var b=c.clientWidth;getComputedStyle&&(c=getComputedStyle(c,null),b-=parseFloat(c.paddingLeft||"0")+parseFloat(c.paddingRight||"0"));return b},oa=function(c){var b=c.offsetHeight,a=c.offsetWidth,d=c.getBoundingClientRect(),e=document.body,f=document.documentElement;c=Math.round(d.top+(window.pageYOffset||f.scrollTop||e.scrollTop)-(f.clientTop||e.clientTop||0));d=Math.round(d.left+ (window.pageXOffset||f.scrollLeft||e.scrollLeft)-(f.clientLeft||e.clientLeft||0));return{top:c,left:d,bottom:c+b,right:d+a,width:a,height:b}},pa=function(c){void 0===c&&(c=window.location.search);var b=0===c.indexOf("?")?1:0;return c.slice(b).split("&").reduce(function(a,d){d=r(d.split("="),2);a.set(d[0],d[1]);return a},new Map)},qa=function(c){var b={},a=pa().get(c);if(a)try{var d=decodeURIComponent(a);b=JSON.parse(d);q.event("ExperimentOverridesUtil","getExperimentOverrides",c,b)}catch(e){}return b},E=function(){var c=navigator.userAgent,b=/Tablet|iPad|Playbook|Nook|webOS|Kindle|Android (?!.*Mobile).*Safari|CrOS/i.test(c);return/Mobi|iP(hone|od)|Opera Mini/i.test(c)&&!b},ra=function(c){void 0===c&&(c=document);return(c===document?document.body:c).getBoundingClientRect().top},sa=function(c){return c.includes(",")?c.split(","):[c]},ta=function(c){void 0===c&&(c=document);c=c.querySelectorAll("article");return 0===c.length?null:(c=Array.from(c).reduce(function(b,a){return a.offsetHeight>b.offsetHeight?a:b}))&&c.offsetHeight>1.5*window.innerHeight?c:null},ua=function(c,b,a){void 0===a&&(a=document);var d=ta(a),e=d?[d]:[],f=[];c.forEach(function(h){var k=Array.from(a.querySelectorAll(h.elementSelector)).slice(0,h.skip);sa(h.elementSelector).forEach(function(l){var p=a.querySelectorAll(l);l=function(t){var n=p[t];if(b.map.some(function(x){return x.el.isEqualNode(n)}))return"continue";(t=n&&n.parentElement)&&t!==document.body?e.push(t):e.push(n);-1===k.indexOf(n)&&f.push({dynamicAd:h,element:n})};for(var m=0;m<p.length;m++)l(m)})});var g=ra(a);c=f.sort(function(h,k){return h.element.getBoundingClientRect().top-g-(k.element.getBoundingClientRect().top-g)});return[e,c]},va=function(c,b,a){void 0===a&&(a=document);b=r(ua(c,b,a),2);c=b[0];b=b[1];if(0===c.length)throw Error("No Main Content Elements Found");return[Array.from(c).reduce(function(d,e){return e.offsetHeight>d.offsetHeight?e:d})||document.body,b]},M=new(function(){function c(){var b=this;this.name="StorageHandler";this.disable=!1;this.removeLocalStorageValue=function(a){window.localStorage.removeItem("adthrive_".concat(a.toLowerCase()))};this.getLocalStorageValue=function(a,d,e,f,g){void 0===d&&(d=!0);void 0===e&&(e=!0);if(b.disable)return null;try{var h=window.localStorage.getItem("".concat(d?"adthrive_":"").concat(e?a.toLowerCase():a));if(h){var k=JSON.parse(h),l=void 0!==f&&Date.now()-k.created>=f;if(k&&!l)return g&&b.setLocalStorageValue(a,k.value,d),k.value}}catch(p){}return null};this.setLocalStorageValue=function(a,d,e){void 0===e&&(e=!0);try{e=e?"adthrive_":"";var f={value:d,created:Date.now()};window.localStorage.setItem("".concat(e).concat(a.toLowerCase()),JSON.stringify(f))}catch(g){}};this.isValidABGroupLocalStorageValue=function(a){return void 0!==a&&null!==a&&!("number"===typeof a&&isNaN(a))};this.getOrSetLocalStorageValue=function(a,d,e,f,g,h,k){void 0===f&&(f=!0);void 0===g&&(g=!0);void 0===k&&(k=!0);e=b.getLocalStorageValue(a,k,f,e,g);if(null!==e)return e;d=d();b.setLocalStorageValue(a,d,k);h&&h(d);return d};this.getOrSetABGroupLocalStorageValue=function(a,d,e,f,g){var h;void 0===f&&(f=!0);e=b.getLocalStorageValue("abgroup",!0,!0,e,f);if(null!==e&&(f=e[a],b.isValidABGroupLocalStorageValue(f)))return f;d=d();a=y(y({},e),(h={},h[a]=d,h));b.setLocalStorageValue("abgroup",a);g&&g();return d}}c.prototype.init=function(){};return c}()),z;(function(c){c.amznbid="amznbid";c.amzniid="amzniid";c.amznp="amznp";c.amznsz="amznsz"})(z||(z={}));var D;(function(c){c.ThirtyThreeAcross="33across";c.Adform="adform";c.AidemServer="aidem_ss";c.AppNexus="appnexus";c.AmazonTAM="amazon";c.AmazonUAM="AmazonUAM";c.Colossus="colossus";c.ColossusServer="col_ss";c.Conversant="conversant";c.Concert="concert";c.Criteo="criteo";c.GumGum="gumgum";c.ImproveDigital="improvedigital";c.ImproveDigitalServer="improve_ss";c.IndexExchange="ix";c.Kargo="kargo";c.KargoServer="krgo_ss";c.MediaGrid="grid";c.MediaGridVideo="gridvid";c.Nativo="nativo";c.OpenX="openx";c.Ogury="ogury";c.OpenXServer="opnx_ss";c.Ozone="ozone";c.Pubmatic="pubmatic";c.PubmaticServer="pubm_ss";c.ResetDigital="resetdigital";c.Roundel="roundel";c.Rtbhouse="rtbhouse";c.Rubicon="rubicon";c.RubiconServer="rubi_ss";c.Sharethrough="sharethrough";c.Teads="teads";c.Triplelift="triplelift";c.TripleliftServer="tripl_ss";c.TTD="ttd";c.Undertone="undertone";c.UndertoneServer="under_ss";c.Unruly="unruly";c.YahooSSP="yahoossp";c.YahooSSPServer="yah_ss";c.Verizon="verizon";c.Yieldmo="yieldmo"})(D||(D={}));var U;(function(c){c.Prebid="prebid";c.GAM="gam";c.Amazon="amazon";c.Marmalade="marmalade";c.Floors="floors";c.CMP="cmp";c.Optable="optable"})(U||(U={}));var V;(function(c){c.cm="cm";c.fbrap="fbrap";c.rapml="rapml"})(V||(V={}));var W;(function(c){c.lazy="lazy";c.raptive="raptive";c.refresh="refresh";c.session="session";c.crossDomain="crossdomain";c.highSequence="highsequence";c.lazyBidPool="lazyBidPool"})(W||(W={}));var X;(function(c){c.lazy="l";c.raptive="rapml";c.refresh="r";c.session="s";c.crossdomain="c";c.highsequence="hs";c.lazyBidPool="lbp"})(X||(X={}));var Y;(function(c){c.Version="Version";c.SharingNotice="SharingNotice";c.SaleOptOutNotice="SaleOptOutNotice";c.SharingOptOutNotice="SharingOptOutNotice";c.TargetedAdvertisingOptOutNotice="TargetedAdvertisingOptOutNotice";c.SensitiveDataProcessingOptOutNotice="SensitiveDataProcessingOptOutNotice";c.SensitiveDataLimitUseNotice="SensitiveDataLimitUseNotice";c.SaleOptOut="SaleOptOut";c.SharingOptOut="SharingOptOut";c.TargetedAdvertisingOptOut="TargetedAdvertisingOptOut";c.SensitiveDataProcessing="SensitiveDataProcessing";c.KnownChildSensitiveDataConsents="KnownChildSensitiveDataConsents";c.PersonalDataConsents="PersonalDataConsents";c.MspaCoveredTransaction="MspaCoveredTransaction";c.MspaOptOutOptionMode="MspaOptOutOptionMode";c.MspaServiceProviderMode="MspaServiceProviderMode";c.SubSectionType="SubsectionType";c.Gpc="Gpc"})(Y||(Y={}));var Z;(function(c){c[c.NA=0]="NA";c[c.OptedOut=1]="OptedOut";c[c.OptedIn=2]="OptedIn"})(Z||(Z={}));var C;(function(c){c.AdDensity="addensity";c.AdLayout="adlayout";c.FooterCloseButton="footerclose";c.Interstitial="interstitial";c.RemoveVideoTitleWrapper="removevideotitlewrapper";c.StickyOutstream="stickyoutstream";c.StickyOutstreamOnStickyPlayer="sospp";c.VideoAdvancePlaylistRelatedPlayer="videoadvanceplaylistrp";c.MobileStickyPlayerPosition="mspp"})(C||(C={}));var J;(function(c){c.Desktop="desktop";c.Mobile="mobile"})(J||(J={}));var G;(function(c){c.Video_Collapse_Autoplay_SoundOff="Video_Collapse_Autoplay_SoundOff";c.Video_Individual_Autoplay_SOff="Video_Individual_Autoplay_SOff";c.Video_Coll_SOff_Smartphone="Video_Coll_SOff_Smartphone";c.Video_In_Post_ClicktoPlay_SoundOn="Video_In-Post_ClicktoPlay_SoundOn"})(G||(G={}));var aa;(aa||(aa={})).None="none";var ba;(function(c){c.Default="default";c.AZ_Animals="5daf495ed42c8605cfc74b0b";c.Natashas_Kitchen="55bccc97303edab84afd77e2";c.RecipeTin_Eats="55cb7e3b4bc841bd0c4ea577";c.Sallys_Baking_Recipes="566aefa94856897050ee7303";c.Spend_With_Pennies="541917f5a90318f9194874cf"})(ba||(ba={}));var wa=function(c,b){var a=c.adDensityEnabled;c=c.adDensityLayout.pageOverrides.find(function(d){return!!document.querySelector(d.pageSelector)&&(d[b].onePerViewport||"number"===typeof d[b].adDensity)});return a?!c:!0},ca=function(c){try{return{valid:!0,elements:document.querySelectorAll(c)}}catch(b){return y({valid:!1},b)}},da=function(c){return""===c?{valid:!0}:ca(c)},xa=function(c){var b=c.reduce(function(a,d){return d.weight?d.weight+a:a},0);return 0<c.length&&c.every(function(a){var d=a.value;a=a.weight;return!(void 0===d||null===d||"number"===typeof d&&isNaN(d)||!a)})&&100===b},ya=["siteId","siteName","adOptions","breakpoints","adUnits"];z=function(){function c(){this._timeOrigin=0}c.prototype.resetTimeOrigin=function(){this._timeOrigin=window.performance.now()};c.prototype.now=function(){try{return Math.round(window.performance.now()-this._timeOrigin)}catch(b){return 0}};return c}();window.adthrive.windowPerformance=window.adthrive.windowPerformance||new z;z=window.adthrive.windowPerformance;var O=z.now.bind(z),za=function(c){function b(a){var d=c.call(this)||this;d._featureRollouts=a.enabled?a.siteAds.featureRollouts||{}:{};return d} v(b,c);return b}(function(){function c(){this._featureRollouts={}}Object.defineProperty(c.prototype,"siteFeatureRollouts",{get:function(){return this._featureRollouts},enumerable:!1,configurable:!0});c.prototype.isRolloutEnabled=function(b){return this._featureRollouts&&this._featureRollouts[b]?this._featureRollouts[b].enabled:!1};return c}()),ea=function(){function c(){this._clsGlobalData=window.adthriveCLS}Object.defineProperty(c.prototype,"enabled",{get:function(){var b;if(b=!!this._clsGlobalData&&!!this._clsGlobalData.siteAds)a:{b=this._clsGlobalData.siteAds;var a=void 0;void 0===a&&(a=ya);if(b){for(var d=0;d<a.length;d++)if(!b[a[d]]){b=!1;break a}b=!0}else b=!1}return b},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"error",{get:function(){return!(!this._clsGlobalData||!this._clsGlobalData.error)},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"siteAds",{get:function(){return this._clsGlobalData.siteAds},set:function(b){this._clsGlobalData.siteAds=b},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"disableAds",{get:function(){return this._clsGlobalData.disableAds},set:function(b){this._clsGlobalData.disableAds=b},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"enabledLocations",{get:function(){return this._clsGlobalData.enabledLocations},set:function(b){this._clsGlobalData.enabledLocations=b},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"injectedFromPlugin",{get:function(){return this._clsGlobalData.injectedFromPlugin},set:function(b){this._clsGlobalData.injectedFromPlugin=b},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"injectedFromSiteAds",{get:function(){return this._clsGlobalData.injectedFromSiteAds},set:function(b){this._clsGlobalData.injectedFromSiteAds=b},enumerable:!1,configurable:!0});c.prototype.overwriteInjectedSlots=function(b){this._clsGlobalData.injectedSlots=b};c.prototype.setInjectedSlots=function(b){this._clsGlobalData.injectedSlots=this._clsGlobalData.injectedSlots||[];this._clsGlobalData.injectedSlots.push(b)};Object.defineProperty(c.prototype,"injectedSlots",{get:function(){return this._clsGlobalData.injectedSlots},enumerable:!1,configurable:!0});c.prototype.setInjectedVideoSlots=function(b){this._clsGlobalData.injectedVideoSlots=this._clsGlobalData.injectedVideoSlots||[];this._clsGlobalData.injectedVideoSlots.push(b)};Object.defineProperty(c.prototype,"injectedVideoSlots",{get:function(){return this._clsGlobalData.injectedVideoSlots},enumerable:!1,configurable:!0});c.prototype.setInjectedScripts=function(b){this._clsGlobalData.injectedScripts=this._clsGlobalData.injectedScripts||[];this._clsGlobalData.injectedScripts.push(b)};Object.defineProperty(c.prototype,"getInjectedScripts",{get:function(){return this._clsGlobalData.injectedScripts},enumerable:!1,configurable:!0});c.prototype.setExperiment=function(b,a,d){void 0===d&&(d=!1);this._clsGlobalData.experiments=this._clsGlobalData.experiments||{};this._clsGlobalData.siteExperiments=this._clsGlobalData.siteExperiments||{};(d?this._clsGlobalData.siteExperiments:this._clsGlobalData.experiments)[b]=a};c.prototype.getExperiment=function(b,a){void 0===a&&(a=!1);return(a=a?this._clsGlobalData.siteExperiments:this._clsGlobalData.experiments)&&a[b]};c.prototype.setWeightedChoiceExperiment=function(b,a,d){void 0===d&&(d=!1);this._clsGlobalData.experimentsWeightedChoice=this._clsGlobalData.experimentsWeightedChoice||{};this._clsGlobalData.siteExperimentsWeightedChoice=this._clsGlobalData.siteExperimentsWeightedChoice||{};(d?this._clsGlobalData.siteExperimentsWeightedChoice:this._clsGlobalData.experimentsWeightedChoice)[b]=a};c.prototype.getWeightedChoiceExperiment=function(b,a){var d,e;void 0===a&&(a=!1);return(a=a?null===(d=this._clsGlobalData)||void 0===d?void 0:d.siteExperimentsWeightedChoice:null===(e=this._clsGlobalData)||void 0===e?void 0:e.experimentsWeightedChoice)&&a[b]};Object.defineProperty(c.prototype,"branch",{get:function(){return this._clsGlobalData.branch},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"bucket",{get:function(){return this._clsGlobalData.bucket},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"videoDisabledFromPlugin",{get:function(){return this._clsGlobalData.videoDisabledFromPlugin},set:function(b){this._clsGlobalData.videoDisabledFromPlugin=b},enumerable:!1,configurable:!0});Object.defineProperty(c.prototype,"targetDensityLog",{get:function(){return this._clsGlobalData.targetDensityLog},set:function(b){this._clsGlobalData.targetDensityLog=b},enumerable:!1,configurable:!0});c.prototype.shouldHalveIOSDensity=function(){var b=new za(this),a=void 0;void 0===a&&(a=navigator.userAgent);return/iP(hone|od|ad)/i.test(a)&&b.isRolloutEnabled("iOS-Resolution")};c.prototype.getTargetDensity=function(b){return this.shouldHalveIOSDensity()?b/2:b};Object.defineProperty(c.prototype,"removeVideoTitleWrapper",{get:function(){return this._clsGlobalData.siteAds.adOptions.removeVideoTitleWrapper},enumerable:!1,configurable:!0});return c}(),Aa=function(){function c(){}c.getScrollTop=function(){return(window.pageYOffset||document.documentElement.scrollTop)-(document.documentElement.clientTop||0)};c.getScrollBottom=function(){return this.getScrollTop()+(document.documentElement.clientHeight||0)};c.shufflePlaylist=function(b){for(var a=b.length,d,e;0!==a;)e=Math.floor(Math.random()*b.length),--a,d=b[a],b[a]=b[e],b[e]=d;return b};c.isMobileLandscape=function(){return window.matchMedia("(orientation: landscape) and (max-height: 480px)").matches};c.playerViewable=function(b){b=b.getBoundingClientRect();return this.isMobileLandscape()?window.innerHeight>b.top+b.height/2&&0<b.top+b.height/2:window.innerHeight>b.top+b.height/2};c.createQueryString=function(b){return Object.keys(b).map(function(a){return"".concat(a,"=").concat(b[a])}).join("&")};c.createEncodedQueryString=function(b){return Object.keys(b).map(function(a){return"".concat(a,"=").concat(encodeURIComponent(b[a]))}).join("&")};c.setMobileLocation=function(b){b=b||"bottom-right";"top-left"===b?b="adthrive-collapse-top-left":"top-right"===b?b="adthrive-collapse-top-right":"bottom-left"===b?b="adthrive-collapse-bottom-left":"bottom-right"===b?b="adthrive-collapse-bottom-right":"top-center"===b&&(b=E()?"adthrive-collapse-top-center":"adthrive-collapse-bottom-right");return b};c.addMaxResolutionQueryParam=function(b){var a=E()?"320":"1280";a="max_resolution=".concat(a);var d=r(String(b).split("?"),2);b=d[0];a=(d=d[1])?d+"&".concat(a):a;return"".concat(b,"?").concat(a)};return c}(),Ba=function(){return function(c){this._clsOptions=c;this.removeVideoTitleWrapper=u(this._clsOptions.siteAds.adOptions.removeVideoTitleWrapper,!1);c=this._clsOptions.siteAds.videoPlayers;this.footerSelector=u(c&&c.footerSelector,"");this.players=u(c&&c.players.map(function(b){b.mobileLocation=Aa.setMobileLocation(b.mobileLocation);return b}),[]);this.relatedSettings=c&&c.contextual}}(),Ca=function(){return function(c){this.relatedPlayerAdded=this.playlistPlayerAdded=this.mobileStickyPlayerOnPage=!1;this.footerSelector="";this.removeVideoTitleWrapper=!1;this.videoAdOptions=new Ba(c);this.players=this.videoAdOptions.players;this.relatedSettings=this.videoAdOptions.relatedSettings;this.removeVideoTitleWrapper=this.videoAdOptions.removeVideoTitleWrapper;this.footerSelector=this.videoAdOptions.footerSelector}}();D=function(){return function(){}}();var H=function(c){function b(a){var d=c.call(this)||this;d._probability=a;return d}v(b,c);b.prototype.get=function(){if(0>this._probability||1<this._probability)throw Error("Invalid probability: ".concat(this._probability));return Math.random()<this._probability};return b}(D);z=function(){function c(){this._clsOptions=new ea;this.shouldUseCoreExperimentsConfig=!1}c.prototype.setExperimentKey=function(b){void 0===b&&(b=!1);this._clsOptions.setExperiment(this.abgroup,this.result,b)};return c}();var Da=function(c){function b(){var a=c.call(this)||this;a._result=!1;a._choices=[{choice:!0},{choice:!1}];a.key="RemoveLargeSize";a.abgroup="smhd100";a._result=a.run();a.setExperimentKey();return a}v(b,c);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){return(new H(.1)).get()};return b}(z),fa=function(c,b,a,d,e,f){c=Math.round(f-e);b=[];e=[];b.push("(",a.map(function(){return"%o"}).join(", "),")");e.push.apply(e,w([],r(a),!1));void 0!==d&&(b.push(" => %o"),e.push(d));b.push(" %c(".concat(c,"ms)"));e.push("color: #999;")},ha=function(c,b,a){var d=void 0!==a.get?a.get:a.value;return function(){for(var e=[],f=0;f<arguments.length;f++)e[f]=arguments[f];try{var g=O(),h=d.apply(this,e);if(h instanceof Promise)return h.then(function(l){var p=O();fa(c,b,e,l,g,p);return Promise.resolve(l)}).catch(function(l){l.logged||(q.error(c,b,l),l.logged=!0);throw l;});var k=O();fa(c,b,e,h,g,k);return h}catch(l){throw l.logged||(q.error(c,b,l),l.logged=!0),l;}}},P=function(c,b){void 0===b&&(b=!1);return function(a){var d,e=Object.getOwnPropertyNames(a.prototype).filter(function(m){return b||0!==m.indexOf("_")}).map(function(m){return[m,Object.getOwnPropertyDescriptor(a.prototype,m)]});try{for(var f=L(e),g=f.next();!g.done;g=f.next()){var h=r(g.value,2),k=h[0],l=h[1];void 0!==l&&"function"===typeof l.value?a.prototype[k]=ha(c,k,l):void 0!==l&&void 0!==l.get&&"function"===typeof l.get&&Object.defineProperty(a.prototype,k,y(y({},l),{get:ha(c,k,l)}))}}catch(m){var p={error:m}}finally{try{g&&!g.done&&(d=f.return)&&d.call(f)}finally{if(p)throw p.error;}}}},Ea=function(c){function b(a){var d=c.call(this)||this;d._result=!1;d.key="ParallaxAdsExperiment";d.abgroup="parallax";d._choices=[{choice:!0},{choice:!1}];d.weight=.5;E()&&a.largeFormatsMobile&&(d._result=d.run(),d.setExperimentKey());return d}v(b,c);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){return(new H(this.weight)).get()};return b=I([P("ParallaxAdsExperiment"),B("design:paramtypes",[Object])],b)}(z),Fa=function(c){function b(){var a=c.call(this)||this;a._result=!1;a._choices=[{choice:!0},{choice:!1}];a.key="mrsf";a.abgroup="mrsf";E()&&(a._result=a.run(),a.setExperimentKey());return a}v(b,c);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){return(new H(1)).get()};return b}(z),Ga=[[728,90],[300,250],[300,600],[320,50],[970,250],[160,600],[300,1050],[336,280],[970,90],[300,50],[320,100],[468,60],[250,250],[120,240],[1,1],[300,300],[552,334],[300,420],[728,250],[320,300],[300,390]],Ha=[[300,600],[160,600]],Ia=new Map([["Footer",1],["Header",2],["Sidebar",3],["Content",4],["Recipe",5],["Sidebar_sticky",6],["Below Post",7]]),Ja=function(c){return Ga.filter(function(b){b=r(b,2);var a=b[0],d=b[1];return c.some(function(e){e=r(e,2);var f=e[1];return a===e[0]&&d===f})})},Ka=function(c,b,a,d,e){b=r(b,2);var f=b[0],g=b[1],h=c.location;b=c.sequence;return"Footer"===h?!("phone"===a&&320===f&&100===g):"Header"===h?!(100<g&&d.result):"Recipe"===h?!(e.result&&"phone"===a&&(300===f&&390===g||320===f&&300===g)):"Sidebar"===h?(a=c.adSizes.some(function(k){return 300>=r(k,2)[1]}),(d=300<g)&&!a?!0:9===b?!0:b&&5>=b?d?c.sticky:!0:!d):!0},La=function(c,b){var a=c.location;c=c.sticky;if("Recipe"===a&&b){var d=b.recipeMobile;b=b.recipeDesktop;if(E()&&(null===d||void 0===d?0:d.enabled)||!E()&&(null===b||void 0===b?0:b.enabled))return!0}return"Footer"===a||c},Ma=function(c,b){var a=b.adUnits,d=b.adTypes?(new Ea(b.adTypes)).result:!1,e=new Da,f=new Fa;return a.filter(function(g){return void 0!==g.dynamic&&g.dynamic.enabled}).map(function(g){var h=g.location.replace(/\s+/g,"_"),k="Sidebar"===h?0:2;return{auctionPriority:Ia.get(h)||8,location:h,sequence:u(g.sequence,1),sizes:Ja(g.adSizes).filter(function(l){return Ka(g,l,c,e,f)}).concat(d&&"Content"===g.location?Ha:[]),devices:g.devices,pageSelector:u(g.dynamic.pageSelector,"").trim(),elementSelector:u(g.dynamic.elementSelector,"").trim(),position:u(g.dynamic.position,"beforebegin"),max:Math.floor(u(g.dynamic.max,0)),spacing:u(g.dynamic.spacing,0),skip:Math.floor(u(g.dynamic.skip,0)),every:Math.max(Math.floor(u(g.dynamic.every,1)),1),classNames:g.dynamic.classNames||[],sticky:La(g,b.adOptions.stickyContainerConfig),stickyOverlapSelector:u(g.stickyOverlapSelector,"").trim(),autosize:g.autosize,special:u(g.targeting,[]).filter(function(l){return"special"===l.key}).reduce(function(l,p){return l.concat.apply(l,w([],r(p.value),!1))},[]),lazy:u(g.dynamic.lazy,!1),lazyMax:u(g.dynamic.lazyMax,k),lazyMaxDefaulted:0===g.dynamic.lazyMax?!1:!g.dynamic.lazyMax,name:g.name}})},ia=function(c,b){var a=na(b),d=c.sticky&&"Sidebar"===c.location;return c.sizes.filter(function(e){var f=d?e[1]<=window.innerHeight-100:!0;return(c.autosize?e[0]<=a||320>=e[0]:!0)&&f})},Na=function(){return function(c){this.clsOptions=c;this.enabledLocations=["Below_Post","Content","Recipe","Sidebar"]}}(),Oa=function(c){var b=document.body;c="adthrive-device-".concat(c);if(!b.classList.contains(c))try{b.classList.add(c)}catch(a){q.error("BodyDeviceClassComponent","init",{message:a.message}),b="classList"in document.createElement("_"),q.error("BodyDeviceClassComponent","init.support",{support:b})}},Q=function(c){return"adthrive-".concat(c.location.replace("_","-").toLowerCase())},ja=function(c){return"".concat(Q(c),"-").concat(c.sequence)},Pa=function(c){return T('\n .adthrive-device-phone .adthrive-sticky-content {\n height: 450px !important;\n margin-bottom: 100px !important;\n }\n .adthrive-content.adthrive-sticky {\n position: -webkit-sticky;\n position: sticky !important;\n top: 42px !important;\n margin-top: 42px !important;\n }\n .adthrive-content.adthrive-sticky:after {\n content: "\u2014 Advertisement. Scroll down to continue. \u2014";\n font-size: 10pt;\n margin-top: 5px;\n margin-bottom: 5px;\n display:block;\n color: #888;\n }\n .adthrive-sticky-container {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n min-height:'.concat(c?c:400,"px !important;\n margin: 10px 0 10px 0;\n background-color: #FAFAFA;\n padding-bottom:0px;\n }\n "))},ka=function(c){return c.some(function(b){return null!==document.querySelector(b)})},Qa=function(c){function b(){var a=c.call(this)||this;a._result=!1;a._choices=[{choice:!0},{choice:!1}];a.key="RemoveRecipeCap";a.abgroup="rrc";a._result=a.run();a.setExperimentKey();return a}v(b,c);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){return(new H(1)).get()};return b}(z),R=function(c){function b(a,d){void 0===a&&(a=[]);var e=c.call(this)||this;e._choices=a;e._default=d;return e}v(b,c);b.fromArray=function(a,d){return new b(a.map(function(e){e=r(e,2);return{choice:e[0],weight:e[1]}}),d)};b.prototype.addChoice=function(a,d){this._choices.push({choice:a,weight:d})};b.prototype.get=function(){var a,d=100*Math.random(),e=0;try{for(var f=L(this._choices),g=f.next();!g.done;g=f.next()){var h=g.value,k=h.choice;e+=h.weight;if(e>=d)return k}}catch(p){var l={error:p}}finally{try{g&&!g.done&&(a=f.return)&&a.call(f)}finally{if(l)throw l.error;}}return this._default};Object.defineProperty(b.prototype,"totalWeight",{get:function(){return this._choices.reduce(function(a,d){return a+d.weight},0)},enumerable:!1,configurable:!0});return b}(D),Ra=function(c){for(var b=5381,a=c.length;a;)b=33*b^c.charCodeAt(--a);return b>>>0},la=function(){return function(c,b,a){var d=a.value;d&&(a.value=function(){for(var e=this,f=[],g=0;g<arguments.length;g++)f[g]=arguments[g];g=Array.isArray(this._choices)?Ra(JSON.stringify(this._choices)).toString(16):null;var h=this._expConfigABGroup?this._expConfigABGroup:this.abgroup;h=h?h.toLowerCase():this.key?this.key.toLowerCase():"";g=g?"".concat(h,"_").concat(g):h;g=this.localStoragePrefix?"".concat(this.localStoragePrefix,"-").concat(g):g;h=M.getLocalStorageValue("branch");!1===(h&&h.enabled)&&M.removeLocalStorageValue(g);return M.getOrSetABGroupLocalStorageValue(g,function(){return d.apply(e,f)},864E5)})}};D=function(c){function b(){var a=c.apply(this,w([],r(arguments),!1))||this;a._resultValidator=function(){return!0};return a}v(b,c);b.prototype._isValidResult=function(a){var d=this;return c.prototype._isValidResult.call(this,a,function(){return d._resultValidator(a)||"control"===a})};b.prototype.run=function(){if(!this.enabled)return q.error("CLSWeightedChoiceSiteExperiment","run","() => %o","No experiment config found. Defaulting to control."),"control";if(!this._mappedChoices||0===this._mappedChoices.length)return q.error("CLSWeightedChoiceSiteExperiment","run","() => %o","No experiment variants found. Defaulting to control."),"control";var a=(new R(this._mappedChoices)).get();if(this._isValidResult(a))return a;q.error("CLSWeightedChoiceSiteExperiment","run","() => %o","Invalid result from experiment choices. Defaulting to control.");return"control"};return b}(function(){function c(){}Object.defineProperty(c.prototype,"enabled",{get:function(){return void 0!==this.experimentConfig},enumerable:!1,configurable:!0});c.prototype._isValidResult=function(b,a){void 0===a&&(a=function(){return!0});return a()&&M.isValidABGroupLocalStorageValue(b)};return c}());var ma=function(){function c(b){var a=this,d,e;this.siteExperiments=[];this._clsOptions=b;this._device=E()?"mobile":"desktop";this.siteExperiments=null!==(e=null===(d=this._clsOptions.siteAds.siteExperiments)||void 0===d?void 0:d.filter(function(f){var g=f.key;var h=a._device;if(f){var k=!!f.enabled,l=null==f.dateStart||Date.now()>=f.dateStart,p=null==f.dateEnd||Date.now()<=f.dateEnd,m=null===f.selector||""!==f.selector&&!!document.querySelector(f.selector),t="mobile"===f.platform&&"mobile"===h;h="desktop"===f.platform&&"desktop"===h;t=null===f.platform||"all"===f.platform||t||h;(h="bernoulliTrial"===f.experimentType?1===f.variants.length:xa(f.variants))||q.error("SiteTest","validateSiteExperiment","experiment presented invalid choices for key:",f.key,f.variants);f=k&&l&&p&&m&&t&&h}else f=!1;a:switch(k=a._clsOptions.siteAds,g){case C.AdDensity:var n=wa(k,a._device);break a;case C.StickyOutstream:var x,A;n=(g=null===(A=null===(x=null===(n=k.videoPlayers)||void 0===n?void 0:n.partners)||void 0===x?void 0:x.stickyOutstream)||void 0===A?void 0:A.blockedPageSelectors)?!document.querySelector(g):!0;break a;case C.Interstitial:n=(n=k.adOptions.interstitialBlockedPageSelectors)?!document.querySelector(n):!0;break a;default:n=!0}return f&&n}))&&void 0!==e?e:[]}c.prototype.getSiteExperimentByKey=function(b){var a=this.siteExperiments.filter(function(f){return f.key.toLowerCase()===b.toLowerCase()})[0],d=qa("at_site_features"),e=typeof((null===a||void 0===a?0:a.variants[1])?null===a||void 0===a?void 0:a.variants[1].value:null===a||void 0===a?void 0:a.variants[0].value)===typeof d[b];a&&d[b]&&e&&(a.variants=[{displayName:"test",value:d[b],weight:100,id:0}]);return a};return c}(),Sa=function(c){function b(a){var d=c.call(this)||this;d._choices=[];d._mappedChoices=[];d._result="";d._resultValidator=function(e){return"string"===typeof e};d.key=C.AdLayout;d.abgroup=C.AdLayout;d._clsSiteExperiments=new ma(a);d.experimentConfig=d._clsSiteExperiments.getSiteExperimentByKey(d.key);d.enabled&&d.experimentConfig&&(d._choices=d.experimentConfig.variants,d._mappedChoices=d._mapChoices(),d._result=d.run(),a.setWeightedChoiceExperiment(d.abgroup,d._result,!0));return d}v(b,c);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){if(!this.enabled)return q.error("CLSAdLayoutSiteExperiment","run","() => %o","No experiment config found. Defaulting to empty class name."),"";var a=(new R(this._mappedChoices)).get();if(this._isValidResult(a))return a;q.error("CLSAdLayoutSiteExperiment","run","() => %o","Invalid result from experiment choices. Defaulting to empty class name.");return""};b.prototype._mapChoices=function(){return this._choices.map(function(a){return{weight:a.weight,choice:a.value}})};I([la(),B("design:type",Function),B("design:paramtypes",[]),B("design:returntype",void 0)],b.prototype,"run",null);return b}(D),Ta=function(c){function b(a){var d=c.call(this)||this;d._choices=[];d._mappedChoices=[];d._result="control";d._resultValidator=function(e){return"number"===typeof e};d.key=C.AdDensity;d.abgroup=C.AdDensity;d._clsSiteExperiments=new ma(a);d.experimentConfig=d._clsSiteExperiments.getSiteExperimentByKey(d.key);d.enabled&&d.experimentConfig&&(d._choices=d.experimentConfig.variants,d._mappedChoices=d._mapChoices(),d._result=d.run(),a.setWeightedChoiceExperiment(d.abgroup,d._result,!0));return d}v(b,c);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){if(!this.enabled)return q.error("CLSTargetAdDensitySiteExperiment","run","() => %o","No experiment config found. Defaulting to control."),"control";var a=(new R(this._mappedChoices)).get();if(this._isValidResult(a))return a;q.error("CLSTargetAdDensitySiteExperiment","run","() => %o","Invalid result from experiment choices. Defaulting to control.");return"control"};b.prototype._mapChoices=function(){return this._choices.map(function(a){var d=a.value;return{weight:a.weight,choice:"number"===typeof d?(d||0)/100:"control"}})};I([la(),B("design:type",Function),B("design:paramtypes",[]),B("design:returntype",void 0)],b.prototype,"run",null);return b}(D),Ua=function(c){function b(){var a=c.call(this)||this;a._result=!1;a.abgroup="scae";a.key="StickyContainerAds";a._choices=[{choice:!0},{choice:!1}];a.weight=.99;a._result=a.run();a.setExperimentKey();return a}v(b,c);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){return(new H(this.weight)).get()};return b=I([P("StickyContainerAdsExperiment"),B("design:paramtypes",[])],b)}(z),Va=function(c){function b(){var a=c.call(this)||this;a._result=!1;a.abgroup="scre";a.key="StickyContainerRecipe";a._choices=[{choice:!0},{choice:!1}];a.weight=.99;a._result=a.run();a.setExperimentKey();return a}v(b,c);Object.defineProperty(b.prototype,"result",{get:function(){return this._result},enumerable:!1,configurable:!0});b.prototype.run=function(){return(new H(this.weight)).get()};return b=I([P("StickyContainerRecipeExperiment"),B("design:paramtypes",[])],b)}(z),Ya=function(){function c(b,a){this._clsOptions=b;this._adInjectionMap=a;this._mainContentHeight=this._recipeCount=0;this._mainContentDiv=null;this._totalAvailableElements=[];this._minDivHeight=250;this._densityDevice=J.Desktop;this._pubLog={onePerViewport:!1,targetDensity:0,targetDensityUnits:0,combinedMax:0};this._densityMax=.99;this._smallerIncrementAttempts=0;this._absoluteMinimumSpacingByDevice=250;this._usedAbsoluteMinimum=!1;this._infPageEndOffset=0;this.locationMaxLazySequence=new Map([["Recipe",5]]);this.locationToMinHeight={Below_Post:"250px",Content:"250px",Recipe:"250px",Sidebar:"250px"};a=this._clsOptions.siteAds.breakpoints;var d=a.tablet;var e=window.innerWidth;a=e>=a.desktop?"desktop":e>=d?"tablet":"phone";this._device=a;this._config=new Na(b);this._clsOptions.enabledLocations=this._config.enabledLocations;this._clsTargetAdDensitySiteExperiment=this._clsOptions.siteAds.siteExperiments?new Ta(this._clsOptions):null;this._stickyContainerAdsExperiment=new Ua;this._stickyContainerRecipeExperiment=new Va;this._removeRecipeCapExperiment=new Qa}c.prototype.start=function(){var b=this,a,d,e,f;try{Oa(this._device);var g=new Sa(this._clsOptions);if(g.enabled){var h=g.result,k=h.startsWith(".")?h.substring(1):h;if(/^[-_a-zA-Z]+[-_a-zA-Z0-9]*$/.test(k))try{document.body.classList.add(k)}catch(m){q.error("ClsDynamicAdsInjector","start","Uncaught CSS Class error: ".concat(m))}else q.error("ClsDynamicAdsInjector","start","Invalid class name: ".concat(k))}var l=Ma(this._device,this._clsOptions.siteAds).filter(function(m){return b._locationEnabled(m)}).filter(function(m){return m.devices.includes(b._device)}).filter(function(m){return 0===m.pageSelector.length||null!==document.querySelector(m.pageSelector)}),p=this.inject(l);(null===(d=null===(a=this._clsOptions.siteAds.adOptions.stickyContainerConfig)||void 0===a?void 0:a.content)||void 0===d?0:d.enabled)&&this._stickyContainerAdsExperiment.result&&!ka(this._clsOptions.siteAds.adOptions.stickyContainerConfig.blockedSelectors||[])&&Pa(null===(f=null===(e=this._clsOptions.siteAds.adOptions.stickyContainerConfig)||void 0===e?void 0:e.content)||void 0===f?void 0:f.minHeight);p.forEach(function(m){return b._clsOptions.setInjectedSlots(m)})}catch(m){q.error("ClsDynamicAdsInjector","start",m)}};c.prototype.inject=function(b,a){void 0===a&&(a=document);this._densityDevice="desktop"===this._device?J.Desktop:J.Mobile;this._overrideDefaultAdDensitySettingsWithSiteExperiment();var d=this._clsOptions.siteAds,e=u(d.adDensityEnabled,!0),f=d.adDensityLayout&&e;d=b.filter(function(g){return f?"Content"!==g.location:g});b=b.filter(function(g){return f?"Content"===g.location:null});return w(w([],r(d.length?this._injectNonDensitySlots(d,a):[]),!1),r(b.length?this._injectDensitySlots(b,a):[]),!1)};c.prototype._injectNonDensitySlots=function(b,a){var d,e=this,f,g,h;void 0===a&&(a=document);var k=[],l=[];this._stickyContainerRecipeExperiment.result&&b.some(function(n){return"Recipe"===n.location&&n.sticky})&&!ka((null===(f=this._clsOptions.siteAds.adOptions.stickyContainerConfig)||void 0===f?void 0:f.blockedSelectors)||[])&&(f=this._clsOptions.siteAds.adOptions.stickyContainerConfig,f="phone"===this._device?null===(g=null===f||void 0===f?void 0:f.recipeMobile)||void 0===g?void 0:g.minHeight:null===(h=null===f||void 0===f?void 0:f.recipeDesktop)||void 0===h?void 0:h.minHeight,T("\n .adthrive-recipe.adthrive-sticky {\n position: -webkit-sticky;\n position: sticky !important;\n top: 42px !important;\n margin-top: 42px !important;\n }\n .adthrive-recipe-sticky-container {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n min-height:".concat(f?f:400,"px !important;\n margin: 10px 0 10px 0;\n background-color: #FAFAFA;\n padding-bottom:0px;\n }\n ")));try{for(var p=L(b),m=p.next();!m.done;m=p.next())this._insertNonDensityAds(m.value,k,l,a)}catch(n){var t={error:n}}finally{try{m&&!m.done&&(d=p.return)&&d.call(p)}finally{if(t)throw t.error;}}l.forEach(function(n){n.element.style.minHeight=e.locationToMinHeight[n.location]});return k};c.prototype._injectDensitySlots=function(b,a){void 0===a&&(a=document);try{this._calculateMainContentHeightAndAllElements(b,a)}catch(h){return[]}var d=this._getDensitySettings(b,a);b=d.onePerViewport;var e=d.targetAll,f=d.targetDensityUnits,g=d.combinedMax;d=d.numberOfUnits;this._absoluteMinimumSpacingByDevice=b?window.innerHeight:this._absoluteMinimumSpacingByDevice;if(!d)return[];this._adInjectionMap.filterUsed();this._findElementsForAds(d,b,e,g,f,a);return this._insertAds()};c.prototype._overrideDefaultAdDensitySettingsWithSiteExperiment=function(){var b;if(null===(b=this._clsTargetAdDensitySiteExperiment)||void 0===b?0:b.enabled)b=this._clsTargetAdDensitySiteExperiment.result,"number"===typeof b&&(this._clsOptions.siteAds.adDensityEnabled=!0,this._clsOptions.siteAds.adDensityLayout[this._densityDevice].adDensity=b)};c.prototype._getDensitySettings=function(b,a){void 0===a&&(a=document);var d=this._clsOptions.siteAds.adDensityLayout,e=this._determineOverrides(d.pageOverrides);e=e.length?e[0]:d[this._densityDevice];d=this._clsOptions.getTargetDensity(e.adDensity);e=e.onePerViewport;var f=this._shouldTargetAllEligible(d),g=this._getTargetDensityUnits(d,f);b=this._getCombinedMax(b,a);a=Math.min.apply(Math,w([],r(w([this._totalAvailableElements.length,g],r(0<b?[b]:[]),!1)),!1));this._pubLog={onePerViewport:e,targetDensity:d,targetDensityUnits:g,combinedMax:b};return{onePerViewport:e,targetAll:f,targetDensityUnits:g,combinedMax:b,numberOfUnits:a}};c.prototype._determineOverrides=function(b){var a=this;return b.filter(function(d){var e=da(d.pageSelector);return""===d.pageSelector||e.elements&&e.elements.length}).map(function(d){return d[a._densityDevice]})};c.prototype._shouldTargetAllEligible=function(b){return b===this._densityMax};c.prototype._getTargetDensityUnits=function(b,a){return a?this._totalAvailableElements.length:Math.floor(b*this._mainContentHeight/(1-b)/this._minDivHeight)-this._recipeCount};c.prototype._getCombinedMax=function(b,a){void 0===a&&(a=document);return u(b.filter(function(d){try{var e=a.querySelector(d.elementSelector)}catch(f){}return e}).map(function(d){return Number(d.max)+Number(d.lazyMaxDefaulted?0:d.lazyMax)}).sort(function(d,e){return e-d})[0],0)};c.prototype._elementLargerThanMainContent=function(b){return b.offsetHeight>=this._mainContentHeight&&1<this._totalAvailableElements.length};c.prototype._elementDisplayNone=function(b){var a=window.getComputedStyle(b,null).display;return a&&"none"===a||"none"===b.style.display};c.prototype._isBelowMaxes=function(b,a){return this._adInjectionMap.map.length<b&&this._adInjectionMap.map.length<a};c.prototype._findElementsForAds=function(b,a,d,e,f,g){var h=this;void 0===g&&(g=document);this._clsOptions.targetDensityLog={onePerViewport:a,combinedMax:e,targetDensityUnits:f,targetDensityPercentage:this._pubLog.targetDensity,mainContentHeight:this._mainContentHeight,recipeCount:this._recipeCount,numberOfEls:this._totalAvailableElements.length};var k=function(l){var p;try{for(var m=L(h._totalAvailableElements),t=m.next();!t.done;t=m.next()){var n=t.value,x=n.dynamicAd,A=n.element;h._logDensityInfo(A,x.elementSelector,l);if(!(!d&&h._elementLargerThanMainContent(A)||h._elementDisplayNone(A)))if(h._isBelowMaxes(e,f))h._checkElementSpacing({dynamicAd:x,element:A,insertEvery:l,targetAll:d,target:g});else break}}catch(K){var F={error:K}}finally{try{t&&!t.done&&(p=m.return)&&p.call(m)}finally{if(F)throw F.error;}}!h._usedAbsoluteMinimum&&5>h._smallerIncrementAttempts&&(++h._smallerIncrementAttempts,k(h._getSmallerIncrement(l)))};b=this._getInsertEvery(b,a,f);k(b)};c.prototype._getSmallerIncrement=function(b){b*=.6;b<=this._absoluteMinimumSpacingByDevice&&(b=this._absoluteMinimumSpacingByDevice,this._usedAbsoluteMinimum=!0);return b};c.prototype._insertNonDensityAds=function(b,a,d,e){void 0===e&&(e=document);var f=0,g=0,h=0;0<b.spacing&&(g=f=window.innerHeight*b.spacing);for(var k=this._repeatDynamicAds(b),l=this.getElements(b.elementSelector,e),p=function(n){if(h+1>k.length)return"break";var x=l[n];if(0<f){n=oa(x).bottom;if(n<=g)return"continue";g=n+f}n=k[h];var A="".concat(n.location,"_").concat(n.sequence);a.some(function(Wa){return Wa.name===A})&&(h+=1);var F=m.getDynamicElementId(n),K=Q(b),Xa=ja(b);K=w(["Sidebar"===b.location&&b.sticky&&b.sequence&&5>=b.sequence?"adthrive-sticky-sidebar":"",m._stickyContainerRecipeExperiment.result&&"Recipe"===b.location&&b.sticky?"adthrive-recipe-sticky-container":"",K,Xa],r(b.classNames),!1);if(x=m.addAd(x,F,b.position,K))F=ia(n,x),F.length&&(a.push({clsDynamicAd:b,dynamicAd:n,element:x,sizes:F,name:A,infinite:e!==document}),d.push({location:n.location,element:x}),"Recipe"===b.location&&++m._recipeCount,h+=1)},m=this,t=b.skip;t<l.length&&"break"!==p(t);t+=b.every);};c.prototype._insertAds=function(){var b=this,a=[];this._adInjectionMap.filterUsed();this._adInjectionMap.map.forEach(function(d,e){var f=d.el,g=d.dynamicAd;d=d.target;e=Number(g.sequence)+e;var h=g.max;h=g.lazy&&e>h;g.sequence=e;g.lazy=h;if(f=b._addContentAd(f,g,d))g.used=!0,a.push(f)});return a};c.prototype._getInsertEvery=function(b,a,d){this._moreAvailableElementsThanUnitsToInject(d,b)?(this._usedAbsoluteMinimum=!1,b=this._useWiderSpacing(d,b)):(this._usedAbsoluteMinimum=!0,b=this._useSmallestSpacing(a));return a&&window.innerHeight>b?window.innerHeight:b};c.prototype._useWiderSpacing=function(b,a){return this._mainContentHeight/Math.min(b,a)};c.prototype._useSmallestSpacing=function(b){return b&&window.innerHeight>this._absoluteMinimumSpacingByDevice?window.innerHeight:this._absoluteMinimumSpacingByDevice};c.prototype._moreAvailableElementsThanUnitsToInject=function(b,a){return this._totalAvailableElements.length>b||this._totalAvailableElements.length>a};c.prototype._logDensityInfo=function(b,a,d){b=this._pubLog;b.onePerViewport;b.targetDensity;b.combinedMax};c.prototype._checkElementSpacing=function(b){var a=b.dynamicAd,d=b.element,e=b.insertEvery,f=b.targetAll;b=b.target;b=void 0===b?document:b;(this._isFirstAdInjected()||this._hasProperSpacing(d,a,f,e))&&this._markSpotForContentAd(d,y({},a),b)};c.prototype._isFirstAdInjected=function(){return!this._adInjectionMap.map.length};c.prototype._markSpotForContentAd=function(b,a,d){void 0===d&&(d=document);this._adInjectionMap.add(b,this._getElementCoords(b,"beforebegin"===a.position||"afterbegin"===a.position),a,d);this._adInjectionMap.sort()};c.prototype._hasProperSpacing=function(b,a,d,e){var f="beforebegin"===a.position||"afterbegin"===a.position;a="beforeend"===a.position||"afterbegin"===a.position;d=d||this._isElementFarEnoughFromOtherAdElements(b,e,f);f=a||this._isElementNotInRow(b,f);b=-1===b.id.indexOf("AdThrive_".concat("Below_Post"));return d&&f&&b};c.prototype._isElementFarEnoughFromOtherAdElements=function(b,a,d){b=this._getElementCoords(b,d);var e=!1;for(d=0;d<this._adInjectionMap.map.length&&!(e=this._adInjectionMap.map[d+1]&&this._adInjectionMap.map[d+1].coords,e=b-a>this._adInjectionMap.map[d].coords&&(!e||b+a<e));d++);return e};c.prototype._isElementNotInRow=function(b,a){var d=b.previousElementSibling,e=b.nextElementSibling;return(a=a?!d&&e||d&&b.tagName!==d.tagName?e:d:e)&&0===b.getBoundingClientRect().height?!0:a?b.getBoundingClientRect().top!==a.getBoundingClientRect().top:!0};c.prototype._calculateMainContentHeightAndAllElements=function(b,a){void 0===a&&(a=document);b=r(va(b,this._adInjectionMap,a),2);a=b[1];this._mainContentDiv=b[0];this._totalAvailableElements=a;b=this._mainContentDiv;a=void 0;void 0===a&&(a="div #comments, section .comments");this._mainContentHeight=(a=b.querySelector(a))?b.offsetHeight-a.offsetHeight:b.offsetHeight};c.prototype._getElementCoords=function(b,a){void 0===a&&(a=!1);b=b.getBoundingClientRect();return(a?b.top:b.bottom)+window.scrollY};c.prototype._addContentAd=function(b,a,d){var e,f;void 0===d&&(d=document);var g=null,h=Q(a),k=ja(a),l=(null===(f=null===(e=this._clsOptions.siteAds.adOptions.stickyContainerConfig)||void 0===e?void 0:e.content)||void 0===f?0:f.enabled)&&this._stickyContainerAdsExperiment.result?"adthrive-sticky-container":"";if(b=this.addAd(b,this.getDynamicElementId(a),a.position,w([l,h,k],r(a.classNames),!1)))e=ia(a,b),e.length&&(b.style.minHeight=this.locationToMinHeight[a.location],g="".concat(a.location,"_").concat(a.sequence),g={clsDynamicAd:a,dynamicAd:a,element:b,sizes:e,name:g,infinite:d!==document});return g};c.prototype.getDynamicElementId=function(b){return"".concat("AdThrive","_").concat(b.location,"_").concat(b.sequence,"_").concat(this._device)};c.prototype.getElements=function(b,a){void 0===a&&(a=document);return a.querySelectorAll(b)};c.prototype.addAd=function(b,a,d,e){void 0===e&&(e=[]);document.getElementById(a)||(e='<div id="'.concat(a,'" class="adthrive-ad ').concat(e.join(" "),'"></div>'),b.insertAdjacentHTML(d,e));return document.getElementById(a)};c.prototype._repeatDynamicAds=function(b){var a=[],d=this._removeRecipeCapExperiment.result&&"Recipe"===b.location?99:this.locationMaxLazySequence.get(b.location),e=b.lazy?u(d,0):0;d=b.max;var f=b.lazyMax;e=Math.max(d,0===e&&b.lazy?d+f:Math.min(Math.max(e-b.sequence+1,0),d+f));for(f=0;f<e;f++){var g=Number(b.sequence)+f,h=b.lazy&&f>=d;a.push(y(y({},b),{sequence:g,lazy:h}))}return a};c.prototype._locationEnabled=function(b){b=this._clsOptions.enabledLocations.includes(b.location);var a=this._clsOptions.disableAds&&this._clsOptions.disableAds.all||document.body.classList.contains("adthrive-disable-all"),d=!document.body.classList.contains("adthrive-disable-content")&&!this._clsOptions.disableAds.reasons.has("content_plugin");return b&&!a&&d};return c}(),Za=function(c){function b(a,d){var e=c.call(this,a,"ClsVideoInsertion")||this;e._videoConfig=a;e._clsOptions=d;e._IN_POST_SELECTOR=".adthrive-video-player";e._WRAPPER_BAR_HEIGHT=36;e._playersAddedFromPlugin=[];d.removeVideoTitleWrapper&&(e._WRAPPER_BAR_HEIGHT=0);return e}v(b,c);b.prototype.init=function(){this._initializePlayers()};b.prototype._wrapJWPlayerWithCLS=function(a,d,e){void 0===e&&(e=0);return a.parentNode?(d=this._createGenericCLSWrapper(.5625*a.offsetWidth,d,e),a.parentNode.insertBefore(d,a),d.appendChild(a),d):null};b.prototype._createGenericCLSWrapper=function(a,d,e){var f=document.createElement("div");f.id="cls-video-container-".concat(d);f.className="adthrive";f.style.minHeight="".concat(a+e,"px");return f};b.prototype._getTitleHeight=function(a){a.innerText="Title";a.style.visibility="hidden";document.body.appendChild(a);var d=window.getComputedStyle(a),e=parseInt(d.height,10),f=parseInt(d.marginTop,10);d=parseInt(d.marginBottom,10);document.body.removeChild(a);return Math.min(e+d+f,50)};b.prototype._initializePlayers=function(){var a=document.querySelectorAll(this._IN_POST_SELECTOR);a.length&&this._initializeRelatedPlayers(a);this._shouldRunAutoplayPlayers()&&this._determineAutoplayPlayers()};b.prototype._createStationaryRelatedPlayer=function(a,d,e){var f="mobile"===this._device?[400,225]:[640,360],g=G.Video_In_Post_ClicktoPlay_SoundOn;d&&a.mediaId&&(e="".concat(a.mediaId,"_").concat(e),d=this._wrapJWPlayerWithCLS(d,e),this._playersAddedFromPlugin.push(a.mediaId),d&&this._clsOptions.setInjectedVideoSlots({playerId:a.playerId,playerName:g,playerSize:f,element:d,type:"stationaryRelated"}))};b.prototype._createStickyRelatedPlayer=function(a,d){var e="mobile"===this._device?[400,225]:[640,360],f=G.Video_Individual_Autoplay_SOff;this._stickyRelatedOnPage=!0;this._videoConfig.mobileStickyPlayerOnPage="mobile"===this._device;if(d&&a.position&&a.mediaId){var g=document.createElement("div");d.insertAdjacentElement(a.position,g);d=document.createElement("h3");d.style.margin="10px 0";d=this._getTitleHeight(d);d=this._wrapJWPlayerWithCLS(g,a.mediaId,this._WRAPPER_BAR_HEIGHT+d);this._playersAddedFromPlugin.push(a.mediaId);d&&this._clsOptions.setInjectedVideoSlots({playlistId:a.playlistId,playerId:a.playerId,playerSize:e,playerName:f,element:g,type:"stickyRelated"})}};b.prototype._createPlaylistPlayer=function(a,d){var e=a.playlistId,f="mobile"===this._device?G.Video_Coll_SOff_Smartphone:G.Video_Collapse_Autoplay_SoundOff,g="mobile"===this._device?[400,225]:[640,360];this._videoConfig.mobileStickyPlayerOnPage=!0;var h=document.createElement("div");d.insertAdjacentElement(a.position,h);d=this._wrapJWPlayerWithCLS(h,e,this._WRAPPER_BAR_HEIGHT);this._playersAddedFromPlugin.push("playlist-".concat(e));d&&this._clsOptions.setInjectedVideoSlots({playlistId:a.playlistId,playerId:a.playerId,playerSize:g,playerName:f,element:h,type:"stickyPlaylist"})};b.prototype._isVideoAllowedOnPage=function(){var a=this._clsOptions.disableAds;if(a&&a.video){var d="";a.reasons.has("video_tag")?d="video tag":a.reasons.has("video_plugin")?d="video plugin":a.reasons.has("video_page")&&(d="command queue");q.error(d?"ClsVideoInsertionMigrated":"ClsVideoInsertion","isVideoAllowedOnPage",Error("DBP: Disabled by publisher via ".concat(d||"other")));return!1}return this._clsOptions.videoDisabledFromPlugin?!1:!0};return b}(function(c){function b(a,d){var e=c.call(this)||this;e._videoConfig=a;e._component=d;e._stickyRelatedOnPage=!1;e._relatedMediaIds=[];a=void 0;void 0===a&&(a=navigator.userAgent);a=/Windows NT|Macintosh/i.test(a);e._device=a?"desktop":"mobile";e._potentialPlayerMap=e.setPotentialPlayersMap();return e}v(b,c);b.prototype.setPotentialPlayersMap=function(){var a=this._videoConfig.players||[],d=this._filterPlayerMap();a=a.filter(function(e){return"stationaryRelated"===e.type&&e.enabled});d.stationaryRelated=a;return this._potentialPlayerMap=d};b.prototype._filterPlayerMap=function(){var a=this,d=this._videoConfig.players,e={stickyRelated:[],stickyPlaylist:[],stationaryRelated:[]};return d&&d.length?d.filter(function(f){var g;return null===(g=f.devices)||void 0===g?void 0:g.includes(a._device)}).reduce(function(f,g){f[g.type]||(q.event(a._component,"constructor","Unknown Video Player Type detected",g.type),f[g.type]=[]);g.enabled&&f[g.type].push(g);return f},e):e};b.prototype._checkPlayerSelectorOnPage=function(a){var d=this;a=this._potentialPlayerMap[a].map(function(e){return{player:e,playerElement:d._getPlacementElement(e)}});return a.length?a[0]:{player:null,playerElement:null}};b.prototype._getOverrideElement=function(a,d,e){a&&d?(e=document.createElement("div"),d.insertAdjacentElement(a.position,e)):(d=this._checkPlayerSelectorOnPage("stickyPlaylist"),a=d.player,d=d.playerElement,a&&d&&(e=document.createElement("div"),d.insertAdjacentElement(a.position,e)));return e};b.prototype._shouldOverrideElement=function(a){a=a.getAttribute("override-embed");return"true"===a||"false"===a?"true"===a:this._videoConfig.relatedSettings?this._videoConfig.relatedSettings.overrideEmbedLocation:!1};b.prototype._checkPageSelector=function(a,d,e){void 0===e&&(e=[]);return a&&d&&0===e.length?("/"!==window.location.pathname&&q.event("VideoUtils","getPlacementElement",Error("PSNF: ".concat(a," does not exist on the page"))),!1):!0};b.prototype._getElementSelector=function(a,d,e){if(d&&d.length>e)return d[e];q.event("VideoUtils","getPlacementElement",Error("ESNF: ".concat(a," does not exist on the page")));return null};b.prototype._getPlacementElement=function(a){var d=a.pageSelector,e=a.elementSelector;a=a.skip;var f=da(d),g=f.valid,h=f.elements;f=S(f,["valid","elements"]);var k=ca(e),l=k.valid,p=k.elements;k=S(k,["valid","elements"]);return""===d||g?l?this._checkPageSelector(d,g,h)?this._getElementSelector(e,p,a)||null:null:(q.error("VideoUtils","getPlacementElement",Error("".concat(e," is not a valid selector")),k),null):(q.error("VideoUtils","getPlacementElement",Error("".concat(d," is not a valid selector")),f),null)};b.prototype._getEmbeddedPlayerType=function(a){(a=a.getAttribute("data-player-type"))&&"default"!==a||(a=this._videoConfig.relatedSettings?this._videoConfig.relatedSettings.defaultPlayerType:"static");this._stickyRelatedOnPage&&(a="static");return a};b.prototype._getMediaId=function(a){return(a=a.getAttribute("data-video-id"))?(this._relatedMediaIds.push(a),a):!1};b.prototype._createRelatedPlayer=function(a,d,e,f){"collapse"===d?this._createCollapsePlayer(a,e):"static"===d&&this._createStaticPlayer(a,e,f)};b.prototype._createCollapsePlayer=function(a,d){var e=this._checkPlayerSelectorOnPage("stickyRelated"),f=e.player;e=e.playerElement;var g=f?f:this._potentialPlayerMap.stationaryRelated[0];g&&g.playerId?(this._shouldOverrideElement(d)&&(d=this._getOverrideElement(f,e,d)),d=document.querySelector("#cls-video-container-".concat(a," > div"))||d,this._createStickyRelatedPlayer(y(y({},g),{mediaId:a}),d)):q.error(this._component,"_createCollapsePlayer","No video player found")};b.prototype._createStaticPlayer=function(a,d,e){this._potentialPlayerMap.stationaryRelated.length&&this._potentialPlayerMap.stationaryRelated[0].playerId?this._createStationaryRelatedPlayer(y(y({},this._potentialPlayerMap.stationaryRelated[0]),{mediaId:a}),d,e):q.error(this._component,"_createStaticPlayer","No video player found")};b.prototype._shouldRunAutoplayPlayers=function(){return this._isVideoAllowedOnPage()&&(this._potentialPlayerMap.stickyRelated.length||this._potentialPlayerMap.stickyPlaylist.length)?!0:!1};b.prototype._determineAutoplayPlayers=function(){var a=this._component,d="VideoManagerComponent"===a,e=this._config;if(this._stickyRelatedOnPage)q.event(a,"stickyRelatedOnPage",d&&{device:e&&e.context.device,isDesktop:this._device}||{});else{var f=this._checkPlayerSelectorOnPage("stickyPlaylist"),g=f.player;f=f.playerElement;g&&g.playerId&&g.playlistId&&f?this._createPlaylistPlayer(g,f):q.event(a,"noStickyPlaylist",d&&{vendor:"none",device:e&&e.context.device,isDesktop:this._device}||{})}};b.prototype._initializeRelatedPlayers=function(a){for(var d=new Map,e=0;e<a.length;e++){var f=a[e],g=f.offsetParent,h=this._getEmbeddedPlayerType(f),k=this._getMediaId(f);g&&k&&(g=(d.get(k)||0)+1,d.set(k,g),this._createRelatedPlayer(k,h,f,g))}};return b}(function(){function c(){}Object.defineProperty(c.prototype,"enabled",{get:function(){return!0},enumerable:!1,configurable:!0});return c}())),$a=function(c){function b(){return null!==c&&c.apply(this,arguments)||this}v(b,c);return b}(function(){function c(){this._map=[]}c.prototype.add=function(b,a,d,e){void 0===e&&(e=document);this._map.push({el:b,coords:a,dynamicAd:d,target:e})};Object.defineProperty(c.prototype,"map",{get:function(){return this._map},enumerable:!1,configurable:!0});c.prototype.sort=function(){this._map.sort(function(b,a){return b.coords-a.coords})};c.prototype.filterUsed=function(){this._map=this._map.filter(function(b){return!b.dynamicAd.used})};c.prototype.reset=function(){this._map=[]};return c}());try{(function(){var c=new ea;c&&c.enabled&&((new Ya(c,new $a)).start(),(new Za(new Ca(c),c)).init())})()}catch(c){q.error("CLS","pluginsertion-iife",c),window.adthriveCLS&&(window.adthriveCLS.injectedFromPlugin=!1)}})()</script><script data-no-optimize="1" data-cfasync="false">(function(){var clsElements=document.querySelectorAll("script[id^='cls-']");window.adthriveCLS&&clsElements&&clsElements.length===0?window.adthriveCLS.injectedFromPlugin=false:"";})();</script><link rel='stylesheet' id='e-animations-css' href='https://www.devx.com/wp-content/plugins/elementor/assets/lib/animations/animations.min.css?ver=3.20.4' type='text/css' media='all' /> <script defer id="wpil-frontend-script-js-extra" src="data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgd3BpbEZyb250ZW5kID0geyJhamF4VXJsIjoiXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJwb3N0SWQiOiIyMjY1NiIsInBvc3RUeXBlIjoicG9zdCIsIm9wZW5JbnRlcm5hbEluTmV3VGFiIjoiMCIsIm9wZW5FeHRlcm5hbEluTmV3VGFiIjoiMCIsImRpc2FibGVDbGlja3MiOiIwIiwib3BlbkxpbmtzV2l0aEpTIjoiMCIsInRyYWNrQWxsRWxlbWVudENsaWNrcyI6IjAiLCJjbGlja3NJMThuIjp7ImltYWdlTm9UZXh0IjoiSW1hZ2UgaW4gbGluazogTm8gVGV4dCIsImltYWdlVGV4dCI6IkltYWdlIFRpdGxlOiAiLCJub1RleHQiOiJObyBBbmNob3IgVGV4dCBGb3VuZCJ9fTsKLyogXV0+ICovCg=="></script> <script defer type="text/javascript" src="https://www.devx.com/wp-content/plugins/link-whisper-premium/js/frontend.min.js?ver=1712228365" id="wpil-frontend-script-js"></script> <script defer type="text/javascript" src="https://www.devx.com/wp-content/themes/devxnew/assets/js/hello-frontend.min.js?ver=1.0.0" id="hello-theme-frontend-js"></script> <script defer type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor-pro/assets/lib/smartmenus/jquery.smartmenus.min.js?ver=1.0.1" id="smartmenus-js"></script> <script defer type="text/javascript" src="https://www.devx.com/wp-includes/js/imagesloaded.min.js?ver=5.0.0" id="imagesloaded-js"></script> <script defer type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js?ver=3.12.3" id="elementor-pro-webpack-runtime-js"></script> <script defer type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=3.20.4" id="elementor-webpack-runtime-js"></script> <script defer type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.20.4" id="elementor-frontend-modules-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-includes/js/dist/vendor/wp-polyfill-inert.min.js?ver=3.1.2" id="wp-polyfill-inert-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-includes/js/dist/vendor/regenerator-runtime.min.js?ver=0.14.0" id="regenerator-runtime-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-includes/js/dist/vendor/wp-polyfill.min.js?ver=3.15.0" id="wp-polyfill-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-includes/js/dist/hooks.min.js?ver=2810c76e705dd1a53b18" id="wp-hooks-js"></script> <script type="text/javascript" src="https://www.devx.com/wp-includes/js/dist/i18n.min.js?ver=5e580eb46a90c2b997e6" id="wp-i18n-js"></script> <script defer id="wp-i18n-js-after" src="data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp3cC5pMThuLnNldExvY2FsZURhdGEoIHsgJ3RleHQgZGlyZWN0aW9uXHUwMDA0bHRyJzogWyAnbHRyJyBdIH0gKTsKLyogXV0+ICovCg=="></script> <script defer id="elementor-pro-frontend-js-before" src="data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgRWxlbWVudG9yUHJvRnJvbnRlbmRDb25maWcgPSB7ImFqYXh1cmwiOiJodHRwczpcL1wvd3d3LmRldnguY29tXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJub25jZSI6IjAzNTE2NGQ5ZWYiLCJ1cmxzIjp7ImFzc2V0cyI6Imh0dHBzOlwvXC93d3cuZGV2eC5jb21cL3dwLWNvbnRlbnRcL3BsdWdpbnNcL2VsZW1lbnRvci1wcm9cL2Fzc2V0c1wvIiwicmVzdCI6Imh0dHBzOlwvXC93d3cuZGV2eC5jb21cL3dwLWpzb25cLyJ9LCJzaGFyZUJ1dHRvbnNOZXR3b3JrcyI6eyJmYWNlYm9vayI6eyJ0aXRsZSI6IkZhY2Vib29rIiwiaGFzX2NvdW50ZXIiOnRydWV9LCJ0d2l0dGVyIjp7InRpdGxlIjoiVHdpdHRlciJ9LCJsaW5rZWRpbiI6eyJ0aXRsZSI6IkxpbmtlZEluIiwiaGFzX2NvdW50ZXIiOnRydWV9LCJwaW50ZXJlc3QiOnsidGl0bGUiOiJQaW50ZXJlc3QiLCJoYXNfY291bnRlciI6dHJ1ZX0sInJlZGRpdCI6eyJ0aXRsZSI6IlJlZGRpdCIsImhhc19jb3VudGVyIjp0cnVlfSwidmsiOnsidGl0bGUiOiJWSyIsImhhc19jb3VudGVyIjp0cnVlfSwib2Rub2tsYXNzbmlraSI6eyJ0aXRsZSI6Ik9LIiwiaGFzX2NvdW50ZXIiOnRydWV9LCJ0dW1ibHIiOnsidGl0bGUiOiJUdW1ibHIifSwiZGlnZyI6eyJ0aXRsZSI6IkRpZ2cifSwic2t5cGUiOnsidGl0bGUiOiJTa3lwZSJ9LCJzdHVtYmxldXBvbiI6eyJ0aXRsZSI6IlN0dW1ibGVVcG9uIiwiaGFzX2NvdW50ZXIiOnRydWV9LCJtaXgiOnsidGl0bGUiOiJNaXgifSwidGVsZWdyYW0iOnsidGl0bGUiOiJUZWxlZ3JhbSJ9LCJwb2NrZXQiOnsidGl0bGUiOiJQb2NrZXQiLCJoYXNfY291bnRlciI6dHJ1ZX0sInhpbmciOnsidGl0bGUiOiJYSU5HIiwiaGFzX2NvdW50ZXIiOnRydWV9LCJ3aGF0c2FwcCI6eyJ0aXRsZSI6IldoYXRzQXBwIn0sImVtYWlsIjp7InRpdGxlIjoiRW1haWwifSwicHJpbnQiOnsidGl0bGUiOiJQcmludCJ9fSwiZmFjZWJvb2tfc2RrIjp7ImxhbmciOiJlbl9VUyIsImFwcF9pZCI6IiJ9LCJsb3R0aWUiOnsiZGVmYXVsdEFuaW1hdGlvblVybCI6Imh0dHBzOlwvXC93d3cuZGV2eC5jb21cL3dwLWNvbnRlbnRcL3BsdWdpbnNcL2VsZW1lbnRvci1wcm9cL21vZHVsZXNcL2xvdHRpZVwvYXNzZXRzXC9hbmltYXRpb25zXC9kZWZhdWx0Lmpzb24ifX07Ci8qIF1dPiAqLwo="></script> <script defer type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=3.12.3" id="elementor-pro-frontend-js"></script> <script defer type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor/assets/lib/waypoints/waypoints.min.js?ver=4.0.2" id="elementor-waypoints-js"></script> <script defer type="text/javascript" src="https://www.devx.com/wp-includes/js/jquery/ui/core.min.js?ver=1.13.2" id="jquery-ui-core-js"></script> <script defer id="elementor-frontend-js-before" src="data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgZWxlbWVudG9yRnJvbnRlbmRDb25maWcgPSB7ImVudmlyb25tZW50TW9kZSI6eyJlZGl0IjpmYWxzZSwid3BQcmV2aWV3IjpmYWxzZSwiaXNTY3JpcHREZWJ1ZyI6ZmFsc2V9LCJpMThuIjp7InNoYXJlT25GYWNlYm9vayI6IlNoYXJlIG9uIEZhY2Vib29rIiwic2hhcmVPblR3aXR0ZXIiOiJTaGFyZSBvbiBUd2l0dGVyIiwicGluSXQiOiJQaW4gaXQiLCJkb3dubG9hZCI6IkRvd25sb2FkIiwiZG93bmxvYWRJbWFnZSI6IkRvd25sb2FkIGltYWdlIiwiZnVsbHNjcmVlbiI6IkZ1bGxzY3JlZW4iLCJ6b29tIjoiWm9vbSIsInNoYXJlIjoiU2hhcmUiLCJwbGF5VmlkZW8iOiJQbGF5IFZpZGVvIiwicHJldmlvdXMiOiJQcmV2aW91cyIsIm5leHQiOiJOZXh0IiwiY2xvc2UiOiJDbG9zZSIsImExMXlDYXJvdXNlbFdyYXBwZXJBcmlhTGFiZWwiOiJDYXJvdXNlbCB8IEhvcml6b250YWwgc2Nyb2xsaW5nOiBBcnJvdyBMZWZ0ICYgUmlnaHQiLCJhMTF5Q2Fyb3VzZWxQcmV2U2xpZGVNZXNzYWdlIjoiUHJldmlvdXMgc2xpZGUiLCJhMTF5Q2Fyb3VzZWxOZXh0U2xpZGVNZXNzYWdlIjoiTmV4dCBzbGlkZSIsImExMXlDYXJvdXNlbEZpcnN0U2xpZGVNZXNzYWdlIjoiVGhpcyBpcyB0aGUgZmlyc3Qgc2xpZGUiLCJhMTF5Q2Fyb3VzZWxMYXN0U2xpZGVNZXNzYWdlIjoiVGhpcyBpcyB0aGUgbGFzdCBzbGlkZSIsImExMXlDYXJvdXNlbFBhZ2luYXRpb25CdWxsZXRNZXNzYWdlIjoiR28gdG8gc2xpZGUifSwiaXNfcnRsIjpmYWxzZSwiYnJlYWtwb2ludHMiOnsieHMiOjAsInNtIjo0ODAsIm1kIjo3NjgsImxnIjoxMDI1LCJ4bCI6MTQ0MCwieHhsIjoxNjAwfSwicmVzcG9uc2l2ZSI6eyJicmVha3BvaW50cyI6eyJtb2JpbGUiOnsibGFiZWwiOiJNb2JpbGUgUG9ydHJhaXQiLCJ2YWx1ZSI6NzY3LCJkZWZhdWx0X3ZhbHVlIjo3NjcsImRpcmVjdGlvbiI6Im1heCIsImlzX2VuYWJsZWQiOnRydWV9LCJtb2JpbGVfZXh0cmEiOnsibGFiZWwiOiJNb2JpbGUgTGFuZHNjYXBlIiwidmFsdWUiOjg4MCwiZGVmYXVsdF92YWx1ZSI6ODgwLCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjpmYWxzZX0sInRhYmxldCI6eyJsYWJlbCI6IlRhYmxldCBQb3J0cmFpdCIsInZhbHVlIjoxMDI0LCJkZWZhdWx0X3ZhbHVlIjoxMDI0LCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjp0cnVlfSwidGFibGV0X2V4dHJhIjp7ImxhYmVsIjoiVGFibGV0IExhbmRzY2FwZSIsInZhbHVlIjoxMjAwLCJkZWZhdWx0X3ZhbHVlIjoxMjAwLCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjpmYWxzZX0sImxhcHRvcCI6eyJsYWJlbCI6IkxhcHRvcCIsInZhbHVlIjoxMzY2LCJkZWZhdWx0X3ZhbHVlIjoxMzY2LCJkaXJlY3Rpb24iOiJtYXgiLCJpc19lbmFibGVkIjpmYWxzZX0sIndpZGVzY3JlZW4iOnsibGFiZWwiOiJXaWRlc2NyZWVuIiwidmFsdWUiOjI0MDAsImRlZmF1bHRfdmFsdWUiOjI0MDAsImRpcmVjdGlvbiI6Im1pbiIsImlzX2VuYWJsZWQiOmZhbHNlfX19LCJ2ZXJzaW9uIjoiMy4yMC40IiwiaXNfc3RhdGljIjpmYWxzZSwiZXhwZXJpbWVudGFsRmVhdHVyZXMiOnsiZV9vcHRpbWl6ZWRfYXNzZXRzX2xvYWRpbmciOnRydWUsImVfb3B0aW1pemVkX2Nzc19sb2FkaW5nIjp0cnVlLCJhZGRpdGlvbmFsX2N1c3RvbV9icmVha3BvaW50cyI6dHJ1ZSwiZV9zd2lwZXJfbGF0ZXN0Ijp0cnVlLCJ0aGVtZV9idWlsZGVyX3YyIjp0cnVlLCJoZWxsby10aGVtZS1oZWFkZXItZm9vdGVyIjp0cnVlLCJibG9ja19lZGl0b3JfYXNzZXRzX29wdGltaXplIjp0cnVlLCJhaS1sYXlvdXQiOnRydWUsImxhbmRpbmctcGFnZXMiOnRydWUsImVfaW1hZ2VfbG9hZGluZ19vcHRpbWl6YXRpb24iOnRydWUsInBhZ2UtdHJhbnNpdGlvbnMiOnRydWUsIm5vdGVzIjp0cnVlLCJsb29wIjp0cnVlLCJmb3JtLXN1Ym1pc3Npb25zIjp0cnVlLCJlX3Njcm9sbF9zbmFwIjp0cnVlfSwidXJscyI6eyJhc3NldHMiOiJodHRwczpcL1wvd3d3LmRldnguY29tXC93cC1jb250ZW50XC9wbHVnaW5zXC9lbGVtZW50b3JcL2Fzc2V0c1wvIn0sInN3aXBlckNsYXNzIjoic3dpcGVyIiwic2V0dGluZ3MiOnsicGFnZSI6W10sImVkaXRvclByZWZlcmVuY2VzIjpbXX0sImtpdCI6eyJib2R5X2JhY2tncm91bmRfYmFja2dyb3VuZCI6ImNsYXNzaWMiLCJhY3RpdmVfYnJlYWtwb2ludHMiOlsidmlld3BvcnRfbW9iaWxlIiwidmlld3BvcnRfdGFibGV0Il0sImdsb2JhbF9pbWFnZV9saWdodGJveCI6InllcyIsImxpZ2h0Ym94X2VuYWJsZV9jb3VudGVyIjoieWVzIiwibGlnaHRib3hfZW5hYmxlX2Z1bGxzY3JlZW4iOiJ5ZXMiLCJsaWdodGJveF9lbmFibGVfem9vbSI6InllcyIsImxpZ2h0Ym94X2VuYWJsZV9zaGFyZSI6InllcyIsImxpZ2h0Ym94X3RpdGxlX3NyYyI6InRpdGxlIiwibGlnaHRib3hfZGVzY3JpcHRpb25fc3JjIjoiZGVzY3JpcHRpb24iLCJoZWxsb19oZWFkZXJfbG9nb190eXBlIjoibG9nbyIsImhlbGxvX2hlYWRlcl9tZW51X2xheW91dCI6Imhvcml6b250YWwiLCJoZWxsb19mb290ZXJfbG9nb190eXBlIjoibG9nbyJ9LCJwb3N0Ijp7ImlkIjoyMjY1NiwidGl0bGUiOiJDb25uZWN0aW5nJTIwdG8lMjB0aGUlMjBXZWIlM0ElMjBJJTJGTyUyMFByb2dyYW1taW5nJTIwaW4lMjBBbmRyb2lkJTIwLSUyMERldlgiLCJleGNlcnB0IjoiIiwiZmVhdHVyZWRJbWFnZSI6Imh0dHBzOlwvXC93d3cuZGV2eC5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjJcLzAyXC90aHVtYm5haWwuanBnIn19OwovKiBdXT4gKi8K"></script> <script defer type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=3.20.4" id="elementor-frontend-js"></script> <script defer type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver=3.12.3" id="pro-elements-handlers-js"></script> <script defer type="text/javascript" src="https://www.devx.com/wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js?ver=3.12.3" id="e-sticky-js"></script> <script defer src="data:text/javascript;base64,IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiOyFmdW5jdGlvbihlKXtpZigtMT09PWUuY29va2llLmluZGV4T2YoIl9fYWRibG9ja2VyIikpe2UuY29va2llPSJfX2FkYmxvY2tlcj07IGV4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQ7IHBhdGg9LyI7dmFyIHQ9bmV3IFhNTEh0dHBSZXF1ZXN0O3Qub3BlbigiR0VUIiwiaHR0cHM6Ly9hZHMuYWR0aHJpdmUuY29tL2FiZC9hYmQuanMiLCEwKSx0Lm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKFhNTEh0dHBSZXF1ZXN0LkRPTkU9PT10LnJlYWR5U3RhdGUpaWYoMjAwPT09dC5zdGF0dXMpe3ZhciBhPWUuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS5pbm5lckhUTUw9dC5yZXNwb25zZVRleHQsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGEpfWVsc2V7dmFyIG49bmV3IERhdGU7bi5zZXRUaW1lKG4uZ2V0VGltZSgpKzNlNSksZS5jb29raWU9Il9fYWRibG9ja2VyPXRydWU7IGV4cGlyZXM9IituLnRvVVRDU3RyaW5nKCkrIjsgcGF0aD0vIn19LHQuc2VuZCgpfX0oZG9jdW1lbnQpfSgpOwo="></script><script defer src="data:text/javascript;base64,IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBlO2U9ZG9jdW1lbnQsZnVuY3Rpb24oKXt2YXIgdCxuO2Z1bmN0aW9uIHIoKXt2YXIgdD1lLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3Quc3JjPSJodHRwczovL2NhZmVtZWRpYS1jb20udmlkZW9wbGF5ZXJodWIuY29tL2dhbGxlcnlwbGF5ZXIuanMiLGUuaGVhZC5hcHBlbmRDaGlsZCh0KX1mdW5jdGlvbiBhKCl7dmFyIHQ9ZS5jb29raWUubWF0Y2goIihefFteO10rKVxccypfX2FkYmxvY2tlclxccyo9XFxzKihbXjtdKykiKTtyZXR1cm4gdCYmdC5wb3AoKX1mdW5jdGlvbiBjKCl7Y2xlYXJJbnRlcnZhbChuKX1yZXR1cm57aW5pdDpmdW5jdGlvbigpe3ZhciBlOyJ0cnVlIj09PSh0PWEoKSk/cigpOihlPTAsbj1zZXRJbnRlcnZhbCgoZnVuY3Rpb24oKXsxMDAhPT1lJiYiZmFsc2UiIT09dHx8YygpLCJ0cnVlIj09PXQmJihyKCksYygpKSx0PWEoKSxlKyt9KSw1MCkpfX19KCkuaW5pdCgpfSgpOwo="></script> </body></html> <!-- Dynamic page generated in 1.187 seconds. --> <!-- Cached page generated by WP-Super-Cache on 2024-05-18 09:31:38 --> <!-- Compression = gzip -->