PageSourceSearch

https://www.instantiations.com/

html instantiations.com collected 2026-10-02 03:24:29 UTC 113,118 bytes, 1,965 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-US" >
3<head>
4<meta charset="UTF-8">
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<!-- WP_HEAD() START -->
7<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=Lato:100,200,300,400,500,600,700,800,900|Lato:100,200,300,400,500,600,700,800,900" >
8<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:100,200,300,400,500,600,700,800,900|Lato:100,200,300,400,500,600,700,800,900">
9<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
10
11	<!-- This site is optimized with the Yoast SEO plugin v28.2 - https://yoast.com/product/yoast-seo-wordpress/ -->
12	<title>Instantiations &#8211; Custom Software Development</title>
13	<meta name="description" content="Since 1988, we’ve been building and maintaining custom software solutions for the diverse and evolutionary needs of global businesses." />
14	<link rel="canonical" href="https://www.instantiations.com/" />
15	<meta property="og:locale" content="en_US" />
16	<meta property="og:type" content="website" />
17	<meta property="og:title" content="Instantiations &#8211; Custom Software Development" />
18	<meta property="og:description" content="Since 1988, we’ve been building and maintaining custom software solutions for the diverse and evolutionary needs of global businesses." />
19	<meta property="og:url" content="https://www.instantiations.com/" />
20	<meta property="og:site_name" content="Instantiations" />
21	<meta property="article:modified_time" content="2022-04-29T21:17:57+00:00" />
22	<meta property="og:image" content="https://www.instantiations.com/wp-content/uploads/2021/03/default-social-og-banner-1024x535.png" />
23	<meta property="og:image:width" content="1024" />
24	<meta property="og:image:height" content="535" />
25	<meta property="og:image:type" content="image/png" />
26	<meta name="twitter:card" content="summary_large_image" />
27	<meta name="twitter:image" content="https://www.instantiations.com/wp-content/uploads/2021/03/default-social-og-banner.png" />
28	<meta name="twitter:site" content="@instantiations" />
29	
29<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.instantiations.com\/","url":"https:\/\/www.instantiations.com\/","name":"Instantiations &#8211; Custom Software Development","isPartOf":{"@id":"https:\/\/www.instantiations.com\/#website"},"about":{"@id":"https:\/\/www.instantiations.com\/#organization"},"datePublished":"2021-03-01T14:00:00+00:00","dateModified":"2022-04-29T21:17:57+00:00","description":"Since 1988, we’ve been building and maintaining custom software solutions for the diverse and evolutionary needs of global businesses.","breadcrumb":{"@id":"https:\/\/www.instantiations.com\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.instantiations.com\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.instantiations.com\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https:\/\/www.instantiations.com\/#website","url":"https:\/\/www.instantiations.com\/","name":"Instantiations","description":"Custom Software Development","publisher":{"@id":"https:\/\/www.instantiations.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.instantiations.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.instantiations.com\/#organization","name":"Instantiations","url":"https:\/\/www.instantiations.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.instantiations.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.instantiations.com\/wp-content\/uploads\/2021\/03\/instantiations-logo-lg-bg-wht.png","contentUrl":"https:\/\/www.instantiations.com\/wp-content\/uploads\/2021\/03\/instantiations-logo-lg-bg-wht.png","width":972,"height":245,"caption":"Instantiations"},"image":{"@id":"https:\/\/www.instantiations.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/instantiations","https:\/\/www.linkedin.com\/company\/instantiations","https:\/\/www.youtube.com\/channel\/UCT7_T8mr_DxC5uIx5wBoitQ"]}]}</script>
29
30	<!-- / Yoast SEO plugin. -->
31
32
33<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.instantiations.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.instantiations.com%2F" />
34<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.instantiations.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.instantiations.com%2F&#038;format=xml" />
35<style id='wp-img-auto-sizes-contain-inline-css' type='text/css'>
36img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
37/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
38</style>
39<style id='wp-block-library-inline-css' type='text/css'>
40:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
40--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}.has-text-align-center{text-align:center}.has-text-align-left{text-align:left}.has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
41/*wp_block_styles_on_demand_placeholder:6abf23ed0887c*/
42/*# sourceURL=wp-block-library-inline-css */
43</style>
44<style id='classic-theme-styles-inline-css' type='text/css'>
45/*! This file is auto-generated */
46.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
47/*# sourceURL=/wp-includes/css/classic-themes.min.css */
48</style>
49<link rel='stylesheet' id='oxygen-css' href='https://www.instantiations.com/wp-content/plugins/oxygen/component-framework/oxygen.css?ver=4.9.7' type='text/css' media='all' />
50<script type="text/javascript" src="https://www.instantiations.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
50
51<link rel="https://api.w.org/" href="https://www.instantiations.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.instantiations.com/wp-json/wp/v2/pages/14" />
52<link rel='shortlink' href='https://www.instantiations.com/' />
53<link rel="icon" href="https://www.instantiations.com/wp-content/uploads/2021/01/cropped-fav-icon-lg-32x32.png" sizes="32x32" />
54<link rel="icon" href="https://www.instantiations.com/wp-content/uploads/2021/01/cropped-fav-icon-lg-192x192.png" sizes="192x192" />
55<link rel="apple-touch-icon" href="https://www.instantiations.com/wp-content/uploads/2021/01/cropped-fav-icon-lg-180x180.png" />
56<meta name="msapplication-TileImage" content="https://www.instantiations.com/wp-content/uploads/2021/01/cropped-fav-icon-lg-270x270.png" />
57<link rel='stylesheet' id='oxygen-cache-10-css' href='//www.instantiations.com/wp-content/uploads/oxygen/css/10.css?cache=1790605905&#038;ver=6.9.9' type='text/css' media='all' />
58<link rel='stylesheet' id='oxygen-cache-305-css' href='//www.instantiations.com/wp-content/uploads/oxygen/css/305.css?cache=1790605903&#038;ver=6.9.9' type='text/css' media='all' />
59<link rel='stylesheet' id='oxygen-cache-14-css' href='//www.instantiations.com/wp-content/uploads/oxygen/css/14.css?cache=1790605901&#038;ver=6.9.9' type='text/css' media='all' />
60<link rel='stylesheet' id='oxygen-universal-styles-css' href='//www.instantiations.com/wp-content/uploads/oxygen/css/universal.css?cache=1790606051&#038;ver=6.9.9' type='text/css' media='all' />
61<!-- END OF WP_HEAD() -->
62</head>
63<body class="home wp-singular page-template-default page page-id-14 wp-theme-oxygen-is-not-a-theme  wp-embed-responsive oxygen-body" >
64
65
66
67
68						<div id="code_block-210-10" class="ct-code-block" ><!-- --></div><div id="code_block-212-10" class="ct-code-block" ><style>/* EmojiSymbols Font (c)blockworks - Kenichi Kaneko http://emojisymbols.com/ */ @font-face {font-family: "EmojiSymbols";src: url('/wp-includes/fonts/EmojiSymbols-Regular.woff') format('woff');text-decoration: none;font-style: normal;}</style></div><div id="code_block-205-10" class="ct-code-block" ><a href="#content" class="skip btn-skip-nav" style="position:absolute;top:-50px;left:5px;">SKIP TO CONTENT</a></div><div id="code_block-164-10" class="ct-code-block" ><div id="ie-bar" style="display:none">
69  <div id="ie-bar-inner">
70  	You're using an "Internet Explorer" web browser that's no longer supported.<br>
71    This website will not function correctly when using when using Internet Explorer,<br>
72    so please upgrade to a modern web browser, like Edge, Chrome, or Firefox.
73    </div>
74</div></div><header id="_header-1-10" class="oxy-header-wrapper oxy-overlay-header oxy-header" ><div id="top" class="oxy-header-row" ><div class="oxy-header-container"><div id="_header_left-3-10" class="oxy-header-left" ><a id="link-133-10" class="ct-link" href="/"   ><img  id="image-38-10" alt="Instantiations Logo" src="/wp-content/uploads/2021/01/instantiations-logo-rgb-light-bg-dkblue-txt.svg" class="ct-image "/></a></div><div id="_header_center-4-10" class="oxy-header-center" ><div id="code_block-135-10" class="ct-code-block" ><!-- --></div>
75		<div id="main-menu" class="oxy-pro-menu " ><div class="oxy-pro-menu-mobile-open-icon " data-off-canvas-alignment=""><svg id="main-menu-open-icon"><use xlink:href="#FontAwesomeicon-bars"></use></svg></div>
76
77                
78        <div class="oxy-pro-menu-container  oxy-pro-menu-dropdown-links-visible-on-mobile oxy-pro-menu-dropdown-links-toggle oxy-pro-menu-show-dropdown" data-aos-duration="400" 
79
80             data-oxy-pro-menu-dropdown-animation="fade"
81             data-oxy-pro-menu-dropdown-animation-duration=".25"
82             data-entire-parent-toggles-dropdown="true"
83
84             
85                          data-oxy-pro-menu-dropdown-animation-duration="0.25"
86             
87                          data-oxy-pro-menu-dropdown-links-on-mobile="toggle">
88             
89            <div class="menu-main-menu-container"><ul id="menu-main-menu" class="oxy-pro-menu-list"><li id="menu-item-34" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-34"><a href="https://www.instantiations.com/vast-platform/">VAST Platform</a>
90<ul class="sub-menu">
91	<li id="menu-item-295" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-295"><a href="/vast-platform/">Overview</a></li>
92	<li id="menu-item-3265" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3265"><a href="https://www.instantiations.com/vast-platform/whats-new/">What's New</a></li>
93	<li id="menu-item-296" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-296"><a href="https://www.instantiations.com/vast-platform/features/">Features</a></li>
94	<li id="menu-item-4352" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4352"><a href="https://www.instantiations.com/vast-platform/vast-ai-assistant/">VAST AI Assistant</a></li>
95	<li id="menu-item-235" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-235"><a href="https://www.instantiations.com/vast-platform/add-ons/">Add-Ons</a></li>
96	<li id="menu-item-3889" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3889"><a href="https://www.instantiations.com/vast-platform/vast-compliance-package/">VAST Compliance Package</a></li>
97	<li id="menu-item-3919" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3919"><a href="https://www.instantiations.com/vast-platform/vast-training/">VAST Training</a></li>
98	<li id="menu-item-115" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-115"><a href="https://www.instantiations.com/vast-platform/support-plans/">Support Plans</a></li>
99	<li id="menu-item-168" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-168"><a href="https://www.instantiations.com/vast-platform/pricing/">Pricing</a></li>
100	<li id="menu-item-397" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-397"><a href="https://www.instantiations.com/vast-platform/version-history/">Version History</a></li>
101	<li id="menu-item-396" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-396"><a href="https://www.instantiations.com/vast-platform/product-roadmap/">Product Roadmap</a></li>
102	<li id="menu-item-1700" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1700"><a href="https://www.instantiations.com/visualage-to-vast/">VisualAge to VAST</a></li>
103	<li id="menu-item-3396" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3396"><a href="https://www.instantiations.com/vast-platform/vast-community-hub/">VAST Community Hub</a></li>
104	<li id="menu-item-120" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-120"><a target="_blank" href="https://groups.google.com/g/va-smalltalk">VAST Community Forum</a></li>
105	<li id="menu-item-298" class="menubold menu-item menu-item-type-custom menu-item-object-custom menu-item-298"><a target="_blank" href="https://vast-support.instantiations.com/">VAST Support Portal</a></li>
106	<li id="menu-item-3372" class="menu-indent menu-item menu-item-type-custom menu-item-object-custom menu-item-3372"><a target="_blank" href="https://vast-support.instantiations.com/support/solutions/24000015032">▸ Documentation</a></li>
107	<li id="menu-item-330" class="menu-indent menu-item menu-item-type-custom menu-item-object-custom menu-item-330"><a target="_blank" href="https://www.instantiations.com/vast-support/documentation/FAQ/">▸ FAQ</a></li>
108	<li id="menu-item-3552" class="menu-indent menu-indent-login menu-item menu-item-type-custom menu-item-object-custom menu-item-3552"><a target="_blank" href="https://vast-support.instantiations.com/support/tickets/new">▸ Get Support</a></li>
109	<li id="menu-item-122" class="menu-indent menu-indent-login menu-item menu-item-type-custom menu-item-object-custom menu-item-122"><a target="_blank" href="https://vast-support.instantiations.com/support/solutions/24000010833">▸ Licensed Downloads</a></li>
110	<li id="menu-item-121" class="menu-indent menu-indent-login menu-item menu-item-type-custom menu-item-object-custom menu-item-121"><a target="_blank" href="https://vast-support.instantiations.com/support/catalog/items/15">▸ Download Trial</a></li>
111	<li id="menu-item-3373" class="menu-indent menu-indent-login menu-item menu-item-type-custom menu-item-object-custom menu-item-3373"><a target="_blank" href="https://vast-support.instantiations.com/support/catalog/items/18">▸ ECAP</a></li>
112</ul>
113</li>
114<li id="menu-item-3257" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-3257"><a href="https://www.instantiations.com/fintech/">Fintech</a>
115<ul class="sub-menu">
116	<li id="menu-item-3371" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3371"><a href="/fintech/">Overview</a></li>
117	<li id="menu-item-3164" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3164"><a target="_blank" href="https://fintech-support.instantiations.com/">Fintech Support Portal</a></li>
118</ul>
119</li>
120<li id="menu-item-33" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-33"><a href="https://www.instantiations.com/services/">Services</a>
121<ul class="sub-menu">
122	<li id="menu-item-299" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-299"><a href="/services/">Overview</a></li>
123	<li id="menu-item-93" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-93"><a href="https://www.instantiations.com/services/custom-development/">Custom Development</a></li>
124	<li id="menu-item-92" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-92"><a href="https://www.instantiations.com/services/consulting-training/">Consulting &#038; Training</a></li>
125	<li id="menu-item-1452" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1452"><a href="https://www.instantiations.com/services/iot/">Internet of Things (IoT)</a></li>
126	<li id="menu-item-3386" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3386"><a href="https://www.instantiations.com/services/open-source-development/">Open Source Development</a></li>
127</ul>
128</li>
129<li id="menu-item-19" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19"><a href="https://www.instantiations.com/news/">News</a></li>
130<li id="menu-item-31" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-31"><a href="https://www.instantiations.com/company/">Company</a>
131<ul class="sub-menu">
132	<li id="menu-item-237" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-237"><a href="/company/">About</a></li>
133	<li id="menu-item-100" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-100"><a href="https://www.instantiations.com/company/history/">History</a></li>
134	<li id="menu-item-4271" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4271"><a href="https://www.instantiations.com/company/careers/">Careers</a></li>
135	<li id="menu-item-4059" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4059"><a href="https://www.instantiations.com/company/responsible-evolution/">Responsible Evolution</a></li>
136	<li id="menu-item-4242" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4242"><a href="https://www.instantiations.com/company/security-and-compliance/">Security and Compliance</a></li>
137	<li id="menu-item-99" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-99"><a href="https://www.instantiations.com/company/management-team/">Management Team</a></li>
138	<li id="menu-item-236" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-236"><a href="https://www.instantiations.com/company/partners/">Partners</a></li>
139</ul>
140</li>
141<li id="menu-item-37" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-37"><a href="https://www.instantiations.com/contact/">Contact</a></li>
142</ul></div>
143            <div class="oxy-pro-menu-mobile-close-icon"><svg id="svg-main-menu"><use xlink:href="#FontAwesomeicon-close"></use></svg></div>
144
145        </div>
146
147        </div>
148
149		
149<script type="text/javascript">
150			jQuery('#main-menu .oxy-pro-menu-show-dropdown .menu-item-has-children > a', 'body').each(function(){
151                jQuery(this).append('<div class="oxy-pro-menu-dropdown-icon-click-area"><svg class="oxy-pro-menu-dropdown-icon"><use xlink:href="#FontAwesomeicon-caret-down"></use></svg></div>');
152            });
153            jQuery('#main-menu .oxy-pro-menu-show-dropdown .menu-item:not(.menu-item-has-children) > a', 'body').each(function(){
154                jQuery(this).append('<div class="oxy-pro-menu-dropdown-icon-click-area"></div>');
155            });			</script>
155</div><div id="_header_right-5-10" class="oxy-header-right" ><div id="fancy_icon-50-10" class="ct-fancy-icon" ><svg id="svg-fancy_icon-50-10"><use xlink:href="#FontAwesomeicon-search"></use></svg></div></div></div></div></header>
156		            <div tabindex="-1" class="oxy-modal-backdrop top "
157                style="background-color: rgba(0,56,101,0.33);"
158                data-trigger="user_clicks_element"                data-trigger-selector="#fancy_icon-50-10"                data-trigger-time="5"                data-trigger-time-unit="seconds"                data-close-automatically="no"                data-close-after-time="10"                data-close-after-time-unit="seconds"                data-trigger_scroll_amount="50"                data-trigger_scroll_direction="down"	            data-scroll_to_selector=""	            data-time_inactive="60"	            data-time-inactive-unit="seconds"	            data-number_of_clicks="3"	            data-close_on_esc="on"	            data-number_of_page_views="3"                data-close-after-form-submit="no"                data-open-again="always_show"                data-open-again-after-days="3"            >
159
160                <div id="modal-52-10" class="ct-modal" ><div id="text_block-209-10" class="ct-text-block" >Search</div><div id="code_block-55-10" class="ct-code-block" >
160<script async src="//cse.google.com/cse.js?cx=3b00ab17ad5b3eaa1"></script>
160
161<div class="gcse-search"></div></div><div id="fancy_icon-56-10" class="ct-fancy-icon oxy-close-modal" ><svg id="svg-fancy_icon-56-10"><use xlink:href="#FontAwesomeicon-close"></use></svg></div></div>
162            </div>
163        <div id="content" class="ct-div-block " ></div><div id='inner_content-9-305' class='ct-inner-content'><section id="section-220-14" class=" ct-section" ><div class="ct-section-inner-wrap"><div id="div_block-221-14" class="ct-div-block" ><div id="new_columns-284-14" class="ct-new-columns" ><div id="div_block-285-14" class="ct-div-block" ><h1 id="headline-318-14" class="ct-headline">Responsible <span id="span-320-14" class="ct-span" >Evolution</span><span id="span-319-14" class="ct-span" >®</span></h1><h2 id="headline-287-14" class="ct-headline">Since 1988, we’ve delivered custom software solutions guided by Responsible Evolution to modernize, extend and sustain mission-critical systems for global businesses.</h2><a id="link_button-288-14" class="ct-link-button btn-default-rev" href="/news/responsible-evolution/"   >Learn More</a></div><div id="div_block-289-14" class="ct-div-block" ><div id="home-hero-abstract" class="ct-code-block" ><picture>
164  <source srcset="/wp-content/uploads/2021/01/hero-abstract-home-50-b.webp" type="image/webp">
165  <source srcset="/wp-content/uploads/2021/01/hero-abstract-home.png" type="image/png"> 
166  <img src="/wp-content/uploads/2021/01/hero-abstract-home.png" alt="Constant Refinement: Abstract Illustration">
167</picture></div></div></div></div><div id="div_block-224-14" class="ct-div-block" ><div id="div_block-225-14" class="ct-div-block" ></div></div></div></section><section id="section-36-14" class=" ct-section" ><div class="ct-section-inner-wrap"><div id="new_columns-37-14" class="ct-new-columns" ><div id="div_block-38-14" class="ct-div-block" ><img  id="image-40-14" alt="Companies that work with Instantiations" src="/wp-content/uploads/2025/03/website-logo-group-vertical-b.png" class="ct-image"/></div><div id="div_block-39-14" class="ct-div-block" ><h3 id="headline-41-14" class="ct-headline fifty-fifty-headline">Trusted by top organizations<br>around the world</h3><div id="text_block-42-14" class="ct-text-block" >From individual developers to large enterprise development teams, Instantiations' software and services have helped to maintain and improve mission-critical systems used by hundreds of businesses in dozens of countries.</div></div></div></div></section><section id="section-305-14" class=" ct-section" ><div class="ct-section-inner-wrap"><div id="div_block-306-14" class="ct-div-block" ><img  id="image-307-14" alt="Joachim Tuchel testimonial photo" src="/wp-content/uploads/2021/02/joachim-tuchel-photo-f.jpg" class="ct-image"/><div id="text_block-308-14" class="ct-text-block" >"Instantiations has always proven to be a helpful, reliable partner in solving our problems or those of our customers. They always look for the best solution to satisfy both technical and business needs."</div><div id="text_block-309-14" class="ct-text-block" >Joachim Tuchel</div><div id="text_block-310-14" class="ct-text-block" >Founder, objektfabrik</div></div></div></section><section id="section-312-14" class=" ct-section" ><div class="ct-section-inner-wrap"><div id="div_block-313-14" class="ct-div-block" ><img  id="image-314-14" alt="Adriaan van Os testimonial photo" src="/wp-content/uploads/2021/02/adriaan-van-os-photo-fb.jpg" class="ct-image"/><div id="text_block-315-14" class="ct-text-block" >“Instantiations is as committed to our success as we are.”</div><div id="text_block-316-14" class="ct-text-block" >Adriaan van Os</div><div id="text_block-317-14" class="ct-text-block" >Developer, OHRA</div></div></div></section><section id="section-267-14" class=" ct-section" ><div class="ct-section-inner-wrap"><div id="div_block-268-14" class="ct-div-block" ><h3 id="headline-269-14" class="ct-headline">Making an impact&nbsp;in software development</h3><div id="text_block-270-14" class="ct-text-block" >Whether it’s development tooling for the Smalltalk or Java<span id="span-271-14" class="ct-span sup-scrpt" >®</span> communities, or new ventures into Dart™, Flutter™, and Toit, Instantiations has a history of making its mark in software engineering.</div><div id="new_columns-272-14" class="ct-new-columns" ><div id="div_block-273-14" class="ct-div-block" ><img  id="image-274-14" alt="Smalltalk icon" src="/wp-content/uploads/2022/04/smalltalk-plain-a.svg" class="ct-image home-lang-icon"/></div><div id="div_block-275-14" class="ct-div-block" ><img  id="image-276-14" alt="Java icon" src="/wp-content/uploads/2021/01/java-plain.svg" class="ct-image home-lang-icon"/></div><div id="div_block-277-14" class="ct-div-block" ><img  id="image-278-14" alt="Flutter icon" src="/wp-content/uploads/2021/01/flutter-plain.svg" class="ct-image home-lang-icon"/></div><div id="div_block-279-14" class="ct-div-block" ><img  id="image-280-14" alt="Toit icon" src="/wp-content/uploads/2022/04/toit-plain.svg" class="ct-image home-lang-icon"/></div></div></div><div id="div_block-281-14" class="ct-div-block" ><div id="div_block-282-14" class="ct-div-block" ></div></div></div></section><section id="section-84-14" class=" ct-section" ><div class="ct-section-inner-wrap"><div id="new_columns-85-14" class="ct-new-columns" ><div id="div_block-86-14" class="ct-div-block" ><div id="animated-render-blue" class="ct-code-block" ><picture>
168  <source srcset="/wp-content/uploads/2026/02/hero-abstract-vast-2026-90q.webp" type="image/webp">
169  <source srcset="/wp-content/uploads/2026/02/hero-abstract-vast-2026.png" t
169ype="image/png"> 
170  <img src="/wp-content/uploads/2026/02/hero-abstract-vast-2026.png" alt="VAST 2026 - Abstract Illustration">
171</picture>
172</div></div><div id="div_block-88-14" class="ct-div-block" ><img  id="image-105-14" alt="" src="/wp-content/uploads/2026/02/vast-icon-banner_15.0.0.png" class="ct-image"/><h3 id="headline-89-14" class="ct-headline fifty-fifty-headline">Design it. Build it. Deploy it.</h3><div id="text_block-90-14" class="ct-text-block" >Create object-oriented software that's stable, easy to maintain, and deploys smoothly — all from the same comprehensive development environment.<br><br>Since its release in 2005, the VAST Platform (VA Smalltalk) has built upon the foundation provided by IBM<span id="span-251-14" class="ct-span sup-scrpt" >®</span> VisualAge<span id="span-253-14" class="ct-span sup-scrpt" >®</span> Smalltalk and has continued to grow in power and flexibility through ongoing research and development.&nbsp;Today, VAST brings AI-assisted development directly into the IDE with the <a href="https://www.instantiations.com/vast-platform/vast-ai-assistant/">VAST Platform AI Assistant</a>, helping developers understand code, investigate live systems, debug more efficiently, and accelerate development while staying in control of their workflow.<br><br>From traditional servers, to cloud services, and IoT (Internet of Things) devices, VAST can be deployed across multiple operating systems, processor architectures, and hardware configurations.<br></div><div id="div_block-237-14" class="ct-div-block" ><a id="link_button-91-14" class="ct-link-button btn-default" href="/vast-platform/" target="_self"  >OVERVIEW</a><a id="link_button-239-14" class="ct-link-button btn-default" href="https://trial.instantiations.com/" target="_self"  >DOWNLOAD TRIAL</a></div></div></div></div></section><section id="section-254-14" class=" ct-section" ><div class="ct-section-inner-wrap"><div id="new_columns-255-14" class="ct-new-columns" ><div id="div_block-256-14" class="ct-div-block" ><h3 id="headline-257-14" class="ct-headline fifty-fifty-headline">Augment your team</h3><div id="text_block-258-14" class="ct-text-block" >Get help hitting your next deadline or solving a set of tough issues. Whatever tasks need completion, our engineering team will help you reach your software development goals.<br></div><a id="link_button-259-14" class="ct-link-button btn-default" href="/services/custom-development/"   >Learn More</a></div><div id="div_block-260-14" class="ct-div-block" ><img  id="image-261-14" alt="Remotes sessions for team augmentation" src="/wp-content/uploads/2021/02/team-augment.jpg" class="ct-image"/></div></div></div></section><section id="section-143-14" class=" ct-section" ><div class="ct-section-inner-wrap"><div id="new_columns-144-14" class="ct-new-columns" ><div id="div_block-145-14" class="ct-div-block" ><img  id="image-146-14" alt="Custom Rust Development example for Unicode" src="/wp-content/uploads/2021/02/cust-dev-home-rust-an.gif" class="ct-image feature-img-border"/></div><div id="div_block-147-14" class="ct-div-block" ><h3 id="headline-148-14" class="ct-headline fifty-fifty-headline">Go beyond open source</h3><div id="text_block-149-14" class="ct-text-block" >When your needs cannot be met by open source software, a custom solution is the best option.&nbsp;We build software to your exact needs and specifications, and we can fully support it after it's completed.<br></div><a id="link_button-150-14" class="ct-link-button btn-default" href="/services/custom-development/"   >Learn more</a></div></div></div></section><section id="section-112-14" class=" ct-section" ><div class="ct-section-inner-wrap"><div id="new_columns-113-14" class="ct-new-columns" ><div id="div_block-116-14" class="ct-div-block" ><h3 id="headline-117-14" class="ct-headline fifty-fifty-headline">Knowledge on-demand</h3><div id="text_block-118-14" class="ct-text-block" >Keep pace with constantly evolving software development standards and approaches. We offer consulting, on-site and remote training, seminars,&nbsp; and continuing education for you (or your team) to keep up-to-date.<br></div><a id="link_button-119-14" class="ct-link-button btn-default" href="/services/consulting-training/"   >Learn More</a></div><div id="div_block-114-14" class="ct-div-block" ><img  id="image-115-14" alt="Mariano Martinez Peck presenting" src="/wp-content/uploads/2021/01/seminar-image-mp.jpg" class="ct-image"/></div></div></div></section></div><section id="section-2-305" class=" ct-section" ><div class="ct-section-inner-wrap"><div id="div_block-3-305" class="ct-div-block" ><h2 id="headline-4-305" class="ct-headline">Together, we can build something great.</h2><a id="link_button-5-305" class="ct-link-button btn-default" href="/contact/"   >GET STARTED</a></div><div id="div_block-6-305" class="ct-div-block" ><div id="div_block-7-305" class="ct-div-block" ></div></div></div></section><section id="section-36-10" class=" ct-section" ><div class="ct-section-inner-wrap"><div id="new_columns-97-10" class="ct-new-columns" ><div id="div_block-98-10" class="ct-div-block" ><a id="link-207-10" class="ct-link" href="/"   ><img  id="image-45-10" alt="Instantiations Icon" src="/wp-content/uploads/2021/01/instantiations-icon-rgb.svg" class="ct-image"/></a><div id="text_block-70-10" class="ct-text-block" >© Instantiations, Inc. All rights reserved. 'Instantiations', 'Responsible Evolution', and the 'intersecting circle design' are registered trademarks of Instantiations, Inc. in the United States. All product names, trademarks, and registered trademarks are property of their respective owners. Company, product, and service names not owned by Instantiations are used for identification purposes only. Use of these names, trademarks, and brands does not imply endorsement.<br></div></div><div id="div_block-100-10" class="ct-div-block" ><div id="div_block-165-10" class="ct-div-block" ><nav id="_nav_menu-89-10" class="oxy-nav-menu oxy-nav-menu-dropdowns oxy-nav-menu-dropdown-arrow" ><div class='oxy-menu-toggle'><div class='oxy-nav-menu-hamburger-wrap'><div class='oxy-nav-menu-hamburger'><div class='oxy-nav-menu-hamburger-line'></div><div class='oxy-nav-menu-hamburger-line'></div><div class='oxy-nav-menu-hamburger-line'></div></div></div></div><div class="menu-footer-menu-1-container"><ul id="menu-footer-menu-1" class="oxy-nav-menu-list"><li id="menu-item-136" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-136"><a href="https://www.instantiations.com/subscribe/">Subscribe</a></li>
173<li id="menu-item-135" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-135"><a href="https://www.instantiations.com/contact/">Contact</a></li>
174<li id="menu-item-167" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-167"><a rel="privacy-policy" href="https://www.instantiations.com/privacy/">Privacy Policy</a></li>
175<li id="menu-item-4275" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4275"><a href="https://www.instantiations.com/ai-governance/">AI Governance</a></li>
176</ul></div></nav></div><div id="div_block-99-10" class="ct-div-block" ><a id="link-117-10" class="ct-link footer-social-link" href="https://x.com/instantiations" target="_blank"  ><div id="code_block-127-10" class="ct-code-block footer-social" ><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path d="M98.69812,10.67112h18.33559l-40.25858,45.83898,47.03478,62.18157h-36.91035l-28.89849-37.78726-33.08379,37.78726H6.58169l42.65018-49.02778L4.19009,10.67112h37.82712l26.10829,34.51874,30.57261-34.51874ZM92.28
176066,107.92948h10.1643L36.67598,21.03472h-10.92164l66.52631,86.89476Z" /></svg></div></a><a id="link-118-10" class="ct-link footer-social-link" href="https://www.linkedin.com/company/instantiations" target="_blank"  ><div id="code_block-128-10" class="ct-code-block footer-social" ><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
177	 viewBox="0 0 128 128" style="enable-background:new 0 0 128 128;" xml:space="preserve">
178
179<path d="M102.4566,102.4794H86.2764v-25.354c0-6.046-0.1229-13.8265-8.4316-13.8265
180	c-8.4361,0-9.7246,6.5786-9.7246,13.3804v25.8001H51.9399V50.3419h15.5429v7.1068h0.2094
181	c2.1716-4.0974,7.4528-8.4225,15.3426-8.4225c16.3943,0,19.4264,10.7899,19.4264,24.835v28.6182H102.4566z M33.6654,43.2078
182	c-5.2083,0-9.3922-4.2158-9.3922-9.4013c0-5.181,4.1885-9.3922,9.3922-9.3922c5.1901,0,9.3968,4.2112,9.3968,9.3922
183	C43.0621,38.992,38.8509,43.2078,33.6654,43.2078z M41.7783,102.4794H25.5525V50.3419h16.2258V102.4794z M110.5513,9.3676H17.4305
184	c-4.4571,0-8.0628,3.5238-8.0628,7.8716v93.5215c0,4.3524,3.6057,7.8716,8.0628,7.8716h93.1072
185	c4.4525,0,8.0947-3.5192,8.0947-7.8716V17.2393c0-4.3478-3.6422-7.8716-8.0947-7.8716H110.5513z"/>
186</svg></div></a><a id="link-120-10" class="ct-link footer-social-link" href="https://github.com/instantiations" target="_blank"  ><div id="code_block-131-10" class="ct-code-block footer-social" ><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
187	 viewBox="0 0 128 128" style="enable-background:new 0 0 128 128;" xml:space="preserve">
188
189<path d="M64,4.1906c-33.8837,0-61.328,27.4596-61.328,61.328c0,27.1019,17.5705,50.0845,41.933,58.1849
190	c3.0664,0.5775,4.1907-1.3186,4.1907-2.9489c0-1.4565-0.0511-5.3151-0.0767-10.4258c-17.0594,3.7001-20.6573-8.2282-20.6573-8.2282
191	c-2.7904-7.0783-6.8227-8.9692-6.8227-8.9692c-5.5553-3.8023,0.4293-3.7257,0.4293-3.7257
192	c6.1583,0.4293,9.3934,6.3168,9.3934,6.3168c5.4684,9.3781,14.3559,6.6694,17.8618,5.1004c0.552-3.9659,2.1311-6.6694,3.8841-8.2026
193	c-13.6199-1.5332-27.9349-6.8074-27.9349-30.3062c0-6.695,2.3765-12.1634,6.3117-16.4563
194	c-0.6899-1.5485-2.7598-7.7835,0.5366-16.2315c0,0,5.1362-1.6456,16.8652,6.2861c4.9062-1.3645,10.1191-2.0392,15.332-2.0698
195	c5.2129,0.0307,10.4258,0.7053,15.332,2.0698c11.6523-7.9318,16.7885-6.2861,16.7885-6.2861
196	c3.2964,8.4479,1.2266,14.6829,0.6133,16.2315c3.9097,4.293,6.2861,9.7614,6.2861,16.4563
197	c0,23.5602-14.3354,28.7475-27.9809,30.2551c2.1465,1.8398,4.1396,5.6013,4.1396,11.3457c0,8.2077-0.0767,14.8005-0.0767,16.7936
198	c0,1.6099,1.0732,3.5264,4.2163,2.9131c24.5363-8.0442,42.0914-31.0422,42.0914-58.1031C125.328,31.6502,97.8684,4.1906,64,4.1906"
199	/>
200</svg>
201</div></a><a id="link-121-10" class="ct-link footer-social-link" href="https://www.youtube.com/channel/UCT7_T8mr_DxC5uIx5wBoitQ" target="_blank"  ><div id="code_block-130-10" class="ct-code-block footer-social" ><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
202	 viewBox="0 0 128 128" style="enable-background:new 0 0 128 128;" xml:space="preserve">
203
204<path d="M123.9487,33.7797c-1.4749-5.2849-5.6047-9.4147-10.8896-10.8896c-9.7527-2.6129-49.0033-2.6129-49.0033-2.6129
205	s-39.1516-0.0522-49.0034,2.6129C9.7674,24.365,5.6376,28.4948,4.1627,33.7797C2.314,43.7646,1.4025,53.9003,1.4403,64.0548
206	C1.4097,74.1709,2.3211,84.268,4.1627,94.2151c1.4749,5.2849,5.6047,9.4147,10.8896,10.8896
207	c9.7423,2.6181,49.0033,2.6181,49.0033,2.6181s39.1464,0,49.0034-2.6181c5.2849-1.4749,9.4147-5.6047,10.8896-10.8896
208	c1.8032-9.9508,2.6761-20.0477,2.6077-30.1603C126.6319,53.9039,125.7589,43.7682,123.9487,33.7797z M51.5284,82.7831v-37.514
209	l32.6689,18.7857L51.5284,82.7831z"/>
210</svg>
211</div></a></div><div id="div_block-201-10" class="ct-div-block" ><nav id="_nav_menu-202-10" class="oxy-nav-menu oxy-nav-menu-dropdowns oxy-nav-menu-dropdown-arrow" ><div class='oxy-menu-toggle'><div class='oxy-nav-menu-hamburger-wrap'><div class='oxy-nav-menu-hamburger'><div class='oxy-nav-menu-hamburger-line'></div><div class='oxy-nav-menu-hamburger-line'></div><div class='oxy-nav-menu-hamburger-line'></div></div></div></div><div class="menu-footer-menu-2-container"><ul id="menu-footer-menu-2" class="oxy-nav-menu-list"><li id="menu-item-125" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-125"><a href="https://www.instantiations.com/vast-platform/">VAST Platform</a></li>
212<li id="menu-item-3370" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3370"><a href="https://www.instantiations.com/fintech/">Fintech</a></li>
213<li id="menu-item-124" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-124"><a href="https://www.instantiations.com/services/">Services</a></li>
214<li id="menu-item-126" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-126"><a href="https://www.instantiations.com/news/">News</a></li>
215<li id="menu-item-127" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-127"><a href="https://www.instantiations.com/company/">Company</a></li>
216</ul></div></nav></div><div id="code_block-116-10" class="ct-code-block" ><!-- --></div></div></div></div></section><div id="code_block-138-10" class="ct-code-block" ><!-- --></div><div id="code_block-136-10" class="ct-code-block" ><!-- --></div><header id="_header-172-10" class="oxy-header-wrapper oxy-sticky-header oxy-overlay-header oxy-header" ><div id="_header_row-173-10" class="oxygen-show-in-sticky-only oxy-header-row"  title="Back to top"><div class="oxy-header-container"><div id="_header_left-174-10" class="oxy-header-left" ></div><div id="_header_center-175-10" class="oxy-header-center" ></div><div id="_header_right-176-10" class="oxy-header-right" ><div id="code_block-200-10" class="ct-code-block" ><!-- --></div><a id="div_block-183-10" class="ct-link" href="#top"   ><div id="code_block-189-10" class="ct-code-block" ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z"/></svg></div></a></div></div></div></header>
217				
217<script type="text/javascript">
218			jQuery(document).ready(function() {
219				var selector = "#_header-172-10",
220					scrollval = parseInt("1080");
221				if (!scrollval || scrollval < 1) {
222											jQuery("body").css("margin-top", jQuery(selector).outerHeight());
223						jQuery(selector).addClass("oxy-sticky-header-active");
224									}
225				else {
226					var scrollTopOld = 0;
227					jQuery(window).scroll(function() {
228						if (!jQuery('body').hasClass('oxy-nav-menu-prevent-overflow')) {
229							if (jQuery(this).scrollTop() > scrollval 
230																) {
231								if (
232																		!jQuery(selector).hasClass("oxy-sticky-header-active")) {
233									if (jQuery(selector).css('position')!='absolute') {
234										jQuery("body").css("margin-top", jQuery(selector).outerHeight());
235									}
236									jQuery(selector)
237										.addClass("oxy-sticky-header-active")
238																			.addClass("oxy-sticky-header-fade-in");
239																	}
240							}
241							else {
242								jQuery(selector)
243									.removeClass("oxy-sticky-header-fade-in")
244									.removeClass("oxy-sticky-header-active");
245								if (jQuery(selector).css('position')!='absolute') {
246									jQuery("body").css("margin-top", "");
247								}
248							}
249							scrollTopOld = jQuery(this).scrollTop();
250						}
251					})
252				}
253			});
254		</script>
254<div id="code_block-211-10" class="ct-code-block" ></div>	<!-- WP_FOOTER -->
255<script type="speculationrules">
256{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/twentytwenty/*","/wp-content/themes/oxygen-is-not-a-theme/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
257</script>
vendor: 1 bytes, line 257
257
258<script>jQuery(document).on('click','a[href*="#"]',function(t){if(jQuery(t.target).closest('.wc-tabs').length>0){return}if(jQuery(this).is('[href="#"]')||jQuery(this).is('[href="#0"]')||jQuery(this).is('[href*="replytocom"]')){return};if(location.pathname.replace(/^\//,"")==this.pathname.replace(/^\//,"")&&location.hostname==this.hostname){var e=jQuery(this.hash);(e=e.length?e:jQuery("[name="+this.hash.slice(1)+"]")).length&&(t.preventDefault(),jQuery("html, body").animate({scrollTop:e.offset().top-0},1000))}});</script>
258<script type="text/javascript" id="ct_custom_js_100056">jQuery("#fancy_icon-56-10").click(function() {
259  jQuery(".gsst_a").click();
260});</script>
260
261<style>.ct-FontAwesomeicon-search{width:0.92857142857143em}</style>
262<style>.ct-FontAwesomeicon-close{width:0.78571428571429em}</style>
263<style>.ct-FontAwesomeicon-bars{width:0.85714285714286em}</style>
264<style>.ct-FontAwesomeicon-caret-down{width:0.57142857142857em}</style>
265<?xml version="1.0"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1"><defs><symbol id="FontAwesomeicon-search" viewBox="0 0 26 28"><title>search</title><path d="M18 13c0-3.859-3.141-7-7-7s-7 3.141-7 7 3.141 7 7 7 7-3.141 7-7zM26 26c0 1.094-0.906 2-2 2-0.531 0-1.047-0.219-1.406-0.594l-5.359-5.344c-1.828 1.266-4.016 1.937-6.234 1.937-6.078 0-11-4.922-11-11s4.922-11 11-11 11 4.922 11 11c0 2.219-0.672 4.406-1.937 6.234l5.359 5.359c0.359 0.359 0.578 0.875 0.578 1.406z"/></symbol><symbol id="FontAwesomeicon-close" viewBox="0 0 22 28"><title>close</title><path d="M20.281 20.656c0 0.391-0.156 0.781-0.438 1.062l-2.125 2.125c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-4.594-4.594-4.594 4.594c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-2.125-2.125c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l4.594-4.594-4.594-4.594c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.594 4.594-4.594c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062s-0.156 0.781-0.438 1.062l-4.594 4.594 4.594 4.594c0.281 0.281 0.438 0.672 0.438 1.062z"/></symbol><symbol id="FontAwesomeicon-bars" viewBox="0 0 24 28"><title>bars</title><path d="M24 21v2c0 0.547-0.453 1-1 1h-22c-0.547 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547 0 1 0.453 1 1zM24 13v2c0 0.547-0.453 1-1 1h-22c-0.547 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547 0 1 0.453 1 1zM24 5v2c0 0.547-0.453 1-1 1h-22c-0.547 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547 0 1 0.453 1 1z"/></symbol><symbol id="FontAwesomeicon-caret-down" viewBox="0 0 16 28"><title>caret-down</title><path d="M16 11c0 0.266-0.109 0.516-0.297 0.703l-7 7c-0.187 0.187-0.438 0.297-0.703 0.297s-0.516-0.109-0.703-0.297l-7-7c-0.187-0.187-0.297-0.438-0.297-0.703 0-0.547 0.453-1 1-1h14c0.547 0 1 0.453 1 1z"/></symbol></defs></svg>
266        
266<script type="text/javascript">
267
268            function oxygen_init_pro_menu() {
269                jQuery('.oxy-pro-menu-container').each(function(){
270                    
271                    // dropdowns
272                    var menu = jQuery(this),
273                        animation = menu.data('oxy-pro-menu-dropdown-animation'),
274                        animationDuration = menu.data('oxy-pro-menu-dropdown-animation-duration');
275                    
276                    jQuery('.sub-menu', menu).attr('data-aos',animation);
277                    jQuery('.sub-menu', menu).attr('data-aos-duration',animationDuration*1000);
278
279                    oxygen_offcanvas_menu_init(menu);
280                    jQuery(window).resize(function(){
281                        oxygen_offcanvas_menu_init(menu);
282                    });
283
284                    // let certain CSS rules know menu being initialized
285                    // "10" timeout is extra just in case, "0" would be enough
286                    setTimeout(function() {menu.addClass('oxy-pro-menu-init');}, 10);
287                });
288            }
289
290            jQuery(document).ready(oxygen_init_pro_menu);
291            document.addEventListener('oxygen-ajax-element-loaded', oxygen_init_pro_menu, false);
292            
293            let proMenuMouseDown = false;
294
295            jQuery(".oxygen-body")
296            .on("mousedown", '.oxy-pro-menu-show-dropdown:not(.oxy-pro-menu-open-container) .menu-item-has-children', function(e) {
297                proMenuMouseDown = true;
298            })
299
300            .on("mouseup", '.oxy-pro-menu-show-dropdown:not(.oxy-pro-menu-open-container) .menu-item-has-children', function(e) {
301                proMenuMouseDown = false;
302            })
303
304            .on('mouseenter focusin', '.oxy-pro-menu-show-dropdown:not(.oxy-pro-menu-open-container) .menu-item-has-children', function(e) {
305                if( proMenuMouseDown ) return;
306                
307                var subMenu = jQuery(this).children('.sub-menu');
308                subMenu.addClass('aos-animate oxy-pro-menu-dropdown-animating').removeClass('sub-menu-left');
309
310                var duration = jQuery(this).parents('.oxy-pro-menu-container').data('oxy-pro-menu-dropdown-animation-duration');
311
312                setTimeout(function() {subMenu.removeClass('oxy-pro-menu-dropdown-animating')}, duration*1000);
313
314                var offset = subMenu.offset(),
315                    width = subMenu.width(),
316                    docWidth = jQuery(window).width();
317
318                    if (offset.left+width > docWidth) {
319                        subMenu.addClass('sub-menu-left');
320                    }
321            })
322            
323            .on('mouseleave focusout', '.oxy-pro-menu-show-dropdown .menu-item-has-children', function( e ) {
324                if( jQuery(this).is(':hover') ) return;
325
326                jQuery(this).children('.sub-menu').removeClass('aos-animate');
327
328                var subMenu = jQuery(this).children('.sub-menu');
329                //subMenu.addClass('oxy-pro-menu-dropdown-animating-out');
330
331                var duration = jQuery(this).parents('.oxy-pro-menu-container').data('oxy-pro-menu-dropdown-animation-duration');
332                setTimeout(function() {subMenu.removeClass('oxy-pro-menu-dropdown-animating-out')}, duration*1000);
333            })
334
335            // open icon click
336            .on('click', '.oxy-pro-menu-mobile-open-icon', function() {    
337                var menu = jQuery(this).parents('.oxy-pro-menu');
338                // off canvas
339                if (jQuery(this).hasClass('oxy-pro-menu-off-canvas-trigger')) {
340                    oxygen_offcanvas_menu_run(menu);
341                }
342                // regular
343                else {
344                    menu.addClass('oxy-pro-menu-open');
345                    jQuery(this).siblings('.oxy-pro-menu-container').addClass('oxy-pro-menu-open-container');
346                    jQuery('body').addClass('oxy-nav-menu-prevent-overflow');
347                    jQuery('html').addClass('oxy-nav-menu-prevent-overflow');
348                    
349                    oxygen_pro_menu_set_static_width(menu);
350                }
351                // remove animation and collapse
352                jQuery('.sub-menu', menu).attr('data-aos','');
353                jQuery('.oxy-pro-menu-dropdown-toggle .sub-menu', menu).slideUp(0);
354            });
355
356            function oxygen_pro_menu_set_static_width(menu) {
357                var menuItemWidth = jQuery(".oxy-pro-menu-list > .menu-item", menu).width();
358                jQuery(".oxy-pro-menu-open-container > div:first-child, .oxy-pro-menu-off-canvas-container > div:first-child", menu).width(menuItemWidth);
359            }
360
361            function oxygen_pro_menu_unset_static_width(menu) {
362                jQuery(".oxy-pro-menu-container > div:first-child", menu).width("");
363            }
364
365            // close icon click
366            jQuery('body').on('click', '.oxy-pro-menu-mobile-close-icon', function(e) {
367                
368                var menu = jQuery(this).parents('.oxy-pro-menu');
369
370                menu.removeClass('oxy-pro-menu-open');
371                jQuery(this).parents('.oxy-pro-menu-container').removeClass('oxy-pro-menu-open-container');
372                jQuery('.oxy-nav-menu-prevent-overflow').removeClass('oxy-nav-menu-prevent-overflow');
373
374                if (jQuery(this).parent('.oxy-pro-menu-container').hasClass('oxy-pro-menu-off-canvas-container')) {
375                    oxygen_offcanvas_menu_run(menu);
376                }
377
378                oxygen_pro_menu_unset_static_width(menu);
379            });
380
381            // dropdown toggle icon click
382            jQuery('body').on(
383                'touchstart click', 
384                '.oxy-pro-menu-dropdown-links-toggle.oxy-pro-menu-off-canvas-container .menu-item-has-children > a > .oxy-pro-menu-dropdown-icon-click-area,'+
385                '.oxy-pro-menu-dropdown-links-toggle.oxy-pro-menu-open-container .menu-item-has-children > a > .oxy-pro-menu-dropdown-icon-click-area', 
386                function(e) {
387                    e.preventDefault();
388
389                    // fix for iOS false triggering submenu clicks
390                    jQuery('.sub-menu').css('pointer-events', 'none');
391                    setTimeout( function() {
392                        jQuery('.sub-menu').css('pointer-events', 'initial');
393                    }, 500);
394
395                    // workaround to stop click event from triggering after touchstart
396                    if (window.oxygenProMenuIconTouched === true) {
397                        window.oxygenProMenuIconTouched = false;
398                        return;
399                    }
400                    if (e.type==='touchstart') {
401                        window.oxygenProMenuIconTouched = true;
402                    }
403                    oxygen_pro_menu_toggle_dropdown(this);
404                }
405            );
406
407            function oxygen_pro_menu_toggle_dropdown(trigger) {
408
409                var duration = jQuery(trigger).parents('.oxy-pro-menu-container').data('oxy-pro-menu-dropdown-animation-duration');
410
411                jQuery(trigger).closest('.menu-item-has-children').children('.sub-menu').slideToggle({
412                    start: function () {
413                        jQuery(this).css({
414                            display: "flex"
415                        })
416                    },
417                    duration: duration*1000
418                });
419            }
420                    
421            // fullscreen menu link click
422            var selector = '.oxy-pro-menu-open .menu-item a';
423            jQuery('body').on('click', selector, function(event){
424                
425                if (jQuery(event.target).closest('.oxy-pro-menu-dropdown-icon-click-area').length > 0) {
426                    // toggle icon clicked, no need to hide the menu
427                    return;
428                }
429                else if ((jQuery(this).attr("href") === "#" || jQuery(this).closest(".oxy-pro-menu-container").data("entire-parent-toggles-dropdown")) && 
430                         jQuery(this).parent().hasClass('menu-item-has-children')) {
431                    // empty href don't lead anywhere, treat it as toggle trigger
432                    oxygen_pro_menu_toggle_dropdown(event.target);
433                    // keep anchor links behavior as is, and prevent regular links from page reload
434                    if (jQuery(this).attr("href").indexOf("#")!==0) {
435                        return false;
436                    }
437                }
438
439                // hide the menu and follow the anchor
440                if (jQuery(this).attr("href").indexOf("#")===0) {
441                    jQuery('.oxy-pro-menu-open').removeClass('oxy-pro-menu-open');
442                    jQuery('.oxy-pro-menu-open-container').removeClass('oxy-pro-menu-open-container');
443                    jQuery('.oxy-nav-menu-prevent-overflow').removeClass('oxy-nav-menu-prevent-overflow');
444                }
445
446            });
447
448            // off-canvas menu link click
449            var selector = '.oxy-pro-menu-off-canvas .menu-item a';
450            jQuery('body').on('click', selector, function(event){
451                if (jQuery(event.target).closest('.oxy-pro-menu-dropdown-icon-click-area').length > 0) {
452                    // toggle icon clicked, no need to trigger it 
453                    return;
454                }
455                else if ((jQuery(this).attr("href") === "#" || jQuery(this).closest(".oxy-pro-menu-container").data("entire-parent-toggles-dropdown")) && 
456                    jQuery(this).parent().hasClass('menu-item-has-children')) {
457                    // empty href don't lead anywhere, treat it as toggle trigger
458                    oxygen_pro_menu_toggle_dropdown(event.target);
459                    // keep anchor links behavior as is, and prevent regular links from page reload
460                    if (jQuery(this).attr("href").indexOf("#")!==0) {
461                        return false;
462                    }
463                }
464            });
465
466            // off canvas
467            function oxygen_offcanvas_menu_init(menu) {
468
469                // only init off-canvas animation if trigger icon is visible i.e. mobile menu in action
470                var offCanvasActive = jQuery(menu).siblings('.oxy-pro-menu-off-canvas-trigger').css('display');
471                if (offCanvasActive!=='none') {
472                    var animation = menu.data('oxy-pro-menu-off-canvas-animation');
473                    setTimeout(function() {menu.attr('data-aos', animation);}, 10);
474                }
475                else {
476                    // remove AOS
477                    menu.attr('data-aos', '');
478                };
479            }
480            
481            function oxygen_offcanvas_menu_run(menu) {
482
483                var container = menu.find(".oxy-pro-menu-container");
484                
485                if (!container.attr('data-aos')) {
486                    // initialize animation
487                    setTimeout(function() {oxygen_offcanvas_menu_toggle(menu, container)}, 0);
488                }
489                else {
490                    oxygen_offcanvas_menu_toggle(menu, container);
491                }
492            }
493
494            var oxygen_offcanvas_menu_toggle_in_progress = false;
495
496            function oxygen_offcanvas_menu_toggle(menu, container) {
497
498                if (oxygen_offcanvas_menu_toggle_in_progress) {
499                    return;
500                }
501
502                container.toggleClass('aos-animate');
503
504                if (container.hasClass('oxy-pro-menu-off-canvas-container')) {
505                    
506                    oxygen_offcanvas_menu_toggle_in_progress = true;
507                    
508                    var animation = container.data('oxy-pro-menu-off-canvas-animation'),
509                        timeout = container.data('aos-duration');
510
511                    if (!animation){
512                        timeout = 0;
513                    }
514
515                    setTimeout(function() {
516                        container.removeClass('oxy-pro-menu-off-canvas-container')
517                        menu.removeClass('oxy-pro-menu-off-canvas');
518                        oxygen_offcanvas_menu_toggle_in_progress = false;
519                    }, timeout);
520                }
521                else {
522                    container.addClass('oxy-pro-menu-off-canvas-container');
523                    menu.addClass('oxy-pro-menu-off-canvas');
524                    oxygen_pro_menu_set_static_width(menu);
525                }
526            }
527        </script>
527
528
529    
530		
530<script type="text/javascript">
531
532            // Initialize Oxygen Modals
533            jQuery(document).ready(function() {
534
535                function showModal( modal ) {
536                    var $modal = jQuery( modal );
537                    $modal.addClass("live");
538                    var modalId = $modal[0].querySelector('.ct-modal').id;
539                    
540                    var focusable = modal.querySelector('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])');
541
542                    if(focusable) {
543                        setTimeout(() => {
544                            focusable.focus();    
545                        }, 500);
546                    } else {
547                        setTimeout(() => {
548                        $modal.focus();
549                        }, 500)
550                    }
551
552                    // Check if this modal can be shown according to settings and last shown time
553                    // Current and last time in milliseconds
554                    var currentTime = new Date().getTime();
555                    var lastShownTime = localStorage && localStorage['oxy-' + modalId + '-last-shown-time'] ? JSON.parse( localStorage['oxy-' + modalId + '-last-shown-time'] ) : false;
556                    // manual triggers aren't affected by last shown time
557                    if( $modal.data( 'trigger' ) != 'user_clicks_element' ) {
558                        switch( $modal.data( 'open-again' ) ) {
559                            case 'never_show_again':
560                                // if it was shown at least once, don't show it again
561                                if( lastShownTime !== false ) return;
562                                break;
563                            case 'show_again_after':
564                                var settingDays = parseInt( $modal.data( 'open-again-after-days' ) );
565                                var actualDays = ( currentTime - lastShownTime ) / ( 60*60*24*1000 );
566                                if( actualDays < settingDays ) return;
567                                break;
568                            default:
569                                //always show
570                                break;
571                        }
572                    }
573
574                    // Body manipulation to prevent scrolling while modal is active, and maintain scroll position.
575                    document.querySelector('body').style.top = `-${window.scrollY}px`;
576                    document.querySelector('body').classList.add('oxy-modal-active');
577                    
578                    // save current time as last shown time
579                    if( localStorage ) localStorage['oxy-' + modalId + '-last-shown-time'] = JSON.stringify( currentTime );
580
581                    // trick to make jQuery fadeIn with flex
582                    $modal.css("display", "flex");
583                    $modal.hide();
584                    // trick to force AOS trigger on elements inside the modal
585                    $modal.find(".aos-animate").removeClass("aos-animate").addClass("aos-animate-disabled");
586
587                    // show the modal
588                    $modal.fadeIn(250, function(){
589                        // trick to force AOS trigger on elements inside the modal
590                        $modal.find(".aos-animate-disabled").removeClass("aos-animate-disabled").addClass("aos-animate");
591                    });
592
593
594                    if( $modal.data( 'close-automatically' ) == 'yes' ) {
595                        var time = parseInt( $modal.data( 'close-after-time' ) );
596                        if( $modal.data( 'close-after-time-unit' ) == 'seconds' ) {
597                            time = parseInt( parseFloat( $modal.data( 'close-after-time' ) ) * 1000 );
598                        }
599                        setTimeout( function(){
600                            hideModal(modal);
601                        }, time );
602                    }
603
604                    // close modal automatically after form submit (Non-AJAX)
605                    if( $modal.data( 'close-after-form-submit' ) == 'yes' && $modal.data("trigger") == "after_specified_time" ) {
606
607                        // WPForms
608                        // WPForms replaces the form with a confirmation message on page refresh
609                        if( $modal.find(".wpforms-confirmation-container-full").length > 0 ) {
610                            setTimeout(function () {
611                                hideModal(modal);
612                            }, 3000);
613                        }
614
615                        // Formidable Forms
616                        // Formidable Forms replaces the form with a confirmation message on page refresh
617                        if( $modal.find(".frm_message").length > 0 ) {
618                            setTimeout(function () {
619                                hideModal(modal);
620                            }, 3000);
621                        }
622
623                        // Caldera Forms
624                        // Caldera Forms replaces the form with a confirmation message on page refresh
625                        if( $modal.find(".caldera-grid .alert-success").length > 0 ) {
626                            setTimeout(function () {
627                                hideModal(modal);
628                            }, 3000);
629                        }
630
631                    }
632                }
633
634                window.oxyShowModal = showModal;
635
636                var hideModal = function ( modal ) {
637
638                    // Body manipulation for scroll prevention and maintaining scroll position
639                    var scrollY = document.querySelector('body').style.top;
640                    document.querySelector('body').classList.remove('oxy-modal-active');
641                    document.querySelector('body').style.top = '';
642                    window.scrollTo(0, parseInt(scrollY || '0') * -1);
643
644                    // The function may be called by third party code, without argument, so we must close the first visible modal
645                    if( typeof modal === 'undefined' ) {
646                        var openModals = jQuery(".oxy-modal-backdrop.live");
647                        if( openModals.length == 0 ) return;
648                        modal = openModals[0];
649                    }
650
651                    var $modal = jQuery( modal );
652                    // refresh any iframe so media embedded this way is stopped
653                    $modal.find( 'iframe').each(function(index){
654                        this.src = this.src;
655                    });
656                    // HTML5 videos can be stopped easily
657                    $modal.find( 'video' ).each(function(index){
658                        this.pause();
659                    });
660                    // If there are any forms in the modal, reset them
661                    $modal.find("form").each(function(index){
662                        this.reset();
663                    });
664
665                    $modal.find(".aos-animate").removeClass("aos-animate").addClass("aos-animate-disabled");
666
667                    $modal.fadeOut(400, function(){
668                        $modal.removeClass("live");
669                        $modal.find(".aos-animate-disabled").removeClass("aos-animate-disabled").addClass("aos-animate");
670                    });
671                };
672
673                window.oxyCloseModal = hideModal;
674
675                jQuery( ".oxy-modal-backdrop" ).each(function( index ) {
676
677                    var modal = this;
678
679                    (function( modal ){
680                        var $modal = jQuery( modal );
681						
682						var exitIntentFunction = function( e ){
683                            if( e.target.tagName == 'SELECT' ) { return; }
684							if( e.clientY <= 0 ) {
685								showModal( modal );
686								document.removeEventListener( "mouseleave", exitIntentFunction );
687								document.removeEventListener( "mouseout", exitIntentFunction );
688							}
689						}
690
691                        switch ( jQuery( modal ).data("trigger") ) {
692
693                            case "on_exit_intent":
694                                document.addEventListener( "mouseleave", exitIntentFunction, false);
695								document.addEventListener( "mouseout", exitIntentFunction, false);
696                                break;
697
698                            case "user_clicks_element":
699                                jQuery( jQuery( modal ).data( 'trigger-selector' ) ).click( function( event ) {
700                                    showModal( modal );
701                                    event.preventDefault();
702                                } );
703                                break;
704
705                            case "after_specified_time":
706                                var time = parseInt( jQuery( modal ).data( 'trigger-time' ) );
707                                if( jQuery( modal ).data( 'trigger-time-unit' ) == 'seconds' ) {
708                                    time = parseInt( parseFloat( jQuery( modal ).data( 'trigger-time' ) ) * 1000 );
709                                }
710                                setTimeout( function(){
711                                    showModal( modal );
712                                }, time );
713                                break;
714
715                            case "after_scrolled_amount":
716                                window.addEventListener("scroll", function scrollDetection(){
717                                    var winheight= window.innerHeight || (document.documentElement || document.body).clientHeight;
718                                    var docheight = jQuery(document).height();
719                                    var scrollTop = window.pageYOffset || (document.documentElement || document.body.parentNode || document.body).scrollTop;
720                                    var isScrollUp = false;
721                                    var oxyPreviousScrollTop = parseInt( jQuery( modal ).data( 'previous_scroll_top' ) );
722                                    if( !isNaN( oxyPreviousScrollTop ) ) {
723                                        if( oxyPreviousScrollTop > scrollTop) isScrollUp = true;
724                                    }
725                                    jQuery( modal ).data( 'previous_scroll_top', scrollTop );
726                                    var trackLength = docheight - winheight;
727                                    var pctScrolled = Math.floor(scrollTop/trackLength * 100);
728                                    if( isNaN( pctScrolled ) ) pctScrolled = 0;
729
730                                    if(
731                                        ( isScrollUp && jQuery( modal ).data( 'trigger_scroll_direction' ) == 'up' ) ||
732                                        ( !isScrollUp && jQuery( modal ).data( 'trigger_scroll_direction' ) == 'down' && pctScrolled >= parseInt( jQuery( modal ).data( 'trigger_scroll_amount' ) ) )
733                                    ) {
734                                        showModal( modal );
735                                        window.removeEventListener( "scroll", scrollDetection );
736                                    }
737                                }, false);
738                                break;
739                            case "on_scroll_to_element":
740                                window.addEventListener("scroll", function scrollDetection(){
741                                    var $element = jQuery( jQuery( modal ).data( 'scroll_to_selector' ) );
742                                    if( $element.length == 0 ) {
743                                        window.removeEventListener( "scroll", scrollDetection );
744                                        return;
745                                    }
746
747                                    var top_of_element = $element.offset().top;
748                                    var bottom_of_element = $element.offset().top + $element.outerHeight();
749                                    var bottom_of_screen = jQuery(window).scrollTop() + jQuery(window).innerHeight();
750                                    var top_of_screen = jQuery(window).scrollTop();
751
752                                    if ((bottom_of_screen > bottom_of_element - $element.outerHeight() /2 ) && (top_of_screen < top_of_element + $element.outerHeight() /2 )){
753                                        showModal( modal );
754                                        window.removeEventListener( "scroll", scrollDetection );
755                                    }
756                                }, false);
757                                break;
758                            case "after_number_of_clicks":
759                                document.addEventListener("click", function clickDetection(){
760                                    var number_of_clicks = parseInt( jQuery( modal ).data( 'number_of_clicks' ) );
761
762                                    var clicks_performed = isNaN( parseInt( jQuery( modal ).data( 'clicks_performed' ) ) ) ? 1 :  parseInt( jQuery( modal ).data( 'clicks_performed' ) ) + 1;
763
764                                    jQuery( modal ).data( 'clicks_performed', clicks_performed );
765
766                                    if ( clicks_performed == number_of_clicks ){
767                                        showModal( modal );
768                                        document.removeEventListener( "click", clickDetection );
769                                    }
770                                }, false);
771                                break;
772                            case "after_time_inactive":
773                                var time = parseInt( jQuery( modal ).data( 'time_inactive' ) );
774                                if( jQuery( modal ).data( 'time-inactive-unit' ) == 'seconds' ) {
775                                    time = parseInt( parseFloat( jQuery( modal ).data( 'time_inactive' ) ) * 1000 );
776                                }
777                                var activityDetected = function(){
778                                    jQuery( modal ).data( 'millis_idle', 0 );
779                                };
780                                document.addEventListener( "click", activityDetected);
781                                document.addEventListener( "mousemove", activityDetected);
782                                document.addEventListener( "keypress", activityDetected);
783                                document.addEventListener( "scroll", activityDetected);
784
785                                var idleInterval = setInterval(function(){
786                                    var millis_idle = isNaN( parseInt( jQuery( modal ).data( 'millis_idle' ) ) ) ? 100 :  parseInt( jQuery( modal ).data( 'millis_idle' ) ) + 100;
787                                    jQuery( modal ).data( 'millis_idle', millis_idle );
788                                    if( millis_idle > time ){
789                                        clearInterval( idleInterval );
790                                        document.removeEventListener( "click", activityDetected );
791                                        document.removeEventListener( "mousemove", activityDetected );
792                                        document.removeEventListener( "keypress", activityDetected );
793                                        document.removeEventListener( "scroll", activityDetected );
794                                        showModal( modal );
795                                    }
796                                }, 100);
797                                break;
798
799                            case "after_number_of_page_views":
800                                var modalId = modal.querySelector('.ct-modal').id;
801                                var pageViews = localStorage && localStorage['oxy-' + modalId + '-page-views'] ? parseInt( localStorage['oxy-' + modalId + '-page-views'] ) : 0;
802                                pageViews++;
803                                if( localStorage ) localStorage['oxy-' + modalId + '-page-views'] = pageViews;
804                                if( parseInt( jQuery( modal ).data( 'number_of_page_views' ) ) == pageViews ) {
805                                    if( localStorage ) localStorage['oxy-' + modalId + '-page-views'] = 0;
806                                    showModal( modal );
807                                }
808                                break;
809
810                        }
811
812                        // add event handler to close modal automatically after AJAX form submit
813                        if( $modal.data( 'close-after-form-submit' ) == 'yes' ) {
814
815                            // Contact Form 7
816                            if (typeof wpcf7 !== 'undefined') {
817                                $modal.find('div.wpcf7').each(function () {
818                                    var $form = jQuery(this).find('form');
819                                    this.addEventListener('wpcf7submit', function (event) {
820                                        if (event.detail.contactFormId == $form.attr("id")) {
821                                            setTimeout(function () {
822                                                hideModal(modal);
823                                            }, 3000);
824                                        }
825                                    }, false);
826                                });
827                            }
828
829                            // Caldera Forms
830                            document.addEventListener( "cf.submission", function(event){
831                                // Pending, Caldera AJAX form submissions aren't working since Oxygen 2.2, see: https://github.com/soflyy/oxygen/issues/1638
832                            });
833
834                            // Ninja Forms
835                            jQuery(document).on("nfFormSubmitResponse", function(event, response){
836                                // Only close the modal if the event was triggered from a Ninja Form inside the modal
837                                if( $modal.find("#nf-form-" + response.id + "-cont").length > 0 ) {
838                                    setTimeout(function () {
839                                        hideModal(modal);
840                                    }, 3000);
841                                }
842                            });
843
844                        }
845
846                    })( modal );
847
848                });
849
850                // handle clicks on modal backdrop and on .oxy-close-modal
851                jQuery("body").on('click touchend', '.oxy-modal-backdrop, .oxy-close-modal', function( event ) {
852
853                    var $this = jQuery( this );
854                    var $target = jQuery( event.target );
855
856                    // Click event in the modal div and it's children is propagated to the backdrop
857                    if( !$target.hasClass( 'oxy-modal-backdrop' ) && !$this.hasClass( 'oxy-close-modal' ) ) {
858                        //event.stopPropagation();
859                        return;
860                    }
861
862                    if( $target.hasClass( 'oxy-modal-backdrop' ) && $this.hasClass( 'oxy-not-closable' ) ) {
863                        return;
864                    }
865
866                    if( $this.hasClass( 'oxy-close-modal' ) ) event.preventDefault();
867
868                    var $modal = $this.hasClass( 'oxy-close-modal' ) ? $this.closest('.oxy-modal-backdrop') : $this;
869                    hideModal( $modal[0] );
870                });
871
872                jQuery(document).keyup( function(e){
873                    if( e.key == 'Escape' ){
874                        jQuery(".oxy-modal-backdrop:visible").each(function(index){
875                            if( jQuery(this).data("close_on_esc") == 'on' ) hideModal(this);
876                        });
877                    }
878                } );
879
880            });
881
882		</script>
882
883
884	
885		
885<script type="text/javascript">
886			jQuery(document).ready(function() {
887				jQuery('body').on('click', '.oxy-menu-toggle', function() {
888					jQuery(this).parent('.oxy-nav-menu').toggleClass('oxy-nav-menu-open');
889					jQuery('body').toggleClass('oxy-nav-menu-prevent-overflow');
890					jQuery('html').toggleClass('oxy-nav-menu-prevent-overflow');
891				});
892				var selector = '.oxy-nav-menu-open .menu-item a[href*="#"]';
893				jQuery('body').on('click', selector, function(){
894					jQuery('.oxy-nav-menu-open').removeClass('oxy-nav-menu-open');
895					jQuery('body').removeClass('oxy-nav-menu-prevent-overflow');
896					jQuery('html').removeClass('oxy-nav-menu-prevent-overflow');
897					jQuery(this).click();
898				});
899			});
900		</script>
900
901
902	
902<script type="text/javascript" src="https://www.instantiations.com/wp-content/plugins/oxygen/component-framework/vendor/aos/aos.js?ver=1" id="oxygen-aos-js"></script>
vendor: 1 bytes, line 902
902
903<script type="text/javascript" id="ct-footer-js">
904	  	AOS.init({
905	  		  		  		  		  		  		  				  			})
906		
907				jQuery('body').addClass('oxygen-aos-enabled');
908		
909		
910	</script>
910<style type="text/css" id="ct_code_block_css_100210">/* Styles for users who prefer dark mode at the OS level */
911@media (prefers-color-scheme: dark) {
912  /* defaults to dark theme */
913  body { 
914    /* color: #003865; */
915		background-color: #FFFFFF;
916  }
917	input
918	{
919		background-color: #FFFFFF;
920		color: #003865;
921	}
922}</style>
923<script type="text/javascript" id="ct_code_block_js_100205">    jQuery( document ).ready(function() {
924        // bind a click event to the 'skip' link
925        jQuery(".skip").click(function(event){
926    
927            // strip the leading hash and declare
928            // the content we're skipping to
929            var skipTo="#"+this.href.split('#')[1];
930    
931            // Setting 'tabindex' to -1 takes an element out of normal 
932            // tab flow but allows it to be focused via javascript
933            jQuery(skipTo).attr('tabindex', -1).on('blur focusout', function () {
934    
935                // when focus leaves this element, 
936                // remove the tabindex attribute
937                jQuery(this).removeAttr('tabindex');
938    
939            }).focus(); // focus on the content container
940        });
941    });</script>
941
942<style type="text/css" id="ct_code_block_css_100205">    .skip {
943     	transition:top .5s;
944      z-index:1000;
945    }
946    
947    a.skip:active, 
948    a.skip:focus, 
949    a.skip:hover {
950      top:5px !important;  
951    }</style>
952<script type="text/javascript" id="ct_code_block_js_100164">jQuery(function($){
953  
954	var ua = window.navigator.userAgent; 
955	var msie = ua.indexOf("MSIE");
956	var trident = ua.indexOf("Trident");
957  
958  if (msie > 0 || trident > 0) {
959   	//console.log("This is IE");
960    $("#ie-bar").css("display", "block");
961    
962  } else {
963   	//console.log("This is not IE"); 
964    
965  };
966  
967});</script>
967
968<style type="text/css" id="ct_code_block_css_100164">#ie-bar
969{
970	display:none;
971	width:100%;
972	background-color:#ec0046;
973  	padding:10px;
974  	position:relative;
975  	
976}
977
978#ie-bar-inner
979{
980  width:600px;
981  text-align:center;
982  display:block;
983  margin:auto;
984  z-index:999;
985  font-weight:700;
986  font-size:16px;
987  line-height:20px;
988  color:#ffffff;
989}</style>
990<style type="text/css" id="ct_code_block_css_100135">.oxy-pro-menu .oxy-pro-menu-mobile-close-icon {
991    top: 20px;
992    right: 20px;
993  	left:auto;
994}
995
996
997#top .oxy-header-center
998{
999display:flex;
1000justify-content:flex-start;
1001}
1002
1003/*.current-menu-item
1004{
1005 	border-bottom:3px solid #ec0042; 
1006}*/</style>
1007<style type="text/css" id="ct_code_block_css_100055">#code_block-55-10
1008{
1009  margin-top:5px;
1010  margin-left:17px;
1011}
1012
1013
1014/* Google Search result modifications */
1015
1016.gs-title, .gs-webResult.gs-result a.gs-title b, .gs-webResult.gs-result a.gs-title:hover b
1017{
1018  font-family:'Lato' !important;
1019  font-size:32px !important;
1020  transition:color .25s;
1021}
1022
1023.gsc-url-top
1024{
1025  font-family:'Lato' !important;
1026  
1027}
1028
1029.gsc-control-cse .gsc-table-result
1030{
1031  font-family:'Lato' !important;
1032  
1033}
1034
1035.gsc-search-button-v2, .gsc-search-button-v2:hover, .gsc-search-button-v2:focus
1036{
1037  border:none;
1038  background-color:transparent;
1039  padding: 6px 6px 6px 6px;
1040  margin-right:19px;
1041}
1042
1043.gsc-search-button-v2 svg
1044{
1045  width:23px;
1046  height:23px;
1047  cursor:pointer;
1048  transition:fill .25s;
1049}
1050
1051.gsc-search-button-v2 svg:hover
1052{
1053  fill:#ec0046;
1054  transition:fill .25s;
1055}
1056
1057.gsc-webResult.gsc-result
1058{
1059 	padding: 30px 0; !important; 
1060}
1061
1062
1063.gsc-results .gsc-cursor-box .gsc-cursor-current-page
1064{
1065 color: #ec0046;
1066}
1067
1068.gsc-adBlock, .gcsc-find-more-on-google-root, .gcsc-more-maybe-branding-root
1069{
1070  display:none !important;
1071}
1072
1073/* search and close icons */
1074
1075svg#svg-fancy_icon-50-10, svg#svg-fancy_icon-56-10{
1076  
1077transition:fill .25s;
1078  
1079}
1080
1081svg#svg-fancy_icon-50-10:hover, svg#svg-fancy_icon-56-10:hover{
1082  
1083fill: #ec0046;
1084transition:fill .25s;
1085  
1086}
1087
1088form.gsc-search-box {
1089    max-width: 100%
1090}
1091
1092.gsc-wrapper
1093{
1094    max-width: 1180px;
1095    width: 66%;
1096}</style>
1097<style type="text/css" id="ct_code_block_css_290">#home-hero-abstract
1098{
1099	position: relative;
1100    max-width: 100%;
1101    margin-top: -345px;
1102   
1103}
1104
1105
1106
1107
1108
1109@media only screen and (max-width: 1400px) {
1110      
1111	#home-hero-abstract
1112	{
1113    max-width: 133%;
1114    margin-top: calc(-50vw + 581px);
1115   	}
1116
1117}
1118
1119
1120
1121@media only screen and (max-width: 1199px) {
1122   
1123	#home-hero-abstract
1124	{
1125    right:-25%;
1126    margin-top:-30%;
1127    }
1128}
1129
1130
1131
1132@media only screen and (max-width: 900px) {
1133   
1134	#home-hero-abstract
1135	{
1136    left:-10%;
1137    margin-top:-25%;
1138    }
1139}
1140
1141@media only screen and (max-width: 767px) {
1142	#home-hero-abstract
1143	{
1144    left:-25%;
1145    margin-top:-12%;
1146    }
1147
1148    #home-hero-abstract img
1149    {
1150    height:700px;
1151    }
1152
1153
1154}
1155
1156       
1157@media only screen and (max-width: 479px) {
1158  #home-hero-abstract
1159	{
1160    margin-top:70%;
1161    }
1162
1163}
1164
1165@media only screen and (max-width: 321px) {
1166
1167
1168}</style>
1169<style type="text/css" id="ct_code_block_css_263">#animated-render-blue {
1170 
1171
1172}
1173
1174#animated-render-blue img{
1175  	max-width: 100%;
1176}
1177
1178
1179@media only screen and (max-width: 1399px) {
1180
1181  
1182}
1183
1184
1185
1186@media only screen and (max-width: 1199px) {
1187	#animated-render-blue img
1188  	{
1189    	margin-top: -25px;
1190	}
1191  
1192}
1193
1194@media only screen and (max-width: 767px) {
1195
1196
1197}
1198
1199       
1200@media only screen and (max-width: 479px) {
1201
1202  #animated-render-blue img
1203  	{
1204    	margin-top: -25px;
1205	}
1206}
1207
1208
1209@media only screen and (max-width: 321px) {
1210
1211  #animated-render-blue img
1212  	{
1213    	margin-top: -100px;
1214	}
1215}</style>
1216<style type="text/css" id="ct_code_block_css_100127">.footer-social-link svg {
1217  transition:all .25s;
1218  opacity:.75;
1219  fill:#003865;
1220}
1221
1222
1223.footer-social-link svg:hover{
1224 
1225  transition:all .25s;
1226  opacity:1;
1227  fill:#ec0046;
1228  
1229}
1230</style>
1231<style type="text/css" id="ct_code_block_css_100116">@media (max-width:1199px)
1232{
1233#_nav_menu-89-10.oxy-nav-menu:not(.oxy-nav-menu-open) .menu-item a, #_nav_menu-80-10.oxy-nav-menu:not(.oxy-nav-menu-open) .menu-item a,
1234  #_nav_menu-202-10.oxy-nav-menu:not(.oxy-nav-menu-open) .menu-item a, #_nav_menu-202-10.oxy-nav-menu:not(.oxy-nav-menu-open) .menu-item a{
1235 justify-content:center; 
1236}
1237#_nav_menu-89-10.oxy-nav-menu:not(.oxy-nav-menu-open) .menu-item a:hover, #_nav_menu-80-10.oxy-nav-menu:not(.oxy-nav-menu-open) .menu-item a:hover,
1238  #_nav_menu-202-10.oxy-nav-menu:not(.oxy-nav-menu-open) .menu-item a:hover, #_nav_menu-202-10.oxy-nav-menu:not(.oxy-nav-menu-open) .menu-item a:hover{
1239 justify-content:center; 
1240}  
1241
1242#_nav_menu-89-10 .oxy-nav-menu-list, #_nav_menu-80-10 .oxy-nav-menu-list,
1243#_nav_menu-202-10 .oxy-nav-menu-list, #_nav_menu-202-10 .oxy-nav-menu-list  {
1244    flex-direction: row;
1245  
1246}
1247  
1248
1249@media (max-width:767px)
1250{
1251
1252#_nav_menu-89-10 .oxy-nav-menu-list, #_nav_menu-80-10 .oxy-nav-menu-list,
1253  #_nav_menu-202-10 .oxy-nav-menu-list, #_nav_menu-202-10 .oxy-nav-menu-list
1254  {
1255    flex-direction: column;
1256  
1257}</style>
1258<style type="text/css" id="ct_code_block_css_100138">/* Styles for Cookie Pop-up */
1259
1260/* GDPR Cookie dialog */
1261
1262.gdprcookie {
1263    position: fixed;
1264    color: #fff;
1265    font-size: 13px;
1266    line-height: 18px;
1267    right: 1.5rem;
1268    bottom: 1.5rem;
1269    max-width: 28em;
1270    padding: 1rem;
1271    background: #003865;
1272    /* box-shadow: 1px 1px 10px 3px rgb(0 56 101 / 25%);*/
1273    z-index:99999;
1274    font-family: Lato;
1275}
1276
1277@media only screen and (max-width: 479px) {
1278  .gdprcookie {
1279    max-width: 30em;
1280    left: 1.25rem;
1281    right: 1.25rem;
1282    bottom: 1.25rem;
1283  }
1284} 
1285
1286.gdprcookie ul
1287{
1288  
1289  display:inline-block;
1290}
1291
1292.gdprcookie div:first-of-type{
1293    font-size: 17px;
1294    font-weight:700;
1295    line-height:15px;
1296}
1297
1298.gdprcookie p{
1299  font-size: 13px;
1300  font-weight:400;
1301  line-height: 18px;
1302  margin-bottom:20px;
1303}
1304
1305.gdprcookie-types div:first-of-type {
1306
1307    font-size: 13px;
1308    font-weight:700;
1309    line-height:15px;
1310  	margin-bottom:10px;
1311}
1312.gdprcookie a {
1313    color: #fff;
1314    text-decoration:underline;
1315    transition:color .25s;
1316}
1317
1318.gdprcookie a:hover {
1319    color:#fff;
1320    transition:color .25s;
1321  	text-decoration:none;
1322}
1323
1324
1325/* GDPR Cookie buttons */
1326
1327.gdprcookie-buttons {
1328    text-align: center;
1329  	width:100%;   
1330}
1331.gdprcookie-buttons button {
1332    color: #FFF;
1333    font-family: inherit;
1334    font-size: 13px;
1335    padding: 4px 6px;
1336    letter-spacing: .5px;
1337    border:1px solid #FFF;
1338    border-radius: 30px;
1339    margin-right:2%;
1340    cursor: pointer;
1341    transition:color .25s;
1342  	width:48%;
1343  	background:#003865;
1344    font-weight:400;
1345    text-transform: uppercase;
1346}
1347
1348.gdprcookie-buttons button:last-of-type{
1349  margin-right:0;
1350}
1351
1352.gdprcookie-buttons button:hover {
1353    color: #003865;
1354    transition:all .25s;
1355  	border: 1px solid #fff;
1356    background-color: #fff;
1357}
1358
1359.gdprcookie-buttons button:disabled {
1360    color: #fff;
1361    cursor:default;
1362  border:1px solid #fff;
1363  background:transparent;
1364  opacity:.33;
1365}
1366
1367#cookiecontrol
1368{
1369    border-width:0;
1370}
1371
1372/* GDPR Cookie types */
1373
1374.gdprcookie-types ul {
1375    overflow: hidden;
1376    padding: 0;
1377    margin: 0 0 15px 0;
1378  	width:100%;
1379}
1380.gdprcookie-types li:first-child {
1381    display: block;
1382    list-style: none;
1383    float: left;
1384    width: 40%;
1385    padding: 0;
1386    margin: 0;
1387  list-style-type:none;
1388}
1389
1390.gdprcookie-types li:nth-child(2) {
1391    display: block;
1392    list-style: none;
1393    float: left;
1394    width: 60%;
1395    padding: 0;
1396    margin: 0;
1397  list-style-type:none;
1398}
1399
1400.gdprcookie-types input[type=checkbox] {
1401    margin-right: .25rem;
1402    font-size:20px;
1403}</style>
1404<script type="text/javascript" id="ct_code_block_js_100136">/*!
1405 * gdpr-cookie - A jQuery plugin to manage cookie settings in compliance with EU law
1406 *
1407 * Copyright (c) 2018 Martijn Saly
1408 *
1409 * Licensed under the MIT license:
1410 *   http://www.opensource.org/licenses/mit-license.php
1411 *
1412 * Version: 0.2.0
1413 *
1414 */
1415;(function(root, factory) {
1416    if (typeof define === "function" && define.amd) {
1417        // AMD
1418        define([ "jquery" ], factory);
1419    }
1420    else if (typeof module === "object" && module.exports) {
1421        // CommonJS
1422        module.exports = function( root, jQuery ) {
1423            if (jQuery === undefined) {
1424                if (typeof window !== "undefined") {
1425                    jQuery = require("jquery");
1426                }
1427                else {
1428                    jQuery = require("jquery")(root);
1429                }
1430            }
1431            factory(jQuery);
1432            return jQuery;
1433        };
1434    }
1435    else {
1436        // Plain
1437        factory(root.jQuery);
1438    }
1439}(this, function($) {
1440    "use strict";
1441    
1442    var settings, showing = false, display, isAdvanced = false, seenAdvanced = false;
1443
1444    var setCookie = function(name, value, expires) {
1445        var d = new Date();
1446        d.setTime(d.getTime() + expires * 24 * 60 * 60 * 1000);
1447        // ";SameSite=Strict" was added to adhere to the new browser rules for cookies, GS
1448        document.cookie = name + "=" + value + ";expires=" + d.toUTCString() + ";path=/" + ";SameSite=Strict" + ";domain=instantiations.com";
1449        return getCookie(name);
1450    };
1451
1452    var getCookie = function(name) {
1453        var ca = decodeURIComponent(document.cookie).split(";");
1454        name += "=";
1455        for (var i = 0; i < ca.length; i++) {
1456            var c = ca[i];
1457            while (c.charAt(0) == " ") {
1458                c = c.substring(1);
1459            }
1460            if (c.indexOf(name) === 0) {
1461                return c.substring(name.length, c.length);
1462            }
1463        }
1464    };
1465    
1466    var validateCookieName = function(name) {
1467        // Cookie name may consist of \u0021-\u007e, excluding whitespace and characters , ; =
1468        return name.replace(/[^\u0021-\u007e]|[,;=\s]/g, "");
1469    };
1470    
1471    var getPreferences = function() {
1472        var preferences = getCookie(settings.cookieName);
1473        try {
1474            preferences = JSON.parse(preferences);
1475        }
1476        catch(ex) {
1477            return;
1478        }
1479
1480        if (!Array.isArray(preferences) || !preferences.length) {
1481            return;
1482        }
1483        
1484        var knownTypes = settings.cookieTypes.map(function(type) {
1485            return type.value;
1486        });
1487        preferences = preferences.filter(function(pref) {
1488            return knownTypes.indexOf(pref) >= 0;
1489        });
1490        
1491        return preferences;
1492    };
1493    
1494    $.gdprcookie = { };
1495        
1496    $.gdprcookie.init = function(options) {
1497        
1498        // Define defaults
1499        var defaultSettings = {
1500            cookieTypes: [
1501                {
1502                    type: "Essential",
1503                    value: "essential",
1504                    description: "These are cookies that are essential for the website to work correctly.",
1505                    checked: true,
1506                },
1507                {
1508                    type: "Site Preferences",
1509                    value: "preferences",
1510                    description: "These are cookies that are related to your site preferences, e.g. remembering your username, site colours, etc.",
1511                    checked: true,
1512                },
1513                {
1514                    type: "Analytics",
1515                    value: "analytics",
1516                    description: "Cookies related to site visits, browser types, etc.",
1517                    checked: true,
1518                },
1519                {
1520                    type: "Marketing",
1521                    value: "marketing",
1522                    description: "Cookies related to marketing, e.g. newsletters, social media, etc",
1523                    checked: true,
1524                }
1525            ],
1526            title: "Cookies & privacy",
1527            subtitle: "Select cookies to accept",
1528            message: "Cookies enable you to use shopping carts and to personalize your experience on our sites, tell us which parts of our websites people have visited, help us measure the effectiveness of ads and web searches, and give us insights into user behaviour so we can improve our communications and products.",
1529            submessage: "",
1530            delay: 0, // delay in milliseconds
1531            expires: 30, // expiration date
1532            cookieName: "cookieControlPrefs",
1533            acceptReload: false,
1534            acceptBeforeAdvanced: [ "essential" ],
1535            acceptAfterAdvanced: [ "essential" ],
1536            allowUnadvanced: false,
1537            switchAdvanced: false,
1538            acceptBtnLabel: "Accept cookies",
1539            advancedBtnLabel: "Customize cookies",
1540            unadvancedBtnLabel: "Back",
1541            customShowMessage: undefined,
1542            customHideMessage: undefined,
1543            customShowChecks: undefined,
1544            customHideChecks: undefined
1545        };
1546
1547        // Set defaults
1548        settings = $.extend(defaultSettings, window.GdprCookieSettings, options);
1549        
1550        // Coerce into a string because this is poured into innerHTML
1551        settings.message = String(settings.message);
1552        
1553        // Coerce into a positive number because it is passed to setTimeout
1554        settings.delay = Math.max(0, +settings.delay) || 0;
1555        
1556        // Coerce into a positive whole number between 0 and 730 (2-ish years), to ensure a well-formed cookie value
1557        settings.expires = Math.round(Math.min(Math.max(0, +settings.expires), 730)) || 0; 
1558        
1559        // Coerce cookieTypes into an array containing plain objects
1560        if (Array.isArray(settings.cookieTypes)) {
1561            settings.cookieTypes = settings.cookieTypes.filter(function(cookieType) {
1562                return $.isPlainObject(cookieType);
1563            });
1564            if (!settings.cookieTypes.length) {
1565                settings.cookieTypes = defaultSettings.cookieTypes;
1566            }
1567        }
1568        else {
1569            settings.cookieTypes = defaultSettings.cookieTypes;
1570        }
1571        
1572        // Coerce into a string and valid cookie name
1573        settings.cookieName = validateCookieName(String(settings.cookieName || "")) || "cookieControlPrefs";
1574        
1575        // Coerce acceptBeforeAdvanced and acceptAfterAdvanced into arrays of str
1575ings, that exist in settings.cookieTypes[].value
1576        var coerce = (function() {
1577            var values = settings.cookieTypes.map(function(cookieType) { return cookieType.value; }),
1578                exists = function(item) { return values.indexOf(item) >= 0; };
1579            
1580            return function(setting) {
1581                // Convert a single string into an array of 1
1582                setting = typeof setting === "string" ? [ setting ] : setting;
1583
1584                // If it's an array, make sure it only contains known cookie types
1585                return Array.isArray(setting) ? setting.map(String).filter(exists) : undefined;
1586            };
1587        }());
1588        settings.acceptBeforeAdvanced = coerce(settings.acceptBeforeAdvanced);
1589        settings.acceptAfterAdvanced = coerce(settings.acceptAfterAdvanced);
1590        
1591        $(function() { display(); });
1592    };
1593    
1594    display = function(alwaysShow) {
1595        if (showing) {
1596            return;
1597        }
1598        
1599        var body = $("body"),
1600            myCookiePrefs = getPreferences();
1601        
1602        var elements = {
1603            container: undefined,
1604            introContainer: undefined,
1605            types: undefined,
1606            typesContainer: undefined,
1607            buttons: { 
1608                accept: undefined, 
1609                advanced: undefined 
1610            },
1611            allChecks: [ ],
1612            nonessentialChecks: [ ]
1613        };
1614            
1615        var hide = function(canreload) {
1616            if (elements.container) {
1617                if ($.isFunction(settings.customHideMessage)) {
1618                    settings.customHideMessage.call(elements.container, elements.container);
1619                    showing = false;
1620                }
1621                else {
1622                    elements.container.fadeOut("fast", function() {
1623                        $(this).remove();
1624                        showing = false;
1625                    });
1626                }
1627            }
1628            if (canreload && settings.acceptReload) {
1629                document.location.reload();
1630            }
1631        };
1632        
1633        if (!Array.isArray(myCookiePrefs) || !myCookiePrefs.length) {
1634            myCookiePrefs = undefined;
1635        }
1636
1637        if (alwaysShow || !myCookiePrefs) {
1638            elements.types = $("<ul/>").append(
1639                $.map(settings.cookieTypes, function(field, index) {
1640                    if (!field.type || !field.value) {
1641                        return;
1642                    }
1643                    var isEssential = field.value === "essential",
1644                        isChecked;
1645                    
1646                    if (Array.isArray(myCookiePrefs)) {
1647                        isChecked = myCookiePrefs.indexOf(field.value) >= 0;
1648                    }
1649                    else {
1650                        isChecked = field.checked === true;
1651                    }
1652                    
1653                    var input = $("<input/>", {
1654                        type: "checkbox",
1655                        id: "gdpr-cookietype-" + index,
1656                        name: "gdpr[]",
1657                        value: field.value,
1658
1659                        // The essential cookies checkbox is checked and cannot be unchecked
1660                        checked: isEssential || isChecked,
1661                        disabled: isEssential
1662                    });
1663                    
1664                    elements.allChecks.push(input.get(0));
1665                    if (!isEssential) {
1666                        elements.nonessentialChecks.push(input.get(0));
1667                    }
1668                    
1669                    var label = $("<label/>", {
1670                        "for": "gdpr-cookietype-" + index,
1671                        text: field.type,
1672                        title: field.description
1673                    });
1674
1675                    return $("<li/>").append([
1676                        input.get(0),
1677                        label.get(0)
1678                    ]).get(0);
1679                })
1680            );
1681            elements.allChecks = $(elements.allChecks);
1682            elements.nonessentialChecks = $(elements.nonessentialChecks);
1683            
1684            // When accept button is clicked drop cookie
1685            var acceptClick = function() {
1686                var prefsFromCheckboxes = function() {
1687                    return elements.allChecks
1688                        .filter(function() { return this.checked || this.disabled; })
1689                        .map(function() { return this.value; })
1690                        .get();
1691                };
1692                var prefsOutsideAdvanced = function(where) {
1693                    var setting = "accept" + where + "Advanced";
1694                    return Array.isArray(settings[setting]) ? settings[setting] : prefsFromCheckboxes();
1695                };
1696                
1697                // Hide the cookie message
1698                hide(true);
1699
1700                // Save user cookie preferences (in a cookie!)
1701                var prefs = isAdvanced ? prefsFromCheckboxes() : prefsOutsideAdvanced(seenAdvanced ? "After" : "Before");
1702                setCookie(settings.cookieName, JSON.stringify(prefs), settings.expires);
1703
1704                // Trigger cookie accept event
1705                body.trigger("gdpr:accept");
1706            };
1707            
1708            // Toggle advanced cookie options
1709            var advancedClick = function() {
1710                var showAdvanced = function() {
1711                    if (!settings.allowUnadvanced) {
1712                        elements.buttons.advanced.prop("disabled", true);
1713                    }
1714
1715                    if ($.isFunction(settings.customShowChecks)) {
1716                        settings.customShowChecks.call(elements.typesContainer, elements.typesContainer, elements.introContainer);
1717                    }
1718                    else {
1719                        if (settings.switchAdvanced) {
1720                            elements.introContainer.slideUp("fast");
1721                        }
1722                        elements.typesContainer.slideDown("fast");
1723                    }
1724
1725                    isAdvanced = seenAdvanced = true;
1726                    if (settings.allowUnadvanced && settings.unadvancedBtnLabel && settings.advancedBtnLabel !== settings.unadvancedBtnLabel) {  
1727                        elements.buttons.advanced.text(settings.unadvancedBtnLabel);
1728                    }
1729
1730                    // Trigger advanced show event
1731                    body.trigger("gdpr:advanced");
1732                };
1733                var hideAdvanced = function() {
1734                    if ($.isFunction(settings.customHideChecks)) {
1735                        settings.customHideChecks.call(elements.typesContainer, elements.typesContainer, elements.introContainer);
1736                    }
1737                    else {
1738                        if (settings.switchAdvanced) {
1739                            elements.introContainer.slideDown("fast");
1740                        }
1741                        elements.typesContainer.slideUp("fast");
1742                    }
1743
1744                    isAdvanced = false;
1745                    if (settings.allowUnadvanced && settings.unadvancedBtnLabel && settings.advancedBtnLabel !== settings.unadvancedBtnLabel) {  
1746                        elements.buttons.advanced.text(settings.advancedBtnLabel);
1747                    }
1748                    
1749                    // Trigger advanced show event
1750                    body.trigger("gdpr:unadvanced");
1751                };
1752                
1753                if (isAdvanced) {
1754                    if (settings.allowUnadvanced) {
1755                        hideAdvanced();
1756                    }
1757                }
1758                else {
1759                    showAdvanced();
1760                }
1761            };
1762            
1763            // Build cookie message to display later on
1764            var cookieMessage = (elements.container = $("<div class=gdprcookie>")).append([
1765                (elements.introContainer = $("<div class=gdprcookie-intro>")).append([
1766                    settings.title ? $("<div/>", { text: settings.title }).get(0) : undefined,
1767                    settings.message ? $("<p/>", { html: settings.message }).get(0) : undefined
1768                ]).get(0),
1769                (elements.typesContainer = $("<div class=gdprcookie-types>")).hide().append([
1770                    settings.subtitle ? $("<div/>", { text: settings.subtitle }).get(0) : undefined,
1771                    settings.submessage ? $("<p/>", { html: settings.submessage }).get(0) : undefined,
1772                    elements.types.get(0)
1773                ]).get(0),
1774                $("<div class=gdprcookie-buttons>").append([
1775                    (elements.buttons.accept = $("<button/>", { type: "button", text: settings.acceptBtnLabel, click: acceptClick })).get(0),
1776                    (elements.buttons.advanced = $("<button/>", { type: "button", text: settings.advancedBtnLabel, click: advancedClick })).get(0)
1777                ]).get(0)
1778            ]);
1779            
1780            var show = function() {
1781                body.append(cookieMessage);
1782                showing = true;
1783                isAdvanced = seenAdvanced = false;
1784                if ($.isFunction(settings.customShowMessage)) {
1785                    settings.customShowMessage.call(elements.container, elements.container);
1786                }
1787                else {
1788                    elements.container.hide().fadeIn("slow");
1789                }
1790                
1791                // Trigger container show event
1792                body.trigger("gdpr:show");
1793            };
1794            
1795            if (!settings.delay || alwaysShow) {
1796                show();
1797            }
1798            else {
1799                window.setTimeout(show, settings.delay);
1800            }
1801        }
1802        else {
1803            hide(false);
1804        }
1805    };
1806    
1807    $.gdprcookie.display = function() {
1808        display(true);
1809    };
1810
1811    // Method to check if user cookie preference exists
1812    $.gdprcookie.preference = function(value) {
1813        var preferences = getPreferences();
1814        
1815        if (value === "essential") {
1816            return true;
1817        }
1818        else if (!preferences) {
1819            return false;
1820        }
1821        else if (value !== undefined) {
1822            return preferences.indexOf(value) >= 0;
1823        }
1824        return preferences;
1825    };
1826    
1827    // Protection against malicious scripts, e.g. monkey patching
1828    $.gdprcookie = Object.freeze($.gdprcookie);
1829
1830}));
1831
1832
1833
1834
1835
1836
1837// LOOK HERE FOR GA TAG AND CUSTOMIZATIONS
1838
1839
1840
1841
1842//customizations for the gdpr cookie functionality
1843
1844// runs the function that loads Google Analytics if cookie is appropriately set.
1845
1846jQuery.gdprcookie.init({
1847    cookieTypes: [
1848        {
1849            type: "Essential",
1850            value: "essential",
1851            description: "Cookies that are essential for this website to function correctly."
1852        },
1853        {
1854            type: "Analytics (Optional)",
1855            value: "analytics",
1856            description: "Cookies related to site visits, browser types, etc.",
1857            checked: true
1858        }
1859    ],
1860    title: "Cookies & Privacy",
1861    subtitle: "Select which cookies to accept",
1862    message: "Cookies tell us which parts of our website are visited and give us anonymous insights into user behavior so we can make improvements. For more information, please view our 
1862<a href=\"https://www.instantiations.com/privacy/\">Privacy Policy</a>.",
1863    delay: 0,
1864    expires: 30,
1865    cookieName: "cookiePrefs",
1866    acceptBeforeAdvanced: [ "essential", "analytics" ],
1867    acceptBtnLabel: "Accept Cookies",
1868    advancedBtnLabel: "Cookie Settings...",
1869});
1870
1871
1872function cookieUpd() {
1873    //console.log("cookieUpd function ran");
1874    if (jQuery.gdprcookie.preference("analytics") === true) {
1875        //console.log("This shows analytics are accepted.");
1876        jQuery("body").append("
1876<script async id=\"GA\" async src=\"https://www.googletagmanager.com/gtag/js?id=UA-163862464-2\"><\/script>");
1877        
vendor: 151 bytes, lines 1877-1880
1877window.dataLayer = window.dataLayer || [];
1878        function gtag(){dataLayer.push(arguments);}
1879        gtag('js', new Date());
1880        gtag('config', '
1880UA-163862464-2
vendor: 11 bytes, lines 1880-1881
1880');
1881      	
1881gtag('config', 'G-STB801QCLR');
1882		
1883		//for Google Tag Manager
1884		jQuery("head").append("
1884<script id=\"GT1\">
vendor: 325 bytes, line 1884
1884(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','
1884GTM-NNKRTSC
vendor: 3 bytes, line 1884
1884');
1884<\/script>");
1885		
1886		jQuery("body").append("<noscript id=\"GT2\"><iframe src=\"https://www.googletagmanager.com/ns.html?id=GTM-NNKRTSC\" height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"><\/iframe><\/noscript>");
1887		
1888		//for linkedin insights
1889		jQuery("body").append("<div id=\"LII\">
1889<script type=\"text/javascript\">_linkedin_partner_id =\"3533298\";window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];window._linkedin_data_partner_ids.push(_linkedin_partner_id);<\/script>
1889<script type=\"text/javascript\">(function (l) {if (!l) {window.lintrk = function (a, b) { window.lintrk.q.push([a, b]) };window.lintrk.q = []}var s = document.getElementsByTagName(\"script\")[0];var b = document.createElement(\"script\");b.type = \"text/javascript\"; b.async = true;b.src = \"https://snap.licdn.com/li.lms-analytics/insight.min.js\";s.parentNode.insertBefore(b, s);})(window.lintrk);<\/script><noscript><img height=\"1\" width=\"1\" style=\"display:none;\" alt=\"\" src=\"https://px.ads.linkedin.com/collect/?pid=3533298&fmt=gif\" \/><\/noscript><\/div>");
1890
1891		//Hotjar Tracking Code
1892		jQuery("body").append("<div id=\"HJ\">
1892<script>
vendor: 102 bytes, line 1892
1892(function(h,o,t,j,a,r){h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};h._hjSettings={hjid:
18922704905
vendor: 216 bytes, line 1892
1892,hjsv:6};a=o.getElementsByTagName('head')[0];r=o.createElement('script');r.async=1;r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;a.appendChild(r);})(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
1892<\/script><\/div>");
1893        
1894        //Hubspot Tracking Code
1895        jQuery("body").append("<div id=\"HBSPT\">
1895<script type=\"text/javascript\" id=\"hs-script-loader\" async defer src=\"//js-na2.hs-scripts.com/243925808.js\"><\/script><\/div>");
1896
1897
1898
1899    } else{
1900        //console.log("This shows only essentials are accepted or no cookies set at all.");
1901        jQuery("#GA").remove();
1902		jQuery("#LII").remove();
1903		jQuery("#HJ").remove();
1904		jQuery("#GT1").remove();
1905		jQuery("#GT2").remove();
1906        jQuery("#HBSPT").remove();
1907    };
1908};
1909
1910jQuery("#cookiecontrol").click(function(){
1911    jQuery.gdprcookie.display();
1912});
1913
1914
1915jQuery(document.body)
1916        .on("gdpr:show", function() {
1917            //console.log("Cookie dialog is shown");
1918        })
1919        .on("gdpr:accept", function() {
1920            var preferences = jQuery.gdprcookie.preference();
1921            //console.log("Preferences saved:", preferences);
1922            cookieUpd();
1923
1924        })
1925        .on("gdpr:advanced", function() {
1926            //console.log("Advanced button was pressed");
1927        });
1928
1929
1930// this function runs on document ready on all pages
1931jQuery(cookieUpd());</script>
1931
1932<style type="text/css" id="ct_code_block_css_100200">#div_block-183-10 svg
1933{
1934  	transition:all .25s;
1935  	opacity:.66;
1936  	fill:#003865;
1937}
1938
1939#div_block-183-10:hover svg
1940{
1941 	fill:#ec0046;
1942  	opacity:1;
1943  	transition:all .25s;
1944}</style>
1945<style type="text/css" id="ct_code_block_css_100189">#code_block-189-10
1946{
1947    width:14px;
1948  	height:14px;
1949  	position:relative;
1950  	top:-5px;
1951}</style>
1952<style type="text/css" id="ct_code_block_css_100211">code[class*="language-"], pre[class*="language-"] {
1953
1954font-family: monospace, monospace !important;
1955white-space: pre-wrap;
1956}
1957
1958@media screen and (max-width: 767px) {
1959pre[class*="language-"] {
1960    max-width:335px;
1961}
1962}</style>
1963<!-- /WP_FOOTER --> 
1964</body>
1965</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.