Help
RSS
API
Feed
Maltego
Contact
Domain > aisuperior.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2019-11-06
54.158.116.178
(
ClassC
)
2025-11-25
148.135.128.87
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyDate: Tue, 25 Nov 2025 14:27:08 GMTContent-Type: text/htmlContent-Length: 795Connection: keep-aliveLocation: https://aisuperior.com/platform: hostingerpanel: hpanelContent-Security-Policy: upgrade-insecure-requestsAge: 6752Server: hcdnalt-svc: h3:443; ma86400x-hcdn-request-id: 1f3a4358882b08d0e39ee89011192f7e-phx-edge7x-hcdn-cache-status: HIT !DOCTYPE html>html styleheight:100%>head>meta nameviewport contentwidthdevice-width, initial-scale1, shrink-to-fitno />title> 301 Moved Permanently/title>style>@media (prefers-color-scheme:dark){body{background-color:#000!important}}/style>/head>body stylecolor: #444; margin:0;font: normal 14px/20px Arial, Helvetica, sans-serif; height:100%; background-color: #fff;>div styleheight:auto; min-height:100%; > div styletext-align: center; width:800px; margin-left: -400px; position:absolute; top: 30%; left:50%;> h1 stylemargin:0; font-size:150px; line-height:150px; font-weight:bold;>301/h1>h2 stylemargin-top:20px;font-size: 30px;>Moved Permanently/h2>p>The document has been permanently moved./p>/div>/div>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Tue, 25 Nov 2025 14:27:08 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveVary: Accept-EncodingX-Powered-By: PHP/8.4.3Link: https://aisuperior.com/wp-json/>; relhttps://api.w.org/Link: https://aisuperior.com/wp-json/wp/v2/pages/11>; relalternate; titleJSON; typeapplication/jsonLink: https://aisuperior.com/>; relshortlinkEtag: W/17172-1763700089;gzX-LiteSpeed-Cache: hitplatform: hostingerpanel: hpanelContent-Security-Policy: upgrade-insecure-requestsAge: 375956Server: hcdnalt-svc: h3:443; ma86400x-hcdn-request-id: 2fd16024e28d8441bb920f65a9b72adb-phx-edge6x-hcdn-cache-status: HIT !DOCTYPE html>html langen-US>head>meta charsetUTF-8>meta nameviewport contentwidthdevice-width, initial-scale1> link relprofile hrefhttps://gmpg.org/xfn/11> meta namerobots contentindex, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1 /> style>img:is(sizesauto i, sizes^auto, i) { contain-intrinsic-size: 3000px 1500px }/style> !-- Google Tag Manager for WordPress by gtm4wp.com -->script data-cfasyncfalse data-pagespeed-no-defer> var gtm4wp_datalayer_name dataLayer; var dataLayer dataLayer || ;/script>!-- End Google Tag Manager for WordPress by gtm4wp.com --> !-- This site is optimized with the Yoast SEO plugin v26.4 - https://yoast.com/wordpress/plugins/seo/ --> title>AI Services and Development Company | AI Superior/title> meta namedescription contentAI Superior is Here to Help Companies Enhance Their Business Competitiveness by Developing Cutting-edge Artificial Intelligence Services and Solutions. /> link relcanonical hrefhttps://aisuperior.com/ /> meta propertyog:locale contenten_US /> meta propertyog:type contentwebsite /> meta propertyog:title contentAI Services and Development Company | AI Superior /> meta propertyog:description contentAI Superior is Here to Help Companies Enhance Their Business Competitiveness by Developing Cutting-edge Artificial Intelligence Services and Solutions. /> meta propertyog:url contenthttps://aisuperior.com/ /> meta propertyog:site_name contentaisuperior /> meta propertyarticle:modified_time content2025-08-12T13:21:18+00:00 /> meta propertyog:image contenthttps://aisuperior.com/wp-content/uploads/2023/12/AISD_icon.svg /> meta nametwitter:card contentsummary_large_image /> script typeapplication/ld+json classyoast-schema-graph>{@context:https://schema.org,@graph:{@type:WebPage,@id:https://aisuperior.com/,url:https://aisuperior.com/,name:AI Services and Development Company | AI Superior,isPartOf:{@id:https://aisuperior.com/#website},primaryImageOfPage:{@id:https://aisuperior.com/#primaryimage},image:{@id:https://aisuperior.com/#primaryimage},thumbnailUrl:https://aisuperior.com/wp-content/uploads/2023/12/AISD_icon.svg,datePublished:2023-08-18T06:10:10+00:00,dateModified:2025-08-12T13:21:18+00:00,description:AI Superior is Here to Help Companies Enhance Their Business Competitiveness by Developing Cutting-edge Artificial Intelligence Services and Solutions.,breadcrumb:{@id:https://aisuperior.com/#breadcrumb},inLanguage:en-US,potentialAction:{@type:ReadAction,target:https://aisuperior.com/}},{@type:ImageObject,inLanguage:en-US,@id:https://aisuperior.com/#primaryimage,url:https://aisuperior.com/wp-content/uploads/2023/12/AISD_icon.svg,contentUrl:https://aisuperior.com/wp-content/uploads/2023/12/AISD_icon.svg,width:48,height:48},{@type:BreadcrumbList,@id:https://aisuperior.com/#breadcrumb,itemListElement:{@type:ListItem,position:1,name:Home}},{@type:WebSite,@id:https://aisuperior.com/#website,url:https://aisuperior.com/,name:aisuperior,description:,potentialAction:{@type:SearchAction,target:{@type:EntryPoint,urlTemplate:https://aisuperior.com/?s{search_term_string}},query-input:{@type:PropertyValueSpecification,valueRequired:true,valueName:search_term_string}},inLanguage:en-US}}/script> meta namegoogle-site-verification contentRIqh1H63xyhFgQvAO3VYivYLvrHufSVaeIhX97cwqNU /> !-- / Yoast SEO plugin. -->link relalternate typeapplication/rss+xml titleaisuperior » Feed hrefhttps://aisuperior.com/feed/ />link relalternate typeapplication/rss+xml titleaisuperior » Comments Feed hrefhttps://aisuperior.com/comments/feed/ />script>window._wpemojiSettings {baseUrl:https:\/\/s.w.org\/images\/core\/emoji\/16.0.1\/72x72\/,ext:.png,svgUrl:https:\/\/s.w.org\/images\/core\/emoji\/16.0.1\/svg\/,svgExt:.svg,source:{concatemoji:https:\/\/aisuperior.com\/wp-includes\/js\/wp-emoji-release.min.js?ver6.8.3}};/*! This file is auto-generated */!function(s,n){var o,i,e;function c(e){try{var t{supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var tnew Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),a(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return eat})}function u(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);for(var ne.getImageData(16,16,1,1),a0;an.data.length;a++)if(0!n.dataa)return!1;return!0}function f(e,t,n,a){switch(t){caseflag:return n(e,\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f,\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f)?!1:!n(e,\ud83c\udde8\ud83c\uddf6,\ud83c\udde8\u200b\ud83c\uddf6)&&!n(e,\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f,\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f);caseemoji:return!a(e,\ud83e\udedf)}return!1}function g(e,t,n,a){var rundefined!typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):s.createElement(canvas),or.getContext(2d,{willReadFrequently:!0}),i(o.textBaselinetop,o.font600 32px Arial,{});return e.forEach(function(e){iet(o,e,n,a)}),i}function t(e){var ts.createElement(script);t.srce,t.defer!0,s.head.appendChild(t)}undefined!typeof Promise&&(owpEmojiSettingsSupports,iflag,emoji,n.supports{everything:!0,everythingExceptFlag:!0},enew Promise(function(e){s.addEventListener(DOMContentLoaded,e,{once:!0})}),new Promise(function(t){var nfunction(){try{var eJSON.parse(sessionStorage.getItem(o));if(objecttypeof e&&numbertypeof e.timestamp&&(new Date).valueOf()e.timestamp+604800&&objecttypeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if(undefined!typeof Worker&&undefined!typeof OffscreenCanvas&&undefined!typeof URL&&URL.createObjectURL&&undefined!typeof Blob)try{var epostMessage(+g.toString()+(+JSON.stringify(i),f.toString(),p.toString(),u.toString().join(,)+));,anew Blob(e,{type:text/javascript}),rnew Worker(URL.createObjectURL(a),{name:wpTestEmojiSupports});return void(r.onmessagefunction(e){c(ne.data),r.terminate(),t(n)})}catch(e){}c(ng(i,f,p,u))}t(n)}).then(function(e){for(var t in e)n.supportstet,n.supports.everythingn.supports.everything&&n.supportst,flag!t&&(n.supports.everythingExceptFlagn.supports.everythingExceptFlag&&n.supportst);n.supports.everythingExceptFlagn.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady!1,n.readyCallbackfunction(){n.DOMReady!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(en.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);/script>link relstylesheet idastra-theme-css-css hrefhttps://aisuperior.com/wp-content/themes/astra/assets/css/minified/main.min.css?ver4.11.12 mediaall />style idastra-theme-css-inline-css>:root{--ast-post-nav-space:0;--ast-container-default-xlg-padding:3em;--ast-container-default-lg-padding:3em;--ast-container-default-slg-padding:2em;--ast-container-default-md-padding:3em;--ast-container-default-sm-padding:3em;--ast-container-default-xs-padding:2.4em;--ast-container-default-xxs-padding:1.8em;--ast-code-block-background:#ECEFF3;--ast-comment-inputs-background:#F9FAFB;--ast-normal-container-width:1200px;--ast-narrow-container-width:750px;--ast-blog-title-font-weight:normal;--ast-blog-meta-weight:inherit;--ast-global-color-primary:var(--ast-global-color-5);--ast-global-color-secondary:var(--ast-global-color-4);--ast-global-color-alternate-background:var(--ast-global-color-7);--ast-global-color-subtle-background:var(--ast-global-color-6);--ast-bg-style-guide:#F8FAFC;--ast-shadow-style-guide:0px 0px 4px 0 #00000057;--ast-global-dark-bg-style:#fff;--ast-global-dark-lfs:#fbfbfb;--ast-widget-bg-color:#fafafa;--ast-wc-container-head-bg-color:#fbfbfb;--ast-title-layout-bg:#eeeeee;--ast-search-border-color:#e7e7e7;--ast-lifter-hover-bg:#e6e6e6;--ast-gallery-block-color:#000;--srfm-color-input-label:var(--ast-global-color-2);}html{font-size:100%;}a{color:#18276a;}a:hover,a:focus{color:#18276a;}body,button,input,select,textarea,.ast-button,.ast-custom-button{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-weight:400;font-size:16px;font-size:1rem;line-height:var(--ast-body-line-height,1.65em);}blockquote{color:var(--ast-global-color-3);}h1,h2,h3,h4,h5,h6,.entry-content :where(h1,h2,h3,h4,h5,h6),.site-title,.site-title a{font-weight:600;}.ast-site-identity .site-title a{color:var(--ast-global-color-2);}.site-title{font-size:26px;font-size:1.625rem;display:block;}.site-header .site-description{font-size:15px;font-size:0.9375rem;display:none;}.entry-title{font-size:26px;font-size:1.625rem;}.archive .ast-article-post .ast-article-inner,.blog .ast-article-post .ast-article-inner,.archive .ast-article-post .ast-article-inner:hover,.blog .ast-article-post .ast-article-inner:hover{overflow:hidden;}h1,.entry-content :where(h1){font-size:40px;font-size:2.5rem;font-weight:600;line-height:1.4em;}h2,.entry-content :where(h2){font-size:32px;font-size:2rem;font-weight:600;line-height:1.3em;}h3,.entry-content :where(h3){font-size:26px;font-size:1.625rem;font-weight:600;line-height:1.3em;}h4,.entry-content :where(h4){font-size:24px;font-size:1.5rem;line-height:1.2em;font-weight:600;}h5,.entry-content :where(h5){font-size:20px;font-size:1.25rem;line-height:1.2em;font-weight:600;}h6,.entry-content :where(h6){font-size:16px;font-size:1rem;line-height:1.25em;font-weight:600;}::selection{background-color:var(--ast-global-color-0);color:#ffffff;}body,h1,h2,h3,h4,h5,h6,.entry-title a,.entry-content :where(h1,h2,h3,h4,h5,h6){color:var(--ast-global-color-3);}.tagcloud a:hover,.tagcloud a:focus,.tagcloud a.current-item{color:#ffffff;border-color:#18276a;background-color:#18276a;}input:focus,inputtypetext:focus,inputtypeemail:focus,inputtypeurl:focus,inputtypepassword:focus,inputtypereset:focus,inputtypesearch:focus,textarea:focus{border-color:#18276a;}inputtyperadio:checked,inputtypereset,inputtypecheckbox:checked,inputtypecheckbox:hover:checked,inputtypecheckbox:focus:checked,inputtyperange::-webkit-slider-thumb{border-color:#18276a;background-color:#18276a;box-shadow:none;}.site-footer a:hover + .post-count,.site-footer a:focus + .post-count{background:#18276a;border-color:#18276a;}.single .nav-links .nav-previous,.single .nav-links .nav-next{color:#18276a;}.entry-meta,.entry-meta *{line-height:1.45;color:#18276a;}.entry-meta a:not(.ast-button):hover,.entry-meta a:not(.ast-button):hover *,.entry-meta a:not(.ast-button):focus,.entry-meta a:not(.ast-button):focus *,.page-links > .page-link,.page-links .page-link:hover,.post-navigation a:hover{color:#18276a;}#cat option,.secondary .calendar_wrap thead a,.secondary .calendar_wrap thead a:visited{color:#18276a;}.secondary .calendar_wrap #today,.ast-progress-val span{background:#18276a;}.secondary a:hover + .post-count,.secondary a:focus + .post-count{background:#18276a;border-color:#18276a;}.calendar_wrap #today > a{color:#ffffff;}.page-links .page-link,.single .post-navigation a{color:#18276a;}.ast-search-menu-icon .search-form button.search-submit{padding:0 4px;}.ast-search-menu-icon form.search-form{padding-right:0;}.ast-search-menu-icon.slide-search input.search-field{width:0;}.ast-header-search .ast-search-menu-icon.ast-dropdown-active .search-form,.ast-header-search .ast-search-menu-icon.ast-dropdown-active .search-field:focus{transition:all 0.2s;}.search-form input.search-field:focus{outline:none;}.ast-archive-title{color:var(--ast-global-color-2);}.widget-title,.widget .wp-block-heading{font-size:22px;font-size:1.375rem;color:var(--ast-global-color-2);}.ast-single-post .entry-content a,.ast-comment-content a:not(.ast-comment-edit-reply-wrap a){text-decoration:underline;}.ast-single-post .wp-block-button .wp-block-button__link,.ast-single-post .elementor-widget-button .elementor-button,.ast-single-post .entry-content .uagb-tab a,.ast-single-post .entry-content .uagb-ifb-cta a,.ast-single-post .entry-content .wp-block-uagb-buttons a,.ast-single-post .entry-content .uabb-module-content a,.ast-single-post .entry-content .uagb-post-grid a,.ast-single-post .entry-content .uagb-timeline a,.ast-single-post .entry-content .uagb-toc__wrap a,.ast-single-post .entry-content .uagb-taxomony-box a,.entry-content .wp-block-latest-posts > li > a,.ast-single-post .entry-content .wp-block-file__button,a.ast-post-filter-single,.ast-single-post .wp-block-buttons .wp-block-button.is-style-outline .wp-block-button__link,.ast-single-post .ast-comment-content .comment-reply-link,.ast-single-post .ast-comment-content .comment-edit-link{text-decoration:none;}.ast-search-menu-icon.slide-search a:focus-visible:focus-visible,.astra-search-icon:focus-visible,#close:focus-visible,a:focus-visible,.ast-menu-toggle:focus-visible,.site .skip-link:focus-visible,.wp-block-loginout input:focus-visible,.wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper,.ast-header-navigation-arrow:focus-visible,.ast-orders-table__row .ast-orders-table__cell:focus-visible,a#ast-apply-coupon:focus-visible,#ast-apply-coupon:focus-visible,#close:focus-visible,.button.search-submit:focus-visible,#search_submit:focus,.normal-search:focus-visible,.ast-header-account-wrap:focus-visible,.astra-cart-drawer-close:focus,.ast-single-variation:focus,.ast-button:focus{outline-style:dotted;outline-color:inherit;outline-width:thin;}input:focus,inputtypetext:focus,inputtypeemail:focus,inputtypeurl:focus,inputtypepassword:focus,inputtypereset:focus,inputtypesearch:focus,inputtypenumber:focus,textarea:focus,.wp-block-search__input:focus,data-sectionsection-header-mobile-trigger .ast-button-wrap .ast-mobile-menu-trigger-minimal:focus,.ast-mobile-popup-drawer.active .menu-toggle-close:focus,#ast-scroll-top:focus,#coupon_code:focus,#ast-coupon-code:focus{border-style:dotted;border-color:inherit;border-width:thin;}input{outline:none;}.ast-logo-title-inline .site-logo-img{padding-right:1em;}body .ast-oembed-container *{position:absolute;top:0;width:100%;height:100%;left:0;}body .wp-block-embed-pocket-casts .ast-oembed-container *{position:unset;}.ast-single-post-featured-section + article {margin-top: 2em;}.site-content .ast-single-post-featured-section img {width: 100%;overflow: hidden;object-fit: cover;}.site > .ast-single-related-posts-container {margin-top: 0;}@media (min-width: 922px) {.ast-desktop .ast-container--narrow {max-width: var(--ast-narrow-container-width);margin: 0 auto;}}.ast-page-builder-template .hentry {margin: 0;}.ast-page-builder-template .site-content > .ast-container {max-width: 100%;padding: 0;}.ast-page-builder-template .site .site-content #primary {padding: 0;margin: 0;}.ast-page-builder-template .no-results {text-align: center;margin: 4em auto;}.ast-page-builder-template .ast-pagination {padding: 2em;}.ast-page-builder-template .entry-header.ast-no-title.ast-no-thumbnail {margin-top: 0;}.ast-page-builder-template .entry-header.ast-header-without-markup {margin-top: 0;margin-bottom: 0;}.ast-page-builder-template .entry-header.ast-no-title.ast-no-meta {margin-bottom: 0;}.ast-page-builder-template.single .post-navigation {padding-bottom: 2em;}.ast-page-builder-template.single-post .site-content > .ast-container {max-width: 100%;}.ast-page-builder-template .entry-header {margin-top: 2em;margin-left: auto;margin-right: auto;}.ast-page-builder-template .ast-archive-description {margin: 2em auto 0;padding-left: 20px;padding-right: 20px;}.ast-page-builder-template .ast-row {margin-left: 0;margin-right: 0;}.single.ast-page-builder-template .entry-header + .entry-content,.single.ast-page-builder-template .ast-single-entry-banner + .site-content article .entry-content {margin-bottom: 2em;}@media(min-width: 921px) {.ast-page-builder-template.archive.ast-right-sidebar .ast-row article,.ast-page-builder-template.archive.ast-left-sidebar .ast-row article {padding-left: 0;padding-right: 0;}}@media (max-width:921.9px){#ast-desktop-header{display:none;}}@media (min-width:922px){#ast-mobile-header{display:none;}}.wp-block-buttons.aligncenter{justify-content:center;}@media (max-width:921px){.ast-theme-transparent-header #primary,.ast-theme-transparent-header #secondary{padding:0;}}@media (max-width:921px){.ast-plain-container.ast-no-sidebar #primary{padding:0;}}.ast-plain-container.ast-no-sidebar #primary{margin-top:0;margin-bottom:0;}.wp-block-button.is-style-outline .wp-block-button__link{border-color:var(--ast-global-color-0);}div.wp-block-button.is-style-outline > .wp-block-button__link:not(.has-text-color),div.wp-block-button.wp-block-button__link.is-style-outline:not(.has-text-color){color:var(--ast-global-color-0);}.wp-block-button.is-style-outline .wp-block-button__link:hover,.wp-block-buttons .wp-block-button.is-style-outline .wp-block-button__link:focus,.wp-block-buttons .wp-block-button.is-style-outline > .wp-block-button__link:not(.has-text-color):hover,.wp-block-buttons .wp-block-button.wp-block-button__link.is-style-outline:not(.has-text-color):hover{color:#ffffff;background-color:#18276a;border-color:#18276a;}.post-page-numbers.current .page-link,.ast-pagination .page-numbers.current{color:#ffffff;border-color:var(--ast-global-color-0);background-color:var(--ast-global-color-0);}.wp-block-button.is-style-outline .wp-block-button__link.wp-element-button,.ast-outline-button{border-color:var(--ast-global-color-0);font-family:inherit;font-weight:500;font-size:16px;font-size:1rem;line-height:1em;}.wp-block-buttons .wp-block-button.is-style-outline > .wp-block-button__link:not(.has-text-color),.wp-block-buttons .wp-block-button.wp-block-button__link.is-style-outline:not(.has-text-color),.ast-outline-button{color:var(--ast-global-color-0);}.wp-block-button.is-style-outline .wp-block-button__link:hover,.wp-block-buttons .wp-block-button.is-style-outline .wp-block-button__link:focus,.wp-block-buttons .wp-block-button.is-style-outline > .wp-block-button__link:not(.has-text-color):hover,.wp-block-buttons .wp-block-button.wp-block-button__link.is-style-outline:not(.has-text-color):hover,.ast-outline-button:hover,.ast-outline-button:focus,.wp-block-uagb-buttons-child .uagb-buttons-repeater.ast-outline-button:hover,.wp-block-uagb-buttons-child .uagb-buttons-repeater.ast-outline-button:focus{color:#ffffff;background-color:#18276a;border-color:#18276a;}.wp-block-button .wp-block-button__link.wp-element-button.is-style-outline:not(.has-background),.wp-block-button.is-style-outline>.wp-block-button__link.wp-element-button:not(.has-background),.ast-outline-button{background-color:transparent;}.entry-contentdata-ast-blocks-layout > figure{margin-bottom:1em;}h1.widget-title{font-weight:600;}h2.widget-title{font-weight:600;}h3.widget-title{font-weight:600;}.elementor-widget-container .elementor-loop-container .e-loop-itemdata-elementor-typeloop-item{width:100%;}#page{display:flex;flex-direction:column;min-height:100vh;}.ast-404-layout-1 h1.page-title{color:var(--ast-global-color-2);}.single .post-navigation a{line-height:1em;height:inherit;}.error-404 .page-sub-title{font-size:1.5rem;font-weight:inherit;}.search .site-content .content-area .search-form{margin-bottom:0;}#page .site-content{flex-grow:1;}.widget{margin-bottom:1.25em;}#secondary li{line-height:1.5em;}#secondary .wp-block-group h2{margin-bottom:0.7em;}#secondary h2{font-size:1.7rem;}.ast-separate-container .ast-article-post,.ast-separate-container .ast-article-single,.ast-separate-container .comment-respond{padding:3em;}.ast-separate-container .ast-article-single .ast-article-single{padding:0;}.ast-article-single .wp-block-post-template-is-layout-grid{padding-left:0;}.ast-separate-container .comments-title,.ast-narrow-container .comments-title{padding:1.5em 2em;}.ast-page-builder-template .comment-form-textarea,.ast-comment-formwrap .ast-grid-common-col{padding:0;}.ast-comment-formwrap{padding:0;display:inline-flex;column-gap:20px;width:100%;margin-left:0;margin-right:0;}.comments-area textarea#comment:focus,.comments-area textarea#comment:active,.comments-area .ast-comment-formwrap inputtypetext:focus,.comments-area .ast-comment-formwrap inputtypetext:active {box-shadow:none;outline:none;}.archive.ast-page-builder-template .entry-header{margin-top:2em;}.ast-page-builder-template .ast-comment-formwrap{width:100%;}.entry-title{margin-bottom:0.5em;}.ast-archive-description p{font-size:inherit;font-weight:inherit;line-height:inherit;}.ast-separate-container .ast-comment-list li.depth-1,.hentry{margin-bottom:2em;}@media (min-width:921px){.ast-left-sidebar.ast-page-builder-template #secondary,.archive.ast-right-sidebar.ast-page-builder-template .site-main{padding-left:20px;padding-right:20px;}}@media (max-width:544px){.ast-comment-formwrap.ast-row{column-gap:10px;display:inline-block;}#ast-commentform .ast-grid-common-col{position:relative;width:100%;}}@media (min-width:1201px){.ast-separate-container .ast-article-post,.ast-separate-container .ast-article-single,.ast-separate-container .ast-author-box,.ast-separate-container .ast-404-layout-1,.ast-separate-container .no-results{padding:3em;}}@media (max-width:921px){.ast-left-sidebar #content > .ast-container{display:flex;flex-direction:column-reverse;width:100%;}}@media (min-width:922px){.ast-separate-container.ast-right-sidebar #primary,.ast-separate-container.ast-left-sidebar #primary{border:0;}.search-no-results.ast-separate-container #primary{margin-bottom:4em;}}.wp-block-button .wp-block-button__link{color:#ffffff;}.wp-block-button .wp-block-button__link:hover,.wp-block-button .wp-block-button__link:focus{color:#ffffff;background-color:#18276a;border-color:#18276a;}.elementor-widget-heading h1.elementor-heading-title{line-height:1.4em;}.elementor-widget-heading h2.elementor-heading-title{line-height:1.3em;}.elementor-widget-heading h3.elementor-heading-title{line-height:1.3em;}.elementor-widget-heading h4.elementor-heading-title{line-height:1.2em;}.elementor-widget-heading h5.elementor-heading-title{line-height:1.2em;}.elementor-widget-heading h6.elementor-heading-title{line-height:1.25em;}.wp-block-button .wp-block-button__link,.wp-block-search .wp-block-search__button,body .wp-block-file .wp-block-file__button{border-color:var(--ast-global-color-0);background-color:var(--ast-global-color-0);color:#ffffff;font-family:inherit;font-weight:500;line-height:1em;font-size:16px;font-size:1rem;padding-top:15px;padding-right:30px;padding-bottom:15px;padding-left:30px;}@media (max-width:921px){.wp-block-button .wp-block-button__link,.wp-block-search .wp-block-search__button,body .wp-block-file .wp-block-file__button{padding-top:14px;padding-right:28px;padding-bottom:14px;padding-left:28px;}}@media (max-width:544px){.wp-block-button .wp-block-button__link,.wp-block-search .wp-block-search__button,body .wp-block-file .wp-block-file__button{padding-top:12px;padding-right:24px;padding-bottom:12px;padding-left:24px;}}.menu-toggle,button,.ast-button,.ast-custom-button,.button,input#submit,inputtypebutton,inputtypesubmit,inputtypereset,formCLASS*wp-block-search__.wp-block-search .wp-block-search__inside-wrapper .wp-block-search__button,body .wp-block-file .wp-block-file__button,.search .search-submit{border-style:solid;border-top-width:0;border-right-width:0;border-left-width:0;border-bottom-width:0;color:#ffffff;border-color:var(--ast-global-color-0);background-color:var(--ast-global-color-0);padding-top:15px;padding-right:30px;padding-bottom:15px;padding-left:30px;font-family:inherit;font-weight:500;font-size:16px;font-size:1rem;line-height:1em;}button:focus,.menu-toggle:hover,button:hover,.ast-button:hover,.ast-custom-button:hover .button:hover,.ast-custom-button:hover ,inputtypereset:hover,inputtypereset:focus,input#submit:hover,input#submit:focus,inputtypebutton:hover,inputtypebutton:focus,inputtypesubmit:hover,inputtypesubmit:focus,formCLASS*wp-block-search__.wp-block-search .wp-block-search__inside-wrapper .wp-block-search__button:hover,formCLASS*wp-block-search__.wp-block-search .wp-block-search__inside-wrapper .wp-block-search__button:focus,body .wp-block-file .wp-block-file__button:hover,body .wp-block-file .wp-block-file__button:focus{color:#ffffff;background-color:#18276a;border-color:#18276a;}formCLASS*wp-block-search__.wp-block-search .wp-block-search__inside-wrapper .wp-block-search__button.has-icon{padding-top:calc(15px - 3px);padding-right:calc(30px - 3px);padding-bottom:calc(15px - 3px);padding-left:calc(30px - 3px);}@media (max-width:921px){.menu-toggle,button,.ast-button,.ast-custom-button,.button,input#submit,inputtypebutton,inputtypesubmit,inputtypereset,formCLASS*wp-block-search__.wp-block-search .wp-block-search__inside-wrapper .wp-block-search__button,body .wp-block-file .wp-block-file__button,.search .search-submit{padding-top:14px;padding-right:28px;padding-bottom:14px;padding-left:28px;}}@media (max-width:544px){.menu-toggle,button,.ast-button,.ast-custom-button,.button,input#submit,inputtypebutton,inputtypesubmit,inputtypereset,formCLASS*wp-block-search__.wp-block-search .wp-block-search__inside-wrapper .wp-block-search__button,body .wp-block-file .wp-block-file__button,.search .search-submit{padding-top:12px;padding-right:24px;padding-bottom:12px;padding-left:24px;}}@media (max-width:921px){.ast-mobile-header-stack .main-header-bar .ast-search-menu-icon{display:inline-block;}.ast-header-break-point.ast-header-custom-item-outside .ast-mobile-header-stack .main-header-bar .ast-search-icon{margin:0;}.ast-comment-avatar-wrap img{max-width:2.5em;}.ast-comment-meta{padding:0 1.8888em 1.3333em;}.ast-separate-container .ast-comment-list li.depth-1{padding:1.5em 2.14em;}.ast-separate-container .comment-respond{padding:2em 2.14em;}}@media (min-width:544px){.ast-container{max-width:100%;}}@media (max-width:544px){.ast-separate-container .ast-article-post,.ast-separate-container .ast-article-single,.ast-separate-container .comments-title,.ast-separate-container .ast-archive-description{padding:1.5em 1em;}.ast-separate-container #content .ast-container{padding-left:0.54em;padding-right:0.54em;}.ast-separate-container .ast-comment-list .bypostauthor{padding:.5em;}.ast-search-menu-icon.ast-dropdown-active .search-field{width:170px;}} #ast-mobile-header .ast-site-header-cart-li a{pointer-events:none;}.ast-separate-container{background-color:var(--ast-global-color-4);background-image:none;}@media (max-width:921px){.site-title{display:block;}.site-header .site-description{display:none;}h1,.entry-content :where(h1){font-size:30px;}h2,.entry-content :where(h2){font-size:25px;}h3,.entry-content :where(h3){font-size:20px;}}@media (max-width:544px){.site-title{display:block;}.site-header .site-description{display:none;}h1,.entry-content :where(h1){font-size:30px;}h2,.entry-content :where(h2){font-size:25px;}h3,.entry-content :where(h3){font-size:20px;}}@media (max-width:921px){html{font-size:91.2%;}}@media (max-width:544px){html{font-size:91.2%;}}@media (min-width:922px){.ast-container{max-width:1240px;}}@media (min-width:922px){.site-content .ast-container{display:flex;}}@media (max-width:921px){.site-content .ast-container{flex-direction:column;}}@media (min-width:922px){.main-header-menu .sub-menu .menu-item.ast-left-align-sub-menu:hover > .sub-menu,.main-header-menu .sub-menu .menu-item.ast-left-align-sub-menu.focus > .sub-menu{margin-left:-0px;}}.entry-content li > p{margin-bottom:0;}.site .comments-area{padding-bottom:3em;}.wp-block-file {display: flex;align-items: center;flex-wrap: wrap;justify-content: space-between;}.wp-block-pullquote {border: none;}.wp-block-pullquote blockquote::before {content: \201D;font-family: Helvetica,sans-serif;display: flex;transform: rotate( 180deg );font-size: 6rem;font-style: normal;line-height: 1;font-weight: bold;align-items: center;justify-content: center;}.has-text-align-right > blockquote::before {justify-content: flex-start;}.has-text-align-left > blockquote::before {justify-content: flex-end;}figure.wp-block-pullquote.is-style-solid-color blockquote {max-width: 100%;text-align: inherit;}:root {--wp--custom--ast-default-block-top-padding: 3em;--wp--custom--ast-default-block-right-padding: 3em;--wp--custom--ast-default-block-bottom-padding: 3em;--wp--custom--ast-default-block-left-padding: 3em;--wp--custom--ast-container-width: 1200px;--wp--custom--ast-content-width-size: 1200px;--wp--custom--ast-wide-width-size: calc(1200px + var(--wp--custom--ast-default-block-left-padding) + var(--wp--custom--ast-default-block-right-padding));}.ast-narrow-container {--wp--custom--ast-content-width-size: 750px;--wp--custom--ast-wide-width-size: 750px;}@media(max-width: 921px) {:root {--wp--custom--ast-default-block-top-padding: 3em;--wp--custom--ast-default-block-right-padding: 2em;--wp--custom--ast-default-block-bottom-padding: 3em;--wp--custom--ast-default-block-left-padding: 2em;}}@media(max-width: 544px) {:root {--wp--custom--ast-default-block-top-padding: 3em;--wp--custom--ast-default-block-right-padding: 1.5em;--wp--custom--ast-default-block-bottom-padding: 3em;--wp--custom--ast-default-block-left-padding: 1.5em;}}.entry-content > .wp-block-group,.entry-content > .wp-block-cover,.entry-content > .wp-block-columns {padding-top: var(--wp--custom--ast-default-block-top-padding);padding-right: var(--wp--custom--ast-default-block-right-padding);padding-bottom: var(--wp--custom--ast-default-block-bottom-padding);padding-left: var(--wp--custom--ast-default-block-left-padding);}.ast-plain-container.ast-no-sidebar .entry-content > .alignfull,.ast-page-builder-template .ast-no-sidebar .entry-content > .alignfull {margin-left: calc( -50vw + 50%);margin-right: calc( -50vw + 50%);max-width: 100vw;width: 100vw;}.ast-plain-container.ast-no-sidebar .entry-content .alignfull .alignfull,.ast-page-builder-template.ast-no-sidebar .entry-content .alignfull .alignfull,.ast-plain-container.ast-no-sidebar .entry-content .alignfull .alignwide,.ast-page-builder-template.ast-no-sidebar .entry-content .alignfull .alignwide,.ast-plain-container.ast-no-sidebar .entry-content .alignwide .alignfull,.ast-page-builder-template.ast-no-sidebar .entry-content .alignwide .alignfull,.ast-plain-container.ast-no-sidebar .entry-content .alignwide .alignwide,.ast-page-builder-template.ast-no-sidebar .entry-content .alignwide .alignwide,.ast-plain-container.ast-no-sidebar .entry-content .wp-block-column .alignfull,.ast-page-builder-template.ast-no-sidebar .entry-content .wp-block-column .alignfull,.ast-plain-container.ast-no-sidebar .entry-content .wp-block-column .alignwide,.ast-page-builder-template.ast-no-sidebar .entry-content .wp-block-column .alignwide {margin-left: auto;margin-right: auto;width: 100%;}data-ast-blocks-layout .wp-block-separator:not(.is-style-dots) {height: 0;}data-ast-blocks-layout .wp-block-separator {margin: 20px auto;}data-ast-blocks-layout .wp-block-separator:not(.is-style-wide):not(.is-style-dots) {max-width: 100px;}data-ast-blocks-layout .wp-block-separator.has-background {padding: 0;}.entry-contentdata-ast-blocks-layout > * {max-width: var(--wp--custom--ast-content-width-size);margin-left: auto;margin-right: auto;}.entry-contentdata-ast-blocks-layout > .alignwide {max-width: var(--wp--custom--ast-wide-width-size);}.entry-contentdata-ast-blocks-layout .alignfull {max-width: none;}.entry-content .wp-block-columns {margin-bottom: 0;}blockquote {margin: 1.5em;border-color: rgba(0,0,0,0.05);}.wp-block-quote:not(.has-text-align-right):not(.has-text-align-center) {border-left: 5px solid rgba(0,0,0,0.05);}.has-text-align-right > blockquote,blockquote.has-text-align-right {border-right: 5px solid rgba(0,0,0,0.05);}.has-text-align-left > blockquote,blockquote.has-text-align-left {border-left: 5px solid rgba(0,0,0,0.05);}.wp-block-site-tagline,.wp-block-latest-posts .read-more {margin-top: 15px;}.wp-block-loginout p label {display: block;}.wp-block-loginout p:not(.login-remember):not(.login-submit) input {width: 100%;}.wp-block-loginout input:focus {border-color: transparent;}.wp-block-loginout input:focus {outline: thin dotted;}.entry-content .wp-block-media-text .wp-block-media-text__content {padding: 0 0 0 8%;}.entry-content .wp-block-media-text.has-media-on-the-right .wp-block-media-text__content {padding: 0 8% 0 0;}.entry-content .wp-block-media-text.has-background .wp-block-media-text__content {padding: 8%;}.entry-content .wp-block-cover:not(class*background-color):not(.has-text-color.has-link-color) .wp-block-cover__inner-container,.entry-content .wp-block-cover:not(class*background-color) .wp-block-cover-image-text,.entry-content .wp-block-cover:not(class*background-color) .wp-block-cover-text,.entry-content .wp-block-cover-image:not(class*background-color) .wp-block-cover__inner-container,.entry-content .wp-block-cover-image:not(class*background-color) .wp-block-cover-image-text,.entry-content .wp-block-cover-image:not(class*background-color) .wp-block-cover-text {color: var(--ast-global-color-primary,var(--ast-global-color-5));}.wp-block-loginout .login-remember input {width: 1.1rem;height: 1.1rem;margin: 0 5px 4px 0;vertical-align: middle;}.wp-block-latest-posts > li > *:first-child,.wp-block-latest-posts:not(.is-grid) > li:first-child {margin-top: 0;}.entry-content > .wp-block-buttons,.entry-content > .wp-block-uagb-buttons {margin-bottom: 1.5em;}.wp-block-search__inside-wrapper .wp-block-search__input {padding: 0 10px;color: var(--ast-global-color-3);background: var(--ast-global-color-primary,var(--ast-global-color-5));border-color: var(--ast-border-color);}.wp-block-latest-posts .read-more {margin-bottom: 1.5em;}.wp-block-search__no-button .wp-block-search__inside-wrapper .wp-block-search__input {padding-top: 5px;padding-bottom: 5px;}.wp-block-latest-posts .wp-block-latest-posts__post-date,.wp-block-latest-posts .wp-block-latest-posts__post-author {font-size: 1rem;}.wp-block-latest-posts > li > *,.wp-block-latest-posts:not(.is-grid) > li {margin-top: 12px;margin-bottom: 12px;}.ast-page-builder-template .entry-contentdata-ast-blocks-layout > *,.ast-page-builder-template .entry-contentdata-ast-blocks-layout > .alignfull:where(:not(.wp-block-group):not(.uagb-is-root-container):not(.spectra-is-root-container)) > * {max-width: none;}.ast-page-builder-template .entry-contentdata-ast-blocks-layout > .alignwide:where(:not(.uagb-is-root-container):not(.spectra-is-root-container)) > * {max-width: var(--wp--custom--ast-wide-width-size);}.ast-page-builder-template .entry-contentdata-ast-blocks-layout > .inherit-container-width > *,.ast-page-builder-template .entry-contentdata-ast-blocks-layout > *:not(.wp-block-group):where(:not(.uagb-is-root-container):not(.spectra-is-root-container)) > *,.entry-contentdata-ast-blocks-layout > .wp-block-cover .wp-block-cover__inner-container {max-width: var(--wp--custom--ast-content-width-size) ;margin-left: auto;margin-right: auto;}.entry-contentdata-ast-blocks-layout .wp-block-cover:not(.alignleft):not(.alignright) {width: auto;}@media(max-width: 1200px) {.ast-separate-container .entry-content > .alignfull,.ast-separate-container .entry-contentdata-ast-blocks-layout > .alignwide,.ast-plain-container .entry-contentdata-ast-blocks-layout > .alignwide,.ast-plain-container .entry-content .alignfull {margin-left: calc(-1 * min(var(--ast-container-default-xlg-padding),20px)) ;margin-right: calc(-1 * min(var(--ast-container-default-xlg-padding),20px));}}@media(min-width: 1201px) {.ast-separate-container .entry-content > .alignfull {margin-left: calc(-1 * var(--ast-container-default-xlg-padding) );margin-right: calc(-1 * var(--ast-container-default-xlg-padding) );}.ast-separate-container .entry-contentdata-ast-blocks-layout > .alignwide,.ast-plain-container .entry-contentdata-ast-blocks-layout > .alignwide {margin-left: calc(-1 * var(--wp--custom--ast-default-block-left-padding) );margin-right: calc(-1 * var(--wp--custom--ast-default-block-right-padding) );}}@media(min-width: 921px) {.ast-separate-container .entry-content .wp-block-group.alignwide:not(.inherit-container-width) > :where(:not(.alignleft):not(.alignright)),.ast-plain-container .entry-content .wp-block-group.alignwide:not(.inherit-container-width) > :where(:not(.alignleft):not(.alignright)) {max-width: calc( var(--wp--custom--ast-content-width-size) + 80px );}.ast-plain-container.ast-right-sidebar .entry-contentdata-ast-blocks-layout .alignfull,.ast-plain-container.ast-left-sidebar .entry-contentdata-ast-blocks-layout .alignfull {margin-left: -60px;margin-right: -60px;}}@media(min-width: 544px) {.entry-content > .alignleft {margin-right: 20px;}.entry-content > .alignright {margin-left: 20px;}}@media (max-width:544px){.wp-block-columns .wp-block-column:not(:last-child){margin-bottom:20px;}.wp-block-latest-posts{margin:0;}}@media( max-width: 600px ) {.entry-content .wp-block-media-text .wp-block-media-text__content,.entry-content .wp-block-media-text.has-media-on-the-right .wp-block-media-text__content {padding: 8% 0 0;}.entry-content .wp-block-media-text.has-background .wp-block-media-text__content {padding: 8%;}}.ast-page-builder-template .entry-header {padding-left: 0;}.ast-narrow-container .site-content .wp-block-uagb-image--align-full .wp-block-uagb-image__figure {max-width: 100%;margin-left: auto;margin-right: auto;}.entry-content ul,.entry-content ol {padding: revert;margin: revert;}:root .has-ast-global-color-0-color{color:var(--ast-global-color-0);}:root .has-ast-global-color-0-background-color{background-color:var(--ast-global-color-0);}:root .wp-block-button .has-ast-global-color-0-color{color:var(--ast-global-color-0);}:root .wp-block-button .has-ast-global-color-0-background-color{background-color:var(--ast-global-color-0);}:root .has-ast-global-color-1-color{color:var(--ast-global-color-1);}:root .has-ast-global-color-1-background-color{background-color:var(--ast-global-color-1);}:root .wp-block-button .has-ast-global-color-1-color{color:var(--ast-global-color-1);}:root .wp-block-button .has-ast-global-color-1-background-color{background-color:var(--ast-global-color-1);}:root .has-ast-global-color-2-color{color:var(--ast-global-color-2);}:root .has-ast-global-color-2-background-color{background-color:var(--ast-global-color-2);}:root .wp-block-button .has-ast-global-color-2-color{color:var(--ast-global-color-2);}:root .wp-block-button .has-ast-global-color-2-background-color{background-color:var(--ast-global-color-2);}:root .has-ast-global-color-3-color{color:var(--ast-global-color-3);}:root .has-ast-global-color-3-background-color{background-color:var(--ast-global-color-3);}:root .wp-block-button .has-ast-global-color-3-color{color:var(--ast-global-color-3);}:root .wp-block-button .has-ast-global-color-3-background-color{background-color:var(--ast-global-color-3);}:root .has-ast-global-color-4-color{color:var(--ast-global-color-4);}:root .has-ast-global-color-4-background-color{background-color:var(--ast-global-color-4);}:root .wp-block-button .has-ast-global-color-4-color{color:var(--ast-global-color-4);}:root .wp-block-button .has-ast-global-color-4-background-color{background-color:var(--ast-global-color-4);}:root .has-ast-global-color-5-color{color:var(--ast-global-color-5);}:root .has-ast-global-color-5-background-color{background-color:var(--ast-global-color-5);}:root .wp-block-button .has-ast-global-color-5-color{color:var(--ast-global-color-5);}:root .wp-block-button .has-ast-global-color-5-background-color{background-color:var(--ast-global-color-5);}:root .has-ast-global-color-6-color{color:var(--ast-global-color-6);}:root .has-ast-global-color-6-background-color{background-color:var(--ast-global-color-6);}:root .wp-block-button .has-ast-global-color-6-color{color:var(--ast-global-color-6);}:root .wp-block-button .has-ast-global-color-6-background-color{background-color:var(--ast-global-color-6);}:root .has-ast-global-color-7-color{color:var(--ast-global-color-7);}:root .has-ast-global-color-7-background-color{background-color:var(--ast-global-color-7);}:root .wp-block-button .has-ast-global-color-7-color{color:var(--ast-global-color-7);}:root .wp-block-button .has-ast-global-color-7-background-color{background-color:var(--ast-global-color-7);}:root .has-ast-global-color-8-color{color:var(--ast-global-color-8);}:root .has-ast-global-color-8-background-color{background-color:var(--ast-global-color-8);}:root .wp-block-button .has-ast-global-color-8-color{color:var(--ast-global-color-8);}:root .wp-block-button .has-ast-global-color-8-background-color{background-color:var(--ast-global-color-8);}:root{--ast-global-color-0:#046bd2;--ast-global-color-1:#045cb4;--ast-global-color-2:#1e293b;--ast-global-color-3:#334155;--ast-global-color-4:#f9fafb;--ast-global-color-5:#FFFFFF;--ast-global-color-6:#e2e8f0;--ast-global-color-7:#cbd5e1;--ast-global-color-8:#94a3b8;}:root {--ast-border-color : var(--ast-global-color-6);}.ast-single-entry-banner {-js-display: flex;display: flex;flex-direction: column;justify-content: center;text-align: center;position: relative;background: var(--ast-title-layout-bg);}.ast-single-entry-bannerdata-banner-layoutlayout-1 {max-width: 1200px;background: inherit;padding: 20px 0;}.ast-single-entry-bannerdata-banner-width-typecustom {margin: 0 auto;width: 100%;}.ast-single-entry-banner + .site-content .entry-header {margin-bottom: 0;}.site .ast-author-avatar {--ast-author-avatar-size: ;}a.ast-underline-text {text-decoration: underline;}.ast-container > .ast-terms-link {position: relative;display: block;}a.ast-button.ast-badge-tax {padding: 4px 8px;border-radius: 3px;font-size: inherit;}header.entry-header{text-align:left;}header.entry-header .entry-title{font-weight:600;font-size:32px;font-size:2rem;}header.entry-header > *:not(:last-child){margin-bottom:10px;}@media (max-width:921px){header.entry-header{text-align:left;}}@media (max-width:544px){header.entry-header{text-align:left;}}.ast-archive-entry-banner {-js-display: flex;display: flex;flex-direction: column;justify-content: center;text-align: center;position: relative;background: var(--ast-title-layout-bg);}.ast-archive-entry-bannerdata-banner-width-typecustom {margin: 0 auto;width: 100%;}.ast-archive-entry-bannerdata-banner-layoutlayout-1 {background: inherit;padding: 20px 0;text-align: left;}body.archive .ast-archive-description{max-width:1200px;width:100%;text-align:left;padding-top:3em;padding-right:3em;padding-bottom:3em;padding-left:3em;}body.archive .ast-archive-description .ast-archive-title,body.archive .ast-archive-description .ast-archive-title *{font-weight:600;font-size:32px;font-size:2rem;}body.archive .ast-archive-description > *:not(:last-child){margin-bottom:10px;}@media (max-width:921px){body.archive .ast-archive-description{text-align:left;}}@media (max-width:544px){body.archive .ast-archive-description{text-align:left;}}.ast-breadcrumbs .trail-browse,.ast-breadcrumbs .trail-items,.ast-breadcrumbs .trail-items li{display:inline-block;margin:0;padding:0;border:none;background:inherit;text-indent:0;text-decoration:none;}.ast-breadcrumbs .trail-browse{font-size:inherit;font-style:inherit;font-weight:inherit;color:inherit;}.ast-breadcrumbs .trail-items{list-style:none;}.trail-items li::after{padding:0 0.3em;content:\00bb;}.trail-items li:last-of-type::after{display:none;}h1,h2,h3,h4,h5,h6,.entry-content :where(h1,h2,h3,h4,h5,h6){color:var(--ast-global-color-2);}.entry-title a{color:var(--ast-global-color-2);}@media (max-width:921px){.ast-builder-grid-row-container.ast-builder-grid-row-tablet-3-firstrow .ast-builder-grid-row > *:first-child,.ast-builder-grid-row-container.ast-builder-grid-row-tablet-3-lastrow .ast-builder-grid-row > *:last-child{grid-column:1 / -1;}}@media (max-width:544px){.ast-builder-grid-row-container.ast-builder-grid-row-mobile-3-firstrow .ast-builder-grid-row > *:first-child,.ast-builder-grid-row-container.ast-builder-grid-row-mobile-3-lastrow .ast-builder-grid-row > *:last-child{grid-column:1 / -1;}}.ast-builder-layout-elementdata-sectiontitle_tagline{display:flex;}@media (max-width:921px){.ast-header-break-point .ast-builder-layout-elementdata-sectiontitle_tagline{display:flex;}}@media (max-width:544px){.ast-header-break-point .ast-builder-layout-elementdata-sectiontitle_tagline{display:flex;}}.ast-builder-menu-1{font-family:inherit;font-weight:inherit;}.ast-builder-menu-1 .menu-item > .menu-link{color:var(--ast-global-color-3);}.ast-builder-menu-1 .menu-item > .ast-menu-toggle{color:var(--ast-global-color-3);}.ast-builder-menu-1 .menu-item:hover > .menu-link,.ast-builder-menu-1 .inline-on-mobile .menu-item:hover > .ast-menu-toggle{color:var(--ast-global-color-1);}.ast-builder-menu-1 .menu-item:hover > .ast-menu-toggle{color:var(--ast-global-color-1);}.ast-builder-menu-1 .menu-item.current-menu-item > .menu-link,.ast-builder-menu-1 .inline-on-mobile .menu-item.current-menu-item > .ast-menu-toggle,.ast-builder-menu-1 .current-menu-ancestor > .menu-link{color:var(--ast-global-color-1);}.ast-builder-menu-1 .menu-item.current-menu-item > .ast-menu-toggle{color:var(--ast-global-color-1);}.ast-builder-menu-1 .sub-menu,.ast-builder-menu-1 .inline-on-mobile .sub-menu{border-top-width:2px;border-bottom-width:0px;border-right-width:0px;border-left-width:0px;border-color:var(--ast-global-color-0);border-style:solid;}.ast-builder-menu-1 .sub-menu .sub-menu{top:-2px;}.ast-builder-menu-1 .main-header-menu > .menu-item > .sub-menu,.ast-builder-menu-1 .main-header-menu > .menu-item > .astra-full-megamenu-wrapper{margin-top:0px;}.ast-desktop .ast-builder-menu-1 .main-header-menu > .menu-item > .sub-menu:before,.ast-desktop .ast-builder-menu-1 .main-header-menu > .menu-item > .astra-full-megamenu-wrapper:before{height:calc( 0px + 2px + 5px );}.ast-desktop .ast-builder-menu-1 .menu-item .sub-menu .menu-link{border-style:none;}@media (max-width:921px){.ast-header-break-point .ast-builder-menu-1 .menu-item.menu-item-has-children > .ast-menu-toggle{top:0;}.ast-builder-menu-1 .inline-on-mobile .menu-item.menu-item-has-children > .ast-menu-toggle{right:-15px;}.ast-builder-menu-1 .menu-item-has-children > .menu-link:after{content:unset;}.ast-builder-menu-1 .main-header-menu > .menu-item > .sub-menu,.ast-builder-menu-1 .main-header-menu > .menu-item > .astra-full-megamenu-wrapper{margin-top:0;}}@media (max-width:544px){.ast-header-break-point .ast-builder-menu-1 .menu-item.menu-item-has-children > .ast-menu-toggle{top:0;}.ast-builder-menu-1 .main-header-menu > .menu-item > .sub-menu,.ast-builder-menu-1 .main-header-menu > .menu-item > .astra-full-megamenu-wrapper{margin-top:0;}}.ast-builder-menu-1{display:flex;}@media (max-width:921px){.ast-header-break-point .ast-builder-menu-1{display:flex;}}@media (max-width:544px){.ast-header-break-point .ast-builder-menu-1{display:flex;}}.site-below-footer-wrap{padding-top:20px;padding-bottom:20px;}.site-below-footer-wrapdata-sectionsection-below-footer-builder{background-color:var(--ast-global-color-5);min-height:80px;border-style:solid;border-width:0px;border-top-width:1px;border-top-color:var(--ast-global-color-subtle-background,--ast-global-color-6);}.site-below-footer-wrapdata-sectionsection-below-footer-builder .ast-builder-grid-row{max-width:1200px;min-height:80px;margin-left:auto;margin-right:auto;}.site-below-footer-wrapdata-sectionsection-below-footer-builder .ast-builder-grid-row,.site-below-footer-wrapdata-sectionsection-below-footer-builder .site-footer-section{align-items:flex-start;}.site-below-footer-wrapdata-sectionsection-below-footer-builder.ast-footer-row-inline .site-footer-section{display:flex;margin-bottom:0;}.ast-builder-grid-row-full .ast-builder-grid-row{grid-template-columns:1fr;}@media (max-width:921px){.site-below-footer-wrapdata-sectionsection-below-footer-builder.ast-footer-row-tablet-inline .site-footer-section{display:flex;margin-bottom:0;}.site-below-footer-wrapdata-sectionsection-below-footer-builder.ast-footer-row-tablet-stack .site-footer-section{display:block;margin-bottom:10px;}.ast-builder-grid-row-container.ast-builder-grid-row-tablet-full .ast-builder-grid-row{grid-template-columns:1fr;}}@media (max-width:544px){.site-below-footer-wrapdata-sectionsection-below-footer-builder.ast-footer-row-mobile-inline .site-footer-section{display:flex;margin-bottom:0;}.site-below-footer-wrapdata-sectionsection-below-footer-builder.ast-footer-row-mobile-stack .site-footer-section{display:block;margin-bottom:10px;}.ast-builder-grid-row-container.ast-builder-grid-row-mobile-full .ast-builder-grid-row{grid-template-columns:1fr;}}.site-below-footer-wrapdata-sectionsection-below-footer-builder{display:grid;}@media (max-width:921px){.ast-header-break-point .site-below-footer-wrapdata-sectionsection-below-footer-builder{display:grid;}}@media (max-width:544px){.ast-header-break-point .site-below-footer-wrapdata-sectionsection-below-footer-builder{display:grid;}}.ast-footer-copyright{text-align:center;}.ast-footer-copyright.site-footer-focus-item {color:var(--ast-global-color-3);}@media (max-width:921px){.ast-footer-copyright{text-align:center;}}@media (max-width:544px){.ast-footer-copyright{text-align:center;}}.ast-footer-copyright.site-footer-focus-item {font-size:16px;font-size:1rem;}.ast-footer-copyright.ast-builder-layout-element{display:flex;}@media (max-width:921px){.ast-header-break-point .ast-footer-copyright.ast-builder-layout-element{display:flex;}}@media (max-width:544px){.ast-header-break-point .ast-footer-copyright.ast-builder-layout-element{display:flex;}}.footer-widget-area.widget-area.site-footer-focus-item{width:auto;}.ast-footer-row-inline .footer-widget-area.widget-area.site-footer-focus-item{width:100%;}.elementor-widget-heading .elementor-heading-title{margin:0;}.elementor-page .ast-menu-toggle{color:unset !important;background:unset !important;}.elementor-post.elementor-grid-item.hentry{margin-bottom:0;}.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,.elementor-element .elementor-wc-products .woocommerceclass*columns- ul.products li.product{width:auto;margin:0;float:none;}.elementor-toc__list-wrapper{margin:0;}body .elementor hr{background-color:#ccc;margin:0;}.ast-left-sidebar .elementor-section.elementor-section-stretched,.ast-right-sidebar .elementor-section.elementor-section-stretched{max-width:100%;left:0 !important;}.elementor-posts-container CLASS*ast-width-{width:100%;}.elementor-template-full-width .ast-container{display:block;}.elementor-screen-only,.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{top:0 !important;}@media (max-width:544px){.elementor-element .elementor-wc-products .woocommerceclass*columns- ul.products li.product{width:auto;margin:0;}.elementor-element .woocommerce .woocommerce-result-count{float:none;}}.ast-header-break-point .main-header-bar{border-bottom-width:1px;}@media (min-width:922px){.main-header-bar{border-bottom-width:1px;}}.main-header-menu .menu-item, #astra-footer-menu .menu-item, .main-header-bar .ast-masthead-custom-menu-items{-js-display:flex;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-moz-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-moz-box-orient:vertical;-moz-box-direction:normal;-ms-flex-direction:column;flex-direction:column;}.main-header-menu > .menu-item > .menu-link, #astra-footer-menu > .menu-item > .menu-link{height:100%;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;-js-display:flex;display:flex;}.ast-header-break-point .main-navigation ul .menu-item .menu-link .icon-arrow:first-of-type svg{top:.2em;margin-top:0px;margin-left:0px;width:.65em;transform:translate(0, -2px) rotateZ(270deg);}.ast-mobile-popup-content .ast-submenu-expanded > .ast-menu-toggle{transform:rotateX(180deg);overflow-y:auto;}@media (min-width:922px){.ast-builder-menu .main-navigation > ul > li:last-child a{margin-right:0;}}.ast-separate-container .ast-article-inner{background-color:transparent;background-image:none;}.ast-separate-container .ast-article-post{background-color:var(--ast-global-color-5);background-image:none;}@media (max-width:921px){.ast-separate-container .ast-article-post{background-color:var(--ast-global-color-5);background-image:none;}}@media (max-width:544px){.ast-separate-container .ast-article-post{background-color:var(--ast-global-color-5);background-image:none;}}.ast-separate-container .ast-article-single:not(.ast-related-post), .ast-separate-container .error-404, .ast-separate-container .no-results, .single.ast-separate-container .site-main .ast-author-meta, .ast-separate-container .related-posts-title-wrapper, .ast-separate-container .comments-count-wrapper, .ast-box-layout.ast-plain-container .site-content, .ast-padded-layout.ast-plain-container .site-content, .ast-separate-container .ast-archive-description, .ast-separate-container .comments-area .comment-respond, .ast-separate-container .comments-area .ast-comment-list li, .ast-separate-container .comments-area .comments-title{background-color:var(--ast-global-color-5);background-image:none;}@media (max-width:921px){.ast-separate-container .ast-article-single:not(.ast-related-post), .ast-separate-container .error-404, .ast-separate-container .no-results, .single.ast-separate-container .site-main .ast-author-meta, .ast-separate-container .related-posts-title-wrapper, .ast-separate-container .comments-count-wrapper, .ast-box-layout.ast-plain-container .site-content, .ast-padded-layout.ast-plain-container .site-content, .ast-separate-container .ast-archive-description{background-color:var(--ast-global-color-5);background-image:none;}}@media (max-width:544px){.ast-separate-container .ast-article-single:not(.ast-related-post), .ast-separate-container .error-404, .ast-separate-container .no-results, .single.ast-separate-container .site-main .ast-author-meta, .ast-separate-container .related-posts-title-wrapper, .ast-separate-container .comments-count-wrapper, .ast-box-layout.ast-plain-container .site-content, .ast-padded-layout.ast-plain-container .site-content, .ast-separate-container .ast-archive-description{background-color:var(--ast-global-color-5);background-image:none;}}.ast-separate-container.ast-two-container #secondary .widget{background-color:var(--ast-global-color-5);background-image:none;}@media (max-width:921px){.ast-separate-container.ast-two-container #secondary .widget{background-color:var(--ast-global-color-5);background-image:none;}}@media (max-width:544px){.ast-separate-container.ast-two-container #secondary .widget{background-color:var(--ast-global-color-5);background-image:none;}}.ast-plain-container, .ast-page-builder-template{background-color:var(--ast-global-color-5);background-image:none;}@media (max-width:921px){.ast-plain-container, .ast-page-builder-template{background-color:var(--ast-global-color-5);background-image:none;}}@media (max-width:544px){.ast-plain-container, .ast-page-builder-template{background-color:var(--ast-global-color-5);background-image:none;}} #ast-scroll-top { display: none; position: fixed; text-align: center; cursor: pointer; z-index: 99; width: 2.1em; height: 2.1em; line-height: 2.1; color: #ffffff; border-radius: 2px; content: ; outline: inherit; } @media (min-width: 769px) { #ast-scroll-top { content: 769; } } #ast-scroll-top .ast-icon.icon-arrow svg { margin-left: 0px; vertical-align: middle; transform: translate(0, -20%) rotate(180deg); width: 1.6em; } .ast-scroll-to-top-right { right: 30px; bottom: 30px; } .ast-scroll-to-top-left { left: 30px; bottom: 30px; } #ast-scroll-top{background-color:#18276a;font-size:15px;}@media (max-width:921px){#ast-scroll-top .ast-icon.icon-arrow svg{width:1em;}}.ast-mobile-header-content > *,.ast-desktop-header-content > * {padding: 10px 0;height: auto;}.ast-mobile-header-content > *:first-child,.ast-desktop-header-content > *:first-child {padding-top: 10px;}.ast-mobile-header-content > .ast-builder-menu,.ast-desktop-header-content > .ast-builder-menu {padding-top: 0;}.ast-mobile-header-content > *:last-child,.ast-desktop-header-content > *:last-child {padding-bottom: 0;}.ast-mobile-header-content .ast-search-menu-icon.ast-inline-search label,.ast-desktop-header-content .ast-search-menu-icon.ast-inline-search label {width: 100%;}.ast-desktop-header-content .main-header-bar-navigation .ast-submenu-expanded > .ast-menu-toggle::before {transform: rotateX(180deg);}#ast-desktop-header .ast-desktop-header-content,.ast-mobile-header-content .ast-search-icon,.ast-desktop-header-content .ast-search-icon,.ast-mobile-header-wrap .ast-mobile-header-content,.ast-main-header-nav-open.ast-popup-nav-open .ast-mobile-header-wrap .ast-mobile-header-content,.ast-main-header-nav-open.ast-popup-nav-open .ast-desktop-header-content {display: none;}.ast-main-header-nav-open.ast-header-break-point #ast-desktop-header .ast-desktop-header-content,.ast-main-header-nav-open.ast-header-break-point .ast-mobile-header-wrap .ast-mobile-header-content {display: block;}.ast-desktop .ast-desktop-header-content .astra-menu-animation-slide-up > .menu-item > .sub-menu,.ast-desktop .ast-desktop-header-content .astra-menu-animation-slide-up > .menu-item .menu-item > .sub-menu,.ast-desktop .ast-desktop-header-content .astra-menu-animation-slide-down > .menu-item > .sub-menu,.ast-desktop .ast-desktop-header-content .astra-menu-animation-slide-down > .menu-item .menu-item > .sub-menu,.ast-desktop .ast-desktop-header-content .astra-menu-animation-fade > .menu-item > .sub-menu,.ast-desktop .ast-desktop-header-content .astra-menu-animation-fade > .menu-item .menu-item > .sub-menu {opacity: 1;visibility: visible;}.ast-hfb-header.ast-default-menu-enable.ast-header-break-point .ast-mobile-header-wrap .ast-mobile-header-content .main-header-bar-navigation {width: unset;margin: unset;}.ast-mobile-header-content.content-align-flex-end .main-header-bar-navigation .menu-item-has-children > .ast-menu-toggle,.ast-desktop-header-content.content-align-flex-end .main-header-bar-navigation .menu-item-has-children > .ast-menu-toggle {left: calc( 20px - 0.907em);right: auto;}.ast-mobile-header-content .ast-search-menu-icon,.ast-mobile-header-content .ast-search-menu-icon.slide-search,.ast-desktop-header-content .ast-search-menu-icon,.ast-desktop-header-content .ast-search-menu-icon.slide-search {width: 100%;position: relative;display: block;right: auto;transform: none;}.ast-mobile-header-content .ast-search-menu-icon.slide-search .search-form,.ast-mobile-header-content .ast-search-menu-icon .search-form,.ast-desktop-header-content .ast-search-menu-icon.slide-search .search-form,.ast-desktop-header-content .ast-search-menu-icon .search-form {right: 0;visibility: visible;opacity: 1;position: relative;top: auto;transform: none;padding: 0;display: block;overflow: hidden;}.ast-mobile-header-content .ast-search-menu-icon.ast-inline-search .search-field,.ast-mobile-header-content .ast-search-menu-icon .search-field,.ast-desktop-header-content .ast-search-menu-icon.ast-inline-search .search-field,.ast-desktop-header-content .ast-search-menu-icon .search-field {width: 100%;padding-right: 5.5em;}.ast-mobile-header-content .ast-search-menu-icon .search-submit,.ast-desktop-header-content .ast-search-menu-icon .search-submit {display: block;position: absolute;height: 100%;top: 0;right: 0;padding: 0 1em;border-radius: 0;}.ast-hfb-header.ast-default-menu-enable.ast-header-break-point .ast-mobile-header-wrap .ast-mobile-header-content .main-header-bar-navigation ul .sub-menu .menu-link {padding-left: 30px;}.ast-hfb-header.ast-default-menu-enable.ast-header-break-point .ast-mobile-header-wrap .ast-mobile-header-content .main-header-bar-navigation .sub-menu .menu-item .menu-item .menu-link {padding-left: 40px;}.ast-mobile-popup-drawer.active .ast-mobile-popup-inner{background-color:#ffffff;;}.ast-mobile-header-wrap .ast-mobile-header-content, .ast-desktop-header-content{background-color:#ffffff;;}.ast-mobile-popup-content > *, .ast-mobile-header-content > *, .ast-desktop-popup-content > *, .ast-desktop-header-content > *{padding-top:0px;padding-bottom:0px;}.content-align-flex-start .ast-builder-layout-element{justify-content:flex-start;}.content-align-flex-start .main-header-menu{text-align:left;}.ast-mobile-popup-drawer.active .menu-toggle-close{color:#3a3a3a;}.ast-mobile-header-wrap .ast-primary-header-bar,.ast-primary-header-bar .site-primary-header-wrap{min-height:80px;}.ast-desktop .ast-primary-header-bar .main-header-menu > .menu-item{line-height:80px;}.ast-header-break-point #masthead .ast-mobile-header-wrap .ast-primary-header-bar,.ast-header-break-point #masthead .ast-mobile-header-wrap .ast-below-header-bar,.ast-header-break-point #masthead .ast-mobile-header-wrap .ast-above-header-bar{padding-left:20px;padding-right:20px;}.ast-header-break-point .ast-primary-header-bar{border-bottom-width:1px;border-bottom-color:var( --ast-global-color-subtle-background,--ast-global-color-7 );border-bottom-style:solid;}@media (min-width:922px){.ast-primary-header-bar{border-bottom-width:1px;border-bottom-color:var( --ast-global-color-subtle-background,--ast-global-color-7 );border-bottom-style:solid;}}.ast-primary-header-bar{background-color:var( --ast-global-color-primary,--ast-global-color-4 );}.ast-primary-header-bar{display:block;}@media (max-width:921px){.ast-header-break-point .ast-primary-header-bar{display:grid;}}@media (max-width:544px){.ast-header-break-point .ast-primary-header-bar{display:grid;}}data-sectionsection-header-mobile-trigger .ast-button-wrap .ast-mobile-menu-trigger-minimal{color:var(--ast-global-color-0);border:none;background:transparent;}data-sectionsection-header-mobile-trigger .ast-button-wrap .mobile-menu-toggle-icon .ast-mobile-svg{width:20px;height:20px;fill:var(--ast-global-color-0);}data-sectionsection-header-mobile-trigger .ast-button-wrap .mobile-menu-wrap .mobile-menu{color:var(--ast-global-color-0);}.ast-builder-menu-mobile .main-navigation .main-header-menu .menu-item > .menu-link{color:var(--ast-global-color-3);}.ast-builder-menu-mobile .main-navigation .main-header-menu .menu-item > .ast-menu-toggle{color:var(--ast-global-color-3);}.ast-builder-menu-mobile .main-navigation .main-header-menu .menu-item:hover > .menu-link, .ast-builder-menu-mobile .main-navigation .inline-on-mobile .menu-item:hover > .ast-menu-toggle{color:var(--ast-global-color-1);}.ast-builder-menu-mobile .menu-item:hover > .menu-link, .ast-builder-menu-mobile .main-navigation .inline-on-mobile .menu-item:hover > .ast-menu-toggle{color:var(--ast-global-color-1);}.ast-builder-menu-mobile .main-navigation .menu-item:hover > .ast-menu-toggle{color:var(--ast-global-color-1);}.ast-builder-menu-mobile .main-navigation .menu-item.current-menu-item > .menu-link, .ast-builder-menu-mobile .main-navigation .inline-on-mobile .menu-item.current-menu-item > .ast-menu-toggle, .ast-builder-menu-mobile .main-navigation .menu-item.current-menu-ancestor > .menu-link, .ast-builder-menu-mobile .main-navigation .menu-item.current-menu-ancestor > .ast-menu-toggle{color:var(--ast-global-color-1);}.ast-builder-menu-mobile .main-navigation .menu-item.current-menu-item > .ast-menu-toggle{color:var(--ast-global-color-1);}.ast-builder-menu-mobile .main-navigation .menu-item.menu-item-has-children > .ast-menu-toggle{top:0;}.ast-builder-menu-mobile .main-navigation .menu-item-has-children > .menu-link:after{content:unset;}.ast-hfb-header .ast-builder-menu-mobile .main-header-menu, .ast-hfb-header .ast-builder-menu-mobile .main-navigation .menu-item .menu-link, .ast-hfb-header .ast-builder-menu-mobile .main-navigation .menu-item .sub-menu .menu-link{border-style:none;}.ast-builder-menu-mobile .main-navigation .menu-item.menu-item-has-children > .ast-menu-toggle{top:0;}@media (max-width:921px){.ast-builder-menu-mobile .main-navigation .main-header-menu .menu-item > .menu-link{color:var(--ast-global-color-3);}.ast-builder-menu-mobile .main-navigation .main-header-menu .menu-item > .ast-menu-toggle{color:var(--ast-global-color-3);}.ast-builder-menu-mobile .main-navigation .main-header-menu .menu-item:hover > .menu-link, .ast-builder-menu-mobile .main-navigation .inline-on-mobile .menu-item:hover > .ast-menu-toggle{color:var(--ast-global-color-1);background:var(--ast-global-color-4);}.ast-builder-menu-mobile .main-navigation .menu-item:hover > .ast-menu-toggle{color:var(--ast-global-color-1);}.ast-builder-menu-mobile .main-navigation .menu-item.current-menu-item > .menu-link, .ast-builder-menu-mobile .main-navigation .inline-on-mobile .menu-item.current-menu-item > .ast-menu-toggle, .ast-builder-menu-mobile .main-navigation .menu-item.current-menu-ancestor > .menu-link, .ast-builder-menu-mobile .main-navigation .menu-item.current-menu-ancestor > .ast-menu-toggle{color:var(--ast-global-color-1);background:var(--ast-global-color-4);}.ast-builder-menu-mobile .main-navigation .menu-item.current-menu-item > .ast-menu-toggle{color:var(--ast-global-color-1);}.ast-builder-menu-mobile .main-navigation .menu-item.menu-item-has-children > .ast-menu-toggle{top:0;}.ast-builder-menu-mobile .main-navigation .menu-item-has-children > .menu-link:after{content:unset;}.ast-builder-menu-mobile .main-navigation .main-header-menu , .ast-builder-menu-mobile .main-navigation .main-header-menu .menu-link, .ast-builder-menu-mobile .main-navigation .main-header-menu .sub-menu{background-color:var(--ast-global-color-5);}}@media (max-width:544px){.ast-builder-menu-mobile .main-navigation .menu-item.menu-item-has-children > .ast-menu-toggle{top:0;}}.ast-builder-menu-mobile .main-navigation{display:block;}@media (max-width:921px){.ast-header-break-point .ast-builder-menu-mobile .main-navigation{display:block;}}@media (max-width:544px){.ast-header-break-point .ast-builder-menu-mobile .main-navigation{display:block;}}:root{--e-global-color-astglobalcolor0:#046bd2;--e-global-color-astglobalcolor1:#045cb4;--e-global-color-astglobalcolor2:#1e293b;--e-global-color-astglobalcolor3:#334155;--e-global-color-astglobalcolor4:#f9fafb;--e-global-color-astglobalcolor5:#FFFFFF;--e-global-color-astglobalcolor6:#e2e8f0;--e-global-color-astglobalcolor7:#cbd5e1;--e-global-color-astglobalcolor8:#94a3b8;}/style>style idwp-emoji-styles-inline-css> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; }/style>style idglobal-styles-inline-css>:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--ast-global-color-0: var(--ast-global-color-0);--wp--preset--color--ast-global-color-1: var(--ast-global-color-1);--wp--preset--color--ast-global-color-2: var(--ast-global-color-2);--wp--preset--color--ast-global-color-3: var(--ast-global-color-3);--wp--preset--color--ast-global-color-4: var(--ast-global-color-4);--wp--preset--color--ast-global-color-5: var(--ast-global-color-5);--wp--preset--color--ast-global-color-6: var(--ast-global-color-6);--wp--preset--color--ast-global-color-7: var(--ast-global-color-7);--wp--preset--color--ast-global-color-8: var(--ast-global-color-8);--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(body) { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){margin-left: auto !important;margin-right: auto !important;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}a:where(:not(.wp-element-button)){text-decoration: underline;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;line-height: inherit;padding: calc(0.667em + 2px) calc(1.333em + 2px);text-decoration: none;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-ast-global-color-0-color{color: var(--wp--preset--color--ast-global-color-0) !important;}.has-ast-global-color-1-color{color: var(--wp--preset--color--ast-global-color-1) !important;}.has-ast-global-color-2-color{color: var(--wp--preset--color--ast-global-color-2) !important;}.has-ast-global-color-3-color{color: var(--wp--preset--color--ast-global-color-3) !important;}.has-ast-global-color-4-color{color: var(--wp--preset--color--ast-global-color-4) !important;}.has-ast-global-color-5-color{color: var(--wp--preset--color--ast-global-color-5) !important;}.has-ast-global-color-6-color{color: var(--wp--preset--color--ast-global-color-6) !important;}.has-ast-global-color-7-color{color: var(--wp--preset--color--ast-global-color-7) !important;}.has-ast-global-color-8-color{color: var(--wp--preset--color--ast-global-color-8) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-ast-global-color-0-background-color{background-color: var(--wp--preset--color--ast-global-color-0) !important;}.has-ast-global-color-1-background-color{background-color: var(--wp--preset--color--ast-global-color-1) !important;}.has-ast-global-color-2-background-color{background-color: var(--wp--preset--color--ast-global-color-2) !important;}.has-ast-global-color-3-background-color{background-color: var(--wp--preset--color--ast-global-color-3) !important;}.has-ast-global-color-4-background-color{background-color: var(--wp--preset--color--ast-global-color-4) !important;}.has-ast-global-color-5-background-color{background-color: var(--wp--preset--color--ast-global-color-5) !important;}.has-ast-global-color-6-background-color{background-color: var(--wp--preset--color--ast-global-color-6) !important;}.has-ast-global-color-7-background-color{background-color: var(--wp--preset--color--ast-global-color-7) !important;}.has-ast-global-color-8-background-color{background-color: var(--wp--preset--color--ast-global-color-8) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-ast-global-color-0-border-color{border-color: var(--wp--preset--color--ast-global-color-0) !important;}.has-ast-global-color-1-border-color{border-color: var(--wp--preset--color--ast-global-color-1) !important;}.has-ast-global-color-2-border-color{border-color: var(--wp--preset--color--ast-global-color-2) !important;}.has-ast-global-color-3-border-color{border-color: var(--wp--preset--color--ast-global-color-3) !important;}.has-ast-global-color-4-border-color{border-color: var(--wp--preset--color--ast-global-color-4) !important;}.has-ast-global-color-5-border-color{border-color: var(--wp--preset--color--ast-global-color-5) !important;}.has-ast-global-color-6-border-color{border-color: var(--wp--preset--color--ast-global-color-6) !important;}.has-ast-global-color-7-border-color{border-color: var(--wp--preset--color--ast-global-color-7) !important;}.has-ast-global-color-8-border-color{border-color: var(--wp--preset--color--ast-global-color-8) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}/style>link relstylesheet idtrp-floater-language-switcher-style-css hrefhttps://aisuperior.com/wp-content/plugins/translatepress-multilingual/assets/css/trp-floater-language-switcher.css?ver3.0.4 mediaall />link relstylesheet idtrp-language-switcher-style-css hrefhttps://aisuperior.com/wp-content/plugins/translatepress-multilingual/assets/css/trp-language-switcher.css?ver3.0.4 mediaall />link relstylesheet idchld_thm_cfg_child-css hrefhttps://aisuperior.com/wp-content/themes/astra-child/style.css?ver6.8.3 mediaall />link relstylesheet idelementor-frontend-css hrefhttps://aisuperior.com/wp-content/plugins/elementor/assets/css/frontend.min.css?ver3.33.1 mediaall />link relstylesheet idwidget-image-css hrefhttps://aisuperior.com/wp-content/plugins/elementor/assets/css/widget-image.min.css?ver3.33.1 mediaall />link relstylesheet idwidget-nav-menu-css hrefhttps://aisuperior.com/wp-content/plugins/elementor-pro/assets/css/widget-nav-menu.min.css?ver3.33.1 mediaall />link relstylesheet idwidget-icon-list-css hrefhttps://aisuperior.com/wp-content/plugins/elementor/assets/css/widget-icon-list.min.css?ver3.33.1 mediaall />link relstylesheet idwidget-social-icons-css hrefhttps://aisuperior.com/wp-content/plugins/elementor/assets/css/widget-social-icons.min.css?ver3.33.1 mediaall />link relstylesheet ide-apple-webkit-css hrefhttps://aisuperior.com/wp-content/plugins/elementor/assets/css/conditionals/apple-webkit.min.css?ver3.33.1 mediaall />link relstylesheet idwidget-heading-css hrefhttps://aisuperior.com/wp-content/plugins/elementor/assets/css/widget-heading.min.css?ver3.33.1 mediaall />link relstylesheet ide-popup-css hrefhttps://aisuperior.com/wp-content/plugins/elementor-pro/assets/css/conditionals/popup.min.css?ver3.33.1 mediaall />link relstylesheet ideael-general-css hrefhttps://aisuperior.com/wp-content/plugins/essential-addons-for-elementor-lite/assets/front-end/css/view/general.min.css?ver6.5.1 mediaall />link relstylesheet ideael-11-css hrefhttps://aisuperior.com/wp-content/uploads/essential-addons-elementor/eael-11.css?ver1755004878 mediaall />link relstylesheet idelementor-post-6-css hrefhttps://aisuperior.com/wp-content/uploads/elementor/css/post-6.css?ver1763699806 mediaall />link relstylesheet idfont-awesome-5-all-css hrefhttps://aisuperior.com/wp-content/plugins/elementor/assets/lib/font-awesome/css/all.min.css?ver3.33.1 mediaall />link relstylesheet idfont-awesome-4-shim-css hrefhttps://aisuperior.com/wp-content/plugins/elementor/assets/lib/font-awesome/css/v4-shims.min.css?ver3.33.1 mediaall />link relstylesheet idwidget-lottie-css hrefhttps://aisuperior.com/wp-content/plugins/elementor-pro/assets/css/widget-lottie.min.css?ver3.33.1 mediaall />link relstylesheet idswiper-css hrefhttps://aisuperior.com/wp-content/plugins/elementor/assets/lib/swiper/v8/css/swiper.min.css?ver8.4.5 mediaall />link relstylesheet ide-swiper-css hrefhttps://aisuperior.com/wp-content/plugins/elementor/assets/css/conditionals/e-swiper.min.css?ver3.33.1 mediaall />link relstylesheet idwidget-testimonial-carousel-css hrefhttps://aisuperior.com/wp-content/plugins/elementor-pro/assets/css/widget-testimonial-carousel.min.css?ver3.33.1 mediaall />link relstylesheet idwidget-carousel-module-base-css hrefhttps://aisuperior.com/wp-content/plugins/elementor-pro/assets/css/widget-carousel-module-base.min.css?ver3.33.1 mediaall />link relstylesheet idwidget-image-box-css hrefhttps://aisuperior.com/wp-content/plugins/elementor/assets/css/widget-image-box.min.css?ver3.33.1 mediaall />link relstylesheet idwidget-image-carousel-css hrefhttps://aisuperior.com/wp-content/plugins/elementor/assets/css/widget-image-carousel.min.css?ver3.33.1 mediaall />link relstylesheet idwidget-loop-common-css hrefhttps://aisuperior.com/wp-content/plugins/elementor-pro/assets/css/widget-loop-common.min.css?ver3.33.1 mediaall />link relstylesheet idwidget-loop-carousel-css hrefhttps://aisuperior.com/wp-content/plugins/elementor-pro/assets/css/widget-loop-carousel.min.css?ver3.33.1 mediaall />link relstylesheet idwidget-form-css hrefhttps://aisuperior.com/wp-content/plugins/elementor-pro/assets/css/widget-form.min.css?ver3.33.1 mediaall />link relstylesheet idelementor-post-11-css hrefhttps://aisuperior.com/wp-content/uploads/elementor/css/post-11.css?ver1763699989 mediaall />link relstylesheet idelementor-post-192-css hrefhttps://aisuperior.com/wp-content/uploads/elementor/css/post-192.css?ver1763699823 mediaall />link relstylesheet idelementor-post-1086-css hrefhttps://aisuperior.com/wp-content/uploads/elementor/css/post-1086.css?ver1763699823 mediaall />link relstylesheet idelementor-post-32277-css hrefhttps://aisuperior.com/wp-content/uploads/elementor/css/post-32277.css?ver1763699823 mediaall />link relstylesheet idelementor-gf-local-roboto-css hrefhttps://aisuperior.com/wp-content/uploads/elementor/google-fonts/css/roboto.css?ver1742297800 mediaall />link relstylesheet idelementor-gf-local-robotoslab-css hrefhttps://aisuperior.com/wp-content/uploads/elementor/google-fonts/css/robotoslab.css?ver1742297814 mediaall />link relstylesheet idelementor-gf-local-poppins-css hrefhttps://aisuperior.com/wp-content/uploads/elementor/google-fonts/css/poppins.css?ver1742297824 mediaall />!--if IE>script srchttps://aisuperior.com/wp-content/themes/astra/assets/js/minified/flexibility.min.js?ver4.11.12 idastra-flexibility-js>/script>script idastra-flexibility-js-after>flexibility(document.documentElement);/script>!endif-->script srchttps://aisuperior.com/wp-includes/js/jquery/jquery.min.js?ver3.7.1 idjquery-core-js>/script>script srchttps://aisuperior.com/wp-includes/js/jquery/jquery-migrate.min.js?ver3.4.1 idjquery-migrate-js>/script>script srchttps://aisuperior.com/wp-content/plugins/elementor/assets/lib/font-awesome/js/v4-shims.min.js?ver3.33.1 idfont-awesome-4-shim-js>/script>link relhttps://api.w.org/ hrefhttps://aisuperior.com/wp-json/ />link relalternate titleJSON typeapplication/json hrefhttps://aisuperior.com/wp-json/wp/v2/pages/11 />link relEditURI typeapplication/rsd+xml titleRSD hrefhttps://aisuperior.com/xmlrpc.php?rsd />meta namegenerator contentWordPress 6.8.3 />link relshortlink hrefhttps://aisuperior.com/ />link relalternate titleoEmbed (JSON) typeapplication/json+oembed hrefhttps://aisuperior.com/wp-json/oembed/1.0/embed?urlhttps%3A%2F%2Faisuperior.com%2F />link relalternate titleoEmbed (XML) typetext/xml+oembed hrefhttps://aisuperior.com/wp-json/oembed/1.0/embed?urlhttps%3A%2F%2Faisuperior.com%2F&formatxml />link relalternate hreflangen-US hrefhttps://aisuperior.com//>link relalternate hreflangde-DE hrefhttps://aisuperior.com/de//>link relalternate hreflangar hrefhttps://aisuperior.com/ar//>link relalternate hreflangfr-FR hrefhttps://aisuperior.com/fr//>link relalternate hreflangnl-NL hrefhttps://aisuperior.com/nl//>link relalternate hreflanges-ES hrefhttps://aisuperior.com/es//>link relalternate hreflangen hrefhttps://aisuperior.com//>link relalternate hreflangde hrefhttps://aisuperior.com/de//>link relalternate hreflangfr hrefhttps://aisuperior.com/fr//>link relalternate hreflangnl hrefhttps://aisuperior.com/nl//>link relalternate hreflanges hrefhttps://aisuperior.com/es//>link relalternate hreflangx-default hrefhttps://aisuperior.com//>!-- Google Tag Manager for WordPress by gtm4wp.com -->!-- GTM Container placement set to automatic -->script data-cfasyncfalse data-pagespeed-no-defer> var dataLayer_content {pagePostType:frontpage,pagePostType2:single-page,pagePostAuthor:AI Superior Team}; dataLayer.push( dataLayer_content );/script>script data-cfasyncfalse data-pagespeed-no-defer>(function(w,d,s,l,i){wlwl||;wl.push({gtm.start:new Date().getTime(),event:gtm.js});var fd.getElementsByTagName(s)0,jd.createElement(s),dll!dataLayer?&l+l:;j.asynctrue;j.src//www.googletagmanager.com/gtm.js?id+i+dl;f.parentNode.insertBefore(j,f);})(window,document,script,dataLayer,GTM-PM2R74K);/script>!-- End Google Tag Manager for WordPress by gtm4wp.com -->meta namegenerator contentElementor 3.33.1; features: e_font_icon_svg, additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-swap> style> .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload), .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * { background-image: none !important; } @media screen and (max-height: 1024px) { .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload), .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * { background-image: none !important; } } @media screen and (max-height: 640px) { .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload), .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * { background-image: none !important; } } /style> link relicon hrefhttps://aisuperior.com/wp-content/uploads/2023/08/favicon-16x16-1.png sizes32x32 />link relicon hrefhttps://aisuperior.com/wp-content/uploads/2023/08/favicon-16x16-1.png sizes192x192 />link relapple-touch-icon hrefhttps://aisuperior.com/wp-content/uploads/2023/08/favicon-16x16-1.png />meta namemsapplication-TileImage contenthttps://aisuperior.com/wp-content/uploads/2023/08/favicon-16x16-1.png /> style idwp-custom-css> .elementor-post__thumbnail img{ min-height:264px; max-height:264px; }.home-slider .swiper-slide{ padding:12px;} .elementor-icon-list-items{ justify-content: flex-start !important; text-align: left !important; align-items: flex-start !important; display:flex !important; flex-direction:column !important;} @media screen and (min-resolution: 192dpi) { .logo-carousel .elementor-image-carousel-wrapper{ padding-bottom:0px !important; }} .logo-carousel .swiper-slide { height: 115px !important; } } .carousel_widget__wrapper { max-width: none; margin: 0px auto !important;}.vision-slider .swiper-wrapper{ margin-bottom: 0px !important;}@media only screen and (max-width: 767px) { body .carousl .swiper-slide { margin-right: 10px !important;} .across_s .elementor-tabs-content-wrapper{ border: none !important; padding: 0 !important; } .vision-faq .eael-accordion-header{ padding: 15px 35px 15px 20px !important; }}/* Elementor Careers Form Css Start */.elementor-field-type-html span {font-size: 12px;}.elementor-field-type-html.elementor-field-group.elementor-column.elementor-field-group-field_3f92239.elementor-col-100 { margin-bottom: 0px; }input#form-field-field_d086c02 { padding: 5px 0px 15px 0px !important; }/* Elementor Careers Form Css End */ /style> !-- Hotjar Tracking Code for https://aisuperior.com/ -->script typetext/javascript > (function(h,o,t,j,a,r){ h.hjh.hj||function(){(h.hj.qh.hj.q||).push(arguments)}; h._hjSettings{hjid:2603123,hjsv:6}; ao.getElementsByTagName(head)0; ro.createElement(script);r.async1; r.srct+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,https://static.hotjar.com/c/hotjar-,.js?sv);/script>script typetext/javascript>jQuery(document).ready( function () {jQuery(.link-box .swiper-slide).click(function () { window.location jQuery(this).find(a:first).attr(href); return false; }); });/script>/head>body itemtypehttps://schema.org/WebPage itemscopeitemscope classhome wp-singular page-template page-template-elementor_header_footer page page-id-11 wp-theme-astra wp-child-theme-astra-child translatepress-en_US ast-desktop ast-page-builder-template ast-no-sidebar astra-4.11.12 group-blog ast-single-post ast-inherit-site-logo-transparent ast-hfb-header elementor-default elementor-template-full-width elementor-kit-6 elementor-page elementor-page-11>!-- GTM Container placement set to automatic -->!-- Google Tag Manager (noscript) --> noscript>iframe srchttps://www.googletagmanager.com/ns.html?idGTM-PM2R74K height0 width0 styledisplay:none;visibility:hidden aria-hiddentrue>/iframe>/noscript>!-- End Google Tag Manager (noscript) -->a classskip-link screen-reader-text href#content titleSkip to content> Skip to content/a>divclasshfeed site idpage> header data-elementor-typeheader data-elementor-id192 classelementor elementor-192 elementor-location-header data-elementor-post-typeelementor_library> section classelementor-section elementor-top-section elementor-element elementor-element-0a73cc1 elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile header elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id0a73cc1 data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e4c672a data-ide4c672a data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-820cd5b elementor-widget elementor-widget-text-editor data-id820cd5b data-element_typewidget data-widget_typetext-editor.default> Download our strong> AI in Business | Global Trends Report 2023/strong> and stay ahead of the curve! /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-ca266c6 elementor-section-content-middle header_section elementor-section-height-min-height elementor-hidden-tablet elementor-hidden-mobile elementor-section-boxed elementor-section-height-default elementor-section-items-middle data-idca266c6 data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-2e7795a logo-column data-id2e7795a data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-04afcfc menu-logo elementor-widget elementor-widget-image data-id04afcfc data-element_typewidget data-widget_typeimage.default> a hrefhttps://aisuperior.com/ aria-labellogo> img width320 height59 srchttps://aisuperior.com/wp-content/uploads/2023/08/logo-1.png classattachment-large size-large wp-image-193 alt srcsethttps://aisuperior.com/wp-content/uploads/2023/08/logo-1.png 320w, https://aisuperior.com/wp-content/uploads/2023/08/logo-1-300x55.png 300w sizes(max-width: 320px) 100vw, 320px /> /a> /div> /div> /div> div classelementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-fd7fc1a header-middle data-idfd7fc1a data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-c4226e7 elementor-nav-menu__align-start home-mega-menu elementor-nav-menu--stretch elementor-nav-menu__text-align-center elementor-nav-menu--dropdown-tablet elementor-nav-menu--toggle elementor-nav-menu--burger elementor-widget elementor-widget-nav-menu data-idc4226e7 data-element_typewidget data-settings{"submenu_icon":{"value":"<i aria-hidden\"true\" class\"\"><\/i>","library":""},"full_width":"stretch","layout":"horizontal","toggle":"burger"} data-widget_typenav-menu.default> nav aria-labelMenu classelementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-none> ul idmenu-1-c4226e7 classelementor-nav-menu>li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-11 current_page_item menu-item-344>a hrefhttps://aisuperior.com/ aria-currentpage classelementor-item elementor-item-active menu-link>Home/a>/li>li classcompany-menu menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-345>a aria-expandedfalse href# classelementor-item elementor-item-anchor menu-link>Companyspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a>ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11462>a hrefhttps://aisuperior.com/about-aisuperior/ classelementor-sub-item menu-link>About Us/a>/li> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14053>a hrefhttps://aisuperior.com/career/ classelementor-sub-item menu-link>Careers/a>/li> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14056>a hrefhttps://aisuperior.com/blog/ classelementor-sub-item menu-link>Blog/a>/li> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14054>a hrefhttps://aisuperior.com/news/ classelementor-sub-item menu-link>News/a>/li>/ul>/li>li classservices_menu menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-350>a aria-expandedfalse href# classelementor-item elementor-item-anchor menu-link>Servicesspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a>ul classsub-menu elementor-nav-menu--dropdown> li classservices-parent services-main menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-567>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link>Artificial Intelligence & MLspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classcolor-change menu-item menu-item-type-post_type menu-item-object-page menu-item-11723>a hrefhttps://aisuperior.com/services/artificial-intelligence-consulting/ classelementor-sub-item menu-link>AI Consulting/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11724>a hrefhttps://aisuperior.com/services/data-strategy/ classelementor-sub-item menu-link>AI and Data Strategy/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11725>a hrefhttps://aisuperior.com/services/ai-based-business-process-optimization/ classelementor-sub-item menu-link>Process optimization with AI/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11726>a hrefhttps://aisuperior.com/services/ai-use-case-identification/ classelementor-sub-item menu-link>AI Use Case Discovery & Identification/a>/li> li classcolor-change menu-item menu-item-type-post_type menu-item-object-page menu-item-11728>a hrefhttps://aisuperior.com/services/ai-software-development/ classelementor-sub-item menu-link>AI Software Development/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11730>a hrefhttps://aisuperior.com/services/development-of-ai-components/ classelementor-sub-item menu-link>AI Components development/a>/li> li classcolor-change menu-item menu-item-type-post_type menu-item-object-page menu-item-11731>a hrefhttps://aisuperior.com/services/artificial-intelligence-education/ classelementor-sub-item menu-link>AI Academy/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11733>a hrefhttps://aisuperior.com/services/research-and-development/ classelementor-sub-item menu-link>R&D for AI/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11734>a hrefhttps://aisuperior.com/services/artificial-intelligence-consulting/sota-research-patents/ classelementor-sub-item menu-link>SOTA Research / Patents/a>/li> /ul>/li> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-359>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link>Generative AIspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11735>a hrefhttps://aisuperior.com/services/generative-ai-development/ classelementor-sub-item menu-link>Generative AI Development/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-14961>a hrefhttps://aisuperior.com/services/ai-chatbot-development/ classelementor-sub-item menu-link>AI Chatbot Development/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-15322>a hrefhttps://aisuperior.com/services/llm-model-creation-services/ classelementor-sub-item menu-link>LLM Development and Consulting/a>/li> /ul>/li> li classservices-parent services-main menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-17070>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link>Geospatial AIspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-17071>a hrefhttps://aisuperior.com/services/geoai/ classelementor-sub-item menu-link>GeoAI/a>/li> /ul>/li>/ul>/li>li classsolutions_menu menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-351>a aria-expandedfalse href# classelementor-item elementor-item-anchor menu-link>Solutionsspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a>ul classsub-menu elementor-nav-menu--dropdown> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-575>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link>Technologyspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11748>a hrefhttps://aisuperior.com/technology/computer-vision-and-image-analysis/ classelementor-sub-item menu-link>Computer Vision/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11749>a hrefhttps://aisuperior.com/technology/natural-language-processing-machine-learning/ classelementor-sub-item menu-link>Natural Language Processing/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11750>a hrefhttps://aisuperior.com/technology/business-intelligence-and-statistical-analysis/ classelementor-sub-item menu-link>Business Intelligence Solutions/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11751>a hrefhttps://aisuperior.com/technology/core-data-science-and-machine-learning/ classelementor-sub-item menu-link>Core Data Science and Machine Learning/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11752>a hrefhttps://aisuperior.com/technology/cutting-edge-artificial-intelligence/ classelementor-sub-item menu-link>Cutting Edge Artificial Intelligence/a>/li> /ul>/li> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-574>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link>Industryspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11737>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-insurance/ classelementor-sub-item menu-link>Insurance/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11747>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-construction/ classelementor-sub-item menu-link>Construction/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11738>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-finance/ classelementor-sub-item menu-link>Finance/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11739>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-government-sector/ classelementor-sub-item menu-link>Government/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11740>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-internet-industry-and-tech-start-ups/ classelementor-sub-item menu-link>Internet and Tech Start-Ups/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11741>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-media-and-entertainment/ classelementor-sub-item menu-link>Media/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11742>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-oil-and-gas-industry/ classelementor-sub-item menu-link>Oil and Gas/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11743>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-pharma/ classelementor-sub-item menu-link>Pharmaceuticals/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11744>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-real-estate/ classelementor-sub-item menu-link>Real Estate/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11745>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-space-industry/ classelementor-sub-item menu-link>Space/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11746>a hrefhttps://aisuperior.com/industry/artificial-intelligence-software-development-for-ngos-npos-and-ncos/ classelementor-sub-item menu-link>NGOs, NPOs and NCOs/a>/li> /ul>/li> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-576>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link>Productsspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-17180>a hrefhttps://aisuperior.com/products/aisuperiorgpt/ classelementor-sub-item menu-link>AiSuperiorGPT/a>/li> /ul>/li>/ul>/li>li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14055>a hrefhttps://aisuperior.com/projects/ classelementor-item menu-link>Projects/a>/li>/ul> /nav> div classelementor-menu-toggle rolebutton tabindex0 aria-labelMenu Toggle aria-expandedfalse> svg aria-hiddentrue rolepresentation classelementor-menu-toggle__icon--open e-font-icon-svg e-eicon-menu-bar viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM104 333H896C929 333 958 304 958 271S929 208 896 208H104C71 208 42 237 42 271S71 333 104 333ZM104 583H896C929 583 958 554 958 521S929 458 896 458H104C71 458 42 487 42 521S71 583 104 583ZM104 833H896C929 833 958 804 958 771S929 708 896 708H104C71 708 42 737 42 771S71 833 104 833Z>/path>/svg>svg aria-hiddentrue rolepresentation classelementor-menu-toggle__icon--close e-font-icon-svg e-eicon-close viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM742 167L500 408 258 167C246 154 233 150 217 150 196 150 179 158 167 167 154 179 150 196 150 212 150 229 154 242 171 254L408 500 167 742C138 771 138 800 167 829 196 858 225 858 254 829L496 587 738 829C750 842 767 846 783 846 800 846 817 842 829 829 842 817 846 804 846 783 846 767 842 750 829 737L588 500 833 258C863 229 863 200 833 171 804 137 775 137 742 167Z>/path>/svg> /div> nav classelementor-nav-menu--dropdown elementor-nav-menu__container aria-hiddentrue> ul idmenu-2-c4226e7 classelementor-nav-menu>li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-11 current_page_item menu-item-344>a hrefhttps://aisuperior.com/ aria-currentpage classelementor-item elementor-item-active menu-link tabindex-1>Home/a>/li>li classcompany-menu menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-345>a aria-expandedfalse href# classelementor-item elementor-item-anchor menu-link tabindex-1>Companyspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a>ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11462>a hrefhttps://aisuperior.com/about-aisuperior/ classelementor-sub-item menu-link tabindex-1>About Us/a>/li> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14053>a hrefhttps://aisuperior.com/career/ classelementor-sub-item menu-link tabindex-1>Careers/a>/li> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14056>a hrefhttps://aisuperior.com/blog/ classelementor-sub-item menu-link tabindex-1>Blog/a>/li> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14054>a hrefhttps://aisuperior.com/news/ classelementor-sub-item menu-link tabindex-1>News/a>/li>/ul>/li>li classservices_menu menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-350>a aria-expandedfalse href# classelementor-item elementor-item-anchor menu-link tabindex-1>Servicesspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a>ul classsub-menu elementor-nav-menu--dropdown> li classservices-parent services-main menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-567>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link tabindex-1>Artificial Intelligence & MLspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classcolor-change menu-item menu-item-type-post_type menu-item-object-page menu-item-11723>a hrefhttps://aisuperior.com/services/artificial-intelligence-consulting/ classelementor-sub-item menu-link tabindex-1>AI Consulting/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11724>a hrefhttps://aisuperior.com/services/data-strategy/ classelementor-sub-item menu-link tabindex-1>AI and Data Strategy/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11725>a hrefhttps://aisuperior.com/services/ai-based-business-process-optimization/ classelementor-sub-item menu-link tabindex-1>Process optimization with AI/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11726>a hrefhttps://aisuperior.com/services/ai-use-case-identification/ classelementor-sub-item menu-link tabindex-1>AI Use Case Discovery & Identification/a>/li> li classcolor-change menu-item menu-item-type-post_type menu-item-object-page menu-item-11728>a hrefhttps://aisuperior.com/services/ai-software-development/ classelementor-sub-item menu-link tabindex-1>AI Software Development/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11730>a hrefhttps://aisuperior.com/services/development-of-ai-components/ classelementor-sub-item menu-link tabindex-1>AI Components development/a>/li> li classcolor-change menu-item menu-item-type-post_type menu-item-object-page menu-item-11731>a hrefhttps://aisuperior.com/services/artificial-intelligence-education/ classelementor-sub-item menu-link tabindex-1>AI Academy/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11733>a hrefhttps://aisuperior.com/services/research-and-development/ classelementor-sub-item menu-link tabindex-1>R&D for AI/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11734>a hrefhttps://aisuperior.com/services/artificial-intelligence-consulting/sota-research-patents/ classelementor-sub-item menu-link tabindex-1>SOTA Research / Patents/a>/li> /ul>/li> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-359>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link tabindex-1>Generative AIspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11735>a hrefhttps://aisuperior.com/services/generative-ai-development/ classelementor-sub-item menu-link tabindex-1>Generative AI Development/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-14961>a hrefhttps://aisuperior.com/services/ai-chatbot-development/ classelementor-sub-item menu-link tabindex-1>AI Chatbot Development/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-15322>a hrefhttps://aisuperior.com/services/llm-model-creation-services/ classelementor-sub-item menu-link tabindex-1>LLM Development and Consulting/a>/li> /ul>/li> li classservices-parent services-main menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-17070>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link tabindex-1>Geospatial AIspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-17071>a hrefhttps://aisuperior.com/services/geoai/ classelementor-sub-item menu-link tabindex-1>GeoAI/a>/li> /ul>/li>/ul>/li>li classsolutions_menu menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-351>a aria-expandedfalse href# classelementor-item elementor-item-anchor menu-link tabindex-1>Solutionsspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a>ul classsub-menu elementor-nav-menu--dropdown> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-575>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link tabindex-1>Technologyspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11748>a hrefhttps://aisuperior.com/technology/computer-vision-and-image-analysis/ classelementor-sub-item menu-link tabindex-1>Computer Vision/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11749>a hrefhttps://aisuperior.com/technology/natural-language-processing-machine-learning/ classelementor-sub-item menu-link tabindex-1>Natural Language Processing/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11750>a hrefhttps://aisuperior.com/technology/business-intelligence-and-statistical-analysis/ classelementor-sub-item menu-link tabindex-1>Business Intelligence Solutions/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11751>a hrefhttps://aisuperior.com/technology/core-data-science-and-machine-learning/ classelementor-sub-item menu-link tabindex-1>Core Data Science and Machine Learning/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11752>a hrefhttps://aisuperior.com/technology/cutting-edge-artificial-intelligence/ classelementor-sub-item menu-link tabindex-1>Cutting Edge Artificial Intelligence/a>/li> /ul>/li> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-574>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link tabindex-1>Industryspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11737>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-insurance/ classelementor-sub-item menu-link tabindex-1>Insurance/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11747>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-construction/ classelementor-sub-item menu-link tabindex-1>Construction/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11738>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-finance/ classelementor-sub-item menu-link tabindex-1>Finance/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11739>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-government-sector/ classelementor-sub-item menu-link tabindex-1>Government/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11740>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-internet-industry-and-tech-start-ups/ classelementor-sub-item menu-link tabindex-1>Internet and Tech Start-Ups/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11741>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-media-and-entertainment/ classelementor-sub-item menu-link tabindex-1>Media/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11742>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-oil-and-gas-industry/ classelementor-sub-item menu-link tabindex-1>Oil and Gas/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11743>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-pharma/ classelementor-sub-item menu-link tabindex-1>Pharmaceuticals/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11744>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-real-estate/ classelementor-sub-item menu-link tabindex-1>Real Estate/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11745>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-space-industry/ classelementor-sub-item menu-link tabindex-1>Space/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11746>a hrefhttps://aisuperior.com/industry/artificial-intelligence-software-development-for-ngos-npos-and-ncos/ classelementor-sub-item menu-link tabindex-1>NGOs, NPOs and NCOs/a>/li> /ul>/li> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-576>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link tabindex-1>Productsspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-17180>a hrefhttps://aisuperior.com/products/aisuperiorgpt/ classelementor-sub-item menu-link tabindex-1>AiSuperiorGPT/a>/li> /ul>/li>/ul>/li>li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14055>a hrefhttps://aisuperior.com/projects/ classelementor-item menu-link tabindex-1>Projects/a>/li>/ul> /nav> /div> /div> /div> div classelementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-21a8fe3 elementor-hidden-mobile elementor-hidden-tablet data-id21a8fe3 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-7bf58d3 elementor-align-center elementor-widget elementor-widget-button data-id7bf58d3 data-element_typewidget data-widget_typebutton.default> a classelementor-button elementor-button-link elementor-size-sm hrefhttps://aisuperior.com/contact/> span classelementor-button-content-wrapper> span classelementor-button-text>Contact Us/span> /span> /a> /div> /div> /div> div classelementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-5f4b420 header-language data-id5f4b420 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-b0bad92 language-button elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile elementor-nav-menu--dropdown-tablet elementor-nav-menu__text-align-aside elementor-widget elementor-widget-nav-menu data-idb0bad92 data-element_typewidget data-settings{"submenu_icon":{"value":"<svg aria-hidden\"true\" class\"e-font-icon-svg e-fas-chevron-right\" viewBox\"0 0 320 512\" xmlns\"http:\/\/www.w3.org\/2000\/svg\"><path d\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"><\/path><\/svg>","library":"fa-solid"},"layout":"horizontal"} data-widget_typenav-menu.default> nav aria-labelMenu classelementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-underline e--animation-fade> ul idmenu-1-b0bad92 classelementor-nav-menu>li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-245>a aria-expandedfalse href# classelementor-item elementor-item-anchor menu-link>ENspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a>ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-246>a href# classelementor-sub-item elementor-item-anchor menu-link>DE/a>/li>/ul>/li>/ul> /nav> nav classelementor-nav-menu--dropdown elementor-nav-menu__container aria-hiddentrue> ul idmenu-2-b0bad92 classelementor-nav-menu>li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-245>a aria-expandedfalse href# classelementor-item elementor-item-anchor menu-link tabindex-1>ENspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a>ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-246>a href# classelementor-sub-item elementor-item-anchor menu-link tabindex-1>DE/a>/li>/ul>/li>/ul> /nav> /div> div classelementor-element elementor-element-ee2b0a5 elementor-widget elementor-widget-shortcode data-idee2b0a5 data-element_typewidget data-widget_typeshortcode.default> div classelementor-shortcode>div classtrp_language_switcher_shortcode>div classtrp-language-switcher trp-language-switcher-container data-no-translation > div classtrp-ls-shortcode-current-language> a href# classtrp-ls-shortcode-disabled-language trp-ls-disabled-language titleEnglish onclickevent.preventDefault()> EN /a> /div> div classtrp-ls-shortcode-language> a href# classtrp-ls-shortcode-disabled-language trp-ls-disabled-language titleEnglish onclickevent.preventDefault()> EN /a> a hrefhttps://aisuperior.com/de/ titleGerman> DE /a> a hrefhttps://aisuperior.com/ar/ titleArabic> AR /a> a hrefhttps://aisuperior.com/fr/ titleFrench> FR /a> a hrefhttps://aisuperior.com/nl/ titleDutch> NL /a> a hrefhttps://aisuperior.com/es/ titleSpanish> ES /a> /div> script typeapplication/javascript> // need to have the same with set from JS on both divs. Otherwise it can push stuff around in HTML var trp_ls_shortcodes document.querySelectorAll(.trp_language_switcher_shortcode .trp-language-switcher); if ( trp_ls_shortcodes.length > 0) { // get the last language switcher added var trp_el trp_ls_shortcodestrp_ls_shortcodes.length - 1; var trp_shortcode_language_item trp_el.querySelector( .trp-ls-shortcode-language ) // set width var trp_ls_shortcode_width trp_shortcode_language_item.offsetWidth + 16; trp_shortcode_language_item.style.width trp_ls_shortcode_width + px; trp_el.querySelector( .trp-ls-shortcode-current-language ).style.width trp_ls_shortcode_width + px; // Were putting this on display: none after we have its width. trp_shortcode_language_item.style.display none; } /script>/div>/div>/div> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-33bacce elementor-section-content-middle header_section elementor-section-full_width elementor-hidden-desktop elementor-section-height-default elementor-section-height-default data-id33bacce data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-0ff32df logo-column data-id0ff32df data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-f9cde38 menu-logo elementor-widget elementor-widget-image data-idf9cde38 data-element_typewidget data-widget_typeimage.default> a hrefhttps://aisuperior.com/ aria-labellogo> img width320 height59 srchttps://aisuperior.com/wp-content/uploads/2023/08/logo-1.png classattachment-large size-large wp-image-193 alt srcsethttps://aisuperior.com/wp-content/uploads/2023/08/logo-1.png 320w, https://aisuperior.com/wp-content/uploads/2023/08/logo-1-300x55.png 300w sizes(max-width: 320px) 100vw, 320px /> /a> /div> /div> /div> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-129a21c data-id129a21c data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-b2a300b elementor-nav-menu__align-center mobile-mega-menu elementor-nav-menu--stretch elementor-nav-menu__text-align-center elementor-nav-menu--dropdown-tablet elementor-nav-menu--toggle elementor-nav-menu--burger elementor-widget elementor-widget-nav-menu data-idb2a300b data-element_typewidget data-settings{"submenu_icon":{"value":"<svg aria-hidden\"true\" class\"e-font-icon-svg e-fas-angle-down\" viewBox\"0 0 320 512\" xmlns\"http:\/\/www.w3.org\/2000\/svg\"><path d\"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\"><\/path><\/svg>","library":"fa-solid"},"full_width":"stretch","layout":"horizontal","toggle":"burger"} data-widget_typenav-menu.default> nav aria-labelMenu classelementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-none> ul idmenu-1-b2a300b classelementor-nav-menu>li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-11 current_page_item menu-item-344>a hrefhttps://aisuperior.com/ aria-currentpage classelementor-item elementor-item-active menu-link>Home/a>/li>li classcompany-menu menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-345>a aria-expandedfalse href# classelementor-item elementor-item-anchor menu-link>Companyspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a>ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11462>a hrefhttps://aisuperior.com/about-aisuperior/ classelementor-sub-item menu-link>About Us/a>/li> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14053>a hrefhttps://aisuperior.com/career/ classelementor-sub-item menu-link>Careers/a>/li> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14056>a hrefhttps://aisuperior.com/blog/ classelementor-sub-item menu-link>Blog/a>/li> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14054>a hrefhttps://aisuperior.com/news/ classelementor-sub-item menu-link>News/a>/li>/ul>/li>li classservices_menu menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-350>a aria-expandedfalse href# classelementor-item elementor-item-anchor menu-link>Servicesspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a>ul classsub-menu elementor-nav-menu--dropdown> li classservices-parent services-main menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-567>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link>Artificial Intelligence & MLspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classcolor-change menu-item menu-item-type-post_type menu-item-object-page menu-item-11723>a hrefhttps://aisuperior.com/services/artificial-intelligence-consulting/ classelementor-sub-item menu-link>AI Consulting/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11724>a hrefhttps://aisuperior.com/services/data-strategy/ classelementor-sub-item menu-link>AI and Data Strategy/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11725>a hrefhttps://aisuperior.com/services/ai-based-business-process-optimization/ classelementor-sub-item menu-link>Process optimization with AI/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11726>a hrefhttps://aisuperior.com/services/ai-use-case-identification/ classelementor-sub-item menu-link>AI Use Case Discovery & Identification/a>/li> li classcolor-change menu-item menu-item-type-post_type menu-item-object-page menu-item-11728>a hrefhttps://aisuperior.com/services/ai-software-development/ classelementor-sub-item menu-link>AI Software Development/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11730>a hrefhttps://aisuperior.com/services/development-of-ai-components/ classelementor-sub-item menu-link>AI Components development/a>/li> li classcolor-change menu-item menu-item-type-post_type menu-item-object-page menu-item-11731>a hrefhttps://aisuperior.com/services/artificial-intelligence-education/ classelementor-sub-item menu-link>AI Academy/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11733>a hrefhttps://aisuperior.com/services/research-and-development/ classelementor-sub-item menu-link>R&D for AI/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11734>a hrefhttps://aisuperior.com/services/artificial-intelligence-consulting/sota-research-patents/ classelementor-sub-item menu-link>SOTA Research / Patents/a>/li> /ul>/li> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-359>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link>Generative AIspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11735>a hrefhttps://aisuperior.com/services/generative-ai-development/ classelementor-sub-item menu-link>Generative AI Development/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-14961>a hrefhttps://aisuperior.com/services/ai-chatbot-development/ classelementor-sub-item menu-link>AI Chatbot Development/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-15322>a hrefhttps://aisuperior.com/services/llm-model-creation-services/ classelementor-sub-item menu-link>LLM Development and Consulting/a>/li> /ul>/li> li classservices-parent services-main menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-17070>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link>Geospatial AIspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-17071>a hrefhttps://aisuperior.com/services/geoai/ classelementor-sub-item menu-link>GeoAI/a>/li> /ul>/li>/ul>/li>li classsolutions_menu menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-351>a aria-expandedfalse href# classelementor-item elementor-item-anchor menu-link>Solutionsspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a>ul classsub-menu elementor-nav-menu--dropdown> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-575>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link>Technologyspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11748>a hrefhttps://aisuperior.com/technology/computer-vision-and-image-analysis/ classelementor-sub-item menu-link>Computer Vision/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11749>a hrefhttps://aisuperior.com/technology/natural-language-processing-machine-learning/ classelementor-sub-item menu-link>Natural Language Processing/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11750>a hrefhttps://aisuperior.com/technology/business-intelligence-and-statistical-analysis/ classelementor-sub-item menu-link>Business Intelligence Solutions/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11751>a hrefhttps://aisuperior.com/technology/core-data-science-and-machine-learning/ classelementor-sub-item menu-link>Core Data Science and Machine Learning/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11752>a hrefhttps://aisuperior.com/technology/cutting-edge-artificial-intelligence/ classelementor-sub-item menu-link>Cutting Edge Artificial Intelligence/a>/li> /ul>/li> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-574>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link>Industryspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11737>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-insurance/ classelementor-sub-item menu-link>Insurance/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11747>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-construction/ classelementor-sub-item menu-link>Construction/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11738>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-finance/ classelementor-sub-item menu-link>Finance/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11739>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-government-sector/ classelementor-sub-item menu-link>Government/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11740>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-internet-industry-and-tech-start-ups/ classelementor-sub-item menu-link>Internet and Tech Start-Ups/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11741>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-media-and-entertainment/ classelementor-sub-item menu-link>Media/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11742>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-oil-and-gas-industry/ classelementor-sub-item menu-link>Oil and Gas/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11743>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-pharma/ classelementor-sub-item menu-link>Pharmaceuticals/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11744>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-real-estate/ classelementor-sub-item menu-link>Real Estate/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11745>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-space-industry/ classelementor-sub-item menu-link>Space/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11746>a hrefhttps://aisuperior.com/industry/artificial-intelligence-software-development-for-ngos-npos-and-ncos/ classelementor-sub-item menu-link>NGOs, NPOs and NCOs/a>/li> /ul>/li> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-576>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link>Productsspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-17180>a hrefhttps://aisuperior.com/products/aisuperiorgpt/ classelementor-sub-item menu-link>AiSuperiorGPT/a>/li> /ul>/li>/ul>/li>li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14055>a hrefhttps://aisuperior.com/projects/ classelementor-item menu-link>Projects/a>/li>/ul> /nav> div classelementor-menu-toggle rolebutton tabindex0 aria-labelMenu Toggle aria-expandedfalse> svg aria-hiddentrue rolepresentation classelementor-menu-toggle__icon--open e-font-icon-svg e-eicon-menu-bar viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM104 333H896C929 333 958 304 958 271S929 208 896 208H104C71 208 42 237 42 271S71 333 104 333ZM104 583H896C929 583 958 554 958 521S929 458 896 458H104C71 458 42 487 42 521S71 583 104 583ZM104 833H896C929 833 958 804 958 771S929 708 896 708H104C71 708 42 737 42 771S71 833 104 833Z>/path>/svg>svg aria-hiddentrue rolepresentation classelementor-menu-toggle__icon--close e-font-icon-svg e-eicon-close viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM742 167L500 408 258 167C246 154 233 150 217 150 196 150 179 158 167 167 154 179 150 196 150 212 150 229 154 242 171 254L408 500 167 742C138 771 138 800 167 829 196 858 225 858 254 829L496 587 738 829C750 842 767 846 783 846 800 846 817 842 829 829 842 817 846 804 846 783 846 767 842 750 829 737L588 500 833 258C863 229 863 200 833 171 804 137 775 137 742 167Z>/path>/svg> /div> nav classelementor-nav-menu--dropdown elementor-nav-menu__container aria-hiddentrue> ul idmenu-2-b2a300b classelementor-nav-menu>li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-11 current_page_item menu-item-344>a hrefhttps://aisuperior.com/ aria-currentpage classelementor-item elementor-item-active menu-link tabindex-1>Home/a>/li>li classcompany-menu menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-345>a aria-expandedfalse href# classelementor-item elementor-item-anchor menu-link tabindex-1>Companyspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a>ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11462>a hrefhttps://aisuperior.com/about-aisuperior/ classelementor-sub-item menu-link tabindex-1>About Us/a>/li> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14053>a hrefhttps://aisuperior.com/career/ classelementor-sub-item menu-link tabindex-1>Careers/a>/li> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14056>a hrefhttps://aisuperior.com/blog/ classelementor-sub-item menu-link tabindex-1>Blog/a>/li> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14054>a hrefhttps://aisuperior.com/news/ classelementor-sub-item menu-link tabindex-1>News/a>/li>/ul>/li>li classservices_menu menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-350>a aria-expandedfalse href# classelementor-item elementor-item-anchor menu-link tabindex-1>Servicesspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a>ul classsub-menu elementor-nav-menu--dropdown> li classservices-parent services-main menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-567>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link tabindex-1>Artificial Intelligence & MLspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classcolor-change menu-item menu-item-type-post_type menu-item-object-page menu-item-11723>a hrefhttps://aisuperior.com/services/artificial-intelligence-consulting/ classelementor-sub-item menu-link tabindex-1>AI Consulting/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11724>a hrefhttps://aisuperior.com/services/data-strategy/ classelementor-sub-item menu-link tabindex-1>AI and Data Strategy/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11725>a hrefhttps://aisuperior.com/services/ai-based-business-process-optimization/ classelementor-sub-item menu-link tabindex-1>Process optimization with AI/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11726>a hrefhttps://aisuperior.com/services/ai-use-case-identification/ classelementor-sub-item menu-link tabindex-1>AI Use Case Discovery & Identification/a>/li> li classcolor-change menu-item menu-item-type-post_type menu-item-object-page menu-item-11728>a hrefhttps://aisuperior.com/services/ai-software-development/ classelementor-sub-item menu-link tabindex-1>AI Software Development/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11730>a hrefhttps://aisuperior.com/services/development-of-ai-components/ classelementor-sub-item menu-link tabindex-1>AI Components development/a>/li> li classcolor-change menu-item menu-item-type-post_type menu-item-object-page menu-item-11731>a hrefhttps://aisuperior.com/services/artificial-intelligence-education/ classelementor-sub-item menu-link tabindex-1>AI Academy/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11733>a hrefhttps://aisuperior.com/services/research-and-development/ classelementor-sub-item menu-link tabindex-1>R&D for AI/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11734>a hrefhttps://aisuperior.com/services/artificial-intelligence-consulting/sota-research-patents/ classelementor-sub-item menu-link tabindex-1>SOTA Research / Patents/a>/li> /ul>/li> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-359>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link tabindex-1>Generative AIspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11735>a hrefhttps://aisuperior.com/services/generative-ai-development/ classelementor-sub-item menu-link tabindex-1>Generative AI Development/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-14961>a hrefhttps://aisuperior.com/services/ai-chatbot-development/ classelementor-sub-item menu-link tabindex-1>AI Chatbot Development/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-15322>a hrefhttps://aisuperior.com/services/llm-model-creation-services/ classelementor-sub-item menu-link tabindex-1>LLM Development and Consulting/a>/li> /ul>/li> li classservices-parent services-main menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-17070>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link tabindex-1>Geospatial AIspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-17071>a hrefhttps://aisuperior.com/services/geoai/ classelementor-sub-item menu-link tabindex-1>GeoAI/a>/li> /ul>/li>/ul>/li>li classsolutions_menu menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-351>a aria-expandedfalse href# classelementor-item elementor-item-anchor menu-link tabindex-1>Solutionsspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a>ul classsub-menu elementor-nav-menu--dropdown> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-575>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link tabindex-1>Technologyspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11748>a hrefhttps://aisuperior.com/technology/computer-vision-and-image-analysis/ classelementor-sub-item menu-link tabindex-1>Computer Vision/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11749>a hrefhttps://aisuperior.com/technology/natural-language-processing-machine-learning/ classelementor-sub-item menu-link tabindex-1>Natural Language Processing/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11750>a hrefhttps://aisuperior.com/technology/business-intelligence-and-statistical-analysis/ classelementor-sub-item menu-link tabindex-1>Business Intelligence Solutions/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11751>a hrefhttps://aisuperior.com/technology/core-data-science-and-machine-learning/ classelementor-sub-item menu-link tabindex-1>Core Data Science and Machine Learning/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11752>a hrefhttps://aisuperior.com/technology/cutting-edge-artificial-intelligence/ classelementor-sub-item menu-link tabindex-1>Cutting Edge Artificial Intelligence/a>/li> /ul>/li> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-574>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link tabindex-1>Industryspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11737>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-insurance/ classelementor-sub-item menu-link tabindex-1>Insurance/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11747>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-construction/ classelementor-sub-item menu-link tabindex-1>Construction/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11738>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-finance/ classelementor-sub-item menu-link tabindex-1>Finance/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11739>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-government-sector/ classelementor-sub-item menu-link tabindex-1>Government/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11740>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-internet-industry-and-tech-start-ups/ classelementor-sub-item menu-link tabindex-1>Internet and Tech Start-Ups/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11741>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-media-and-entertainment/ classelementor-sub-item menu-link tabindex-1>Media/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11742>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-oil-and-gas-industry/ classelementor-sub-item menu-link tabindex-1>Oil and Gas/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11743>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-pharma/ classelementor-sub-item menu-link tabindex-1>Pharmaceuticals/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11744>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-real-estate/ classelementor-sub-item menu-link tabindex-1>Real Estate/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11745>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-space-industry/ classelementor-sub-item menu-link tabindex-1>Space/a>/li> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-11746>a hrefhttps://aisuperior.com/industry/artificial-intelligence-software-development-for-ngos-npos-and-ncos/ classelementor-sub-item menu-link tabindex-1>NGOs, NPOs and NCOs/a>/li> /ul>/li> li classservices-parent menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-576>a aria-expandedfalse href# classelementor-sub-item elementor-item-anchor menu-link tabindex-1>Productsspan roleapplication classdropdown-menu-toggle ast-header-navigation-arrow tabindex0 aria-expandedfalse aria-labelMenu Toggle aria-haspopuptrue>/span>/a> ul classsub-menu elementor-nav-menu--dropdown> li classmenu-item menu-item-type-post_type menu-item-object-page menu-item-17180>a hrefhttps://aisuperior.com/products/aisuperiorgpt/ classelementor-sub-item menu-link tabindex-1>AiSuperiorGPT/a>/li> /ul>/li>/ul>/li>li classmenu-item menu-item-type-custom menu-item-object-custom menu-item-14055>a hrefhttps://aisuperior.com/projects/ classelementor-item menu-link tabindex-1>Projects/a>/li>/ul> /nav> /div> /div> /div> /div> /section> /header> div idcontent classsite-content> div classast-container> div data-elementor-typewp-page data-elementor-id11 classelementor elementor-11 data-elementor-post-typepage> section classelementor-section elementor-top-section elementor-element elementor-element-52514c6 elementor-section-height-min-height elementor-section-boxed elementor-section-height-default elementor-section-items-middle data-id52514c6 data-element_typesection idhero> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-c749a13 data-idc749a13 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-d393a7a elementor-widget elementor-widget-heading data-idd393a7a data-element_typewidget data-widget_typeheading.default> h1 classelementor-heading-title elementor-size-default>AI Services and Development Company/h1> /div> div classelementor-element elementor-element-1dd3e55 elementor-widget elementor-widget-heading data-id1dd3e55 data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>Accelerate Your Business with Cutting-edge AI Solutions/span> /div> div classelementor-element elementor-element-69d8173 elementor-mobile-align-center elementor-tablet-align-center elementor-widget elementor-widget-button data-id69d8173 data-element_typewidget data-widget_typebutton.default> a classelementor-button elementor-button-link elementor-size-sm href#form> span classelementor-button-content-wrapper> span classelementor-button-text>Contact Us/span> /span> /a> /div> /div> /div> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-83ea3f0 data-id83ea3f0 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-de4e2f4 elementor-align-center elementor-widget elementor-widget-lottie data-idde4e2f4 data-element_typewidget data-settings{"source_json":{"url":"https:\/\/aisuperior.com\/wp-content\/uploads\/2023\/08\/data.json","id":1678,"size":"","alt":"","source":"library"},"loop":"yes","source":"media_file","caption_source":"none","link_to":"none","trigger":"arriving_to_viewport","viewport":{"unit":"%","size":"","sizes":{"start":0,"end":100}},"play_speed":{"unit":"px","size":1,"sizes":},"start_point":{"unit":"%","size":0,"sizes":},"end_point":{"unit":"%","size":100,"sizes":},"renderer":"svg"} data-widget_typelottie.default> div classe-lottie__container>div classe-lottie__animation>/div>/div> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-484daff elementor-section-full_width banner_bg elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile elementor-section-height-default elementor-section-height-default data-id484daff data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a748f57 data-ida748f57 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-29dc392 elementor-widget elementor-widget-shortcode data-id29dc392 data-element_typewidget data-widget_typeshortcode.default> div classelementor-shortcode>section idhero>/section>script srchttps://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js defer>/script>script> undefined ! typeof navigator && (function (t, e) { object typeof exports && undefined ! typeof module ? (module.exports e()) : function typeof define && define.amd ? define(e) : ((t undefined ! typeof globalThis ? globalThis : t || self).lottie e()); })(this, function () { use strict; var svgNS http://www.w3.org/2000/svg, locationHref , _useWebWorker !1, initialDefaultFrame -999999, setWebWorker function (t) { _useWebWorker !!t; }, getWebWorker function () { return _useWebWorker; }, setLocationHref function (t) { locationHref t; }, getLocationHref function () { return locationHref; }; function createTag(t) { return document.createElement(t); } function extendPrototype(t, e) { var i, r, s t.length; for (i 0; i s; i + 1) for (var a in (r ti.prototype)) Object.prototype.hasOwnProperty.call(r, a) && (e.prototypea ra); } function getDescriptor(t, e) { return Object.getOwnPropertyDescriptor(t, e); } function createProxyFunction(t) { function e() {} return (e.prototype t), e; } var audioControllerFactory (function () { function t(t) { (this.audios ), (this.audioFactory t), (this._volume 1), (this._isMuted !1); } return ( (t.prototype { addAudio: function (t) { this.audios.push(t); }, pause: function () { var t, e this.audios.length; for (t 0; t e; t + 1) this.audiost.pause(); }, resume: function () { var t, e this.audios.length; for (t 0; t e; t + 1) this.audiost.resume(); }, setRate: function (t) { var e, i this.audios.length; for (e 0; e i; e + 1) this.audiose.setRate(t); }, createAudio: function (t) { return this.audioFactory ? this.audioFactory(t) : window.Howl ? new window.Howl({ src: t }) : { isPlaying: !1, play: function () { this.isPlaying !0; }, seek: function () { this.isPlaying !1; }, playing: function () {}, rate: function () {}, setVolume: function () {}, }; }, setAudioFactory: function (t) { this.audioFactory t; }, setVolume: function (t) { (this._volume t), this._updateVolume(); }, mute: function () { (this._isMuted !0), this._updateVolume(); }, unmute: function () { (this._isMuted !1), this._updateVolume(); }, getVolume: function () { return this._volume; }, _updateVolume: function () { var t, e this.audios.length; for (t 0; t e; t + 1) this.audiost.volume( this._volume * (this._isMuted ? 0 : 1) ); }, }), function () { return new t(); } ); })(), createTypedArray (function () { function t(t, e) { var i, r 0, s ; switch (t) { case int16: case uint8c: i 1; break; default: i 1.1; } for (r 0; r e; r + 1) s.push(i); return s; } return function typeof Uint8ClampedArray && function typeof Float32Array ? function (e, i) { return float32 e ? new Float32Array(i) : int16 e ? new Int16Array(i) : uint8c e ? new Uint8ClampedArray(i) : t(e, i); } : t; })(); function createSizedArray(t) { return Array.apply(null, { length: t }); } function _typeof$6(t) { return ( (_typeof$6 function typeof Symbol && symbol typeof Symbol.iterator ? function (t) { return typeof t; } : function (t) { return t && function typeof Symbol && t.constructor Symbol && t ! Symbol.prototype ? symbol : typeof t; }), _typeof$6(t) ); } var subframeEnabled !0, expressionsPlugin null, expressionsInterfaces null, idPrefix$1 , isSafari /^((?!chrome|android).)*safari/i.test( navigator.userAgent ), _shouldRoundValues !1, bmPow Math.pow, bmSqrt Math.sqrt, bmFloor Math.floor, bmMax Math.max, bmMin Math.min, BMMath {}; function ProjectInterface$1() { return {}; } !(function () { var t, e abs, acos, acosh, asin, asinh, atan, atanh, atan2, ceil, cbrt, expm1, clz32, cos, cosh, exp, floor, fround, hypot, imul, log, log1p, log2, log10, max, min, pow, random, round, sign, sin, sinh, sqrt, tan, tanh, trunc, E, LN10, LN2, LOG10E, LOG2E, PI, SQRT1_2, SQRT2, , i e.length; for (t 0; t i; t + 1) BMMathet Mathet; })(), (BMMath.random Math.random), (BMMath.abs function (t) { if (object _typeof$6(t) && t.length) { var e, i createSizedArray(t.length), r t.length; for (e 0; e r; e + 1) ie Math.abs(te); return i; } return Math.abs(t); }); var defaultCurveSegments 150, degToRads Math.PI / 180, roundCorner 0.5519; function roundValues(t) { _shouldRoundValues !!t; } function bmRnd(t) { return _shouldRoundValues ? Math.round(t) : t; } function styleDiv(t) { (t.style.position absolute), (t.style.top 0), (t.style.left 0), (t.style.display block), (t.style.transformOrigin 0 0), (t.style.webkitTransformOrigin 0 0), (t.style.backfaceVisibility visible), (t.style.webkitBackfaceVisibility visible), (t.style.transformStyle preserve-3d), (t.style.webkitTransformStyle preserve-3d), (t.style.mozTransformStyle preserve-3d); } function BMEnterFrameEvent(t, e, i, r) { (this.type t), (this.currentTime e), (this.totalTime i), (this.direction r 0 ? -1 : 1); } function BMCompleteEvent(t, e) { (this.type t), (this.direction e 0 ? -1 : 1); } function BMCompleteLoopEvent(t, e, i, r) { (this.type t), (this.currentLoop i), (this.totalLoops e), (this.direction r 0 ? -1 : 1); } function BMSegmentStartEvent(t, e, i) { (this.type t), (this.firstFrame e), (this.totalFrames i); } function BMDestroyEvent(t, e) { (this.type t), (this.target e); } function BMRenderFrameErrorEvent(t, e) { (this.type renderFrameError), (this.nativeError t), (this.currentTime e); } function BMConfigErrorEvent(t) { (this.type configError), (this.nativeError t); } function BMAnimationConfigErrorEvent(t, e) { (this.type t), (this.nativeError e); } var createElementID ((_count 0), function () { return idPrefix$1 + __lottie_element_ + (_count + 1); }), _count; function HSVtoRGB(t, e, i) { var r, s, a, n, o, h, l, p; switch ( ((h i * (1 - e)), (l i * (1 - (o 6 * t - (n Math.floor(6 * t))) * e)), (p i * (1 - (1 - o) * e)), n % 6) ) { case 0: (r i), (s p), (a h); break; case 1: (r l), (s i), (a h); break; case 2: (r h), (s i), (a p); break; case 3: (r h), (s l), (a i); break; case 4: (r p), (s h), (a i); break; case 5: (r i), (s h), (a l); } return r, s, a; } function RGBtoHSV(t, e, i) { var r, s Math.max(t, e, i), a Math.min(t, e, i), n s - a, o 0 s ? 0 : n / s, h s / 255; switch (s) { case a: r 0; break; case t: (r e - i + n * (e i ? 6 : 0)), (r / 6 * n); break; case e: (r i - t + 2 * n), (r / 6 * n); break; case i: (r t - e + 4 * n), (r / 6 * n); } return r, o, h; } function addSaturationToRGB(t, e) { var i RGBtoHSV(255 * t0, 255 * t1, 255 * t2); return ( (i1 + e), i1 > 1 ? (i1 1) : i1 0 && (i1 0), HSVtoRGB(i0, i1, i2) ); } function addBrightnessToRGB(t, e) { var i RGBtoHSV(255 * t0, 255 * t1, 255 * t2); return ( (i2 + e), i2 > 1 ? (i2 1) : i2 0 && (i2 0), HSVtoRGB(i0, i1, i2) ); } function addHueToRGB(t, e) { var i RGBtoHSV(255 * t0, 255 * t1, 255 * t2); return ( (i0 + e / 360), i0 > 1 ? (i0 - 1) : i0 0 && (i0 + 1), HSVtoRGB(i0, i1, i2) ); } var rgbToHex (function () { var t, e, i ; for (t 0; t 256; t + 1) (e t.toString(16)), (it 1 e.length ? 0 + e : e); return function (t, e, r) { return ( t 0 && (t 0), e 0 && (e 0), r 0 && (r 0), # + it + ie + ir ); }; })(), setSubframeEnabled function (t) { subframeEnabled !!t; }, getSubframeEnabled function () { return subframeEnabled; }, setExpressionsPlugin function (t) { expressionsPlugin t; }, getExpressionsPlugin function () { return expressionsPlugin; }, setExpressionInterfaces function (t) { expressionsInterfaces t; }, getExpressionInterfaces function () { return expressionsInterfaces; }, setDefaultCurveSegments function (t) { defaultCurveSegments t; }, getDefaultCurveSegments function () { return defaultCurveSegments; }, setIdPrefix function (t) { idPrefix$1 t; }, getIdPrefix function () { return idPrefix$1; }; function createNS(t) { return document.createElementNS(svgNS, t); } function _typeof$5(t) { return ( (_typeof$5 function typeof Symbol && symbol typeof Symbol.iterator ? function (t) { return typeof t; } : function (t) { return t && function typeof Symbol && t.constructor Symbol && t ! Symbol.prototype ? symbol : typeof t; }), _typeof$5(t) ); } var dataManager (function () { var t, e, i 1, r , s { onmessage: function () {}, postMessage: function (e) { t({ data: e }); }, }, a { postMessage: function (t) { s.onmessage({ data: t }); }, }; function n() { e || ((e (function (e) { if (window.Worker && window.Blob && getWebWorker()) { var i new Blob( var _workerSelf self; self.onmessage , e.toString(), , { type: text/javascript } ), r URL.createObjectURL(i); return new Worker(r); } return (t e), s; })(function (t) { if ( (a.dataManager || (a.dataManager (function () { function t(s, a) { var n, o, h, l, p, m, c s.length; for (o 0; o c; o + 1) if (ks in (n so) && !n.completed) { if (((n.completed !0), n.hasMask)) { var d n.masksProperties; for (l d.length, h 0; h l; h + 1) if (dh.pt.k.i) r(dh.pt.k); else for ( m dh.pt.k.length, p 0; p m; p + 1 ) dh.pt.kp.s && r(dh.pt.kp.s0), dh.pt.kp.e && r(dh.pt.kp.e0); } 0 n.ty ? ((n.layers e(n.refId, a)), t(n.layers, a)) : 4 n.ty ? i(n.shapes) : 5 n.ty && f(n); } } function e(t, e) { var i (function (t, e) { for (var i 0, r e.length; i r; ) { if (ei.id t) return ei; i + 1; } return null; })(t, e); return i ? i.layers.__used ? JSON.parse(JSON.stringify(i.layers)) : ((i.layers.__used !0), i.layers) : null; } function i(t) { var e, s, a; for (e t.length - 1; e > 0; e - 1) if (sh te.ty) if (te.ks.k.i) r(te.ks.k); else for ( a te.ks.k.length, s 0; s a; s + 1 ) te.ks.ks.s && r(te.ks.ks.s0), te.ks.ks.e && r(te.ks.ks.e0); else gr te.ty && i(te.it); } function r(t) { var e, i t.i.length; for (e 0; e i; e + 1) (t.ie0 + t.ve0), (t.ie1 + t.ve1), (t.oe0 + t.ve0), (t.oe1 + t.ve1); } function s(t, e) { var i e ? e.split(.) : 100, 100, 100; return ( t0 > i0 || (!(i0 > t0) && (t1 > i1 || (!(i1 > t1) && (t2 > i2 || (!(i2 > t2) && null))))) ); } var a, n (function () { var t 4, 4, 14; function e(t) { var e, i, r, s t.length; for (e 0; e s; e + 1) 5 te.ty && ((r void 0), (r (i te).t.d), (i.t.d { k: { s: r, t: 0 } })); } return function (i) { if (s(t, i.v) && (e(i.layers), i.assets)) { var r, a i.assets.length; for (r 0; r a; r + 1) i.assetsr.layers && e(i.assetsr.layers); } }; })(), o ((a 4, 7, 99), function (t) { if (t.chars && !s(a, t.v)) { var e, r t.chars.length; for (e 0; e r; e + 1) { var n t.charse; n.data && n.data.shapes && (i(n.data.shapes), (n.data.ip 0), (n.data.op 99999), (n.data.st 0), (n.data.sr 1), (n.data.ks { p: { k: 0, 0, a: 0 }, s: { k: 100, 100, a: 0 }, a: { k: 0, 0, a: 0 }, r: { k: 0, a: 0 }, o: { k: 100, a: 0 }, }), t.charse.t || (n.data.shapes.push({ ty: no }), n.data.shapes0.it.push({ p: { k: 0, 0, a: 0 }, s: { k: 100, 100, a: 0 }, a: { k: 0, 0, a: 0 }, r: { k: 0, a: 0 }, o: { k: 100, a: 0 }, sk: { k: 0, a: 0 }, sa: { k: 0, a: 0 }, ty: tr, }))); } } }), h (function () { var t 5, 7, 15; function e(t) { var e, i, r t.length; for (e 0; e r; e + 1) 5 te.ty && ((i void 0), number typeof (i te.t.p).a && (i.a { a: 0, k: i.a }), number typeof i.p && (i.p { a: 0, k: i.p }), number typeof i.r && (i.r { a: 0, k: i.r })); } return function (i) { if (s(t, i.v) && (e(i.layers), i.assets)) { var r, a i.assets.length; for (r 0; r a; r + 1) i.assetsr.layers && e(i.assetsr.layers); } }; })(), l (function () { var t 4, 1, 9; function e(t) { var i, r, s, a t.length; for (i 0; i a; i + 1) if (gr ti.ty) e(ti.it); else if (fl ti.ty || st ti.ty) if (ti.c.k && ti.c.k0.i) for ( s ti.c.k.length, r 0; r s; r + 1 ) ti.c.kr.s && ((ti.c.kr.s0 / 255), (ti.c.kr.s1 / 255), (ti.c.kr.s2 / 255), (ti.c.kr.s3 / 255)), ti.c.kr.e && ((ti.c.kr.e0 / 255), (ti.c.kr.e1 / 255), (ti.c.kr.e2 / 255), (ti.c.kr.e3 / 255)); else (ti.c.k0 / 255), (ti.c.k1 / 255), (ti.c.k2 / 255), (ti.c.k3 / 255); } function i(t) { var i, r t.length; for (i 0; i r; i + 1) 4 ti.ty && e(ti.shapes); } return function (e) { if (s(t, e.v) && (i(e.layers), e.assets)) { var r, a e.assets.length; for (r 0; r a; r + 1) e.assetsr.layers && i(e.assetsr.layers); } }; })(), p (function () { var t 4, 4, 18; function e(t) { var i, r, s; for (i t.length - 1; i > 0; i - 1) if (sh ti.ty) if (ti.ks.k.i) ti.ks.k.c ti.closed; else for ( s ti.ks.k.length, r 0; r s; r + 1 ) ti.ks.kr.s && (ti.ks.kr.s0.c ti.closed), ti.ks.kr.e && (ti.ks.kr.e0.c ti.closed); else gr ti.ty && e(ti.it); } function i(t) { var i, r, s, a, n, o, h t.length; for (r 0; r h; r + 1) { if ((i tr).hasMask) { var l i.masksProperties; for (a l.length, s 0; s a; s + 1) if (ls.pt.k.i) ls.pt.k.c ls.cl; else for ( o ls.pt.k.length, n 0; n o; n + 1 ) ls.pt.kn.s && (ls.pt.kn.s0.c ls.cl), ls.pt.kn.e && (ls.pt.kn.e0.c ls.cl); } 4 i.ty && e(i.shapes); } } return function (e) { if (s(t, e.v) && (i(e.layers), e.assets)) { var r, a e.assets.length; for (r 0; r a; r + 1) e.assetsr.layers && i(e.assetsr.layers); } }; })(); function f(t) { 0 t.t.a.length && t.t.p; } var m { completeData: function (i) { i.__complete || (l(i), n(i), o(i), h(i), p(i), t(i.layers, i.assets), (function (i, r) { if (i) { var s 0, a i.length; for (s 0; s a; s + 1) 1 is.t && ((is.data.layers e( is.data.refId, r )), t(is.data.layers, r)); } })(i.chars, i.assets), (i.__complete !0)); }, }; return ( (m.checkColors l), (m.checkChars o), (m.checkPathProperties h), (m.checkShapes p), (m.completeLayers t), m ); })()), a.assetLoader || (a.assetLoader (function () { function t(t) { var e t.getResponseHeader(content-type); return (e && json t.responseType && -1 ! e.indexOf(json)) || (t.response && object _typeof$5(t.response)) ? t.response : t.response && string typeof t.response ? JSON.parse(t.response) : t.responseText ? JSON.parse(t.responseText) : null; } return { load: function (e, i, r, s) { var a, n new XMLHttpRequest(); try { n.responseType json; } catch (t) {} n.onreadystatechange function () { if (4 n.readyState) if (200 n.status) (a t(n)), r(a); else try { (a t(n)), r(a); } catch (t) { s && s(t); } }; try { n.open(G, E, T.join(), e, !0); } catch (t) { n.open( G, E, T.join(), i + / + e, !0 ); } n.send(); }, }; })()), loadAnimation t.data.type) ) a.assetLoader.load( t.data.path, t.data.fullPath, function (e) { a.dataManager.completeData(e), a.postMessage({ id: t.data.id, payload: e, status: success, }); }, function () { a.postMessage({ id: t.data.id, status: error }); } ); else if (complete t.data.type) { var e t.data.animation; a.dataManager.completeData(e), a.postMessage({ id: t.data.id, payload: e, status: success, }); } else loadData t.data.type && a.assetLoader.load( t.data.path, t.data.fullPath, function (e) { a.postMessage({ id: t.data.id, payload: e, status: success, }); }, function () { a.postMessage({ id: t.data.id, status: error }); } ); })), (e.onmessage function (t) { var e t.data, i e.id, s ri; (ri null), success e.status ? s.onComplete(e.payload) : s.onError && s.onError(); })); } function o(t, e) { var s processId_ + (i + 1); return (rs { onComplete: t, onError: e }), s; } return { loadAnimation: function (t, i, r) { n(); var s o(i, r); e.postMessage({ type: loadAnimation, path: t, fullPath: window.location.origin + window.location.pathname, id: s, }); }, loadData: function (t, i, r) { n(); var s o(i, r); e.postMessage({ type: loadData, path: t, fullPath: window.location.origin + window.location.pathname, id: s, }); }, completeAnimation: function (t, i, r) { n(); var s o(i, r); e.postMessage({ type: complete, animation: t, id: s }); }, }; })(), ImagePreloader (function () { var t (function () { var t createTag(canvas); (t.width 1), (t.height 1); var e t.getContext(2d); return ( (e.fillStyle rgba(0,0,0,0)), e.fillRect(0, 0, 1, 1), t ); })(); function e() { (this.loadedAssets + 1), this.loadedAssets this.totalImages && this.loadedFootagesCount this.totalFootages && this.imagesLoadedCb && this.imagesLoadedCb(null); } function i() { (this.loadedFootagesCount + 1), this.loadedAssets this.totalImages && this.loadedFootagesCount this.totalFootages && this.imagesLoadedCb && this.imagesLoadedCb(null); } function r(t, e, i) { var r ; if (t.e) r t.p; else if (e) { var s t.p; -1 ! s.indexOf(images/) && (s s.split(/)1), (r e + s); } else (r i), (r + t.u ? t.u : ), (r + t.p); return r; } function s(t) { var e 0, i setInterval( function () { (t.getBBox().width || e > 500) && (this._imageLoaded(), clearInterval(i)), (e + 1); }.bind(this), 50 ); } function a(t) { var e { assetData: t }, i r(t, this.assetsPath, this.path); return ( dataManager.loadData( i, function (t) { (e.img t), this._footageLoaded(); }.bind(this), function () { (e.img {}), this._footageLoaded(); }.bind(this) ), e ); } function n() { (this._imageLoaded e.bind(this)), (this._footageLoaded i.bind(this)), (this.testImageLoaded s.bind(this)), (this.createFootageData a.bind(this)), (this.assetsPath ), (this.path ), (this.totalImages 0), (this.totalFootages 0), (this.loadedAssets 0), (this.loadedFootagesCount 0), (this.imagesLoadedCb null), (this.images ); } return ( (n.prototype { loadAssets: function (t, e) { var i; this.imagesLoadedCb e; var r t.length; for (i 0; i r; i + 1) ti.layers || (ti.t && seq ! ti.t ? 3 ti.t && ((this.totalFootages + 1), this.images.push(this.createFootageData(ti))) : ((this.totalImages + 1), this.images.push(this._createImageData(ti)))); }, setAssetsPath: function (t) { this.assetsPath t || ; }, setPath: function (t) { this.path t || ; }, loadedImages: function () { return this.totalImages this.loadedAssets; }, loadedFootages: function () { return this.totalFootages this.loadedFootagesCount; }, destroy: function () { (this.imagesLoadedCb null), (this.images.length 0); }, getAsset: function (t) { for (var e 0, i this.images.length; e i; ) { if (this.imagese.assetData t) return this.imagese.img; e + 1; } return null; }, createImgData: function (e) { var i r(e, this.assetsPath, this.path), s createTag(img); (s.crossOrigin anonymous), s.addEventListener(load, this._imageLoaded, !1), s.addEventListener( error, function () { (a.img t), this._imageLoaded(); }.bind(this), !1 ), (s.src i); var a { img: s, assetData: e }; return a; }, createImageData: function (e) { var i r(e, this.assetsPath, this.path), s createNS(image); isSafari ? this.testImageLoaded(s) : s.addEventListener(load, this._imageLoaded, !1), s.addEventListener( error, function () { (a.img t), this._imageLoaded(); }.bind(this), !1 ), s.setAttributeNS( http://www.w3.org/1999/xlink, href, i ), this._elementHelper.append ? this._elementHelper.append(s) : this._elementHelper.appendChild(s); var a { img: s, assetData: e }; return a; }, imageLoaded: e, footageLoaded: i, setCacheType: function (t, e) { svg t ? ((this._elementHelper e), (this._createImageData this.createImageData.bind(this))) : (this._createImageData this.createImgData.bind(this)); }, }), n ); })(); function BaseEvent() {} BaseEvent.prototype { triggerEvent: function (t, e) { if (this._cbst) for (var i this._cbst, r 0; r i.length; r + 1) ir(e); }, addEventListener: function (t, e) { return ( this._cbst || (this._cbst ), this._cbst.push(e), function () { this.removeEventListener(t, e); }.bind(this) ); }, removeEventListener: function (t, e) { if (e) { if (this._cbst) { for (var i 0, r this._cbst.length; i r; ) this._cbsti e && (this._cbst.splice(i, 1), (i - 1), (r - 1)), (i + 1); this._cbst.length || (this._cbst null); } } else this._cbst null; }, }; var markerParser (function () { function t(t) { for ( var e, i t.split(\r\n), r {}, s 0, a 0; a i.length; a + 1 ) 2 (e ia.split(:)).length && ((re0 e1.trim()), (s + 1)); if (0 s) throw new Error(); return r; } return function (e) { for (var i , r 0; r e.length; r + 1) { var s er, a { time: s.tm, duration: s.dr }; try { a.payload JSON.parse(er.cm); } catch (i) { try { a.payload t(er.cm); } catch (t) { a.payload { name: er.cm }; } } i.push(a); } return i; }; })(), ProjectInterface (function () { function t(t) { this.compositions.push(t); } return function () { function e(t) { for (var e 0, i this.compositions.length; e i; ) { if ( this.compositionse.data && this.compositionse.data.nm t ) return ( this.compositionse.prepareFrame && this.compositionse.data.xt && this.compositionse.prepareFrame(this.currentFrame), this.compositionse.compInterface ); e + 1; } return null; } return ( (e.compositions ), (e.currentFrame 0), (e.registerComposition t), e ); }; })(), renderers {}, registerRenderer function (t, e) { rendererst e; }; function getRenderer(t) { return rendererst; } function getRegisteredRenderer() { if (renderers.canvas) return canvas; for (var t in renderers) if (rendererst) return t; return ; } function _typeof$4(t) { return ( (_typeof$4 function typeof Symbol && symbol typeof Symbol.iterator ? function (t) { return typeof t; } : function (t) { return t && function typeof Symbol && t.constructor Symbol && t ! Symbol.prototype ? symbol : typeof t; }), _typeof$4(t) ); } var AnimationItem function () { (this._cbs ), (this.name ), (this.path ), (this.isLoaded !1), (this.currentFrame 0), (this.currentRawFrame 0), (this.firstFrame 0), (this.totalFrames 0), (this.frameRate 0), (this.frameMult 0), (this.playSpeed 1), (this.playDirection 1), (this.playCount 0), (this.animationData {}), (this.assets ), (this.isPaused !0), (this.autoplay !1), (this.loop !0), (this.renderer null), (this.animationID createElementID()), (this.assetsPath ), (this.timeCompleted 0), (this.segmentPos 0), (this.isSubframeEnabled getSubframeEnabled()), (this.segments ), (this._idle !0), (this._completedLoop !1), (this.projectInterface ProjectInterface()), (this.imagePreloader new ImagePreloader()), (this.audioController audioControllerFactory()), (this.markers ), (this.configAnimation this.configAnimation.bind(this)), (this.onSetupError this.onSetupError.bind(this)), (this.onSegmentComplete this.onSegmentComplete.bind(this)), (this.drawnFrameEvent new BMEnterFrameEvent( drawnFrame, 0, 0, 0 )), (this.expressionsPlugin getExpressionsPlugin()); }; extendPrototype(BaseEvent, AnimationItem), (AnimationItem.prototype.setParams function (t) { (t.wrapper || t.container) && (this.wrapper t.wrapper || t.container); var e svg; t.animType ? (e t.animType) : t.renderer && (e t.renderer); var i getRenderer(e); (this.renderer new i(this, t.rendererSettings)), this.imagePreloader.setCacheType( e, this.renderer.globalData.defs ), this.renderer.setProjectInterface(this.projectInterface), (this.animType e), t.loop || null t.loop || void 0 t.loop || !0 t.loop ? (this.loop !0) : !1 t.loop ? (this.loop !1) : (this.loop parseInt(t.loop, 10)), (this.autoplay !(autoplay in t) || t.autoplay), (this.name t.name ? t.name : ), (this.autoloadSegments !Object.prototype.hasOwnProperty.call( t, autoloadSegments ) || t.autoloadSegments), (this.assetsPath t.assetsPath), (this.initialSegment t.initialSegment), t.audioFactory && this.audioController.setAudioFactory(t.audioFactory), t.animationData ? this.setupAnimation(t.animationData) : t.path && (-1 ! t.path.lastIndexOf(\\) ? (this.path t.path.substr( 0, t.path.lastIndexOf(\\) + 1 )) : (this.path t.path.substr( 0, t.path.lastIndexOf(/) + 1 )), (this.fileName t.path.substr( t.path.lastIndexOf(/) + 1 )), (this.fileName this.fileName.substr( 0, this.fileName.lastIndexOf(.json) )), dataManager.loadAnimation( t.path, this.configAnimation, this.onSetupError )); }), (AnimationItem.prototype.onSetupError function () { this.trigger(data_failed); }), (AnimationItem.prototype.setupAnimation function (t) { dataManager.completeAnimation(t, this.configAnimation); }), (AnimationItem.prototype.setData function (t, e) { e && object ! _typeof$4(e) && (e JSON.parse(e)); var i { wrapper: t, animationData: e }, r t.attributes; (i.path r.getNamedItem(data-animation-path) ? r.getNamedItem(data-animation-path).value : r.getNamedItem(data-bm-path) ? r.getNamedItem(data-bm-path).value : r.getNamedItem(bm-path) ? r.getNamedItem(bm-path).value : ), (i.animType r.getNamedItem(data-anim-type) ? r.getNamedItem(data-anim-type).value : r.getNamedItem(data-bm-type) ? r.getNamedItem(data-bm-type).value : r.getNamedItem(bm-type) ? r.getNamedItem(bm-type).value : r.getNamedItem(data-bm-renderer) ? r.getNamedItem(data-bm-renderer).value : r.getNamedItem(bm-renderer) ? r.getNamedItem(bm-renderer).value : getRegisteredRenderer() || canvas); var s r.getNamedItem(data-anim-loop) ? r.getNamedItem(data-anim-loop).value : r.getNamedItem(data-bm-loop) ? r.getNamedItem(data-bm-loop).value : r.getNamedItem(bm-loop) ? r.getNamedItem(bm-loop).value : ; false s ? (i.loop !1) : true s ? (i.loop !0) : ! s && (i.loop parseInt(s, 10)); var a r.getNamedItem(data-anim-autoplay) ? r.getNamedItem(data-anim-autoplay).value : r.getNamedItem(data-bm-autoplay) ? r.getNamedItem(data-bm-autoplay).value : !r.getNamedItem(bm-autoplay) || r.getNamedItem(bm-autoplay).value; (i.autoplay false ! a), (i.name r.getNamedItem(data-name) ? r.getNamedItem(data-name).value : r.getNamedItem(data-bm-name) ? r.getNamedItem(data-bm-name).value : r.getNamedItem(bm-name) ? r.getNamedItem(bm-name).value : ), false (r.getNamedItem(data-anim-prerender) ? r.getNamedItem(data-anim-prerender).value : r.getNamedItem(data-bm-prerender) ? r.getNamedItem(data-bm-prerender).value : r.getNamedItem(bm-prerender) ? r.getNamedItem(bm-prerender).value : ) && (i.prerender !1), i.path ? this.setParams(i) : this.trigger(destroy); }), (AnimationItem.prototype.includeLayers function (t) { t.op > this.animationData.op && ((this.animationData.op t.op), (this.totalFrames Math.floor(t.op - this.animationData.ip))); var e, i, r this.animationData.layers, s r.length, a t.layers, n a.length; for (i 0; i n; i + 1) for (e 0; e s; ) { if (re.id ai.id) { re ai; break; } e + 1; } if ( ((t.chars || t.fonts) && (this.renderer.globalData.fontManager.addChars(t.chars), this.renderer.globalData.fontManager.addFonts( t.fonts, this.renderer.globalData.defs )), t.assets) ) for (s t.assets.length, e 0; e s; e + 1) this.animationData.assets.push(t.assetse); (this.animationData.__complete !1), dataManager.completeAnimation( this.animationData, this.onSegmentComplete ); }), (AnimationItem.prototype.onSegmentComplete function (t) { this.animationData t; var e getExpressionsPlugin(); e && e.initExpressions(this), this.loadNextSegment(); }), (AnimationItem.prototype.loadNextSegment function () { var t this.animationData.segments; if (!t || 0 t.length || !this.autoloadSegments) return ( this.trigger(data_ready), void (this.timeCompleted this.totalFrames) ); var e t.shift(); this.timeCompleted e.time * this.frameRate; var i this.path + this.fileName + _ + this.segmentPos + .json; (this.segmentPos + 1), dataManager.loadData( i, this.includeLayers.bind(this), function () { this.trigger(data_failed); }.bind(this) ); }), (AnimationItem.prototype.loadSegments function () { this.animationData.segments || (this.timeCompleted this.totalFrames), this.loadNextSegment(); }), (AnimationItem.prototype.imagesLoaded function () { this.trigger(loaded_images), this.checkLoaded(); }), (AnimationItem.prototype.preloadImages function () { this.imagePreloader.setAssetsPath(this.assetsPath), this.imagePreloader.setPath(this.path), this.imagePreloader.loadAssets( this.animationData.assets, this.imagesLoaded.bind(this) ); }), (AnimationItem.prototype.configAnimation function (t) { if (this.renderer) try { (this.animationData t), this.initialSegment ? ((this.totalFrames Math.floor( this.initialSegment1 - this.initialSegment0 )), (this.firstFrame Math.round(this.initialSegment0))) : ((this.totalFrames Math.floor( this.animationData.op - this.animationData.ip )), (this.firstFrame Math.round(this.animationData.ip))), this.renderer.configAnimation(t), t.assets || (t.assets ), (this.assets this.animationData.assets), (this.frameRate this.animationData.fr), (this.frameMult this.animationData.fr / 1e3), this.renderer.searchExtraCompositions(t.assets), (this.markers markerParser(t.markers || )), this.trigger(config_ready), this.preloadImages(), this.loadSegments(), this.updaFrameModifier(), this.waitForFontsLoaded(), this.isPaused && this.audioController.pause(); } catch (t) { this.triggerConfigError(t); } }), (AnimationItem.prototype.waitForFontsLoaded function () { this.renderer && (this.renderer.globalData.fontManager.isLoaded ? this.checkLoaded() : setTimeout(this.waitForFontsLoaded.bind(this), 20)); }), (AnimationItem.prototype.checkLoaded function () { if ( !this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || canvas ! this.renderer.rendererType) && this.imagePreloader.loadedFootages() ) { this.isLoaded !0; var t getExpressionsPlugin(); t && t.initExpressions(this), this.renderer.initItems(), setTimeout( function () { this.trigger(DOMLoaded); }.bind(this), 0 ), this.gotoFrame(), this.autoplay && this.play(); } }), (AnimationItem.prototype.resize function (t, e) { var i number typeof t ? t : void 0, r number typeof e ? e : void 0; this.renderer.updateContainerSize(i, r); }), (AnimationItem.prototype.setSubframe function (t) { this.isSubframeEnabled !!t; }), (AnimationItem.prototype.gotoFrame function () { (this.currentFrame this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame), this.timeCompleted ! this.totalFrames && this.currentFrame > this.timeCompleted && (this.currentFrame this.timeCompleted), this.trigger(enterFrame), this.renderFrame(), this.trigger(drawnFrame); }), (AnimationItem.prototype.renderFrame function () { if (!1 ! this.isLoaded && this.renderer) try { this.expressionsPlugin && this.expressionsPlugin.resetFrame(), this.renderer.renderFrame( this.currentFrame + this.firstFrame ); } catch (t) { this.triggerRenderFrameError(t); } }), (AnimationItem.prototype.play function (t) { (t && this.name ! t) || (!0 this.isPaused && ((this.isPaused !1), this.trigger(_play), this.audioController.resume(), this._idle && ((this._idle !1), this.trigger(_active)))); }), (AnimationItem.prototype.pause function (t) { (t && this.name ! t) || (!1 this.isPaused && ((this.isPaused !0), this.trigger(_pause), (this._idle !0), this.trigger(_idle), this.audioController.pause())); }), (AnimationItem.prototype.togglePause function (t) { (t && this.name ! t) || (!0 this.isPaused ? this.play() : this.pause()); }), (AnimationItem.prototype.stop function (t) { (t && this.name ! t) || (this.pause(), (this.playCount 0), (this._completedLoop !1), this.setCurrentRawFrameValue(0)); }), (AnimationItem.prototype.getMarkerData function (t) { for (var e, i 0; i this.markers.length; i + 1) if ((e this.markersi).payload && e.payload.name t) return e; return null; }), (AnimationItem.prototype.goToAndStop function (t, e, i) { if (!i || this.name i) { var r Number(t); if (isNaN(r)) { var s this.getMarkerData(t); s && this.goToAndStop(s.time, !0); } else e ? this.setCurrentRawFrameValue(t) : this.setCurrentRawFrameValue(t * this.frameModifier); this.pause(); } }), (AnimationItem.prototype.goToAndPlay function (t, e, i) { if (!i || this.name i) { var r Number(t); if (isNaN(r)) { var s this.getMarkerData(t); s && (s.duration ? this.playSegments(s.time, s.time + s.duration, !0) : this.goToAndStop(s.time, !0)); } else this.goToAndStop(r, e, i); this.play(); } }), (AnimationItem.prototype.advanceTime function (t) { if (!0 ! this.isPaused && !1 ! this.isLoaded) { var e this.currentRawFrame + t * this.frameModifier, i !1; e > this.totalFrames - 1 && this.frameModifier > 0 ? this.loop && this.playCount ! this.loop ? e > this.totalFrames ? ((this.playCount + 1), this.checkSegments(e % this.totalFrames) || (this.setCurrentRawFrameValue(e % this.totalFrames), (this._completedLoop !0), this.trigger(loopComplete))) : this.setCurrentRawFrameValue(e) : this.checkSegments( e > this.totalFrames ? e % this.totalFrames : 0 ) || ((i !0), (e this.totalFrames - 1)) : e 0 ? this.checkSegments(e % this.totalFrames) || (!this.loop || (this.playCount-- 0 && !0 ! this.loop) ? ((i !0), (e 0)) : (this.setCurrentRawFrameValue( this.totalFrames + (e % this.totalFrames) ), this._completedLoop ? this.trigger(loopComplete) : (this._completedLoop !0))) : this.setCurrentRawFrameValue(e), i && (this.setCurrentRawFrameValue(e), this.pause(), this.trigger(complete)); } }), (AnimationItem.prototype.adjustSegment function (t, e) { (this.playCount 0), t1 t0 ? (this.frameModifier > 0 && (this.playSpeed 0 ? this.setSpeed(-this.playSpeed) : this.setDirection(-1)), (this.totalFrames t0 - t1), (this.timeCompleted this.totalFrames), (this.firstFrame t1), this.setCurrentRawFrameValue(this.totalFrames - 0.001 - e)) : t1 > t0 && (this.frameModifier 0 && (this.playSpeed 0 ? this.setSpeed(-this.playSpeed) : this.setDirection(1)), (this.totalFrames t1 - t0), (this.timeCompleted this.totalFrames), (this.firstFrame t0), this.setCurrentRawFrameValue(0.001 + e)), this.trigger(segmentStart); }), (AnimationItem.prototype.setSegment function (t, e) { var i -1; this.isPaused && (this.currentRawFrame + this.firstFrame t ? (i t) : this.currentRawFrame + this.firstFrame > e && (i e - t)), (this.firstFrame t), (this.totalFrames e - t), (this.timeCompleted this.totalFrames), -1 ! i && this.goToAndStop(i, !0); }), (AnimationItem.prototype.playSegments function (t, e) { if ( (e && (this.segments.length 0), object _typeof$4(t0)) ) { var i, r t.length; for (i 0; i r; i + 1) this.segments.push(ti); } else this.segments.push(t); this.segments.length && e && this.adjustSegment(this.segments.shift(), 0), this.isPaused && this.play(); }), (AnimationItem.prototype.resetSegments function (t) { (this.segments.length 0), this.segments.push( this.animationData.ip, this.animationData.op, ), t && this.checkSegments(0); }), (AnimationItem.prototype.checkSegments function (t) { return ( !!this.segments.length && (this.adjustSegment(this.segments.shift(), t), !0) ); }), (AnimationItem.prototype.destroy function (t) { (t && this.name ! t) || !this.renderer || (this.renderer.destroy(), this.imagePreloader.destroy(), this.trigger(destroy), (this._cbs null), (this.onEnterFrame null), (this.onLoopComplete null), (this.onComplete null), (this.onSegmentStart null), (this.onDestroy null), (this.renderer null), (this.expressionsPlugin null), (this.imagePreloader null), (this.projectInterface null)); }), (AnimationItem.prototype.setCurrentRawFrameValue function (t) { (this.currentRawFrame t), this.gotoFrame(); }), (AnimationItem.prototype.setSpeed function (t) { (this.playSpeed t), this.updaFrameModifier(); }), (AnimationItem.prototype.setDirection function (t) { (this.playDirection t 0 ? -1 : 1), this.updaFrameModifier(); }), (AnimationItem.prototype.setLoop function (t) { this.loop t; }), (AnimationItem.prototype.setVolume function (t, e) { (e && this.name ! e) || this.audioController.setVolume(t); }), (AnimationItem.prototype.getVolume function () { return this.audioController.getVolume(); }), (AnimationItem.prototype.mute function (t) { (t && this.name ! t) || this.audioController.mute(); }), (AnimationItem.prototype.unmute function (t) { (t && this.name ! t) || this.audioController.unmute(); }), (AnimationItem.prototype.updaFrameModifier function () { (this.frameModifier this.frameMult * this.playSpeed * this.playDirection), this.audioController.setRate( this.playSpeed * this.playDirection ); }), (AnimationItem.prototype.getPath function () { return this.path; }), (AnimationItem.prototype.getAssetsPath function (t) { var e ; if (t.e) e t.p; else if (this.assetsPath) { var i t.p; -1 ! i.indexOf(images/) && (i i.split(/)1), (e this.assetsPath + i); } else (e this.path), (e + t.u ? t.u : ), (e + t.p); return e; }), (AnimationItem.prototype.getAssetData function (t) { for (var e 0, i this.assets.length; e i; ) { if (t this.assetse.id) return this.assetse; e + 1; } return null; }), (AnimationItem.prototype.hide function () { this.renderer.hide(); }), (AnimationItem.prototype.show function () { this.renderer.show(); }), (AnimationItem.prototype.getDuration function (t) { return t ? this.totalFrames : this.totalFrames / this.frameRate; }), (AnimationItem.prototype.updateDocumentData function (t, e, i) { try { this.renderer.getElementByPath(t).updateDocumentData(e, i); } catch (t) {} }), (AnimationItem.prototype.trigger function (t) { if (this._cbs && this._cbst) switch (t) { case enterFrame: this.triggerEvent( t, new BMEnterFrameEvent( t, this.currentFrame, this.totalFrames, this.frameModifier ) ); break; case drawnFrame: (this.drawnFrameEvent.currentTime this.currentFrame), (this.drawnFrameEvent.totalTime this.totalFrames), (this.drawnFrameEvent.direction this.frameModifier), this.triggerEvent(t, this.drawnFrameEvent); break; case loopComplete: this.triggerEvent( t, new BMCompleteLoopEvent( t, this.loop, this.playCount, this.frameMult ) ); break; case complete: this.triggerEvent( t, new BMCompleteEvent(t, this.frameMult) ); break; case segmentStart: this.triggerEvent( t, new BMSegmentStartEvent( t, this.firstFrame, this.totalFrames ) ); break; case destroy: this.triggerEvent(t, new BMDestroyEvent(t, this)); break; default: this.triggerEvent(t); } enterFrame t && this.onEnterFrame && this.onEnterFrame.call( this, new BMEnterFrameEvent( t, this.currentFrame, this.totalFrames, this.frameMult ) ), loopComplete t && this.onLoopComplete && this.onLoopComplete.call( this, new BMCompleteLoopEvent( t, this.loop, this.playCount, this.frameMult ) ), complete t && this.onComplete && this.onComplete.call( this, new BMCompleteEvent(t, this.frameMult) ), segmentStart t && this.onSegmentStart && this.onSegmentStart.call( this, new BMSegmentStartEvent( t, this.firstFrame, this.totalFrames ) ), destroy t && this.onDestroy && this.onDestroy.call(this, new BMDestroyEvent(t, this)); }), (AnimationItem.prototype.triggerRenderFrameError function (t) { var e new BMRenderFrameErrorEvent(t, this.currentFrame); this.triggerEvent(error, e), this.onError && this.onError.call(this, e); }), (AnimationItem.prototype.triggerConfigError function (t) { var e new BMConfigErrorEvent(t, this.currentFrame); this.triggerEvent(error, e), this.onError && this.onError.call(this, e); }); var animationManager (function () { var t {}, e , i 0, r 0, s 0, a !0, n !1; function o(t) { for (var i 0, s t.target; i r; ) ei.animation s && (e.splice(i, 1), (i - 1), (r - 1), s.isPaused || p()), (i + 1); } function h(t, i) { if (!t) return null; for (var s 0; s r; ) { if (es.elem t && null ! es.elem) return es.animation; s + 1; } var a new AnimationItem(); return f(a, t), a.setData(t, i), a; } function l() { (s + 1), d(); } function p() { s - 1; } function f(t, i) { t.addEventListener(destroy, o), t.addEventListener(_active, l), t.addEventListener(_idle, p), e.push({ elem: i, animation: t }), (r + 1); } function m(t) { var o, h t - i; for (o 0; o r; o + 1) eo.animation.advanceTime(h); (i t), s && !n ? window.requestAnimationFrame(m) : (a !0); } function c(t) { (i t), window.requestAnimationFrame(m); } function d() { !n && s && a && (window.requestAnimationFrame(c), (a !1)); } return ( (t.registerAnimation h), (t.loadAnimation function (t) { var e new AnimationItem(); return f(e, null), e.setParams(t), e; }), (t.setSpeed function (t, i) { var s; for (s 0; s r; s + 1) es.animation.setSpeed(t, i); }), (t.setDirection function (t, i) { var s; for (s 0; s r; s + 1) es.animation.setDirection(t, i); }), (t.play function (t) { var i; for (i 0; i r; i + 1) ei.animation.play(t); }), (t.pause function (t) { var i; for (i 0; i r; i + 1) ei.animation.pause(t); }), (t.stop function (t) { var i; for (i 0; i r; i + 1) ei.animation.stop(t); }), (t.togglePause function (t) { var i; for (i 0; i r; i + 1) ei.animation.togglePause(t); }), (t.searchAnimations function (t, e, i) { var r, s .concat( .slice.call(document.getElementsByClassName(lottie)), .slice.call( document.getElementsByClassName(bodymovin) ) ), a s.length; for (r 0; r a; r + 1) i && sr.setAttribute(data-bm-type, i), h(sr, t); if (e && 0 a) { i || (i svg); var n document.getElementsByTagName(body)0; n.innerText ; var o createTag(div); (o.style.width 100%), (o.style.height 100%), o.setAttribute(data-bm-type, i), n.appendChild(o), h(o, t); } }), (t.resize function () { var t; for (t 0; t r; t + 1) et.animation.resize(); }), (t.goToAndStop function (t, i, s) { var a; for (a 0; a r; a + 1) ea.animation.goToAndStop(t, i, s); }), (t.destroy function (t) { var i; for (i r - 1; i > 0; i - 1) ei.animation.destroy(t); }), (t.freeze function () { n !0; }), (t.unfreeze function () { (n !1), d(); }), (t.setVolume function (t, i) { var s; for (s 0; s r; s + 1) es.animation.setVolume(t, i); }), (t.mute function (t) { var i; for (i 0; i r; i + 1) ei.animation.mute(t); }), (t.unmute function (t) { var i; for (i 0; i r; i + 1) ei.animation.unmute(t); }), (t.getRegisteredAnimations function () { var t, i e.length, r ; for (t 0; t i; t + 1) r.push(et.animation); return r; }), t ); })(), BezierFactory (function () { var t { getBezierEasing: function (t, i, r, s, a) { var n a || (bez_ + t + _ + i + _ + r + _ + s).replace( /\./g, p ); if (en) return en; var o new l(t, i, r, s); return (en o), o; }, }, e {}; var i 0.1, r function typeof Float32Array; function s(t, e) { return 1 - 3 * e + 3 * t; } function a(t, e) { return 3 * e - 6 * t; } function n(t) { return 3 * t; } function o(t, e, i) { return ((s(e, i) * t + a(e, i)) * t + n(e)) * t; } function h(t, e, i) { return 3 * s(e, i) * t * t + 2 * a(e, i) * t + n(e); } function l(t) { (this._p t), (this._mSampleValues r ? new Float32Array(11) : new Array(11)), (this._precomputed !1), (this.get this.get.bind(this)); } return ( (l.prototype { get: function (t) { var e this._p0, i this._p1, r this._p2, s this._p3; return ( this._precomputed || this._precompute(), e i && r s ? t : 0 t ? 0 : 1 t ? 1 : o(this._getTForX(t), i, s) ); }, _precompute: function () { var t this._p0, e this._p1, i this._p2, r this._p3; (this._precomputed !0), (t e && i r) || this._calcSampleValues(); }, _calcSampleValues: function () { for (var t this._p0, e this._p2, r 0; r 11; ++r) this._mSampleValuesr o(r * i, t, e); }, _getTForX: function (t) { for ( var e this._p0, r this._p2, s this._mSampleValues, a 0, n 1; 10 ! n && sn t; ++n ) a + i; var l a + ((t - s--n) / (sn + 1 - sn)) * i, p h(l, e, r); return p > 0.001 ? (function (t, e, i, r) { for (var s 0; s 4; ++s) { var a h(e, i, r); if (0 a) return e; e - (o(e, i, r) - t) / a; } return e; })(t, l, e, r) : 0 p ? l : (function (t, e, i, r, s) { var a, n, h 0; do { (a o((n e + (i - e) / 2), r, s) - t) > 0 ? (i n) : (e n); } while (Math.abs(a) > 1e-7 && ++h 10); return n; })(t, a, a + i, e, r); }, }), t ); })(), pooling { double: function (t) { return t.concat(createSizedArray(t.length)); }, }, poolFactory function (t, e, i) { var r 0, s t, a createSizedArray(s); return { newElement: function () { return r ? a(r - 1) : e(); }, release: function (t) { r s && ((a pooling.double(a)), (s * 2)), i && i(t), (ar t), (r + 1); }, }; }, bezierLengthPool poolFactory(8, function () { return { addedLength: 0, percents: createTypedArray( float32, getDefaultCurveSegments() ), lengths: createTypedArray(float32, getDefaultCurveSegments()), }; }), segmentsLengthPool poolFactory( 8, function () { return { lengths: , totalLength: 0 }; }, function (t) { var e, i t.lengths.length; for (e 0; e i; e + 1) bezierLengthPool.release(t.lengthse); t.lengths.length 0; } ); function bezFunction() { var t Math; function e(t, e, i, r, s, a) { var n t * r + e * s + i * a - s * r - a * t - i * e; return n > -0.001 && n 0.001; } var i function (t, e, i, r) { var s, a, n, o, h, l, p getDefaultCurveSegments(), f 0, m , c , d bezierLengthPool.newElement(); for (n i.length, s 0; s p; s + 1) { for (h s / (p - 1), l 0, a 0; a n; a + 1) (o bmPow(1 - h, 3) * ta + 3 * bmPow(1 - h, 2) * h * ia + 3 * (1 - h) * bmPow(h, 2) * ra + bmPow(h, 3) * ea), (ma o), null ! ca && (l + bmPow(ma - ca, 2)), (ca ma); l && (f + l bmSqrt(l)), (d.percentss h), (d.lengthss f); } return (d.addedLength f), d; }; function r(t) { (this.segmentLength 0), (this.points new Array(t)); } function s(t, e) { (this.partialLength t), (this.point e); } var a, n ((a {}), function (t, i, n, o) { var h ( t0 + _ + t1 + _ + i0 + _ + i1 + _ + n0 + _ + n1 + _ + o0 + _ + o1 ).replace(/\./g, p); if (!ah) { var l, p, f, m, c, d, u, y getDefaultCurveSegments(), g 0, v null; 2 t.length && (t0 ! i0 || t1 ! i1) && e(t0, t1, i0, i1, t0 + n0, t1 + n1) && e(t0, t1, i0, i1, i0 + o0, i1 + o1) && (y 2); var b new r(y); for (f n.length, l 0; l y; l + 1) { for ( u createSizedArray(f), c l / (y - 1), d 0, p 0; p f; p + 1 ) (m bmPow(1 - c, 3) * tp + 3 * bmPow(1 - c, 2) * c * (tp + np) + 3 * (1 - c) * bmPow(c, 2) * (ip + op) + bmPow(c, 3) * ip), (up m), null ! v && (d + bmPow(up - vp, 2)); (g + d bmSqrt(d)), (b.pointsl new s(d, u)), (v u); } (b.segmentLength g), (ah b); } return ah; }); function o(t, e) { var i e.percents, r e.lengths, s i.length, a bmFloor((s - 1) * t), n t * e.addedLength, o 0; if (a s - 1 || 0 a || n ra) return ia; for (var h ra > n ? -1 : 1, l !0; l; ) if ( (ra n && ra + 1 > n ? ((o (n - ra) / (ra + 1 - ra)), (l !1)) : (a + h), a 0 || a > s - 1) ) { if (a s - 1) return ia; l !1; } return ia + (ia + 1 - ia) * o; } var h createTypedArray(float32, 8); return { getSegmentsLength: function (t) { var e, r segmentsLengthPool.newElement(), s t.c, a t.v, n t.o, o t.i, h t._length, l r.lengths, p 0; for (e 0; e h - 1; e + 1) (le i(ae, ae + 1, ne, oe + 1)), (p + le.addedLength); return ( s && h && ((le i(ae, a0, ne, o0)), (p + le.addedLength)), (r.totalLength p), r ); }, getNewSegment: function (e, i, r, s, a, n, l) { a 0 ? (a 0) : a > 1 && (a 1); var p, f o(a, l), m o((n n > 1 ? 1 : n), l), c e.length, d 1 - f, u 1 - m, y d * d * d, g f * d * d * 3, v f * f * d * 3, b f * f * f, x d * d * u, P f * d * u + d * f * u + d * d * m, E f * f * u + d * f * m + f * d * m, S f * f * m, C d * u * u, _ f * u * u + d * m * u + d * u * m, A f * m * u + d * m * m + f * u * m, T f * m * m, M u * u * u, k m * u * u + u * m * u + u * u * m, D m * m * u + u * m * m + m * u * m, F m * m * m; for (p 0; p c; p + 1) (h4 * p t.round(1e3 * (y * ep + g * rp + v * sp + b * ip)) / 1e3), (h4 * p + 1 t.round( 1e3 * (x * ep + P * rp + E * sp + S * ip) ) / 1e3), (h4 * p + 2 t.round( 1e3 * (C * ep + _ * rp + A * sp + T * ip) ) / 1e3), (h4 * p + 3 t.round( 1e3 * (M * ep + k * rp + D * sp + F * ip) ) / 1e3); return h; }, getPointInSegment: function (e, i, r, s, a, n) { var h o(a, n), l 1 - h; return t.round( 1e3 * (l * l * l * e0 + (h * l * l + l * h * l + l * l * h) * r0 + (h * h * l + l * h * h + h * l * h) * s0 + h * h * h * i0) ) / 1e3, t.round( 1e3 * (l * l * l * e1 + (h * l * l + l * h * l + l * l * h) * r1 + (h * h * l + l * h * h + h * l * h) * s1 + h * h * h * i1) ) / 1e3, ; }, buildBezierData: n, pointOnLine2D: e, pointOnLine3D: function (i, r, s, a, n, o, h, l, p) { if (0 s && 0 o && 0 p) return e(i, r, a, n, h, l); var f, m t.sqrt( t.pow(a - i, 2) + t.pow(n - r, 2) + t.pow(o - s, 2) ), c t.sqrt( t.pow(h - i, 2) + t.pow(l - r, 2) + t.pow(p - s, 2) ), d t.sqrt( t.pow(h - a, 2) + t.pow(l - n, 2) + t.pow(p - o, 2) ); return ( (f m > c ? m > d ? m - c - d : d - c - m : d > c ? d - c - m : c - m - d) > -1e-4 && f 1e-4 ); }, }; } var bez bezFunction(), initFrame initialDefaultFrame, mathAbs Math.abs; function interpolateValue(t, e) { var i, r this.offsetTime; multidimensional this.propType && (i createTypedArray(float32, this.pv.length)); for ( var s, a, n, o, h, l, p, f, m, c e.lastIndex, d c, u this.keyframes.length - 1, y !0; y; ) { if ( ((s this.keyframesd), (a this.keyframesd + 1), d u - 1 && t > a.t - r) ) { s.h && (s a), (c 0); break; } if (a.t - r > t) { c d; break; } d u - 1 ? (d + 1) : ((c 0), (y !1)); } n this.keyframesMetadatad || {}; var g, v a.t - r, b s.t - r; if (s.to) { n.bezierData || (n.bezierData bez.buildBezierData( s.s, a.s || s.e, s.to, s.ti )); var x n.bezierData; if (t > v || t b) { var P t > v ? x.points.length - 1 : 0; for (h x.pointsP.point.length, o 0; o h; o + 1) io x.pointsP.pointo; } else { n.__fnct ? (m n.__fnct) : ((m BezierFactory.getBezierEasing( s.o.x, s.o.y, s.i.x, s.i.y, s.n ).get), (n.__fnct m)), (l m((t - b) / (v - b))); var E, S x.segmentLength * l, C e.lastFrame t && e._lastKeyframeIndex d ? e._lastAddedLength : 0; for ( f e.lastFrame t && e._lastKeyframeIndex d ? e._lastPoint : 0, y !0, p x.points.length; y; ) { if ( ((C + x.pointsf.partialLength), 0 S || 0 l || f x.points.length - 1) ) { for (h x.pointsf.point.length, o 0; o h; o + 1) io x.pointsf.pointo; break; } if (S > C && S C + x.pointsf + 1.partialLength) { for ( E (S - C) / x.pointsf + 1.partialLength, h x.pointsf.point.length, o 0; o h; o + 1 ) io x.pointsf.pointo + (x.pointsf + 1.pointo - x.pointsf.pointo) * E; break; } f p - 1 ? (f + 1) : (y !1); } (e._lastPoint f), (e._lastAddedLength C - x.pointsf.partialLength), (e._lastKeyframeIndex d); } } else { var _, A, T, M, k; if (((u s.s.length), (g a.s || s.e), this.sh && 1 ! s.h)) if (t > v) (i0 g0), (i1 g1), (i2 g2); else if (t b) (i0 s.s0), (i1 s.s1), (i2 s.s2); else { quaternionToEuler( i, slerp( createQuaternion(s.s), createQuaternion(g), (t - b) / (v - b) ) ); } else for (d 0; d u; d + 1) 1 ! s.h && (t > v ? (l 1) : t b ? (l 0) : (s.o.x.constructor Array ? (n.__fnct || (n.__fnct ), n.__fnctd ? (m n.__fnctd) : ((_ void 0 s.o.xd ? s.o.x0 : s.o.xd), (A void 0 s.o.yd ? s.o.y0 : s.o.yd), (T void 0 s.i.xd ? s.i.x0 : s.i.xd), (M void 0 s.i.yd ? s.i.y0 : s.i.yd), (m BezierFactory.getBezierEasing( _, A, T, M ).get), (n.__fnctd m))) : n.__fnct ? (m n.__fnct) : ((_ s.o.x), (A s.o.y), (T s.i.x), (M s.i.y), (m BezierFactory.getBezierEasing(_, A, T, M).get), (s.keyframeMetadata m)), (l m((t - b) / (v - b))))), (g a.s || s.e), (k 1 s.h ? s.sd : s.sd + (gd - s.sd) * l), multidimensional this.propType ? (id k) : (i k); } return (e.lastIndex c), i; } function slerp(t, e, i) { var r, s, a, n, o, h , l t0, p t1, f t2, m t3, c e0, d e1, u e2, y e3; return ( (s l * c + p * d + f * u + m * y) 0 && ((s -s), (c -c), (d -d), (u -u), (y -y)), 1 - s > 1e-6 ? ((r Math.acos(s)), (a Math.sin(r)), (n Math.sin((1 - i) * r) / a), (o Math.sin(i * r) / a)) : ((n 1 - i), (o i)), (h0 n * l + o * c), (h1 n * p + o * d), (h2 n * f + o * u), (h3 n * m + o * y), h ); } function quaternionToEuler(t, e) { var i e0, r e1, s e2, a e3, n Math.atan2(2 * r * a - 2 * i * s, 1 - 2 * r * r - 2 * s * s), o Math.asin(2 * i * r + 2 * s * a), h Math.atan2(2 * i * a - 2 * r * s, 1 - 2 * i * i - 2 * s * s); (t0 n / degToRads), (t1 o / degToRads), (t2 h / degToRads); } function createQuaternion(t) { var e t0 * degToRads, i t1 * degToRads, r t2 * degToRads, s Math.cos(e / 2), a Math.cos(i / 2), n Math.cos(r / 2), o Math.sin(e / 2), h Math.sin(i / 2), l Math.sin(r / 2); return o * h * n + s * a * l, o * a * n + s * h * l, s * h * n - o * a * l, s * a * n - o * h * l, ; } function getValueAtCurrentTime() { var t this.comp.renderedFrame - this.offsetTime, e this.keyframes0.t - this.offsetTime, i this.keyframesthis.keyframes.length - 1.t - this.offsetTime; if ( !( t this._caching.lastFrame || (this._caching.lastFrame ! initFrame && ((this._caching.lastFrame > i && t > i) || (this._caching.lastFrame e && t e))) ) ) { this._caching.lastFrame > t && ((this._caching._lastKeyframeIndex -1), (this._caching.lastIndex 0)); var r this.interpolateValue(t, this._caching); this.pv r; } return (this._caching.lastFrame t), this.pv; } function setVValue(t) { var e; if (unidimensional this.propType) (e t * this.mult), mathAbs(this.v - e) > 1e-5 && ((this.v e), (this._mdf !0)); else for (var i 0, r this.v.length; i r; ) (e ti * this.mult), mathAbs(this.vi - e) > 1e-5 && ((this.vi e), (this._mdf !0)), (i + 1); } function processEffectsSequence() { if ( this.elem.globalData.frameId ! this.frameId && this.effectsSequence.length ) if (this.lock) this.setVValue(this.pv); else { var t; (this.lock !0), (this._mdf this._isFirstFrame); var e this.effectsSequence.length, i this.kf ? this.pv : this.data.k; for (t 0; t e; t + 1) i this.effectsSequencet(i); this.setVValue(i), (this._isFirstFrame !1), (this.lock !1), (this.frameId this.elem.globalData.frameId); } } function addEffect(t) { this.effectsSequence.push(t), this.container.addDynamicProperty(this); } function ValueProperty(t, e, i, r) { (this.propType unidimensional), (this.mult i || 1), (this.data e), (this.v i ? e.k * i : e.k), (this.pv e.k), (this._mdf !1), (this.elem t), (this.container r), (this.comp t.comp), (this.k !1), (this.kf !1), (this.vel 0), (this.effectsSequence ), (this._isFirstFrame !0), (this.getValue processEffectsSequence), (this.setVValue setVValue), (this.addEffect addEffect); } function MultiDimensionalProperty(t, e, i, r) { var s; (this.propType multidimensional), (this.mult i || 1), (this.data e), (this._mdf !1), (this.elem t), (this.container r), (this.comp t.comp), (this.k !1), (this.kf !1), (this.frameId -1); var a e.k.length; for ( this.v createTypedArray(float32, a), this.pv createTypedArray(float32, a), this.vel createTypedArray(float32, a), s 0; s a; s + 1 ) (this.vs e.ks * this.mult), (this.pvs e.ks); (this._isFirstFrame !0), (this.effectsSequence ), (this.getValue processEffectsSequence), (this.setVValue setVValue), (this.addEffect addEffect); } function KeyframedValueProperty(t, e, i, r) { (this.propType unidimensional), (this.keyframes e.k), (this.keyframesMetadata ), (this.offsetTime t.data.st), (this.frameId -1), (this._caching { lastFrame: initFrame, lastIndex: 0, value: 0, _lastKeyframeIndex: -1, }), (this.k !0), (this.kf !0), (this.data e), (this.mult i || 1), (this.elem t), (this.container r), (this.comp t.comp), (this.v initFrame), (this.pv initFrame), (this._isFirstFrame !0), (this.getValue processEffectsSequence), (this.setVValue setVValue), (this.interpolateValue interpolateValue), (this.effectsSequence getValueAtCurrentTime.bind(this)), (this.addEffect addEffect); } function KeyframedMultidimensionalProperty(t, e, i, r) { var s; this.propType multidimensional; var a, n, o, h, l e.k.length; for (s 0; s l - 1; s + 1) e.ks.to && e.ks.s && e.ks + 1 && e.ks + 1.s && ((a e.ks.s), (n e.ks + 1.s), (o e.ks.to), (h e.ks.ti), ((2 a.length && (a0 ! n0 || a1 ! n1) && bez.pointOnLine2D( a0, a1, n0, n1, a0 + o0, a1 + o1 ) && bez.pointOnLine2D( a0, a1, n0, n1, n0 + h0, n1 + h1 )) || (3 a.length && (a0 ! n0 || a1 ! n1 || a2 ! n2) && bez.pointOnLine3D( a0, a1, a2, n0, n1, n2, a0 + o0, a1 + o1, a2 + o2 ) && bez.pointOnLine3D( a0, a1, a2, n0, n1, n2, n0 + h0, n1 + h1, n2 + h2 ))) && ((e.ks.to null), (e.ks.ti null)), a0 n0 && a1 n1 && 0 o0 && 0 o1 && 0 h0 && 0 h1 && (2 a.length || (a2 n2 && 0 o2 && 0 h2)) && ((e.ks.to null), (e.ks.ti null))); (this.effectsSequence getValueAtCurrentTime.bind(this)), (this.data e), (this.keyframes e.k), (this.keyframesMetadata ), (this.offsetTime t.data.st), (this.k !0), (this.kf !0), (this._isFirstFrame !0), (this.mult i || 1), (this.elem t), (this.container r), (this.comp t.comp), (this.getValue processEffectsSequence), (this.setVValue setVValue), (this.interpolateValue interpolateValue), (this.frameId -1); var p e.k0.s.length; for ( this.v createTypedArray(float32, p), this.pv createTypedArray(float32, p), s 0; s p; s + 1 ) (this.vs initFrame), (this.pvs initFrame); (this._caching { lastFrame: initFrame, lastIndex: 0, value: createTypedArray(float32, p), }), (this.addEffect addEffect); } var PropertyFactory { getProp: function (t, e, i, r, s) { var a; if ( (e.sid && (e t.globalData.slotManager.getProp(e)), e.k.length) ) if (number typeof e.k0) a new MultiDimensionalProperty(t, e, r, s); else switch (i) { case 0: a new KeyframedValueProperty(t, e, r, s); break; case 1: a new KeyframedMultidimensionalProperty(t, e, r, s); } else a new ValueProperty(t, e, r, s); return a.effectsSequence.length && s.addDynamicProperty(a), a; }, }; function DynamicPropertyContainer() {} DynamicPropertyContainer.prototype { addDynamicProperty: function (t) { -1 this.dynamicProperties.indexOf(t) && (this.dynamicProperties.push(t), this.container.addDynamicProperty(this), (this._isAnimated !0)); }, iterateDynamicProperties: function () { var t; this._mdf !1; var e this.dynamicProperties.length; for (t 0; t e; t + 1) this.dynamicPropertiest.getValue(), this.dynamicPropertiest._mdf && (this._mdf !0); }, initDynamicPropertyContainer: function (t) { (this.container t), (this.dynamicProperties ), (this._mdf !1), (this._isAnimated !1); }, }; var pointPool poolFactory(8, function () { return createTypedArray(float32, 2); }); function ShapePath() { (this.c !1), (this._length 0), (this._maxLength 8), (this.v createSizedArray(this._maxLength)), (this.o createSizedArray(this._maxLength)), (this.i createSizedArray(this._maxLength)); } (ShapePath.prototype.setPathData function (t, e) { (this.c t), this.setLength(e); for (var i 0; i e; ) (this.vi pointPool.newElement()), (this.oi pointPool.newElement()), (this.ii pointPool.newElement()), (i + 1); }), (ShapePath.prototype.setLength function (t) { for (; this._maxLength t; ) this.doubleArrayLength(); this._length t; }), (ShapePath.prototype.doubleArrayLength function () { (this.v this.v.concat(createSizedArray(this._maxLength))), (this.i this.i.concat(createSizedArray(this._maxLength))), (this.o this.o.concat(createSizedArray(this._maxLength))), (this._maxLength * 2); }), (ShapePath.prototype.setXYAt function (t, e, i, r, s) { var a; switch ( ((this._length Math.max(this._length, r + 1)), this._length > this._maxLength && this.doubleArrayLength(), i) ) { case v: a this.v; break; case i: a this.i; break; case o: a this.o; break; default: a ; } (!ar || (ar && !s)) && (ar pointPool.newElement()), (ar0 t), (ar1 e); }), (ShapePath.prototype.setTripleAt function ( t, e, i, r, s, a, n, o ) { this.setXYAt(t, e, v, n, o), this.setXYAt(i, r, o, n, o), this.setXYAt(s, a, i, n, o); }), (ShapePath.prototype.reverse function () { var t new ShapePath(); t.setPathData(this.c, this._length); var e this.v, i this.o, r this.i, s 0; this.c && (t.setTripleAt( e00, e01, r00, r01, i00, i01, 0, !1 ), (s 1)); var a, n this._length - 1, o this._length; for (a s; a o; a + 1) t.setTripleAt( en0, en1, rn0, rn1, in0, in1, a, !1 ), (n - 1); return t; }), (ShapePath.prototype.length function () { return this._length; }); var shapePool ((factory poolFactory( 4, function () { return new ShapePath(); }, function (t) { var e, i t._length; for (e 0; e i; e + 1) pointPool.release(t.ve), pointPool.release(t.ie), pointPool.release(t.oe), (t.ve null), (t.ie null), (t.oe null); (t._length 0), (t.c !1); } )), (factory.clone function (t) { var e, i factory.newElement(), r void 0 t._length ? t.v.length : t._length; for (i.setLength(r), i.c t.c, e 0; e r; e + 1) i.setTripleAt( t.ve0, t.ve1, t.oe0, t.oe1, t.ie0, t.ie1, e ); return i; }), factory), factory; function ShapeCollection() { (this._length 0), (this._maxLength 4), (this.shapes createSizedArray(this._maxLength)); } (ShapeCollection.prototype.addShape function (t) { this._length this._maxLength && ((this.shapes this.shapes.concat( createSizedArray(this._maxLength) )), (this._maxLength * 2)), (this.shapesthis._length t), (this._length + 1); }), (ShapeCollection.prototype.releaseShapes function () { var t; for (t 0; t this._length; t + 1) shapePool.release(this.shapest); this._length 0; }); var shapeCollectionPool ((ob { newShapeCollection: function () { return _length ? pool(_length - 1) : new ShapeCollection(); }, release: function (t) { var e, i t._length; for (e 0; e i; e + 1) shapePool.release(t.shapese); (t._length 0), _length _maxLength && ((pool pooling.double(pool)), (_maxLength * 2)), (pool_length t), (_length + 1); }, }), (_length 0), (_maxLength 4), (pool createSizedArray(_maxLength)), ob), ob, _length, _maxLength, pool, ShapePropertyFactory (function () { var t -999999; function e(t, e, i) { var r, s, a, n, o, h, l, p, f, m i.lastIndex, c this.keyframes; if (t c0.t - this.offsetTime) (r c0.s0), (a !0), (m 0); else if (t > cc.length - 1.t - this.offsetTime) (r cc.length - 1.s ? cc.length - 1.s0 : cc.length - 2.e0), (a !0); else { for ( var d, u, y, g m, v c.length - 1, b !0; b && ((d cg), !((u cg + 1).t - this.offsetTime > t)); ) g v - 1 ? (g + 1) : (b !1); if ( ((y this.keyframesMetadatag || {}), (m g), !(a 1 d.h)) ) { if (t > u.t - this.offsetTime) p 1; else if (t d.t - this.offsetTime) p 0; else { var x; y.__fnct ? (x y.__fnct) : ((x BezierFactory.getBezierEasing( d.o.x, d.o.y, d.i.x, d.i.y ).get), (y.__fnct x)), (p x( (t - (d.t - this.offsetTime)) / (u.t - this.offsetTime - (d.t - this.offsetTime)) )); } s u.s ? u.s0 : d.e0; } r d.s0; } for ( h e._length, l r.i0.length, i.lastIndex m, n 0; n h; n + 1 ) for (o 0; o l; o + 1) (f a ? r.ino : r.ino + (s.ino - r.ino) * p), (e.ino f), (f a ? r.ono : r.ono + (s.ono - r.ono) * p), (e.ono f), (f a ? r.vno : r.vno + (s.vno - r.vno) * p), (e.vno f); } function i() { var e this.comp.renderedFrame - this.offsetTime, i this.keyframes0.t - this.offsetTime, r this.keyframesthis.keyframes.length - 1.t - this.offsetTime, s this._caching.lastFrame; return ( (s ! t && ((s i && e i) || (s > r && e > r))) || ((this._caching.lastIndex s e ? this._caching.lastIndex : 0), this.interpolateShape(e, this.pv, this._caching)), (this._caching.lastFrame e), this.pv ); } function r() { this.paths this.localShapeCollection; } function s(t) { (function (t, e) { if (t._length ! e._length || t.c ! e.c) return !1; var i, r t._length; for (i 0; i r; i + 1) if ( t.vi0 ! e.vi0 || t.vi1 ! e.vi1 || t.oi0 ! e.oi0 || t.oi1 ! e.oi1 || t.ii0 ! e.ii0 || t.ii1 ! e.ii1 ) return !1; return !0; })(this.v, t) || ((this.v shapePool.clone(t)), this.localShapeCollection.releaseShapes(), this.localShapeCollection.addShape(this.v), (this._mdf !0), (this.paths this.localShapeCollection)); } function a() { if (this.elem.globalData.frameId ! this.frameId) if (this.effectsSequence.length) if (this.lock) this.setVValue(this.pv); else { var t, e; (this.lock !0), (this._mdf !1), (t this.kf ? this.pv : this.data.ks ? this.data.ks.k : this.data.pt.k); var i this.effectsSequence.length; for (e 0; e i; e + 1) t this.effectsSequencee(t); this.setVValue(t), (this.lock !1), (this.frameId this.elem.globalData.frameId); } else this._mdf !1; } function n(t, e, i) { (this.propType shape), (this.comp t.comp), (this.container t), (this.elem t), (this.data e), (this.k !1), (this.kf !1), (this._mdf !1); var s 3 i ? e.pt.k : e.ks.k; (this.v shapePool.clone(s)), (this.pv shapePool.clone(this.v)), (this.localShapeCollection shapeCollectionPool.newShapeCollection()), (this.paths this.localShapeCollection), this.paths.addShape(this.v), (this.reset r), (this.effectsSequence ); } function o(t) { this.effectsSequence.push(t), this.container.addDynamicProperty(this); } function h(e, s, a) { (this.propType shape), (this.comp e.comp), (this.elem e), (this.container e), (this.offsetTime e.data.st), (this.keyframes 3 a ? s.pt.k : s.ks.k), (this.keyframesMetadata ), (this.k !0), (this.kf !0); var n this.keyframes0.s0.i.length; (this.v shapePool.newElement()), this.v.setPathData(this.keyframes0.s0.c, n), (this.pv shapePool.clone(this.v)), (this.localShapeCollection shapeCollectionPool.newShapeCollection()), (this.paths this.localShapeCollection), this.paths.addShape(this.v), (this.lastFrame t), (this.reset r), (this._caching { lastFrame: t, lastIndex: 0 }), (this.effectsSequence i.bind(this)); } (n.prototype.interpolateShape e), (n.prototype.getValue a), (n.prototype.setVValue s), (n.prototype.addEffect o), (h.prototype.getValue a), (h.prototype.interpolateShape e), (h.prototype.setVValue s), (h.prototype.addEffect o); var l (function () { var t roundCorner; function e(t, e) { (this.v shapePool.newElement()), this.v.setPathData(!0, 4), (this.localShapeCollection shapeCollectionPool.newShapeCollection()), (this.paths this.localShapeCollection), this.localShapeCollection.addShape(this.v), (this.d e.d), (this.elem t), (this.comp t.comp), (this.frameId -1), this.initDynamicPropertyContainer(t), (this.p PropertyFactory.getProp(t, e.p, 1, 0, this)), (this.s PropertyFactory.getProp(t, e.s, 1, 0, this)), this.dynamicProperties.length ? (this.k !0) : ((this.k !1), this.convertEllToPath()); } return ( (e.prototype { reset: r, getValue: function () { this.elem.globalData.frameId ! this.frameId && ((this.frameId this.elem.globalData.frameId), this.iterateDynamicProperties(), this._mdf && this.convertEllToPath()); }, convertEllToPath: function () { var e this.p.v0, i this.p.v1, r this.s.v0 / 2, s this.s.v1 / 2, a 3 ! this.d, n this.v; (n.v00 e), (n.v01 i - s), (n.v10 a ? e + r : e - r), (n.v11 i), (n.v20 e), (n.v21 i + s), (n.v30 a ? e - r : e + r), (n.v31 i), (n.i00 a ? e - r * t : e + r * t), (n.i01 i - s), (n.i10 a ? e + r : e - r), (n.i11 i - s * t), (n.i20 a ? e + r * t : e - r * t), (n.i21 i + s), (n.i30 a ? e - r : e + r), (n.i31 i + s * t), (n.o00 a ? e + r * t : e - r * t), (n.o01 i - s), (n.o10 a ? e + r : e - r), (n.o11 i + s * t), (n.o20 a ? e - r * t : e + r * t), (n.o21 i + s), (n.o30 a ? e - r : e + r), (n.o31 i - s * t); }, }), extendPrototype(DynamicPropertyContainer, e), e ); })(), p (function () { function t(t, e) { (this.v shapePool.newElement()), this.v.setPathData(!0, 0), (this.elem t), (this.comp t.comp), (this.data e), (this.frameId -1), (this.d e.d), this.initDynamicPropertyContainer(t), 1 e.sy ? ((this.ir PropertyFactory.getProp( t, e.ir, 0, 0, this )), (this.is PropertyFactory.getProp( t, e.is, 0, 0.01, this )), (this.convertToPath this.convertStarToPath)) : (this.convertToPath this.convertPolygonToPath), (this.pt PropertyFactory.getProp(t, e.pt, 0, 0, this)), (this.p PropertyFactory.getProp(t, e.p, 1, 0, this)), (this.r PropertyFactory.getProp( t, e.r, 0, degToRads, this )), (this.or PropertyFactory.getProp(t, e.or, 0, 0, this)), (this.os PropertyFactory.getProp( t, e.os, 0, 0.01, this )), (this.localShapeCollection shapeCollectionPool.newShapeCollection()), this.localShapeCollection.addShape(this.v), (this.paths this.localShapeCollection), this.dynamicProperties.length ? (this.k !0) : ((this.k !1), this.convertToPath()); } return ( (t.prototype { reset: r, getValue: function () { this.elem.globalData.frameId ! this.frameId && ((this.frameId this.elem.globalData.frameId), this.iterateDynamicProperties(), this._mdf && this.convertToPath()); }, convertStarToPath: function () { var t, e, i, r, s 2 * Math.floor(this.pt.v), a (2 * Math.PI) / s, n !0, o this.or.v, h this.ir.v, l this.os.v, p this.is.v, f (2 * Math.PI * o) / (2 * s), m (2 * Math.PI * h) / (2 * s), c -Math.PI / 2; c + this.r.v; var d 3 this.data.d ? -1 : 1; for (this.v._length 0, t 0; t s; t + 1) { (i n ? l : p), (r n ? f : m); var u (e n ? o : h) * Math.cos(c), y e * Math.sin(c), g 0 u && 0 y ? 0 : y / Math.sqrt(u * u + y * y), v 0 u && 0 y ? 0 : -u / Math.sqrt(u * u + y * y); (u + +this.p.v0), (y + +this.p.v1), this.v.setTripleAt( u, y, u - g * r * i * d, y - v * r * i * d, u + g * r * i * d, y + v * r * i * d, t, !0 ), (n !n), (c + a * d); } }, convertPolygonToPath: function () { var t, e Math.floor(this.pt.v), i (2 * Math.PI) / e, r this.or.v, s this.os.v, a (2 * Math.PI * r) / (4 * e), n 0.5 * -Math.PI, o 3 this.data.d ? -1 : 1; for ( n + this.r.v, this.v._length 0, t 0; t e; t + 1 ) { var h r * Math.cos(n), l r * Math.sin(n), p 0 h && 0 l ? 0 : l / Math.sqrt(h * h + l * l), f 0 h && 0 l ? 0 : -h / Math.sqrt(h * h + l * l); (h + +this.p.v0), (l + +this.p.v1), this.v.setTripleAt( h, l, h - p * a * s * o, l - f * a * s * o, h + p * a * s * o, l + f * a * s * o, t, !0 ), (n + i * o); } (this.paths.length 0), (this.paths0 this.v); }, }), extendPrototype(DynamicPropertyContainer, t), t ); })(), f (function () { function t(t, e) { (this.v shapePool.newElement()), (this.v.c !0), (this.localShapeCollection shapeCollectionPool.newShapeCollection()), this.localShapeCollection.addShape(this.v), (this.paths this.localShapeCollection), (this.elem t), (this.comp t.comp), (this.frameId -1), (this.d e.d), this.initDynamicPropertyContainer(t), (this.p PropertyFactory.getProp(t, e.p, 1, 0, this)), (this.s PropertyFactory.getProp(t, e.s, 1, 0, this)), (this.r PropertyFactory.getProp(t, e.r, 0, 0, this)), this.dynamicProperties.length ? (this.k !0) : ((this.k !1), this.convertRectToPath()); } return ( (t.prototype { convertRectToPath: function () { var t this.p.v0, e this.p.v1, i this.s.v0 / 2, r this.s.v1 / 2, s bmMin(i, r, this.r.v), a s * (1 - roundCorner); (this.v._length 0), 2 this.d || 1 this.d ? (this.v.setTripleAt( t + i, e - r + s, t + i, e - r + s, t + i, e - r + a, 0, !0 ), this.v.setTripleAt( t + i, e + r - s, t + i, e + r - a, t + i, e + r - s, 1, !0 ), 0 ! s ? (this.v.setTripleAt( t + i - s, e + r, t + i - s, e + r, t + i - a, e + r, 2, !0 ), this.v.setTripleAt( t - i + s, e + r, t - i + a, e + r, t - i + s, e + r, 3, !0 ), this.v.setTripleAt( t - i, e + r - s, t - i, e + r - s, t - i, e + r - a, 4, !0 ), this.v.setTripleAt( t - i, e - r + s, t - i, e - r + a, t - i, e - r + s, 5, !0 ), this.v.setTripleAt( t - i + s, e - r, t - i + s, e - r, t - i + a, e - r, 6, !0 ), this.v.setTripleAt( t + i - s, e - r, t + i - a, e - r, t + i - s, e - r, 7, !0 )) : (this.v.setTripleAt( t - i, e + r, t - i + a, e + r, t - i, e + r, 2 ), this.v.setTripleAt( t - i, e - r, t - i, e - r + a, t - i, e - r, 3 ))) : (this.v.setTripleAt( t + i, e - r + s, t + i, e - r + a, t + i, e - r + s, 0, !0 ), 0 ! s ? (this.v.setTripleAt( t + i - s, e - r, t + i - s, e - r, t + i - a, e - r, 1, !0 ), this.v.setTripleAt( t - i + s, e - r, t - i + a, e - r, t - i + s, e - r, 2, !0 ), this.v.setTripleAt( t - i, e - r + s, t - i, e - r + s, t - i, e - r + a, 3, !0 ), this.v.setTripleAt( t - i, e + r - s, t - i, e + r - a, t - i, e + r - s, 4, !0 ), this.v.setTripleAt( t - i + s, e + r, t - i + s, e + r, t - i + a, e + r, 5, !0 ), this.v.setTripleAt( t + i - s, e + r, t + i - a, e + r, t + i - s, e + r, 6, !0 ), this.v.setTripleAt( t + i, e + r - s, t + i, e + r - s, t + i, e + r - a, 7, !0 )) : (this.v.setTripleAt( t - i, e - r, t - i + a, e - r, t - i, e - r, 1, !0 ), this.v.setTripleAt( t - i, e + r, t - i, e + r - a, t - i, e + r, 2, !0 ), this.v.setTripleAt( t + i, e + r, t + i - a, e + r, t + i, e + r, 3, !0 ))); }, getValue: function () { this.elem.globalData.frameId ! this.frameId && ((this.frameId this.elem.globalData.frameId), this.iterateDynamicProperties(), this._mdf && this.convertRectToPath()); }, reset: r, }), extendPrototype(DynamicPropertyContainer, t), t ); })(); var m { getShapeProp: function (t, e, i) { var r; return ( 3 i || 4 i ? (r (3 i ? e.pt : e.ks).k.length ? new h(t, e, i) : new n(t, e, i)) : 5 i ? (r new f(t, e)) : 6 i ? (r new l(t, e)) : 7 i && (r new p(t, e)), r.k && t.addDynamicProperty(r), r ); }, getConstructorFunction: function () { return n; }, getKeyframedConstructorFunction: function () { return h; }, }; return m; })(), Matrix (function () { var t Math.cos, e Math.sin, i Math.tan, r Math.round; function s() { return ( (this.props0 1), (this.props1 0), (this.props2 0), (this.props3 0), (this.props4 0), (this.props5 1), (this.props6 0), (this.props7 0), (this.props8 0), (this.props9 0), (this.props10 1), (this.props11 0), (this.props12 0), (this.props13 0), (this.props14 0), (this.props15 1), this ); } function a(i) { if (0 i) return this; var r t(i), s e(i); return this._t(r, -s, 0, 0, s, r, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } function n(i) { if (0 i) return this; var r t(i), s e(i); return this._t(1, 0, 0, 0, 0, r, -s, 0, 0, s, r, 0, 0, 0, 0, 1); } function o(i) { if (0 i) return this; var r t(i), s e(i); return this._t(r, 0, s, 0, 0, 1, 0, 0, -s, 0, r, 0, 0, 0, 0, 1); } function h(i) { if (0 i) return this; var r t(i), s e(i); return this._t(r, -s, 0, 0, s, r, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } function l(t, e) { return this._t(1, e, t, 1, 0, 0); } function p(t, e) { return this.shear(i(t), i(e)); } function f(r, s) { var a t(s), n e(s); return this._t(a, n, 0, 0, -n, a, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) ._t(1, 0, 0, 0, i(r), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) ._t(a, -n, 0, 0, n, a, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } function m(t, e, i) { return ( i || 0 i || (i 1), 1 t && 1 e && 1 i ? this : this._t(t, 0, 0, 0, 0, e, 0, 0, 0, 0, i, 0, 0, 0, 0, 1) ); } function c(t, e, i, r, s, a, n, o, h, l, p, f, m, c, d, u) { return ( (this.props0 t), (this.props1 e), (this.props2 i), (this.props3 r), (this.props4 s), (this.props5 a), (this.props6 n), (this.props7 o), (this.props8 h), (this.props9 l), (this.props10 p), (this.props11 f), (this.props12 m), (this.props13 c), (this.props14 d), (this.props15 u), this ); } function d(t, e, i) { return ( (i i || 0), 0 ! t || 0 ! e || 0 ! i ? this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, t, e, i, 1) : this ); } function u(t, e, i, r, s, a, n, o, h, l, p, f, m, c, d, u) { var y this.props; if ( 1 t && 0 e && 0 i && 0 r && 0 s && 1 a && 0 n && 0 o && 0 h && 0 l && 1 p && 0 f ) return ( (y12 y12 * t + y15 * m), (y13 y13 * a + y15 * c), (y14 y14 * p + y15 * d), (y15 * u), (this._identityCalculated !1), this ); var g y0, v y1, b y2, x y3, P y4, E y5, S y6, C y7, _ y8, A y9, T y10, M y11, k y12, D y13, F y14, w y15; return ( (y0 g * t + v * s + b * h + x * m), (y1 g * e + v * a + b * l + x * c), (y2 g * i + v * n + b * p + x * d), (y3 g * r + v * o + b * f + x * u), (y4 P * t + E * s + S * h + C * m), (y5 P * e + E * a + S * l + C * c), (y6 P * i + E * n + S * p + C * d), (y7 P * r + E * o + S * f + C * u), (y8 _ * t + A * s + T * h + M * m), (y9 _ * e + A * a + T * l + M * c), (y10 _ * i + A * n + T * p + M * d), (y11 _ * r + A * o + T * f + M * u), (y12 k * t + D * s + F * h + w * m), (y13 k * e + D * a + F * l + w * c), (y14 k * i + D * n + F * p + w * d), (y15 k * r + D * o + F * f + w * u), (this._identityCalculated !1), this ); } function y(t) { var e t.props; return this.transform( e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 ); } function g() { return ( this._identityCalculated || ((this._identity !( 1 ! this.props0 || 0 ! this.props1 || 0 ! this.props2 || 0 ! this.props3 || 0 ! this.props4 || 1 ! this.props5 || 0 ! this.props6 || 0 ! this.props7 || 0 ! this.props8 || 0 ! this.props9 || 1 ! this.props10 || 0 ! this.props11 || 0 ! this.props12 || 0 ! this.props13 || 0 ! this.props14 || 1 ! this.props15 )), (this._identityCalculated !0)), this._identity ); } function v(t) { for (var e 0; e 16; ) { if (t.propse ! this.propse) return !1; e + 1; } return !0; } function b(t) { var e; for (e 0; e 16; e + 1) t.propse this.propse; return t; } function x(t) { var e; for (e 0; e 16; e + 1) this.propse te; } function P(t, e, i) { return { x: t * this.props0 + e * this.props4 + i * this.props8 + this.props12, y: t * this.props1 + e * this.props5 + i * this.props9 + this.props13, z: t * this.props2 + e * this.props6 + i * this.props10 + this.props14, }; } function E(t, e, i) { return ( t * this.props0 + e * this.props4 + i * this.props8 + this.props12 ); } function S(t, e, i) { return ( t * this.props1 + e * this.props5 + i * this.props9 + this.props13 ); } function C(t, e, i) { return ( t * this.props2 + e * this.props6 + i * this.props10 + this.props14 ); } function _() { var t this.props0 * this.props5 - this.props1 * this.props4, e this.props5 / t, i -this.props1 / t, r -this.props4 / t, s this.props0 / t, a (this.props4 * this.props13 - this.props5 * this.props12) / t, n -( this.props0 * this.props13 - this.props1 * this.props12 ) / t, o new Matrix(); return ( (o.props0 e), (o.props1 i), (o.props4 r), (o.props5 s), (o.props12 a), (o.props13 n), o ); } function A(t) { return this.getInverseMatrix().applyToPointArray( t0, t1, t2 || 0 ); } function T(t) { var e, i t.length, r ; for (e 0; e i; e + 1) re A(te); return r; } function M(t, e, i) { var r createTypedArray(float32, 6); if (this.isIdentity()) (r0 t0), (r1 t1), (r2 e0), (r3 e1), (r4 i0), (r5 i1); else { var s this.props0, a this.props1, n this.props4, o this.props5, h this.props12, l this.props13; (r0 t0 * s + t1 * n + h), (r1 t0 * a + t1 * o + l), (r2 e0 * s + e1 * n + h), (r3 e0 * a + e1 * o + l), (r4 i0 * s + i1 * n + h), (r5 i0 * a + i1 * o + l); } return r; } function k(t, e, i) { return this.isIdentity() ? t, e, i : t * this.props0 + e * this.props4 + i * this.props8 + this.props12, t * this.props1 + e * this.props5 + i * this.props9 + this.props13, t * this.props2 + e * this.props6 + i * this.props10 + this.props14, ; } function D(t, e) { if (this.isIdentity()) return t + , + e; var i this.props; return ( Math.round(100 * (t * i0 + e * i4 + i12)) / 100 + , + Math.round(100 * (t * i1 + e * i5 + i13)) / 100 ); } function F() { for (var t 0, e this.props, i matrix3d(; t 16; ) (i + r(1e4 * et) / 1e4), (i + 15 t ? ) : ,), (t + 1); return i; } function w(t) { return (t 1e-6 && t > 0) || (t > -1e-6 && t 0) ? r(1e4 * t) / 1e4 : t; } function I() { var t this.props; return ( matrix( + w(t0) + , + w(t1) + , + w(t4) + , + w(t5) + , + w(t12) + , + w(t13) + ) ); } return function () { (this.reset s), (this.rotate a), (this.rotateX n), (this.rotateY o), (this.rotateZ h), (this.skew p), (this.skewFromAxis f), (this.shear l), (this.scale m), (this.setTransform c), (this.translate d), (this.transform u), (this.multiply y), (this.applyToPoint P), (this.applyToX E), (this.applyToY S), (this.applyToZ C), (this.applyToPointArray k), (this.applyToTriplePoints M), (this.applyToPointStringified D), (this.toCSS F), (this.to2dCSS I), (this.clone b), (this.cloneFromProps x), (this.equals v), (this.inversePoints T), (this.inversePoint A), (this.getInverseMatrix _), (this._t this.transform), (this.isIdentity g), (this._identity !0), (this._identityCalculated !1), (this.props createTypedArray(float32, 16)), this.reset(); }; })(); function _typeof$3(t) { return ( (_typeof$3 function typeof Symbol && symbol typeof Symbol.iterator ? function (t) { return typeof t; } : function (t) { return t && function typeof Symbol && t.constructor Symbol && t ! Symbol.prototype ? symbol : typeof t; }), _typeof$3(t) ); } var lottie {}, standalone __STANDALONE__, animationData __ANIMATIONDATA__, renderer ; function setLocation(t) { setLocationHref(t); } function searchAnimations() { !0 standalone ? animationManager.searchAnimations( animationData, standalone, renderer ) : animationManager.searchAnimations(); } function setSubframeRendering(t) { setSubframeEnabled(t); } function setPrefix(t) { setIdPrefix(t); } function loadAnimation(t) { return ( !0 standalone && (t.animationData JSON.parse(animationData)), animationManager.loadAnimation(t) ); } function setQuality(t) { if (string typeof t) switch (t) { case high: setDefaultCurveSegments(200); break; default: case medium: setDefaultCurveSegments(50); break; case low: setDefaultCurveSegments(10); } else !isNaN(t) && t > 1 && setDefaultCurveSegments(t); getDefaultCurveSegments() > 50 ? roundValues(!1) : roundValues(!0); } function inBrowser() { return undefined ! typeof navigator; } function installPlugin(t, e) { expressions t && setExpressionsPlugin(e); } function getFactory(t) { switch (t) { case propertyFactory: return PropertyFactory; case shapePropertyFactory: return ShapePropertyFactory; case matrix: return Matrix; default: return null; } } function checkReady() { complete document.readyState && (clearInterval(readyStateCheckInterval), searchAnimations()); } function getQueryVariable(t) { for (var e queryString.split(&), i 0; i e.length; i + 1) { var r ei.split(); if (decodeURIComponent(r0) t) return decodeURIComponent(r1); } return null; } (lottie.play animationManager.play), (lottie.pause animationManager.pause), (lottie.setLocationHref setLocation), (lottie.togglePause animationManager.togglePause), (lottie.setSpeed animationManager.setSpeed), (lottie.setDirection animationManager.setDirection), (lottie.stop animationManager.stop), (lottie.searchAnimations searchAnimations), (lottie.registerAnimation animationManager.registerAnimation), (lottie.loadAnimation loadAnimation), (lottie.setSubframeRendering setSubframeRendering), (lottie.resize animationManager.resize), (lottie.goToAndStop animationManager.goToAndStop), (lottie.destroy animationManager.destroy), (lottie.setQuality setQuality), (lottie.inBrowser inBrowser), (lottie.installPlugin installPlugin), (lottie.freeze animationManager.freeze), (lottie.unfreeze animationManager.unfreeze), (lottie.setVolume animationManager.setVolume), (lottie.mute animationManager.mute), (lottie.unmute animationManager.unmute), (lottie.getRegisteredAnimations animationManager.getRegisteredAnimations), (lottie.useWebWorker setWebWorker), (lottie.setIDPrefix setPrefix), (lottie.__getFactory getFactory), (lottie.version 5.12.1); var queryString ; if (standalone) { var scripts document.getElementsByTagName(script), index scripts.length - 1, myScript scriptsindex || { src: }; (queryString myScript.src ? myScript.src.replace(/^^\?+\??/, ) : ), (renderer getQueryVariable(renderer)); } var readyStateCheckInterval setInterval(checkReady, 100); try { (object (undefined typeof exports ? undefined : _typeof$3(exports)) && undefined ! typeof module) || (function typeof define && define.amd) || (window.bodymovin lottie); } catch (t) {} var ShapeModifiers (function () { var t {}, e {}; return ( (t.registerModifier function (t, i) { et || (et i); }), (t.getModifier function (t, i, r) { return new et(i, r); }), t ); })(); function ShapeModifier() {} function TrimModifier() {} function PuckerAndBloatModifier() {} (ShapeModifier.prototype.initModifierProperties function () {}), (ShapeModifier.prototype.addShapeToModifier function () {}), (ShapeModifier.prototype.addShape function (t) { if (!this.closed) { t.sh.container.addDynamicProperty(t.sh); var e { shape: t.sh, data: t, localShapeCollection: shapeCollectionPool.newShapeCollection(), }; this.shapes.push(e), this.addShapeToModifier(e), this._isAnimated && t.setAsAnimated(); } }), (ShapeModifier.prototype.init function (t, e) { (this.shapes ), (this.elem t), this.initDynamicPropertyContainer(t), this.initModifierProperties(t, e), (this.frameId initialDefaultFrame), (this.closed !1), (this.k !1), this.dynamicProperties.length ? (this.k !0) : this.getValue(!0); }), (ShapeModifier.prototype.processKeys function () { this.elem.globalData.frameId ! this.frameId && ((this.frameId this.elem.globalData.frameId), this.iterateDynamicProperties()); }), extendPrototype(DynamicPropertyContainer, ShapeModifier), extendPrototype(ShapeModifier, TrimModifier), (TrimModifier.prototype.initModifierProperties function (t, e) { (this.s PropertyFactory.getProp(t, e.s, 0, 0.01, this)), (this.e PropertyFactory.getProp(t, e.e, 0, 0.01, this)), (this.o PropertyFactory.getProp(t, e.o, 0, 0, this)), (this.sValue 0), (this.eValue 0), (this.getValue this.processKeys), (this.m e.m), (this._isAnimated !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length); }), (TrimModifier.prototype.addShapeToModifier function (t) { t.pathsData ; }), (TrimModifier.prototype.calculateShapeEdges function ( t, e, i, r, s ) { var a ; e 1 ? a.push({ s: t, e: e }) : t > 1 ? a.push({ s: t - 1, e: e - 1 }) : (a.push({ s: t, e: 1 }), a.push({ s: 0, e: e - 1 })); var n, o, h , l a.length; for (n 0; n l; n + 1) { var p, f; if (!((o an).e * s r || o.s * s > r + i)) (p o.s * s r ? 0 : (o.s * s - r) / i), (f o.e * s > r + i ? 1 : (o.e * s - r) / i), h.push(p, f); } return h.length || h.push(0, 0), h; }), (TrimModifier.prototype.releasePathsData function (t) { var e, i t.length; for (e 0; e i; e + 1) segmentsLengthPool.release(te); return (t.length 0), t; }), (TrimModifier.prototype.processShapes function (t) { var e, i, r, s; if (this._mdf || t) { var a (this.o.v % 360) / 360; if ( (a 0 && (a + 1), (e this.s.v > 1 ? 1 + a : this.s.v 0 ? 0 + a : this.s.v + a) > (i this.e.v > 1 ? 1 + a : this.e.v 0 ? 0 + a : this.e.v + a)) ) { var n e; (e i), (i n); } (e 1e-4 * Math.round(1e4 * e)), (i 1e-4 * Math.round(1e4 * i)), (this.sValue e), (this.eValue i); } else (e this.sValue), (i this.eValue); var o, h, l, p, f, m this.shapes.length, c 0; if (i e) for (s 0; s m; s + 1) this.shapess.localShapeCollection.releaseShapes(), (this.shapess.shape._mdf !0), (this.shapess.shape.paths this.shapess.localShapeCollection), this._mdf && (this.shapess.pathsData.length 0); else if ((1 i && 0 e) || (0 i && 1 e)) { if (this._mdf) for (s 0; s m; s + 1) (this.shapess.pathsData.length 0), (this.shapess.shape._mdf !0); } else { var d, u, y ; for (s 0; s m; s + 1) if ( (d this.shapess).shape._mdf || this._mdf || t || 2 this.m ) { if ( ((h (r d.shape.paths)._length), (f 0), !d.shape._mdf && d.pathsData.length) ) f d.totalShapeLength; else { for ( l this.releasePathsData(d.pathsData), o 0; o h; o + 1 ) (p bez.getSegmentsLength(r.shapeso)), l.push(p), (f + p.totalLength); (d.totalShapeLength f), (d.pathsData l); } (c + f), (d.shape._mdf !0); } else d.shape.paths d.localShapeCollection; var g, v e, b i, x 0; for (s m - 1; s > 0; s - 1) if ((d this.shapess).shape._mdf) { for ( (u d.localShapeCollection).releaseShapes(), 2 this.m && m > 1 ? ((g this.calculateShapeEdges( e, i, d.totalShapeLength, x, c )), (x + d.totalShapeLength)) : (g v, b), h g.length, o 0; o h; o + 1 ) { (v go0), (b go1), (y.length 0), b 1 ? y.push({ s: d.totalShapeLength * v, e: d.totalShapeLength * b, }) : v > 1 ? y.push({ s: d.totalShapeLength * (v - 1), e: d.totalShapeLength * (b - 1), }) : (y.push({ s: d.totalShapeLength * v, e: d.totalShapeLength, }), y.push({ s: 0, e: d.totalShapeLength * (b - 1) })); var P this.addShapes(d, y0); if (y0.s ! y0.e) { if (y.length > 1) if ( d.shape.paths.shapesd.shape.paths._length - 1.c ) { var E P.pop(); this.addPaths(P, u), (P this.addShapes(d, y1, E)); } else this.addPaths(P, u), (P this.addShapes(d, y1)); this.addPaths(P, u); } } d.shape.paths u; } } }), (TrimModifier.prototype.addPaths function (t, e) { var i, r t.length; for (i 0; i r; i + 1) e.addShape(ti); }), (TrimModifier.prototype.addSegment function ( t, e, i, r, s, a, n ) { s.setXYAt(e0, e1, o, a), s.setXYAt(i0, i1, i, a + 1), n && s.setXYAt(t0, t1, v, a), s.setXYAt(r0, r1, v, a + 1); }), (TrimModifier.prototype.addSegmentFromArray function ( t, e, i, r ) { e.setXYAt(t1, t5, o, i), e.setXYAt(t2, t6, i, i + 1), r && e.setXYAt(t0, t4, v, i), e.setXYAt(t3, t7, v, i + 1); }), (TrimModifier.prototype.addShapes function (t, e, i) { var r, s, a, n, o, h, l, p, f t.pathsData, m t.shape.paths.shapes, c t.shape.paths._length, d 0, u , y !0; for ( i ? ((o i._length), (p i._length)) : ((i shapePool.newElement()), (o 0), (p 0)), u.push(i), r 0; r c; r + 1 ) { for ( h fr.lengths, i.c mr.c, a mr.c ? h.length : h.length + 1, s 1; s a; s + 1 ) if (d + (n hs - 1).addedLength e.s) (d + n.addedLength), (i.c !1); else { if (d > e.e) { i.c !1; break; } e.s d && e.e > d + n.addedLength ? (this.addSegment( mr.vs - 1, mr.os - 1, mr.is, mr.vs, i, o, y ), (y !1)) : ((l bez.getNewSegment( mr.vs - 1, mr.vs, mr.os - 1, mr.is, (e.s - d) / n.addedLength, (e.e - d) / n.addedLength, hs - 1 )), this.addSegmentFromArray(l, i, o, y), (y !1), (i.c !1)), (d + n.addedLength), (o + 1); } if (mr.c && h.length) { if (((n hs - 1), d e.e)) { var g hs - 1.addedLength; e.s d && e.e > d + g ? (this.addSegment( mr.vs - 1, mr.os - 1, mr.i0, mr.v0, i, o, y ), (y !1)) : ((l bez.getNewSegment( mr.vs - 1, mr.v0, mr.os - 1, mr.i0, (e.s - d) / g, (e.e - d) / g, hs - 1 )), this.addSegmentFromArray(l, i, o, y), (y !1), (i.c !1)); } else i.c !1; (d + n.addedLength), (o + 1); } if ( (i._length && (i.setXYAt(i.vp0, i.vp1, i, p), i.setXYAt( i.vi._length - 10, i.vi._length - 11, o, i._length - 1 )), d > e.e) ) break; r c - 1 && ((i shapePool.newElement()), (y !0), u.push(i), (o 0)); } return u; }), extendPrototype(ShapeModifier, PuckerAndBloatModifier), (PuckerAndBloatModifier.prototype.initModifierProperties function (t, e) { (this.getValue this.processKeys), (this.amount PropertyFactory.getProp( t, e.a, 0, null, this )), (this._isAnimated !!this.amount.effectsSequence.length); }), (PuckerAndBloatModifier.prototype.processPath function (t, e) { var i e / 100, r 0, 0, s t._length, a 0; for (a 0; a s; a + 1) (r0 + t.va0), (r1 + t.va1); (r0 / s), (r1 / s); var n, o, h, l, p, f, m shapePool.newElement(); for (m.c t.c, a 0; a s; a + 1) (n t.va0 + (r0 - t.va0) * i), (o t.va1 + (r1 - t.va1) * i), (h t.oa0 + (r0 - t.oa0) * -i), (l t.oa1 + (r1 - t.oa1) * -i), (p t.ia0 + (r0 - t.ia0) * -i), (f t.ia1 + (r1 - t.ia1) * -i), m.setTripleAt(n, o, h, l, p, f, a); return m; }), (PuckerAndBloatModifier.prototype.processShapes function (t) { var e, i, r, s, a, n, o this.shapes.length, h this.amount.v; if (0 ! h) for (i 0; i o; i + 1) { if ( ((n (a this.shapesi).localShapeCollection), a.shape._mdf || this._mdf || t) ) for ( n.releaseShapes(), a.shape._mdf !0, e a.shape.paths.shapes, s a.shape.paths._length, r 0; r s; r + 1 ) n.addShape(this.processPath(er, h)); a.shape.paths a.localShapeCollection; } this.dynamicProperties.length || (this._mdf !1); }); var TransformPropertyFactory (function () { var t 0, 0; function e(t, e, i) { if ( ((this.elem t), (this.frameId -1), (this.propType transform), (this.data e), (this.v new Matrix()), (this.pre new Matrix()), (this.appliedTransformations 0), this.initDynamicPropertyContainer(i || t), e.p && e.p.s ? ((this.px PropertyFactory.getProp(t, e.p.x, 0, 0, this)), (this.py PropertyFactory.getProp(t, e.p.y, 0, 0, this)), e.p.z && (this.pz PropertyFactory.getProp(t, e.p.z, 0, 0, this))) : (this.p PropertyFactory.getProp( t, e.p || { k: 0, 0, 0 }, 1, 0, this )), e.rx) ) { if ( ((this.rx PropertyFactory.getProp( t, e.rx, 0, degToRads, this )), (this.ry PropertyFactory.getProp( t, e.ry, 0, degToRads, this )), (this.rz PropertyFactory.getProp( t, e.rz, 0, degToRads, this )), e.or.k0.ti) ) { var r, s e.or.k.length; for (r 0; r s; r + 1) (e.or.kr.to null), (e.or.kr.ti null); } (this.or PropertyFactory.getProp( t, e.or, 1, degToRads, this )), (this.or.sh !0); } else this.r PropertyFactory.getProp( t, e.r || { k: 0 }, 0, degToRads, this ); e.sk && ((this.sk PropertyFactory.getProp( t, e.sk, 0, degToRads, this )), (this.sa PropertyFactory.getProp( t, e.sa, 0, degToRads, this ))), (this.a PropertyFactory.getProp( t, e.a || { k: 0, 0, 0 }, 1, 0, this )), (this.s PropertyFactory.getProp( t, e.s || { k: 100, 100, 100 }, 1, 0.01, this )), e.o ? (this.o PropertyFactory.getProp(t, e.o, 0, 0.01, t)) : (this.o { _mdf: !1, v: 1 }), (this._isDirty !0), this.dynamicProperties.length || this.getValue(!0); } return ( (e.prototype { applyToMatrix: function (t) { var e this._mdf; this.iterateDynamicProperties(), (this._mdf this._mdf || e), this.a && t.translate(-this.a.v0, -this.a.v1, this.a.v2), this.s && t.scale(this.s.v0, this.s.v1, this.s.v2), this.sk && t.skewFromAxis(-this.sk.v, this.sa.v), this.r ? t.rotate(-this.r.v) : t .rotateZ(-this.rz.v) .rotateY(this.ry.v) .rotateX(this.rx.v) .rotateZ(-this.or.v2) .rotateY(this.or.v1) .rotateX(this.or.v0), this.data.p.s ? this.data.p.z ? t.translate(this.px.v, this.py.v, -this.pz.v) : t.translate(this.px.v, this.py.v, 0) : t.translate(this.p.v0, this.p.v1, -this.p.v2); }, getValue: function (e) { if (this.elem.globalData.frameId ! this.frameId) { if ( (this._isDirty && (this.precalculateMatrix(), (this._isDirty !1)), this.iterateDynamicProperties(), this._mdf || e) ) { var i; if ( (this.v.cloneFromProps(this.pre.props), this.appliedTransformations 1 && this.v.translate( -this.a.v0, -this.a.v1, this.a.v2 ), this.appliedTransformations 2 && this.v.scale(this.s.v0, this.s.v1, this.s.v2), this.sk && this.appliedTransformations 3 && this.v.skewFromAxis(-this.sk.v, this.sa.v), this.r && this.appliedTransformations 4 ? this.v.rotate(-this.r.v) : !this.r && this.appliedTransformations 4 && this.v .rotateZ(-this.rz.v) .rotateY(this.ry.v) .rotateX(this.rx.v) .rotateZ(-this.or.v2) .rotateY(this.or.v1) .rotateX(this.or.v0), this.autoOriented) ) { var r, s; if ( ((i this.elem.globalData.frameRate), this.p && this.p.keyframes && this.p.getValueAtTime) ) this.p._caching.lastFrame + this.p.offsetTime this.p.keyframes0.t ? ((r this.p.getValueAtTime( (this.p.keyframes0.t + 0.01) / i, 0 )), (s this.p.getValueAtTime( this.p.keyframes0.t / i, 0 ))) : this.p._caching.lastFrame + this.p.offsetTime > this.p.keyframesthis.p.keyframes.length - 1.t ? ((r this.p.getValueAtTime( this.p.keyframesthis.p.keyframes.length - 1 .t / i, 0 )), (s this.p.getValueAtTime( (this.p.keyframesthis.p.keyframes.length - 1 .t - 0.05) / i, 0 ))) : ((r this.p.pv), (s this.p.getValueAtTime( (this.p._caching.lastFrame + this.p.offsetTime - 0.01) / i, this.p.offsetTime ))); else if ( this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime ) { (r ), (s ); var a this.px, n this.py; a._caching.lastFrame + a.offsetTime a.keyframes0.t ? ((r0 a.getValueAtTime( (a.keyframes0.t + 0.01) / i, 0 )), (r1 n.getValueAtTime( (n.keyframes0.t + 0.01) / i, 0 )), (s0 a.getValueAtTime( a.keyframes0.t / i, 0 )), (s1 n.getValueAtTime( n.keyframes0.t / i, 0 ))) : a._caching.lastFrame + a.offsetTime > a.keyframesa.keyframes.length - 1.t ? ((r0 a.getValueAtTime( a.keyframesa.keyframes.length - 1.t / i, 0 )), (r1 n.getValueAtTime( n.keyframesn.keyframes.length - 1.t / i, 0 )), (s0 a.getValueAtTime( (a.keyframesa.keyframes.length - 1.t - 0.01) / i, 0 )), (s1 n.getValueAtTime( (n.keyframesn.keyframes.length - 1.t - 0.01) / i, 0 ))) : ((r a.pv, n.pv), (s0 a.getValueAtTime( (a._caching.lastFrame + a.offsetTime - 0.01) / i, a.offsetTime )), (s1 n.getValueAtTime( (n._caching.lastFrame + n.offsetTime - 0.01) / i, n.offsetTime ))); } else r s t; this.v.rotate(-Math.atan2(r1 - s1, r0 - s0)); } this.data.p && this.data.p.s ? this.data.p.z ? this.v.translate(this.px.v, this.py.v, -this.pz.v) : this.v.translate(this.px.v, this.py.v, 0) : this.v.translate( this.p.v0, this.p.v1, -this.p.v2 ); } this.frameId this.elem.globalData.frameId; } }, precalculateMatrix: function () { if ( ((this.appliedTransformations 0), this.pre.reset(), !this.a.effectsSequence.length && (this.pre.translate( -this.a.v0, -this.a.v1, this.a.v2 ), (this.appliedTransformations 1), !this.s.effectsSequence.length)) ) { if ( (this.pre.scale(this.s.v0, this.s.v1, this.s.v2), (this.appliedTransformations 2), this.sk) ) { if ( this.sk.effectsSequence.length || this.sa.effectsSequence.length ) return; this.pre.skewFromAxis(-this.sk.v, this.sa.v), (this.appliedTransformations 3); } this.r ? this.r.effectsSequence.length || (this.pre.rotate(-this.r.v), (this.appliedTransformations 4)) : this.rz.effectsSequence.length || this.ry.effectsSequence.length || this.rx.effectsSequence.length || this.or.effectsSequence.length || (this.pre .rotateZ(-this.rz.v) .rotateY(this.ry.v) .rotateX(this.rx.v) .rotateZ(-this.or.v2) .rotateY(this.or.v1) .rotateX(this.or.v0), (this.appliedTransformations 4)); } }, autoOrient: function () {}, }), extendPrototype(DynamicPropertyContainer, e), (e.prototype.addDynamicProperty function (t) { this._addDynamicProperty(t), this.elem.addDynamicProperty(t), (this._isDirty !0); }), (e.prototype._addDynamicProperty DynamicPropertyContainer.prototype.addDynamicProperty), { getTransformProperty: function (t, i, r) { return new e(t, i, r); }, } ); })(); function RepeaterModifier() {} function RoundCornersModifier() {} function floatEqual(t, e) { return 1e5 * Math.abs(t - e) Math.min(Math.abs(t), Math.abs(e)); } function floatZero(t) { return Math.abs(t) 1e-5; } function lerp(t, e, i) { return t * (1 - i) + e * i; } function lerpPoint(t, e, i) { return lerp(t0, e0, i), lerp(t1, e1, i); } function quadRoots(t, e, i) { if (0 t) return ; var r e * e - 4 * t * i; if (r 0) return ; var s -e / (2 * t); if (0 r) return s; var a Math.sqrt(r) / (2 * t); return s - a, s + a; } function polynomialCoefficients(t, e, i, r) { return 3 * e - t - 3 * i + r, 3 * t - 6 * e + 3 * i, -3 * t + 3 * e, t, ; } function singlePoint(t) { return new PolynomialBezier(t, t, t, t, !1); } function PolynomialBezier(t, e, i, r, s) { s && pointEqual(t, e) && (e lerpPoint(t, r, 1 / 3)), s && pointEqual(i, r) && (i lerpPoint(t, r, 2 / 3)); var a polynomialCoefficients(t0, e0, i0, r0), n polynomialCoefficients(t1, e1, i1, r1); (this.a a0, n0), (this.b a1, n1), (this.c a2, n2), (this.d a3, n3), (this.points t, e, i, r); } function extrema(t, e) { var i t.points0e, r t.pointst.points.length - 1e; if (i > r) { var s r; (r i), (i s); } for ( var a quadRoots(3 * t.ae, 2 * t.be, t.ce), n 0; n a.length; n + 1 ) if (an > 0 && an 1) { var o t.point(an)e; o i ? (i o) : o > r && (r o); } return { min: i, max: r }; } function intersectData(t, e, i) { var r t.boundingBox(); return { cx: r.cx, cy: r.cy, width: r.width, height: r.height, bez: t, t: (e + i) / 2, t1: e, t2: i, }; } function splitData(t) { var e t.bez.split(0.5); return intersectData(e0, t.t1, t.t), intersectData(e1, t.t, t.t2), ; } function boxIntersect(t, e) { return ( 2 * Math.abs(t.cx - e.cx) t.width + e.width && 2 * Math.abs(t.cy - e.cy) t.height + e.height ); } function intersectsImpl(t, e, i, r, s, a) { if (boxIntersect(t, e)) if ( i > a || (t.width r && t.height r && e.width r && e.height r) ) s.push(t.t, e.t); else { var n splitData(t), o splitData(e); intersectsImpl(n0, o0, i + 1, r, s, a), intersectsImpl(n0, o1, i + 1, r, s, a), intersectsImpl(n1, o0, i + 1, r, s, a), intersectsImpl(n1, o1, i + 1, r, s, a); } } function crossProduct(t, e) { return t1 * e2 - t2 * e1, t2 * e0 - t0 * e2, t0 * e1 - t1 * e0, ; } function lineIntersection(t, e, i, r) { var s t0, t1, 1, a e0, e1, 1, n i0, i1, 1, o r0, r1, 1, h crossProduct(crossProduct(s, a), crossProduct(n, o)); return floatZero(h2) ? null : h0 / h2, h1 / h2; } function polarOffset(t, e, i) { return t0 + Math.cos(e) * i, t1 - Math.sin(e) * i; } function pointDistance(t, e) { return Math.hypot(t0 - e0, t1 - e1); } function pointEqual(t, e) { return floatEqual(t0, e0) && floatEqual(t1, e1); } function ZigZagModifier() {} function setPoint(t, e, i, r, s, a, n) { var o i - Math.PI / 2, h i + Math.PI / 2, l e0 + Math.cos(i) * r * s, p e1 - Math.sin(i) * r * s; t.setTripleAt( l, p, l + Math.cos(o) * a, p - Math.sin(o) * a, l + Math.cos(h) * n, p - Math.sin(h) * n, t.length() ); } function getPerpendicularVector(t, e) { var i e0 - t0, e1 - t1, r 0.5 * -Math.PI; return Math.cos(r) * i0 - Math.sin(r) * i1, Math.sin(r) * i0 + Math.cos(r) * i1, ; } function getProjectingAngle(t, e) { var i 0 e ? t.length() - 1 : e - 1, r (e + 1) % t.length(), s getPerpendicularVector(t.vi, t.vr); return Math.atan2(0, 1) - Math.atan2(s1, s0); } function zigZagCorner(t, e, i, r, s, a, n) { var o getProjectingAngle(e, i), h e.vi % e._length, l e.v0 i ? e._length - 1 : i - 1, p e.v(i + 1) % e._length, f 2 a ? Math.sqrt( Math.pow(h0 - l0, 2) + Math.pow(h1 - l1, 2) ) : 0, m 2 a ? Math.sqrt( Math.pow(h0 - p0, 2) + Math.pow(h1 - p1, 2) ) : 0; setPoint( t, e.vi % e._length, o, n, r, m / (2 * (s + 1)), f / (2 * (s + 1)), a ); } function zigZagSegment(t, e, i, r, s, a) { for (var n 0; n r; n + 1) { var o (n + 1) / (r + 1), h 2 s ? Math.sqrt( Math.pow(e.points30 - e.points00, 2) + Math.pow(e.points31 - e.points01, 2) ) : 0, l e.normalAngle(o); setPoint( t, e.point(o), l, a, i, h / (2 * (r + 1)), h / (2 * (r + 1)), s ), (a -a); } return a; } function linearOffset(t, e, i) { var r Math.atan2(e0 - t0, e1 - t1); return polarOffset(t, r, i), polarOffset(e, r, i); } function offsetSegment(t, e) { var i, r, s, a, n, o, h; (i (h linearOffset(t.points0, t.points1, e))0), (r h1), (s (h linearOffset(t.points1, t.points2, e))0), (a h1), (n (h linearOffset(t.points2, t.points3, e))0), (o h1); var l lineIntersection(i, r, s, a); null l && (l r); var p lineIntersection(n, o, s, a); return null p && (p n), new PolynomialBezier(i, l, p, o); } function joinLines(t, e, i, r, s) { var a e.points3, n i.points0; if (3 r) return a; if (pointEqual(a, n)) return a; if (2 r) { var o -e.tangentAngle(1), h -i.tangentAngle(0) + Math.PI, l lineIntersection( a, polarOffset(a, o + Math.PI / 2, 100), n, polarOffset(n, o + Math.PI / 2, 100) ), p l ? pointDistance(l, a) : pointDistance(a, n) / 2, f polarOffset(a, o, 2 * p * roundCorner); return ( t.setXYAt(f0, f1, o, t.length() - 1), (f polarOffset(n, h, 2 * p * roundCorner)), t.setTripleAt(n0, n1, n0, n1, f0, f1, t.length()), n ); } var m lineIntersection( pointEqual(a, e.points2) ? e.points0 : e.points2, a, n, pointEqual(n, i.points1) ? i.points3 : i.points1 ); return m && pointDistance(m, a) s ? (t.setTripleAt(m0, m1, m0, m1, m0, m1, t.length()), m) : a; } function getIntersection(t, e) { var i t.intersections(e); return ( i.length && floatEqual(i00, 1) && i.shift(), i.length ? i0 : null ); } function pruneSegmentIntersection(t, e) { var i t.slice(), r e.slice(), s getIntersection(tt.length - 1, e0); return ( s && ((it.length - 1 tt.length - 1.split(s0)0), (r0 e0.split(s1)1)), t.length > 1 && e.length > 1 && (s getIntersection(t0, ee.length - 1)) ? t0.split(s0)0, ee.length - 1.split(s1)1 : i, r ); } function pruneIntersections(t) { for (var e, i 1; i t.length; i + 1) (e pruneSegmentIntersection(ti - 1, ti)), (ti - 1 e0), (ti e1); return ( t.length > 1 && ((e pruneSegmentIntersection(tt.length - 1, t0)), (tt.length - 1 e0), (t0 e1)), t ); } function offsetSegmentSplit(t, e) { var i, r, s, a, n t.inflectionPoints(); if (0 n.length) return offsetSegment(t, e); if (1 n.length || floatEqual(n1, 1)) return ( (i (s t.split(n0))0), (r s1), offsetSegment(i, e), offsetSegment(r, e) ); i (s t.split(n0))0; var o (n1 - n0) / (1 - n0); return ( (a (s s1.split(o))0), (r s1), offsetSegment(i, e), offsetSegment(a, e), offsetSegment(r, e) ); } function OffsetPathModifier() {} function getFontProperties(t) { for ( var e t.fStyle ? t.fStyle.split( ) : , i normal, r normal, s e.length, a 0; a s; a + 1 ) switch (ea.toLowerCase()) { case italic: r italic; break; case bold: i 700; break; case black: i 900; break; case medium: i 500; break; case regular: case normal: i 400; break; case light: case thin: i 200; } return { style: r, weight: t.fWeight || i }; } extendPrototype(ShapeModifier, RepeaterModifier), (RepeaterModifier.prototype.initModifierProperties function ( t, e ) { (this.getValue this.processKeys), (this.c PropertyFactory.getProp(t, e.c, 0, null, this)), (this.o PropertyFactory.getProp(t, e.o, 0, null, this)), (this.tr TransformPropertyFactory.getTransformProperty( t, e.tr, this )), (this.so PropertyFactory.getProp(t, e.tr.so, 0, 0.01, this)), (this.eo PropertyFactory.getProp(t, e.tr.eo, 0, 0.01, this)), (this.data e), this.dynamicProperties.length || this.getValue(!0), (this._isAnimated !!this.dynamicProperties.length), (this.pMatrix new Matrix()), (this.rMatrix new Matrix()), (this.sMatrix new Matrix()), (this.tMatrix new Matrix()), (this.matrix new Matrix()); }), (RepeaterModifier.prototype.applyTransforms function ( t, e, i, r, s, a ) { var n a ? -1 : 1, o r.s.v0 + (1 - r.s.v0) * (1 - s), h r.s.v1 + (1 - r.s.v1) * (1 - s); t.translate(r.p.v0 * n * s, r.p.v1 * n * s, r.p.v2), e.translate(-r.a.v0, -r.a.v1, r.a.v2), e.rotate(-r.r.v * n * s), e.translate(r.a.v0, r.a.v1, r.a.v2), i.translate(-r.a.v0, -r.a.v1, r.a.v2), i.scale(a ? 1 / o : o, a ? 1 / h : h), i.translate(r.a.v0, r.a.v1, r.a.v2); }), (RepeaterModifier.prototype.init function (t, e, i, r) { for ( this.elem t, this.arr e, this.pos i, this.elemsData r, this._currentCopies 0, this._elements , this._groups , this.frameId -1, this.initDynamicPropertyContainer(t), this.initModifierProperties(t, ei); i > 0; ) (i - 1), this._elements.unshift(ei); this.dynamicProperties.length ? (this.k !0) : this.getValue(!0); }), (RepeaterModifier.prototype.resetElements function (t) { var e, i t.length; for (e 0; e i; e + 1) (te._processed !1), gr te.ty && this.resetElements(te.it); }), (RepeaterModifier.prototype.cloneElements function (t) { var e JSON.parse(JSON.stringify(t)); return this.resetElements(e), e; }), (RepeaterModifier.prototype.changeGroupRender function (t, e) { var i, r t.length; for (i 0; i r; i + 1) (ti._render e), gr ti.ty && this.changeGroupRender(ti.it, e); }), (RepeaterModifier.prototype.processShapes function (t) { var e, i, r, s, a, n !1; if (this._mdf || t) { var o, h Math.ceil(this.c.v); if (this._groups.length h) { for (; this._groups.length h; ) { var l { it: this.cloneElements(this._elements), ty: gr, }; l.it.push({ a: { a: 0, ix: 1, k: 0, 0 }, nm: Transform, o: { a: 0, ix: 7, k: 100 }, p: { a: 0, ix: 2, k: 0, 0 }, r: { a: 1, ix: 6, k: { s: 0, e: 0, t: 0 }, { s: 0, e: 0, t: 1 }, , }, s: { a: 0, ix: 3, k: 100, 100 }, sa: { a: 0, ix: 5, k: 0 }, sk: { a: 0, ix: 4, k: 0 }, ty: tr, }), this.arr.splice(0, 0, l), this._groups.splice(0, 0, l), (this._currentCopies + 1); } this.elem.reloadShapes(), (n !0); } for (a 0, r 0; r this._groups.length - 1; r + 1) { if ( ((o a h), (this._groupsr._render o), this.changeGroupRender(this._groupsr.it, o), !o) ) { var p this.elemsDatar.it, f pp.length - 1; 0 ! f.transform.op.v ? ((f.transform.op._mdf !0), (f.transform.op.v 0)) : (f.transform.op._mdf !1); } a + 1; } this._currentCopies h; var m this.o.v, c m % 1, d m > 0 ? Math.floor(m) : Math.ceil(m), u this.pMatrix.props, y this.rMatrix.props, g this.sMatrix.props; this.pMatrix.reset(), this.rMatrix.reset(), this.sMatrix.reset(), this.tMatrix.reset(), this.matrix.reset(); var v, b, x 0; if (m > 0) { for (; x d; ) this.applyTransforms( this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !1 ), (x + 1); c && (this.applyTransforms( this.pMatrix, this.rMatrix, this.sMatrix, this.tr, c, !1 ), (x + c)); } else if (m 0) { for (; x > d; ) this.applyTransforms( this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !0 ), (x - 1); c && (this.applyTransforms( this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -c, !0 ), (x - c)); } for ( r 1 this.data.m ? 0 : this._currentCopies - 1, s 1 this.data.m ? 1 : -1, a this._currentCopies; a; ) { if ( ((b (i (e this.elemsDatar.it)e.length - 1 .transform.mProps.v.props).length), (ee.length - 1.transform.mProps._mdf !0), (ee.length - 1.transform.op._mdf !0), (ee.length - 1.transform.op.v 1 this._currentCopies ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (r / (this._currentCopies - 1))), 0 ! x) ) { for ( ((0 ! r && 1 s) || (r ! this._currentCopies - 1 && -1 s)) && this.applyTransforms( this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, !1 ), this.matrix.transform( y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14, y15 ), this.matrix.transform( g0, g1, g2, g3, g4, g5, g6, g7, g8, g9, g10, g11, g12, g13, g14, g15 ), this.matrix.transform( u0, u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15 ), v 0; v b; v + 1 ) iv this.matrix.propsv; this.matrix.reset(); } else for (this.matrix.reset(), v 0; v b; v + 1) iv this.matrix.propsv; (x + 1), (a - 1), (r + s); } } else for (a this._currentCopies, r 0, s 1; a; ) (i (e this.elemsDatar.it)e.length - 1.transform.mProps .v.props), (ee.length - 1.transform.mProps._mdf !1), (ee.length - 1.transform.op._mdf !1), (a - 1), (r + s); return n; }), (RepeaterModifier.prototype.addShape function () {}), extendPrototype(ShapeModifier, RoundCornersModifier), (RoundCornersModifier.prototype.initModifierProperties function ( t, e ) { (this.getValue this.processKeys), (this.rd PropertyFactory.getProp(t, e.r, 0, null, this)), (this._isAnimated !!this.rd.effectsSequence.length); }), (RoundCornersModifier.prototype.processPath function (t, e) { var i, r shapePool.newElement(); r.c t.c; var s, a, n, o, h, l, p, f, m, c, d, u, y t._length, g 0; for (i 0; i y; i + 1) (s t.vi), (n t.oi), (a t.ii), s0 n0 && s1 n1 && s0 a0 && s1 a1 ? (0 ! i && i ! y - 1) || t.c ? ((o 0 i ? t.vy - 1 : t.vi - 1), (l (h Math.sqrt( Math.pow(s0 - o0, 2) + Math.pow(s1 - o1, 2) )) ? Math.min(h / 2, e) / h : 0), (p d s0 + (o0 - s0) * l), (f u s1 - (s1 - o1) * l), (m p - (p - s0) * roundCorner), (c f - (f - s1) * roundCorner), r.setTripleAt(p, f, m, c, d, u, g), (g + 1), (o i y - 1 ? t.v0 : t.vi + 1), (l (h Math.sqrt( Math.pow(s0 - o0, 2) + Math.pow(s1 - o1, 2) )) ? Math.min(h / 2, e) / h : 0), (p m s0 + (o0 - s0) * l), (f c s1 + (o1 - s1) * l), (d p - (p - s0) * roundCorner), (u f - (f - s1) * roundCorner), r.setTripleAt(p, f, m, c, d, u, g), (g + 1)) : (r.setTripleAt(s0, s1, n0, n1, a0, a1, g), (g + 1)) : (r.setTripleAt( t.vi0, t.vi1, t.oi0, t.oi1, t.ii0, t.ii1, g ), (g + 1)); return r; }), (RoundCornersModifier.prototype.processShapes function (t) { var e, i, r, s, a, n, o this.shapes.length, h this.rd.v; if (0 ! h) for (i 0; i o; i + 1) { if ( ((n (a this.shapesi).localShapeCollection), a.shape._mdf || this._mdf || t) ) for ( n.releaseShapes(), a.shape._mdf !0, e a.shape.paths.shapes, s a.shape.paths._length, r 0; r s; r + 1 ) n.addShape(this.processPath(er, h)); a.shape.paths a.localShapeCollection; } this.dynamicProperties.length || (this._mdf !1); }), (PolynomialBezier.prototype.point function (t) { return ((this.a0 * t + this.b0) * t + this.c0) * t + this.d0, ((this.a1 * t + this.b1) * t + this.c1) * t + this.d1, ; }), (PolynomialBezier.prototype.derivative function (t) { return (3 * t * this.a0 + 2 * this.b0) * t + this.c0, (3 * t * this.a1 + 2 * this.b1) * t + this.c1, ; }), (PolynomialBezier.prototype.tangentAngle function (t) { var e this.derivative(t); return Math.atan2(e1, e0); }), (PolynomialBezier.prototype.normalAngle function (t) { var e this.derivative(t); return Math.atan2(e0, e1); }), (PolynomialBezier.prototype.inflectionPoints function () { var t this.a1 * this.b0 - this.a0 * this.b1; if (floatZero(t)) return ; var e (-0.5 * (this.a1 * this.c0 - this.a0 * this.c1)) / t, i e * e - ((1 / 3) * (this.b1 * this.c0 - this.b0 * this.c1)) / t; if (i 0) return ; var r Math.sqrt(i); return floatZero(r) ? r > 0 && r 1 ? e : : e - r, e + r.filter(function (t) { return t > 0 && t 1; }); }), (PolynomialBezier.prototype.split function (t) { if (t 0) return singlePoint(this.points0), this; if (t > 1) return this, singlePoint(this.pointsthis.points.length - 1); var e lerpPoint(this.points0, this.points1, t), i lerpPoint(this.points1, this.points2, t), r lerpPoint(this.points2, this.points3, t), s lerpPoint(e, i, t), a lerpPoint(i, r, t), n lerpPoint(s, a, t); return new PolynomialBezier(this.points0, e, s, n, !0), new PolynomialBezier(n, a, r, this.points3, !0), ; }), (PolynomialBezier.prototype.bounds function () { return { x: extrema(this, 0), y: extrema(this, 1) }; }), (PolynomialBezier.prototype.boundingBox function () { var t this.bounds(); return { left: t.x.min, right: t.x.max, top: t.y.min, bottom: t.y.max, width: t.x.max - t.x.min, height: t.y.max - t.y.min, cx: (t.x.max + t.x.min) / 2, cy: (t.y.max + t.y.min) / 2, }; }), (PolynomialBezier.prototype.intersections function (t, e, i) { void 0 e && (e 2), void 0 i && (i 7); var r ; return ( intersectsImpl( intersectData(this, 0, 1), intersectData(t, 0, 1), 0, e, r, i ), r ); }), (PolynomialBezier.shapeSegment function (t, e) { var i (e + 1) % t.length(); return new PolynomialBezier(t.ve, t.oe, t.ii, t.vi, !0); }), (PolynomialBezier.shapeSegmentInverted function (t, e) { var i (e + 1) % t.length(); return new PolynomialBezier(t.vi, t.ii, t.oe, t.ve, !0); }), extendPrototype(ShapeModifier, ZigZagModifier), (ZigZagModifier.prototype.initModifierProperties function (t, e) { (this.getValue this.processKeys), (this.amplitude PropertyFactory.getProp( t, e.s, 0, null, this )), (this.frequency PropertyFactory.getProp( t, e.r, 0, null, this )), (this.pointsType PropertyFactory.getProp( t, e.pt, 0, null, this )), (this._isAnimated 0 ! this.amplitude.effectsSequence.length || 0 ! this.frequency.effectsSequence.length || 0 ! this.pointsType.effectsSequence.length); }), (ZigZagModifier.prototype.processPath function (t, e, i, r) { var s t._length, a shapePool.newElement(); if (((a.c t.c), t.c || (s - 1), 0 s)) return a; var n -1, o PolynomialBezier.shapeSegment(t, 0); zigZagCorner(a, t, 0, e, i, r, n); for (var h 0; h s; h + 1) (n zigZagSegment(a, o, e, i, r, -n)), (o h ! s - 1 || t.c ? PolynomialBezier.shapeSegment(t, (h + 1) % s) : null), zigZagCorner(a, t, h + 1, e, i, r, n); return a; }), (ZigZagModifier.prototype.processShapes function (t) { var e, i, r, s, a, n, o this.shapes.length, h this.amplitude.v, l Math.max(0, Math.round(this.frequency.v)), p this.pointsType.v; if (0 ! h) for (i 0; i o; i + 1) { if ( ((n (a this.shapesi).localShapeCollection), a.shape._mdf || this._mdf || t) ) for ( n.releaseShapes(), a.shape._mdf !0, e a.shape.paths.shapes, s a.shape.paths._length, r 0; r s; r + 1 ) n.addShape(this.processPath(er, h, l, p)); a.shape.paths a.localShapeCollection; } this.dynamicProperties.length || (this._mdf !1); }), extendPrototype(ShapeModifier, OffsetPathModifier), (OffsetPathModifier.prototype.initModifierProperties function ( t, e ) { (this.getValue this.processKeys), (this.amount PropertyFactory.getProp(t, e.a, 0, null, this)), (this.miterLimit PropertyFactory.getProp( t, e.ml, 0, null, this )), (this.lineJoin e.lj), (this._isAnimated 0 ! this.amount.effectsSequence.length); }), (OffsetPathModifier.prototype.processPath function (t, e, i, r) { var s shapePool.newElement(); s.c t.c; var a, n, o, h t.length(); t.c || (h - 1); var l ; for (a 0; a h; a + 1) (o PolynomialBezier.shapeSegment(t, a)), l.push(offsetSegmentSplit(o, e)); if (!t.c) for (a h - 1; a > 0; a - 1) (o PolynomialBezier.shapeSegmentInverted(t, a)), l.push(offsetSegmentSplit(o, e)); l pruneIntersections(l); var p null, f null; for (a 0; a l.length; a + 1) { var m la; for ( f && (p joinLines(s, f, m0, i, r)), f mm.length - 1, n 0; n m.length; n + 1 ) (o mn), p && pointEqual(o.points0, p) ? s.setXYAt( o.points10, o.points11, o, s.length() - 1 ) : s.setTripleAt( o.points00, o.points01, o.points10, o.points11, o.points00, o.points01, s.length() ), s.setTripleAt( o.points30, o.points31, o.points30, o.points31, o.points20, o.points21, s.length() ), (p o.points3); } return l.length && joinLines(s, f, l00, i, r), s; }), (OffsetPathModifier.prototype.processShapes function (t) { var e, i, r, s, a, n, o this.shapes.length, h this.amount.v, l this.miterLimit.v, p this.lineJoin; if (0 ! h) for (i 0; i o; i + 1) { if ( ((n (a this.shapesi).localShapeCollection), a.shape._mdf || this._mdf || t) ) for ( n.releaseShapes(), a.shape._mdf !0, e a.shape.paths.shapes, s a.shape.paths._length, r 0; r s; r + 1 ) n.addShape(this.processPath(er, h, p, l)); a.shape.paths a.localShapeCollection; } this.dynamicProperties.length || (this._mdf !1); }); var FontManager (function () { var t { w: 0, size: 0, shapes: , data: { shapes: } }, e ; e e.concat( 2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403, ); var i 127988, r d83cdffb, d83cdffc, d83cdffd, d83cdffe, d83cdfff; function s(t, e) { var i createTag(span); i.setAttribute(aria-hidden, !0), (i.style.fontFamily e); var r createTag(span); (r.innerText giItT1WQy@!-/#), (i.style.position absolute), (i.style.left -10000px), (i.style.top -10000px), (i.style.fontSize 300px), (i.style.fontVariant normal), (i.style.fontStyle normal), (i.style.fontWeight normal), (i.style.letterSpacing 0), i.appendChild(r), document.body.appendChild(i); var s r.offsetWidth; return ( (r.style.fontFamily (function (t) { var e, i t.split(,), r i.length, s ; for (e 0; e r; e + 1) sans-serif ! ie && monospace ! ie && s.push(ie); return s.join(,); })(t) + , + e), { node: r, w: s, parent: i } ); } function a(t, e) { var i, r document.body && e ? svg : canvas, s getFontProperties(t); if (svg r) { var a createNS(text); (a.style.fontSize 100px), a.setAttribute(font-family, t.fFamily), a.setAttribute(font-style, s.style), a.setAttribute(font-weight, s.weight), (a.textContent 1), t.fClass ? ((a.style.fontFamily inherit), a.setAttribute(class, t.fClass)) : (a.style.fontFamily t.fFamily), e.appendChild(a), (i a); } else { var n new OffscreenCanvas(500, 500).getContext(2d); (n.font s.style + + s.weight + 100px + t.fFamily), (i n); } return { measureText: function (t) { return svg r ? ((i.textContent t), i.getComputedTextLength()) : i.measureText(t).width; }, }; } function n(t) { var e 0, i t.charCodeAt(0); if (i > 55296 && i 56319) { var r t.charCodeAt(1); r > 56320 && r 57343 && (e 1024 * (i - 55296) + r - 56320 + 65536); } return e; } function o(t) { var e n(t); return e > 127462 && e 127487; } var h function () { (this.fonts ), (this.chars null), (this.typekitLoaded 0), (this.isLoaded !1), (this._warned !1), (this.initTime Date.now()), (this.setIsLoadedBinded this.setIsLoaded.bind(this)), (this.checkLoadedFontsBinded this.checkLoadedFonts.bind(this)); }; (h.isModifier function (t, e) { var i t.toString(16) + e.toString(16); return -1 ! r.indexOf(i); }), (h.isZeroWidthJoiner function (t) { return 8205 t; }), (h.isFlagEmoji function (t) { return o(t.substr(0, 2)) && o(t.substr(2, 2)); }), (h.isRegionalCode o), (h.isCombinedCharacter function (t) { return -1 ! e.indexOf(t); }), (h.isRegionalFlag function (t, e) { var r n(t.substr(e, 2)); if (r ! i) return !1; var s 0; for (e + 2; s 5; ) { if ((r n(t.substr(e, 2))) 917601 || r > 917626) return !1; (s + 1), (e + 2); } return 917631 n(t.substr(e, 2)); }), (h.isVariationSelector function (t) { return 65039 t; }), (h.BLACK_FLAG_CODE_POINT i); var l { addChars: function (t) { if (t) { var e; this.chars || (this.chars ); var i, r, s t.length, a this.chars.length; for (e 0; e s; e + 1) { for (i 0, r !1; i a; ) this.charsi.style te.style && this.charsi.fFamily te.fFamily && this.charsi.ch te.ch && (r !0), (i + 1); r || (this.chars.push(te), (a + 1)); } } }, addFonts: function (t, e) { if (t) { if (this.chars) return (this.isLoaded !0), void (this.fonts t.list); if (!document.body) return ( (this.isLoaded !0), t.list.forEach(function (t) { (t.helper a(t)), (t.cache {}); }), void (this.fonts t.list) ); var i, r t.list, n r.length, o n; for (i 0; i n; i + 1) { var h, l, p !0; if ( ((ri.loaded !1), (ri.monoCase s(ri.fFamily, monospace)), (ri.sansCase s(ri.fFamily, sans-serif)), ri.fPath) ) { if (p ri.fOrigin || 3 ri.origin) { if ( ((h document.querySelectorAll( stylef-foriginpf-family + ri.fFamily + , stylef-origin3f-family + ri.fFamily + )).length > 0 && (p !1), p) ) { var f createTag(style); f.setAttribute(f-forigin, ri.fOrigin), f.setAttribute(f-origin, ri.origin), f.setAttribute(f-family, ri.fFamily), (f.type text/css), (f.innerText @font-face {font-family: + ri.fFamily + ; font-style: normal; src: url( + ri.fPath + );}), e.appendChild(f); } } else if (g ri.fOrigin || 1 ri.origin) { for ( h document.querySelectorAll( linkf-foriging, linkf-origin1 ), l 0; l h.length; l + 1 ) -1 ! hl.href.indexOf(ri.fPath) && (p !1); if (p) { var m createTag(link); m.setAttribute(f-forigin, ri.fOrigin), m.setAttribute(f-origin, ri.origin), (m.type text/css), (m.rel stylesheet), (m.href ri.fPath), document.body.appendChild(m); } } else if (t ri.fOrigin || 2 ri.origin) { for ( h document.querySelectorAll( scriptf-forigint, scriptf-origin2 ), l 0; l h.length; l + 1 ) ri.fPath hl.src && (p !1); if (p) { var c createTag(link); c.setAttribute(f-forigin, ri.fOrigin), c.setAttribute(f-origin, ri.origin), c.setAttribute(rel, stylesheet), c.setAttribute(href, ri.fPath), e.appendChild(c); } } } else (ri.loaded !0), (o - 1); (ri.helper a(ri, e)), (ri.cache {}), this.fonts.push(ri); } 0 o ? (this.isLoaded !0) : setTimeout(this.checkLoadedFonts.bind(this), 100); } else this.isLoaded !0; }, getCharData: function (e, i, r) { for (var s 0, a this.chars.length; s a; ) { if ( this.charss.ch e && this.charss.style i && this.charss.fFamily r ) return this.charss; s + 1; } return ( ((string typeof e && 13 ! e.charCodeAt(0)) || !e) && console && console.warn && !this._warned && ((this._warned !0), console.warn( Missing character from exported characters list: , e, i, r )), t ); }, getFontByName: function (t) { for (var e 0, i this.fonts.length; e i; ) { if (this.fontse.fName t) return this.fontse; e + 1; } return this.fonts0; }, measureText: function (t, e, i) { var r this.getFontByName(e), s t; if (!r.caches) { var a r.helper; if ( t) { var n a.measureText(| + t + |), o a.measureText(||); r.caches (n - o) / 100; } else r.caches a.measureText(t) / 100; } return r.caches * i; }, checkLoadedFonts: function () { var t, e, i, r this.fonts.length, s r; for (t 0; t r; t + 1) this.fontst.loaded ? (s - 1) : n this.fontst.fOrigin || 0 this.fontst.origin ? (this.fontst.loaded !0) : ((e this.fontst.monoCase.node), (i this.fontst.monoCase.w), e.offsetWidth ! i ? ((s - 1), (this.fontst.loaded !0)) : ((e this.fontst.sansCase.node), (i this.fontst.sansCase.w), e.offsetWidth ! i && ((s - 1), (this.fontst.loaded !0))), this.fontst.loaded && (this.fontst.sansCase.parent.parentNode.removeChild( this.fontst.sansCase.parent ), this.fontst.monoCase.parent.parentNode.removeChild( this.fontst.monoCase.parent ))); 0 ! s && Date.now() - this.initTime 5e3 ? setTimeout(this.checkLoadedFontsBinded, 20) : setTimeout(this.setIsLoadedBinded, 10); }, setIsLoaded: function () { this.isLoaded !0; }, }; return (h.prototype l), h; })(); function SlotManager(t) { this.animationData t; } function slotFactory(t) { return new SlotManager(t); } function RenderableElement() {} (SlotManager.prototype.getProp function (t) { return this.animationData.slots && this.animationData.slotst.sid ? Object.assign(t, this.animationData.slotst.sid.p) : t; }), (RenderableElement.prototype { initRenderable: function () { (this.isInRange !1), (this.hidden !1), (this.isTransparent !1), (this.renderableComponents ); }, addRenderableComponent: function (t) { -1 this.renderableComponents.indexOf(t) && this.renderableComponents.push(t); }, removeRenderableComponent: function (t) { -1 ! this.renderableComponents.indexOf(t) && this.renderableComponents.splice( this.renderableComponents.indexOf(t), 1 ); }, prepareRenderableFrame: function (t) { this.checkLayerLimits(t); }, checkTransparency: function () { this.finalTransform.mProp.o.v 0 ? !this.isTransparent && this.globalData.renderConfig.hideOnTransparent && ((this.isTransparent !0), this.hide()) : this.isTransparent && ((this.isTransparent !1), this.show()); }, checkLayerLimits: function (t) { this.data.ip - this.data.st t && this.data.op - this.data.st > t ? !0 ! this.isInRange && ((this.globalData._mdf !0), (this._mdf !0), (this.isInRange !0), this.show()) : !1 ! this.isInRange && ((this.globalData._mdf !0), (this.isInRange !1), this.hide()); }, renderRenderable: function () { var t, e this.renderableComponents.length; for (t 0; t e; t + 1) this.renderableComponentst.renderFrame(this._isFirstFrame); }, sourceRectAtTime: function () { return { top: 0, left: 0, width: 100, height: 100 }; }, getLayerSize: function () { return 5 this.data.ty ? { w: this.data.textData.width, h: this.data.textData.height, } : { w: this.data.width, h: this.data.height }; }, }); var getBlendMode ((blendModeEnums { 0: source-over, 1: multiply, 2: screen, 3: overlay, 4: darken, 5: lighten, 6: color-dodge, 7: color-burn, 8: hard-light, 9: soft-light, 10: difference, 11: exclusion, 12: hue, 13: saturation, 14: color, 15: luminosity, }), function (t) { return blendModeEnumst || ; }), blendModeEnums; function SliderEffect(t, e, i) { this.p PropertyFactory.getProp(e, t.v, 0, 0, i); } function AngleEffect(t, e, i) { this.p PropertyFactory.getProp(e, t.v, 0, 0, i); } function ColorEffect(t, e, i) { this.p PropertyFactory.getProp(e, t.v, 1, 0, i); } function PointEffect(t, e, i) { this.p PropertyFactory.getProp(e, t.v, 1, 0, i); } function LayerIndexEffect(t, e, i) { this.p PropertyFactory.getProp(e, t.v, 0, 0, i); } function MaskIndexEffect(t, e, i) { this.p PropertyFactory.getProp(e, t.v, 0, 0, i); } function CheckboxEffect(t, e, i) { this.p PropertyFactory.getProp(e, t.v, 0, 0, i); } function NoValueEffect() { this.p {}; } function EffectsManager(t, e) { var i, r t.ef || ; this.effectElements ; var s, a r.length; for (i 0; i a; i + 1) (s new GroupEffect(ri, e)), this.effectElements.push(s); } function GroupEffect(t, e) { this.init(t, e); } function BaseElement() {} function FrameElement() {} function FootageElement(t, e, i) { this.initFrame(), this.initRenderable(), (this.assetData e.getAssetData(t.refId)), (this.footageData e.imageLoader.getAsset(this.assetData)), this.initBaseData(t, e, i); } function AudioElement(t, e, i) { this.initFrame(), this.initRenderable(), (this.assetData e.getAssetData(t.refId)), this.initBaseData(t, e, i), (this._isPlaying !1), (this._canPlay !1); var r this.globalData.getAssetsPath(this.assetData); (this.audio this.globalData.audioController.createAudio(r)), (this._currentTime 0), this.globalData.audioController.addAudio(this), (this._volumeMultiplier 1), (this._volume 1), (this._previousVolume null), (this.tm t.tm ? PropertyFactory.getProp(this, t.tm, 0, e.frameRate, this) : { _placeholder: !0 }), (this.lv PropertyFactory.getProp( this, t.au && t.au.lv ? t.au.lv : { k: 100 }, 1, 0.01, this )); } function BaseRenderer() {} extendPrototype(DynamicPropertyContainer, GroupEffect), (GroupEffect.prototype.getValue GroupEffect.prototype.iterateDynamicProperties), (GroupEffect.prototype.init function (t, e) { var i; (this.data t), (this.effectElements ), this.initDynamicPropertyContainer(e); var r, s this.data.ef.length, a this.data.ef; for (i 0; i s; i + 1) { switch (((r null), ai.ty)) { case 0: r new SliderEffect(ai, e, this); break; case 1: r new AngleEffect(ai, e, this); break; case 2: r new ColorEffect(ai, e, this); break; case 3: r new PointEffect(ai, e, this); break; case 4: case 7: r new CheckboxEffect(ai, e, this); break; case 10: r new LayerIndexEffect(ai, e, this); break; case 11: r new MaskIndexEffect(ai, e, this); break; case 5: r new EffectsManager(ai, e, this); break; default: r new NoValueEffect(ai, e, this); } r && this.effectElements.push(r); } }), (BaseElement.prototype { checkMasks: function () { if (!this.data.hasMask) return !1; for (var t 0, e this.data.masksProperties.length; t e; ) { if ( n ! this.data.masksPropertiest.mode && !1 ! this.data.masksPropertiest.cl ) return !0; t + 1; } return !1; }, initExpressions: function () { var t getExpressionInterfaces(); if (t) { var e t(layer), i t(effects), r t(shape), s t(text), a t(comp); (this.layerInterface e(this)), this.data.hasMask && this.maskManager && this.layerInterface.registerMaskInterface( this.maskManager ); var n i.createEffectsInterface(this, this.layerInterface); this.layerInterface.registerEffectsInterface(n), 0 this.data.ty || this.data.xt ? (this.compInterface a(this)) : 4 this.data.ty ? ((this.layerInterface.shapeInterface r( this.shapesData, this.itemsData, this.layerInterface )), (this.layerInterface.content this.layerInterface.shapeInterface)) : 5 this.data.ty && ((this.layerInterface.textInterface s(this)), (this.layerInterface.text this.layerInterface.textInterface)); } }, setBlendMode: function () { var t getBlendMode(this.data.bm); (this.baseElement || this.layerElement).style mix-blend-mode t; }, initBaseData: function (t, e, i) { (this.globalData e), (this.comp i), (this.data t), (this.layerId createElementID()), this.data.sr || (this.data.sr 1), (this.effectsManager new EffectsManager( this.data, this, this.dynamicProperties )); }, getType: function () { return this.type; }, sourceRectAtTime: function () {}, }), (FrameElement.prototype { initFrame: function () { (this._isFirstFrame !1), (this.dynamicProperties ), (this._mdf !1); }, prepareProperties: function (t, e) { var i, r this.dynamicProperties.length; for (i 0; i r; i + 1) (e || (this._isParent && transform this.dynamicPropertiesi.propType)) && (this.dynamicPropertiesi.getValue(), this.dynamicPropertiesi._mdf && ((this.globalData._mdf !0), (this._mdf !0))); }, addDynamicProperty: function (t) { -1 this.dynamicProperties.indexOf(t) && this.dynamicProperties.push(t); }, }), (FootageElement.prototype.prepareFrame function () {}), extendPrototype( RenderableElement, BaseElement, FrameElement, FootageElement ), (FootageElement.prototype.getBaseElement function () { return null; }), (FootageElement.prototype.renderFrame function () {}), (FootageElement.prototype.destroy function () {}), (FootageElement.prototype.initExpressions function () { var t getExpressionInterfaces(); if (t) { var e t(footage); this.layerInterface e(this); } }), (FootageElement.prototype.getFootageData function () { return this.footageData; }), (AudioElement.prototype.prepareFrame function (t) { if ( (this.prepareRenderableFrame(t, !0), this.prepareProperties(t, !0), this.tm._placeholder) ) this._currentTime t / this.data.sr; else { var e this.tm.v; this._currentTime e; } this._volume this.lv.v0; var i this._volume * this._volumeMultiplier; this._previousVolume ! i && ((this._previousVolume i), this.audio.volume(i)); }), extendPrototype( RenderableElement, BaseElement, FrameElement, AudioElement ), (AudioElement.prototype.renderFrame function () { this.isInRange && this._canPlay && (this._isPlaying ? (!this.audio.playing() || Math.abs( this._currentTime / this.globalData.frameRate - this.audio.seek() ) > 0.1) && this.audio.seek( this._currentTime / this.globalData.frameRate ) : (this.audio.play(), this.audio.seek( this._currentTime / this.globalData.frameRate ), (this._isPlaying !0))); }), (AudioElement.prototype.show function () {}), (AudioElement.prototype.hide function () { this.audio.pause(), (this._isPlaying !1); }), (AudioElement.prototype.pause function () { this.audio.pause(), (this._isPlaying !1), (this._canPlay !1); }), (AudioElement.prototype.resume function () { this._canPlay !0; }), (AudioElement.prototype.setRate function (t) { this.audio.rate(t); }), (AudioElement.prototype.volume function (t) { (this._volumeMultiplier t), (this._previousVolume t * this._volume), this.audio.volume(this._previousVolume); }), (AudioElement.prototype.getBaseElement function () { return null; }), (AudioElement.prototype.destroy function () {}), (AudioElement.prototype.sourceRectAtTime function () {}), (AudioElement.prototype.initExpressions function () {}), (BaseRenderer.prototype.checkLayers function (t) { var e, i, r this.layers.length; for (this.completeLayers !0, e r - 1; e > 0; e - 1) this.elementse || ((i this.layerse).ip - i.st t - this.layerse.st && i.op - i.st > t - this.layerse.st && this.buildItem(e)), (this.completeLayers !!this.elementse && this.completeLayers); this.checkPendingElements(); }), (BaseRenderer.prototype.createItem function (t) { switch (t.ty) { case 2: return this.createImage(t); case 0: return this.createComp(t); case 1: return this.createSolid(t); case 3: default: return this.createNull(t); case 4: return this.createShape(t); case 5: return this.createText(t); case 6: return this.createAudio(t); case 13: return this.createCamera(t); case 15: return this.createFootage(t); } }), (BaseRenderer.prototype.createCamera function () { throw new Error( Youre using a 3d camera. Try the html renderer. ); }), (BaseRenderer.prototype.createAudio function (t) { return new AudioElement(t, this.globalData, this); }), (BaseRenderer.prototype.createFootage function (t) { return new FootageElement(t, this.globalData, this); }), (BaseRenderer.prototype.buildAllItems function () { var t, e this.layers.length; for (t 0; t e; t + 1) this.buildItem(t); this.checkPendingElements(); }), (BaseRenderer.prototype.includeLayers function (t) { var e; this.completeLayers !1; var i, r t.length, s this.layers.length; for (e 0; e r; e + 1) for (i 0; i s; ) { if (this.layersi.id te.id) { this.layersi te; break; } i + 1; } }), (BaseRenderer.prototype.setProjectInterface function (t) { this.globalData.projectInterface t; }), (BaseRenderer.prototype.initItems function () { this.globalData.progressiveLoad || this.buildAllItems(); }), (BaseRenderer.prototype.buildElementParenting function (t, e, i) { for ( var r this.elements, s this.layers, a 0, n s.length; a n; ) sa.ind e && (ra && !0 ! ra ? (i.push(ra), ra.setAsParent(), void 0 ! sa.parent ? this.buildElementParenting(t, sa.parent, i) : t.setHierarchy(i)) : (this.buildItem(a), this.addPendingElement(t))), (a + 1); }), (BaseRenderer.prototype.addPendingElement function (t) { this.pendingElements.push(t); }), (BaseRenderer.prototype.searchExtraCompositions function (t) { var e, i t.length; for (e 0; e i; e + 1) if (te.xt) { var r this.createComp(te); r.initExpressions(), this.globalData.projectInterface.registerComposition(r); } }), (BaseRenderer.prototype.getElementById function (t) { var e, i this.elements.length; for (e 0; e i; e + 1) if (this.elementse.data.ind t) return this.elementse; return null; }), (BaseRenderer.prototype.getElementByPath function (t) { var e, i t.shift(); if (number typeof i) e this.elementsi; else { var r, s this.elements.length; for (r 0; r s; r + 1) if (this.elementsr.data.nm i) { e this.elementsr; break; } } return 0 t.length ? e : e.getElementByPath(t); }), (BaseRenderer.prototype.setupGlobalData function (t, e) { (this.globalData.fontManager new FontManager()), (this.globalData.slotManager slotFactory(t)), this.globalData.fontManager.addChars(t.chars), this.globalData.fontManager.addFonts(t.fonts, e), (this.globalData.getAssetData this.animationItem.getAssetData.bind(this.animationItem)), (this.globalData.getAssetsPath this.animationItem.getAssetsPath.bind(this.animationItem)), (this.globalData.imageLoader this.animationItem.imagePreloader), (this.globalData.audioController this.animationItem.audioController), (this.globalData.frameId 0), (this.globalData.frameRate t.fr), (this.globalData.nm t.nm), (this.globalData.compSize { w: t.w, h: t.h }); }); var effectTypes { TRANSFORM_EFFECT: transformEFfect }; function TransformElement() {} function MaskElement(t, e, i) { (this.data t), (this.element e), (this.globalData i), (this.storedData ), (this.masksProperties this.data.masksProperties || ), (this.maskElement null); var r, s, a this.globalData.defs, n this.masksProperties ? this.masksProperties.length : 0; (this.viewData createSizedArray(n)), (this.solidPath ); var o, h, l, p, f, m, c this.masksProperties, d 0, u , y createElementID(), g clipPath, v clip-path; for (r 0; r n; r + 1) if ( (((a ! cr.mode && n ! cr.mode) || cr.inv || 100 ! cr.o.k || cr.o.x) && ((g mask), (v mask)), (s ! cr.mode && i ! cr.mode) || 0 ! d ? (l null) : ((l createNS(rect)).setAttribute(fill, #ffffff), l.setAttribute(width, this.element.comp.data.w || 0), l.setAttribute(height, this.element.comp.data.h || 0), u.push(l)), (s createNS(path)), n cr.mode) ) (this.viewDatar { op: PropertyFactory.getProp( this.element, cr.o, 0, 0.01, this.element ), prop: ShapePropertyFactory.getShapeProp( this.element, cr, 3 ), elem: s, lastPath: , }), a.appendChild(s); else { var b; if ( ((d + 1), s.setAttribute( fill, s cr.mode ? #000000 : #ffffff ), s.setAttribute(clip-rule, nonzero), 0 ! cr.x.k ? ((g mask), (v mask), (m PropertyFactory.getProp( this.element, cr.x, 0, null, this.element )), (b createElementID()), (p createNS(filter)).setAttribute(id, b), (f createNS(feMorphology)).setAttribute( operator, erode ), f.setAttribute(in, SourceGraphic), f.setAttribute(radius, 0), p.appendChild(f), a.appendChild(p), s.setAttribute( stroke, s cr.mode ? #000000 : #ffffff )) : ((f null), (m null)), (this.storedDatar { elem: s, x: m, expan: f, lastPath: , lastOperator: , filterId: b, lastRadius: 0, }), i cr.mode) ) { h u.length; var x createNS(g); for (o 0; o h; o + 1) x.appendChild(uo); var P createNS(mask); P.setAttribute(mask-type, alpha), P.setAttribute(id, y + _ + d), P.appendChild(s), a.appendChild(P), x.setAttribute( mask, url( + getLocationHref() + # + y + _ + d + ) ), (u.length 0), u.push(x); } else u.push(s); cr.inv && !this.solidPath && (this.solidPath this.createLayerSolidPath()), (this.viewDatar { elem: s, lastPath: , op: PropertyFactory.getProp( this.element, cr.o, 0, 0.01, this.element ), prop: ShapePropertyFactory.getShapeProp( this.element, cr, 3 ), invRect: l, }), this.viewDatar.prop.k || this.drawPath( cr, this.viewDatar.prop.v, this.viewDatar ); } for ( this.maskElement createNS(g), n u.length, r 0; r n; r + 1 ) this.maskElement.appendChild(ur); d > 0 && (this.maskElement.setAttribute(id, y), this.element.maskedElement.setAttribute( v, url( + getLocationHref() + # + y + ) ), a.appendChild(this.maskElement)), this.viewData.length && this.element.addRenderableComponent(this); } (TransformElement.prototype { initTransform: function () { var t new Matrix(); (this.finalTransform { mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty( this, this.data.ks, this ) : { o: 0 }, _matMdf: !1, _localMatMdf: !1, _opMdf: !1, mat: t, localMat: t, localOpacity: 1, }), this.data.ao && (this.finalTransform.mProp.autoOriented !0), this.data.ty; }, renderTransform: function () { if ( ((this.finalTransform._opMdf this.finalTransform.mProp.o._mdf || this._isFirstFrame), (this.finalTransform._matMdf this.finalTransform.mProp._mdf || this._isFirstFrame), this.hierarchy) ) { var t, e this.finalTransform.mat, i 0, r this.hierarchy.length; if (!this.finalTransform._matMdf) for (; i r; ) { if (this.hierarchyi.finalTransform.mProp._mdf) { this.finalTransform._matMdf !0; break; } i + 1; } if (this.finalTransform._matMdf) for ( t this.finalTransform.mProp.v.props, e.cloneFromProps(t), i 0; i r; i + 1 ) e.multiply(this.hierarchyi.finalTransform.mProp.v); } this.finalTransform._matMdf && (this.finalTransform._localMatMdf this.finalTransform._matMdf), this.finalTransform._opMdf && (this.finalTransform.localOpacity this.finalTransform.mProp.o.v); }, renderLocalTransform: function () { if (this.localTransforms) { var t 0, e this.localTransforms.length; if ( ((this.finalTransform._localMatMdf this.finalTransform._matMdf), !this.finalTransform._localMatMdf || !this.finalTransform._opMdf) ) for (; t e; ) this.localTransformst._mdf && (this.finalTransform._localMatMdf !0), this.localTransformst._opMdf && !this.finalTransform._opMdf && ((this.finalTransform.localOpacity this.finalTransform.mProp.o.v), (this.finalTransform._opMdf !0)), (t + 1); if (this.finalTransform._localMatMdf) { var i this.finalTransform.localMat; for ( this.localTransforms0.matrix.clone(i), t 1; t e; t + 1 ) { var r this.localTransformst.matrix; i.multiply(r); } i.multiply(this.finalTransform.mat); } if (this.finalTransform._opMdf) { var s this.finalTransform.localOpacity; for (t 0; t e; t + 1) s * 0.01 * this.localTransformst.opacity; this.finalTransform.localOpacity s; } } }, searchEffectTransforms: function () { if (this.renderableEffectsManager) { var t this.renderableEffectsManager.getEffects( effectTypes.TRANSFORM_EFFECT ); if (t.length) { (this.localTransforms ), (this.finalTransform.localMat new Matrix()); var e 0, i t.length; for (e 0; e i; e + 1) this.localTransforms.push(te); } } }, globalToLocal: function (t) { var e ; e.push(this.finalTransform); for (var i, r !0, s this.comp; r; ) s.finalTransform ? (s.data.hasMask && e.splice(0, 0, s.finalTransform), (s s.comp)) : (r !1); var a, n e.length; for (i 0; i n; i + 1) (a ei.mat.applyToPointArray(0, 0, 0)), (t t0 - a0, t1 - a1, 0); return t; }, mHelper: new Matrix(), }), (MaskElement.prototype.getMaskProperty function (t) { return this.viewDatat.prop; }), (MaskElement.prototype.renderFrame function (t) { var e, i this.element.finalTransform.mat, r this.masksProperties.length; for (e 0; e r; e + 1) if ( ((this.viewDatae.prop._mdf || t) && this.drawPath( this.masksPropertiese, this.viewDatae.prop.v, this.viewDatae ), (this.viewDatae.op._mdf || t) && this.viewDatae.elem.setAttribute( fill-opacity, this.viewDatae.op.v ), n ! this.masksPropertiese.mode && (this.viewDatae.invRect && (this.element.finalTransform.mProp._mdf || t) && this.viewDatae.invRect.setAttribute( transform, i.getInverseMatrix().to2dCSS() ), this.storedDatae.x && (this.storedDatae.x._mdf || t))) ) { var s this.storedDatae.expan; this.storedDatae.x.v 0 ? (erode ! this.storedDatae.lastOperator && ((this.storedDatae.lastOperator erode), this.storedDatae.elem.setAttribute( filter, url( + getLocationHref() + # + this.storedDatae.filterId + ) )), s.setAttribute(radius, -this.storedDatae.x.v)) : (dilate ! this.storedDatae.lastOperator && ((this.storedDatae.lastOperator dilate), this.storedDatae.elem.setAttribute(filter, null)), this.storedDatae.elem.setAttribute( stroke-width, 2 * this.storedDatae.x.v )); } }), (MaskElement.prototype.getMaskelement function () { return this.maskElement; }), (MaskElement.prototype.createLayerSolidPath function () { var t M0,0 ; return ( (t + h + this.globalData.compSize.w), (t + v + this.globalData.compSize.h), (t + h- + this.globalData.compSize.w), (t + v- + this.globalData.compSize.h + ) ); }), (MaskElement.prototype.drawPath function (t, e, i) { var r, s, a M + e.v00 + , + e.v01; for (s e._length, r 1; r s; r + 1) a + C + e.or - 10 + , + e.or - 11 + + e.ir0 + , + e.ir1 + + e.vr0 + , + e.vr1; if ( (e.c && s > 1 && (a + C + e.or - 10 + , + e.or - 11 + + e.i00 + , + e.i01 + + e.v00 + , + e.v01), i.lastPath ! a) ) { var n ; i.elem && (e.c && (n t.inv ? this.solidPath + a : a), i.elem.setAttribute(d, n)), (i.lastPath a); } }), (MaskElement.prototype.destroy function () { (this.element null), (this.globalData null), (this.maskElement null), (this.data null), (this.masksProperties null); }); var filtersFactory (function () { var t {}; return ( (t.createFilter function (t, e) { var i createNS(filter); i.setAttribute(id, t), !0 ! e && (i.setAttribute(filterUnits, objectBoundingBox), i.setAttribute(x, 0%), i.setAttribute(y, 0%), i.setAttribute(width, 100%), i.setAttribute(height, 100%)); return i; }), (t.createAlphaToLuminanceFilter function () { var t createNS(feColorMatrix); return ( t.setAttribute(type, matrix), t.setAttribute(color-interpolation-filters, sRGB), t.setAttribute( values, 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 ), t ); }), t ); })(), featureSupport (function () { var t { maskType: !0, svgLumaHidden: !0, offscreenCanvas: undefined ! typeof OffscreenCanvas, }; return ( (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\/\d./i.test(navigator.userAgent)) && (t.maskType !1), /firefox/i.test(navigator.userAgent) && (t.svgLumaHidden !1), t ); })(), registeredEffects$1 {}, idPrefix filter_result_; function SVGEffects(t) { var e, i, r SourceGraphic, s t.data.ef ? t.data.ef.length : 0, a createElementID(), n filtersFactory.createFilter(a, !0), o 0; for (this.filters , e 0; e s; e + 1) { i null; var h t.data.efe.ty; if (registeredEffects$1h) (i new (0, registeredEffects$1h.effect)( n, t.effectsManager.effectElementse, t, idPrefix + o, r )), (r idPrefix + o), registeredEffects$1h.countsAsEffect && (o + 1); i && this.filters.push(i); } o && (t.globalData.defs.appendChild(n), t.layerElement.setAttribute( filter, url( + getLocationHref() + # + a + ) )), this.filters.length && t.addRenderableComponent(this); } function registerEffect$1(t, e, i) { registeredEffects$1t { effect: e, countsAsEffect: i }; } function SVGBaseElement() {} function HierarchyElement() {} function RenderableDOMElement() {} function IImageElement(t, e, i) { (this.assetData e.getAssetData(t.refId)), this.assetData && this.assetData.sid && (this.assetData e.slotManager.getProp(this.assetData)), this.initElement(t, e, i), (this.sourceRect { top: 0, left: 0, width: this.assetData.w, height: this.assetData.h, }); } function ProcessedElement(t, e) { (this.elem t), (this.pos e); } function IShapeElement() {} (SVGEffects.prototype.renderFrame function (t) { var e, i this.filters.length; for (e 0; e i; e + 1) this.filterse.renderFrame(t); }), (SVGEffects.prototype.getEffects function (t) { var e, i this.filters.length, r ; for (e 0; e i; e + 1) this.filterse.type t && r.push(this.filterse); return r; }), (SVGBaseElement.prototype { initRendererElement: function () { this.layerElement createNS(g); }, createContainerElements: function () { (this.matteElement createNS(g)), (this.transformedElement this.layerElement), (this.maskedElement this.layerElement), (this._sizeChanged !1); var t null; if (this.data.td) { this.matteMasks {}; var e createNS(g); e.setAttribute(id, this.layerId), e.appendChild(this.layerElement), (t e), this.globalData.defs.appendChild(e); } else this.data.tt ? (this.matteElement.appendChild(this.layerElement), (t this.matteElement), (this.baseElement this.matteElement)) : (this.baseElement this.layerElement); if ( (this.data.ln && this.layerElement.setAttribute(id, this.data.ln), this.data.cl && this.layerElement.setAttribute(class, this.data.cl), 0 this.data.ty && !this.data.hd) ) { var i createNS(clipPath), r createNS(path); r.setAttribute( d, M0,0 L + this.data.w + ,0 L + this.data.w + , + this.data.h + L0, + this.data.h + z ); var s createElementID(); if ( (i.setAttribute(id, s), i.appendChild(r), this.globalData.defs.appendChild(i), this.checkMasks()) ) { var a createNS(g); a.setAttribute( clip-path, url( + getLocationHref() + # + s + ) ), a.appendChild(this.layerElement), (this.transformedElement a), t ? t.appendChild(this.transformedElement) : (this.baseElement this.transformedElement); } else this.layerElement.setAttribute( clip-path, url( + getLocationHref() + # + s + ) ); } 0 ! this.data.bm && this.setBlendMode(); }, renderElement: function () { this.finalTransform._localMatMdf && this.transformedElement.setAttribute( transform, this.finalTransform.localMat.to2dCSS() ), this.finalTransform._opMdf && this.transformedElement.setAttribute( opacity, this.finalTransform.localOpacity ); }, destroyBaseElement: function () { (this.layerElement null), (this.matteElement null), this.maskManager.destroy(); }, getBaseElement: function () { return this.data.hd ? null : this.baseElement; }, createRenderableComponents: function () { (this.maskManager new MaskElement( this.data, this, this.globalData )), (this.renderableEffectsManager new SVGEffects(this)), this.searchEffectTransforms(); }, getMatte: function (t) { if ( (this.matteMasks || (this.matteMasks {}), !this.matteMaskst) ) { var e, i, r, s, a this.layerId + _ + t; if (1 t || 3 t) { var n createNS(mask); n.setAttribute(id, a), n.setAttribute( mask-type, 3 t ? luminance : alpha ), (r createNS(use)).setAttributeNS( http://www.w3.org/1999/xlink, href, # + this.layerId ), n.appendChild(r), this.globalData.defs.appendChild(n), featureSupport.maskType || 1 ! t || (n.setAttribute(mask-type, luminance), (e createElementID()), (i filtersFactory.createFilter(e)), this.globalData.defs.appendChild(i), i.appendChild( filtersFactory.createAlphaToLuminanceFilter() ), (s createNS(g)).appendChild(r), n.appendChild(s), s.setAttribute( filter, url( + getLocationHref() + # + e + ) )); } else if (2 t) { var o createNS(mask); o.setAttribute(id, a), o.setAttribute(mask-type, alpha); var h createNS(g); o.appendChild(h), (e createElementID()), (i filtersFactory.createFilter(e)); var l createNS(feComponentTransfer); l.setAttribute(in, SourceGraphic), i.appendChild(l); var p createNS(feFuncA); p.setAttribute(type, table), p.setAttribute(tableValues, 1.0 0.0), l.appendChild(p), this.globalData.defs.appendChild(i); var f createNS(rect); f.setAttribute(width, this.comp.data.w), f.setAttribute(height, this.comp.data.h), f.setAttribute(x, 0), f.setAttribute(y, 0), f.setAttribute(fill, #ffffff), f.setAttribute(opacity, 0), h.setAttribute( filter, url( + getLocationHref() + # + e + ) ), h.appendChild(f), (r createNS(use)).setAttributeNS( http://www.w3.org/1999/xlink, href, # + this.layerId ), h.appendChild(r), featureSupport.maskType || (o.setAttribute(mask-type, luminance), i.appendChild( filtersFactory.createAlphaToLuminanceFilter() ), (s createNS(g)), h.appendChild(f), s.appendChild(this.layerElement), h.appendChild(s)), this.globalData.defs.appendChild(o); } this.matteMaskst a; } return this.matteMaskst; }, setMatte: function (t) { this.matteElement && this.matteElement.setAttribute( mask, url( + getLocationHref() + # + t + ) ); }, }), (HierarchyElement.prototype { initHierarchy: function () { (this.hierarchy ), (this._isParent !1), this.checkParenting(); }, setHierarchy: function (t) { this.hierarchy t; }, setAsParent: function () { this._isParent !0; }, checkParenting: function () { void 0 ! this.data.parent && this.comp.buildElementParenting(this, this.data.parent, ); }, }), extendPrototype( RenderableElement, createProxyFunction({ initElement: function (t, e, i) { this.initFrame(), this.initBaseData(t, e, i), this.initTransform(t, e, i), this.initHierarchy(), this.initRenderable(), this.initRendererElement(), this.createContainerElements(), this.createRenderableComponents(), this.createContent(), this.hide(); }, hide: function () { this.hidden || (this.isInRange && !this.isTransparent) || (((this.baseElement || this.layerElement).style.display none), (this.hidden !0)); }, show: function () { this.isInRange && !this.isTransparent && (this.data.hd || ((this.baseElement || this.layerElement).style.display block), (this.hidden !1), (this._isFirstFrame !0)); }, renderFrame: function () { this.data.hd || this.hidden || (this.renderTransform(), this.renderRenderable(), this.renderLocalTransform(), this.renderElement(), this.renderInnerContent(), this._isFirstFrame && (this._isFirstFrame !1)); }, renderInnerContent: function () {}, prepareFrame: function (t) { (this._mdf !1), this.prepareRenderableFrame(t), this.prepareProperties(t, this.isInRange), this.checkTransparency(); }, destroy: function () { (this.innerElem null), this.destroyBaseElement(); }, }), , RenderableDOMElement ), extendPrototype( BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, , IImageElement ), (IImageElement.prototype.createContent function () { var t this.globalData.getAssetsPath(this.assetData); (this.innerElem createNS(image)), this.innerElem.setAttribute(width, this.assetData.w + px), this.innerElem.setAttribute(height, this.assetData.h + px), this.innerElem.setAttribute( preserveAspectRatio, this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio ), this.innerElem.setAttributeNS( http://www.w3.org/1999/xlink, href, t ), this.layerElement.appendChild(this.innerElem); }), (IImageElement.prototype.sourceRectAtTime function () { return this.sourceRect; }), (IShapeElement.prototype { addShapeToModifiers: function (t) { var e, i this.shapeModifiers.length; for (e 0; e i; e + 1) this.shapeModifierse.addShape(t); }, isShapeInAnimatedModifiers: function (t) { for (var e this.shapeModifiers.length; 0 e; ) if (this.shapeModifiers0.isAnimatedWithShape(t)) return !0; return !1; }, renderModifiers: function () { if (this.shapeModifiers.length) { var t, e this.shapes.length; for (t 0; t e; t + 1) this.shapest.sh.reset(); for ( t (e this.shapeModifiers.length) - 1; t > 0 && !this.shapeModifierst.processShapes(this._isFirstFrame); t - 1 ); } }, searchProcessedElement: function (t) { for ( var e this.processedElements, i 0, r e.length; i r; ) { if (ei.elem t) return ei.pos; i + 1; } return 0; }, addProcessedElement: function (t, e) { for (var i this.processedElements, r i.length; r; ) if (i(r - 1).elem t) return void (ir.pos e); i.push(new ProcessedElement(t, e)); }, prepareFrame: function (t) { this.prepareRenderableFrame(t), this.prepareProperties(t, this.isInRange); }, }); var lineCapEnum { 1: butt, 2: round, 3: square }, lineJoinEnum { 1: miter, 2: round, 3: bevel }; function SVGShapeData(t, e, i) { (this.caches ), (this.styles ), (this.transformers t), (this.lStr ), (this.sh i), (this.lvl e), (this._isAnimated !!i.k); for (var r 0, s t.length; r s; ) { if (tr.mProps.dynamicProperties.length) { this._isAnimated !0; break; } r + 1; } } function SVGStyleData(t, e) { (this.data t), (this.type t.ty), (this.d ), (this.lvl e), (this._mdf !1), (this.closed !0 t.hd), (this.pElem createNS(path)), (this.msElem null); } function DashProperty(t, e, i, r) { var s; (this.elem t), (this.frameId -1), (this.dataProps createSizedArray(e.length)), (this.renderer i), (this.k !1), (this.dashStr ), (this.dashArray createTypedArray( float32, e.length ? e.length - 1 : 0 )), (this.dashoffset createTypedArray(float32, 1)), this.initDynamicPropertyContainer(r); var a, n e.length || 0; for (s 0; s n; s + 1) (a PropertyFactory.getProp(t, es.v, 0, 0, this)), (this.k a.k || this.k), (this.dataPropss { n: es.n, p: a }); this.k || this.getValue(!0), (this._isAnimated this.k); } function SVGStrokeStyleData(t, e, i) { this.initDynamicPropertyContainer(t), (this.getValue this.iterateDynamicProperties), (this.o PropertyFactory.getProp(t, e.o, 0, 0.01, this)), (this.w PropertyFactory.getProp(t, e.w, 0, null, this)), (this.d new DashProperty(t, e.d || {}, svg, this)), (this.c PropertyFactory.getProp(t, e.c, 1, 255, this)), (this.style i), (this._isAnimated !!this._isAnimated); } function SVGFillStyleData(t, e, i) { this.initDynamicPropertyContainer(t), (this.getValue this.iterateDynamicProperties), (this.o PropertyFactory.getProp(t, e.o, 0, 0.01, this)), (this.c PropertyFactory.getProp(t, e.c, 1, 255, this)), (this.style i); } function SVGNoStyleData(t, e, i) { this.initDynamicPropertyContainer(t), (this.getValue this.iterateDynamicProperties), (this.style i); } function GradientProperty(t, e, i) { (this.data e), (this.c createTypedArray(uint8c, 4 * e.p)); var r e.k.k0.s ? e.k.k0.s.length - 4 * e.p : e.k.k.length - 4 * e.p; (this.o createTypedArray(float32, r)), (this._cmdf !1), (this._omdf !1), (this._collapsable this.checkCollapsable()), (this._hasOpacity r), this.initDynamicPropertyContainer(i), (this.prop PropertyFactory.getProp(t, e.k, 1, null, this)), (this.k this.prop.k), this.getValue(!0); } function SVGGradientFillStyleData(t, e, i) { this.initDynamicPropertyContainer(t), (this.getValue this.iterateDynamicProperties), this.initGradientData(t, e, i); } function SVGGradientStrokeStyleData(t, e, i) { this.initDynamicPropertyContainer(t), (this.getValue this.iterateDynamicProperties), (this.w PropertyFactory.getProp(t, e.w, 0, null, this)), (this.d new DashProperty(t, e.d || {}, svg, this)), this.initGradientData(t, e, i), (this._isAnimated !!this._isAnimated); } function ShapeGroupData() { (this.it ), (this.prevViewData ), (this.gr createNS(g)); } function SVGTransformData(t, e, i) { (this.transform { mProps: t, op: e, container: i }), (this.elements ), (this._isAnimated this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length); } (SVGShapeData.prototype.setAsAnimated function () { this._isAnimated !0; }), (SVGStyleData.prototype.reset function () { (this.d ), (this._mdf !1); }), (DashProperty.prototype.getValue function (t) { if ( (this.elem.globalData.frameId ! this.frameId || t) && ((this.frameId this.elem.globalData.frameId), this.iterateDynamicProperties(), (this._mdf this._mdf || t), this._mdf) ) { var e 0, i this.dataProps.length; for ( svg this.renderer && (this.dashStr ), e 0; e i; e + 1 ) o ! this.dataPropse.n ? svg this.renderer ? (this.dashStr + + this.dataPropse.p.v) : (this.dashArraye this.dataPropse.p.v) : (this.dashoffset0 this.dataPropse.p.v); } }), extendPrototype(DynamicPropertyContainer, DashProperty), extendPrototype(DynamicPropertyContainer, SVGStrokeStyleData), extendPrototype(DynamicPropertyContainer, SVGFillStyleData), extendPrototype(DynamicPropertyContainer, SVGNoStyleData), (GradientProperty.prototype.comparePoints function (t, e) { for (var i 0, r this.o.length / 2; i r; ) { if (Math.abs(t4 * i - t4 * e + 2 * i) > 0.01) return !1; i + 1; } return !0; }), (GradientProperty.prototype.checkCollapsable function () { if (this.o.length / 2 ! this.c.length / 4) return !1; if (this.data.k.k0.s) for (var t 0, e this.data.k.k.length; t e; ) { if (!this.comparePoints(this.data.k.kt.s, this.data.p)) return !1; t + 1; } else if (!this.comparePoints(this.data.k.k, this.data.p)) return !1; return !0; }), (GradientProperty.prototype.getValue function (t) { if ( (this.prop.getValue(), (this._mdf !1), (this._cmdf !1), (this._omdf !1), this.prop._mdf || t) ) { var e, i, r, s 4 * this.data.p; for (e 0; e s; e + 1) (i e % 4 0 ? 100 : 255), (r Math.round(this.prop.ve * i)), this.ce ! r && ((this.ce r), (this._cmdf !t)); if (this.o.length) for ( s this.prop.v.length, e 4 * this.data.p; e s; e + 1 ) (i e % 2 0 ? 100 : 1), (r e % 2 0 ? Math.round(100 * this.prop.ve) : this.prop.ve), this.oe - 4 * this.data.p ! r && ((this.oe - 4 * this.data.p r), (this._omdf !t)); this._mdf !t; } }), extendPrototype(DynamicPropertyContainer, GradientProperty), (SVGGradientFillStyleData.prototype.initGradientData function ( t, e, i ) { (this.o PropertyFactory.getProp(t, e.o, 0, 0.01, this)), (this.s PropertyFactory.getProp(t, e.s, 1, null, this)), (this.e PropertyFactory.getProp(t, e.e, 1, null, this)), (this.h PropertyFactory.getProp( t, e.h || { k: 0 }, 0, 0.01, this )), (this.a PropertyFactory.getProp( t, e.a || { k: 0 }, 0, degToRads, this )), (this.g new GradientProperty(t, e.g, this)), (this.style i), (this.stops ), this.setGradientData(i.pElem, e), this.setGradientOpacity(e, i), (this._isAnimated !!this._isAnimated); }), (SVGGradientFillStyleData.prototype.setGradientData function ( t, e ) { var i createElementID(), r createNS(1 e.t ? linearGradient : radialGradient); r.setAttribute(id, i), r.setAttribute(spreadMethod, pad), r.setAttribute(gradientUnits, userSpaceOnUse); var s, a, n, o ; for (n 4 * e.g.p, a 0; a n; a + 4) (s createNS(stop)), r.appendChild(s), o.push(s); t.setAttribute( gf e.ty ? fill : stroke, url( + getLocationHref() + # + i + ) ), (this.gf r), (this.cst o); }), (SVGGradientFillStyleData.prototype.setGradientOpacity function ( t, e ) { if (this.g._hasOpacity && !this.g._collapsable) { var i, r, s, a createNS(mask), n createNS(path); a.appendChild(n); var o createElementID(), h createElementID(); a.setAttribute(id, h); var l createNS( 1 t.t ? linearGradient : radialGradient ); l.setAttribute(id, o), l.setAttribute(spreadMethod, pad), l.setAttribute(gradientUnits, userSpaceOnUse), (s t.g.k.k0.s ? t.g.k.k0.s.length : t.g.k.k.length); var p this.stops; for (r 4 * t.g.p; r s; r + 2) (i createNS(stop)).setAttribute( stop-color, rgb(255,255,255) ), l.appendChild(i), p.push(i); n.setAttribute( gf t.ty ? fill : stroke, url( + getLocationHref() + # + o + ) ), gs t.ty && (n.setAttribute(stroke-linecap, lineCapEnumt.lc || 2), n.setAttribute(stroke-linejoin, lineJoinEnumt.lj || 2), 1 t.lj && n.setAttribute(stroke-miterlimit, t.ml)), (this.of l), (this.ms a), (this.ost p), (this.maskId h), (e.msElem n); } }), extendPrototype( DynamicPropertyContainer, SVGGradientFillStyleData ), extendPrototype( SVGGradientFillStyleData, DynamicPropertyContainer, SVGGradientStrokeStyleData ); var buildShapeString function (t, e, i, r) { if (0 e) return ; var s, a t.o, n t.i, o t.v, h M + r.applyToPointStringified(o00, o01); for (s 1; s e; s + 1) h + C + r.applyToPointStringified(as - 10, as - 11) + + r.applyToPointStringified(ns0, ns1) + + r.applyToPointStringified(os0, os1); return ( i && e && ((h + C + r.applyToPointStringified(as - 10, as - 11) + + r.applyToPointStringified(n00, n01) + + r.applyToPointStringified(o00, o01)), (h + z)), h ); }, SVGElementsRenderer (function () { var t new Matrix(), e new Matrix(); function i(t, e, i) { (i || e.transform.op._mdf) && e.transform.container.setAttribute( opacity, e.transform.op.v ), (i || e.transform.mProps._mdf) && e.transform.container.setAttribute( transform, e.transform.mProps.v.to2dCSS() ); } function r() {} function s(i, r, s) { var a, n, o, h, l, p, f, m, c, d, u r.styles.length, y r.lvl; for (p 0; p u; p + 1) { if (((h r.sh._mdf || s), r.stylesp.lvl y)) { for ( m e.reset(), c y - r.stylesp.lvl, d r.transformers.length - 1; !h && c > 0; ) (h r.transformersd.mProps._mdf || h), (c - 1), (d - 1); if (h) for ( c y - r.stylesp.lvl, d r.transformers.length - 1; c > 0; ) m.multiply(r.transformersd.mProps.v), (c - 1), (d - 1); } else m t; if (((n (f r.sh.paths)._length), h)) { for (o , a 0; a n; a + 1) (l f.shapesa) && l._length && (o + buildShapeString(l, l._length, l.c, m)); r.cachesp o; } else o r.cachesp; (r.stylesp.d + !0 i.hd ? : o), (r.stylesp._mdf h || r.stylesp._mdf); } } function a(t, e, i) { var r e.style; (e.c._mdf || i) && r.pElem.setAttribute( fill, rgb( + bmFloor(e.c.v0) + , + bmFloor(e.c.v1) + , + bmFloor(e.c.v2) + ) ), (e.o._mdf || i) && r.pElem.setAttribute(fill-opacity, e.o.v); } function n(t, e, i) { o(t, e, i), h(t, e, i); } function o(t, e, i) { var r, s, a, n, o, h e.gf, l e.g._hasOpacity, p e.s.v, f e.e.v; if (e.o._mdf || i) { var m gf t.ty ? fill-opacity : stroke-opacity; e.style.pElem.setAttribute(m, e.o.v); } if (e.s._mdf || i) { var c 1 t.t ? x1 : cx, d x1 c ? y1 : cy; h.setAttribute(c, p0), h.setAttribute(d, p1), l && !e.g._collapsable && (e.of.setAttribute(c, p0), e.of.setAttribute(d, p1)); } if (e.g._cmdf || i) { r e.cst; var u e.g.c; for (a r.length, s 0; s a; s + 1) (n rs).setAttribute(offset, u4 * s + %), n.setAttribute( stop-color, rgb( + u4 * s + 1 + , + u4 * s + 2 + , + u4 * s + 3 + ) ); } if (l && (e.g._omdf || i)) { var y e.g.o; for ( a (r e.g._collapsable ? e.cst : e.ost).length, s 0; s a; s + 1 ) (n rs), e.g._collapsable || n.setAttribute(offset, y2 * s + %), n.setAttribute(stop-opacity, y2 * s + 1); } if (1 t.t) (e.e._mdf || i) && (h.setAttribute(x2, f0), h.setAttribute(y2, f1), l && !e.g._collapsable && (e.of.setAttribute(x2, f0), e.of.setAttribute(y2, f1))); else if ( ((e.s._mdf || e.e._mdf || i) && ((o Math.sqrt( Math.pow(p0 - f0, 2) + Math.pow(p1 - f1, 2) )), h.setAttribute(r, o), l && !e.g._collapsable && e.of.setAttribute(r, o)), e.e._mdf || e.h._mdf || e.a._mdf || i) ) { o || (o Math.sqrt( Math.pow(p0 - f0, 2) + Math.pow(p1 - f1, 2) )); var g Math.atan2(f1 - p1, f0 - p0), v e.h.v; v > 1 ? (v 0.99) : v -1 && (v -0.99); var b o * v, x Math.cos(g + e.a.v) * b + p0, P Math.sin(g + e.a.v) * b + p1; h.setAttribute(fx, x), h.setAttribute(fy, P), l && !e.g._collapsable && (e.of.setAttribute(fx, x), e.of.setAttribute(fy, P)); } } function h(t, e, i) { var r e.style, s e.d; s && (s._mdf || i) && s.dashStr && (r.pElem.setAttribute(stroke-dasharray, s.dashStr), r.pElem.setAttribute(stroke-dashoffset, s.dashoffset0)), e.c && (e.c._mdf || i) && r.pElem.setAttribute( stroke, rgb( + bmFloor(e.c.v0) + , + bmFloor(e.c.v1) + , + bmFloor(e.c.v2) + ) ), (e.o._mdf || i) && r.pElem.setAttribute(stroke-opacity, e.o.v), (e.w._mdf || i) && (r.pElem.setAttribute(stroke-width, e.w.v), r.msElem && r.msElem.setAttribute(stroke-width, e.w.v)); } return { createRenderFunction: function (t) { switch (t.ty) { case fl: return a; case gf: return o; case gs: return n; case st: return h; case sh: case el: case rc: case sr: return s; case tr: return i; case no: return r; default: return null; } }, }; })(); function SVGShapeElement(t, e, i) { (this.shapes ), (this.shapesData t.shapes), (this.stylesList ), (this.shapeModifiers ), (this.itemsData ), (this.processedElements ), (this.animatedContents ), this.initElement(t, e, i), (this.prevViewData ); } function LetterProps(t, e, i, r, s, a) { (this.o t), (this.sw e), (this.sc i), (this.fc r), (this.m s), (this.p a), (this._mdf { o: !0, sw: !!e, sc: !!i, fc: !!r, m: !0, p: !0 }); } function TextProperty(t, e) { (this._frameId initialDefaultFrame), (this.pv ), (this.v ), (this.kf !1), (this._isFirstFrame !0), (this._mdf !1), e.d && e.d.sid && (e.d t.globalData.slotManager.getProp(e.d)), (this.data e), (this.elem t), (this.comp this.elem.comp), (this.keysIndex 0), (this.canResize !1), (this.minimumFontSize 1), (this.effectsSequence ), (this.currentData { ascent: 0, boxWidth: this.defaultBoxWidth, f: , fStyle: , fWeight: , fc: , j: , justifyOffset: , l: , lh: 0, lineWidths: , ls: , of: , s: , sc: , sw: 0, t: 0, tr: 0, sz: 0, ps: null, fillColorAnim: !1, strokeColorAnim: !1, strokeWidthAnim: !1, yOffset: 0, finalSize: 0, finalText: , finalLineHeight: 0, __complete: !1, }), this.copyData(this.currentData, this.data.d.k0.s), this.searchProperty() || this.completeTextData(this.currentData); } extendPrototype( BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement, , SVGShapeElement ), (SVGShapeElement.prototype.initSecondaryElement function () {}), (SVGShapeElement.prototype.identityMatrix new Matrix()), (SVGShapeElement.prototype.buildExpressionInterface function () {}), (SVGShapeElement.prototype.createContent function () { this.searchShapes( this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, , !0 ), this.filterUniqueShapes(); }), (SVGShapeElement.prototype.filterUniqueShapes function () { var t, e, i, r, s this.shapes.length, a this.stylesList.length, n , o !1; for (i 0; i a; i + 1) { for ( r this.stylesListi, o !1, n.length 0, t 0; t s; t + 1 ) -1 ! (e this.shapest).styles.indexOf(r) && (n.push(e), (o e._isAnimated || o)); n.length > 1 && o && this.setShapesAsAnimated(n); } }), (SVGShapeElement.prototype.setShapesAsAnimated function (t) { var e, i t.length; for (e 0; e i; e + 1) te.setAsAnimated(); }), (SVGShapeElement.prototype.createStyleElement function (t, e) { var i, r new SVGStyleData(t, e), s r.pElem; if (st t.ty) i new SVGStrokeStyleData(this, t, r); else if (fl t.ty) i new SVGFillStyleData(this, t, r); else if (gf t.ty || gs t.ty) { (i new ( gf t.ty ? SVGGradientFillStyleData : SVGGradientStrokeStyleData )(this, t, r)), this.globalData.defs.appendChild(i.gf), i.maskId && (this.globalData.defs.appendChild(i.ms), this.globalData.defs.appendChild(i.of), s.setAttribute( mask, url( + getLocationHref() + # + i.maskId + ) )); } else no t.ty && (i new SVGNoStyleData(this, t, r)); return ( (st ! t.ty && gs ! t.ty) || (s.setAttribute(stroke-linecap, lineCapEnumt.lc || 2), s.setAttribute(stroke-linejoin, lineJoinEnumt.lj || 2), s.setAttribute(fill-opacity, 0), 1 t.lj && s.setAttribute(stroke-miterlimit, t.ml)), 2 t.r && s.setAttribute(fill-rule, evenodd), t.ln && s.setAttribute(id, t.ln), t.cl && s.setAttribute(class, t.cl), t.bm && (s.stylemix-blend-mode getBlendMode(t.bm)), this.stylesList.push(r), this.addToAnimatedContents(t, i), i ); }), (SVGShapeElement.prototype.createGroupElement function (t) { var e new ShapeGroupData(); return ( t.ln && e.gr.setAttribute(id, t.ln), t.cl && e.gr.setAttribute(class, t.cl), t.bm && (e.gr.stylemix-blend-mode getBlendMode(t.bm)), e ); }), (SVGShapeElement.prototype.createTransformElement function ( t, e ) { var i TransformPropertyFactory.getTransformProperty( this, t, this ), r new SVGTransformData(i, i.o, e); return this.addToAnimatedContents(t, r), r; }), (SVGShapeElement.prototype.createShapeElement function (t, e, i) { var r 4; rc t.ty ? (r 5) : el t.ty ? (r 6) : sr t.ty && (r 7); var s new SVGShapeData( e, i, ShapePropertyFactory.getShapeProp(this, t, r, this) ); return ( this.shapes.push(s), this.addShapeToModifiers(s), this.addToAnimatedContents(t, s), s ); }), (SVGShapeElement.prototype.addToAnimatedContents function (t, e) { for (var i 0, r this.animatedContents.length; i r; ) { if (this.animatedContentsi.element e) return; i + 1; } this.animatedContents.push({ fn: SVGElementsRenderer.createRenderFunction(t), element: e, data: t, }); }), (SVGShapeElement.prototype.setElementStyles function (t) { var e, i t.styles, r this.stylesList.length; for (e 0; e r; e + 1) this.stylesListe.closed || i.push(this.stylesListe); }), (SVGShapeElement.prototype.reloadShapes function () { var t; this._isFirstFrame !0; var e this.itemsData.length; for (t 0; t e; t + 1) this.prevViewDatat this.itemsDatat; for ( this.searchShapes( this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, , !0 ), this.filterUniqueShapes(), e this.dynamicProperties.length, t 0; t e; t + 1 ) this.dynamicPropertiest.getValue(); this.renderModifiers(); }), (SVGShapeElement.prototype.searchShapes function ( t, e, i, r, s, a, n ) { var o, h, l, p, f, m, c .concat(a), d t.length - 1, u , y ; for (o d; o > 0; o - 1) { if ( ((m this.searchProcessedElement(to)) ? (eo im - 1) : (to._render n), fl to.ty || st to.ty || gf to.ty || gs to.ty || no to.ty) ) m ? (eo.style.closed !1) : (eo this.createStyleElement(to, s)), to._render && eo.style.pElem.parentNode ! r && r.appendChild(eo.style.pElem), u.push(eo.style); else if (gr to.ty) { if (m) for (l eo.it.length, h 0; h l; h + 1) eo.prevViewDatah eo.ith; else eo this.createGroupElement(to); this.searchShapes( to.it, eo.it, eo.prevViewData, eo.gr, s + 1, c, n ), to._render && eo.gr.parentNode ! r && r.appendChild(eo.gr); } else tr to.ty ? (m || (eo this.createTransformElement(to, r)), (p eo.transform), c.push(p)) : sh to.ty || rc to.ty || el to.ty || sr to.ty ? (m || (eo this.createShapeElement(to, c, s)), this.setElementStyles(eo)) : tm to.ty || rd to.ty || ms to.ty || pb to.ty || zz to.ty || op to.ty ? (m ? ((f eo).closed !1) : ((f ShapeModifiers.getModifier(to.ty)).init( this, to ), (eo f), this.shapeModifiers.push(f)), y.push(f)) : rp to.ty && (m ? ((f eo).closed !0) : ((f ShapeModifiers.getModifier(to.ty)), (eo f), f.init(this, t, o, e), this.shapeModifiers.push(f), (n !1)), y.push(f)); this.addProcessedElement(to, o + 1); } for (d u.length, o 0; o d; o + 1) uo.closed !0; for (d y.length, o 0; o d; o + 1) yo.closed !0; }), (SVGShapeElement.prototype.renderInnerContent function () { var t; this.renderModifiers(); var e this.stylesList.length; for (t 0; t e; t + 1) this.stylesListt.reset(); for (this.renderShape(), t 0; t e; t + 1) (this.stylesListt._mdf || this._isFirstFrame) && (this.stylesListt.msElem && (this.stylesListt.msElem.setAttribute( d, this.stylesListt.d ), (this.stylesListt.d M0 0 + this.stylesListt.d)), this.stylesListt.pElem.setAttribute( d, this.stylesListt.d || M0 0 )); }), (SVGShapeElement.prototype.renderShape function () { var t, e, i this.animatedContents.length; for (t 0; t i; t + 1) (e this.animatedContentst), (this._isFirstFrame || e.element._isAnimated) && !0 ! e.data && e.fn(e.data, e.element, this._isFirstFrame); }), (SVGShapeElement.prototype.destroy function () { this.destroyBaseElement(), (this.shapesData null), (this.itemsData null); }), (LetterProps.prototype.update function (t, e, i, r, s, a) { (this._mdf.o !1), (this._mdf.sw !1), (this._mdf.sc !1), (this._mdf.fc !1), (this._mdf.m !1), (this._mdf.p !1); var n !1; return ( this.o ! t && ((this.o t), (this._mdf.o !0), (n !0)), this.sw ! e && ((this.sw e), (this._mdf.sw !0), (n !0)), this.sc ! i && ((this.sc i), (this._mdf.sc !0), (n !0)), this.fc ! r && ((this.fc r), (this._mdf.fc !0), (n !0)), this.m ! s && ((this.m s), (this._mdf.m !0), (n !0)), !a.length || (this.p0 a0 && this.p1 a1 && this.p4 a4 && this.p5 a5 && this.p12 a12 && this.p13 a13) || ((this.p a), (this._mdf.p !0), (n !0)), n ); }), (TextProperty.prototype.defaultBoxWidth 0, 0), (TextProperty.prototype.copyData function (t, e) { for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (ti ei); return t; }), (TextProperty.prototype.setCurrentData function (t) { t.__complete || this.completeTextData(t), (this.currentData t), (this.currentData.boxWidth this.currentData.boxWidth || this.defaultBoxWidth), (this._mdf !0); }), (TextProperty.prototype.searchProperty function () { return this.searchKeyframes(); }), (TextProperty.prototype.searchKeyframes function () { return ( (this.kf this.data.d.k.length > 1), this.kf && this.addEffect(this.getKeyframeValue.bind(this)), this.kf ); }), (TextProperty.prototype.addEffect function (t) { this.effectsSequence.push(t), this.elem.addDynamicProperty(this); }), (TextProperty.prototype.getValue function (t) { if ( (this.elem.globalData.frameId ! this.frameId && this.effectsSequence.length) || t ) { this.currentData.t this.data.d.kthis.keysIndex.s.t; var e this.currentData, i this.keysIndex; if (this.lock) this.setCurrentData(this.currentData); else { var r; (this.lock !0), (this._mdf !1); var s this.effectsSequence.length, a t || this.data.d.kthis.keysIndex.s; for (r 0; r s; r + 1) a i ! this.keysIndex ? this.effectsSequencer(a, a.t) : this.effectsSequencer(this.currentData, a.t); e ! a && this.setCurrentData(a), (this.v this.currentData), (this.pv this.v), (this.lock !1), (this.frameId this.elem.globalData.frameId); } } }), (TextProperty.prototype.getKeyframeValue function () { for ( var t this.data.d.k, e this.elem.comp.renderedFrame, i 0, r t.length; i r - 1 && !(i r - 1 || ti + 1.t > e); ) i + 1; return ( this.keysIndex ! i && (this.keysIndex i), this.data.d.kthis.keysIndex.s ); }), (TextProperty.prototype.buildFinalText function (t) { for ( var e, i, r , s 0, a t.length, n !1, o !1, h ; s a; ) (n o), (o !1), (e t.charCodeAt(s)), (h t.charAt(s)), FontManager.isCombinedCharacter(e) ? (n !0) : e > 55296 && e 56319 ? FontManager.isRegionalFlag(t, s) ? (h t.substr(s, 14)) : (i t.charCodeAt(s + 1)) > 56320 && i 57343 && (FontManager.isModifier(e, i) ? ((h t.substr(s, 2)), (n !0)) : (h FontManager.isFlagEmoji(t.substr(s, 4)) ? t.substr(s, 4) : t.substr(s, 2))) : e > 56319 ? ((i t.charCodeAt(s + 1)), FontManager.isVariationSelector(e) && (n !0)) : FontManager.isZeroWidthJoiner(e) && ((n !0), (o !0)), n ? ((rr.length - 1 + h), (n !1)) : r.push(h), (s + h.length); return r; }), (TextProperty.prototype.completeTextData function (t) { t.__complete !0; var e, i, r, s, a, n, o, h this.elem.globalData.fontManager, l this.data, p , f 0, m l.m.g, c 0, d 0, u 0, y , g 0, v 0, b h.getFontByName(t.f), x 0, P getFontProperties(b); (t.fWeight P.weight), (t.fStyle P.style), (t.finalSize t.s), (t.finalText this.buildFinalText(t.t)), (i t.finalText.length), (t.finalLineHeight t.lh); var E, S (t.tr / 1e3) * t.finalSize; if (t.sz) for (var C, _, A !0, T t.sz0, M t.sz1; A; ) { (C 0), (g 0), (i (_ this.buildFinalText(t.t)).length), (S (t.tr / 1e3) * t.finalSize); var k -1; for (e 0; e i; e + 1) (E _e.charCodeAt(0)), (r !1), _e ? (k e) : (13 ! E && 3 ! E) || ((g 0), (r !0), (C + t.finalLineHeight || 1.2 * t.finalSize)), h.chars ? ((o h.getCharData(_e, b.fStyle, b.fFamily)), (x r ? 0 : (o.w * t.finalSize) / 100)) : (x h.measureText(_e, t.f, t.finalSize)), g + x > T && ! _e ? (-1 k ? (i + 1) : (e k), (C + t.finalLineHeight || 1.2 * t.finalSize), _.splice(e, k e ? 1 : 0, \r), (k -1), (g 0)) : ((g + x), (g + S)); (C + (b.ascent * t.finalSize) / 100), this.canResize && t.finalSize > this.minimumFontSize && M C ? ((t.finalSize - 1), (t.finalLineHeight (t.finalSize * t.lh) / t.s)) : ((t.finalText _), (i t.finalText.length), (A !1)); } (g -S), (x 0); var D, F 0; for (e 0; e i; e + 1) if ( ((r !1), 13 (E (D t.finalTexte).charCodeAt(0)) || 3 E ? ((F 0), y.push(g), (v g > v ? g : v), (g -2 * S), (s ), (r !0), (u + 1)) : (s D), h.chars ? ((o h.getCharData( D, b.fStyle, h.getFontByName(t.f).fFamily )), (x r ? 0 : (o.w * t.finalSize) / 100)) : (x h.measureText(s, t.f, t.finalSize)), D ? (F + x + S) : ((g + x + S + F), (F 0)), p.push({ l: x, an: x, add: c, n: r, anIndexes: , val: s, line: u, animatorJustifyOffset: 0, }), 2 m) ) { if (((c + x), s || s || e i - 1)) { for (( ! s && ! s) || (c - x); d e; ) (pd.an c), (pd.ind f), (pd.extra x), (d + 1); (f + 1), (c 0); } } else if (3 m) { if (((c + x), s || e i - 1)) { for ( s && (c - x); d e; ) (pd.an c), (pd.ind f), (pd.extra x), (d + 1); (c 0), (f + 1); } } else (pf.ind f), (pf.extra 0), (f + 1); if (((t.l p), (v g > v ? g : v), y.push(g), t.sz)) (t.boxWidth t.sz0), (t.justifyOffset 0); else switch (((t.boxWidth v), t.j)) { case 1: t.justifyOffset -t.boxWidth; break; case 2: t.justifyOffset -t.boxWidth / 2; break; default: t.justifyOffset 0; } t.lineWidths y; var w, I, V, B, R l.a; n R.length; var L ; for (a 0; a n; a + 1) { for ( (w Ra).a.sc && (t.strokeColorAnim !0), w.a.sw && (t.strokeWidthAnim !0), (w.a.fc || w.a.fh || w.a.fs || w.a.fb) && (t.fillColorAnim !0), B 0, V w.s.b, e 0; e i; e + 1 ) ((I pe).anIndexesa B), ((1 V && ! I.val) || (2 V && ! I.val && ! I.val) || (3 V && (I.n || I.val || e i - 1)) || (4 V && (I.n || e i - 1))) && (1 w.s.rn && L.push(B), (B + 1)); l.aa.s.totalChars B; var G, z -1; if (1 w.s.rn) for (e 0; e i; e + 1) z ! (I pe).anIndexesa && ((z I.anIndexesa), (G L.splice( Math.floor(Math.random() * L.length), 1 )0)), (I.anIndexesa G); } (t.yOffset t.finalLineHeight || 1.2 * t.finalSize), (t.ls t.ls || 0), (t.ascent (b.ascent * t.finalSize) / 100); }), (TextProperty.prototype.updateDocumentData function (t, e) { e void 0 e ? this.keysIndex : e; var i this.copyData({}, this.data.d.ke.s); (i this.copyData(i, t)), (this.data.d.ke.s i), this.recalculate(e), this.setCurrentData(i), this.elem.addDynamicProperty(this); }), (TextProperty.prototype.recalculate function (t) { var e this.data.d.kt.s; (e.__complete !1), (this.keysIndex 0), (this._isFirstFrame !0), this.getValue(e); }), (TextProperty.prototype.canResizeFont function (t) { (this.canResize t), this.recalculate(this.keysIndex), this.elem.addDynamicProperty(this); }), (TextProperty.prototype.setMinimumFontSize function (t) { (this.minimumFontSize Math.floor(t) || 1), this.recalculate(this.keysIndex), this.elem.addDynamicProperty(this); }); var TextSelectorProp (function () { var t Math.max, e Math.min, i Math.floor; function r(t, e) { (this._currentTextLength -1), (this.k !1), (this.data e), (this.elem t), (this.comp t.comp), (this.finalS 0), (this.finalE 0), this.initDynamicPropertyContainer(t), (this.s PropertyFactory.getProp( t, e.s || { k: 0 }, 0, 0, this )), (this.e e in e ? PropertyFactory.getProp(t, e.e, 0, 0, this) : { v: 100 }), (this.o PropertyFactory.getProp( t, e.o || { k: 0 }, 0, 0, this )), (this.xe PropertyFactory.getProp( t, e.xe || { k: 0 }, 0, 0, this )), (this.ne PropertyFactory.getProp( t, e.ne || { k: 0 }, 0, 0, this )), (this.sm PropertyFactory.getProp( t, e.sm || { k: 100 }, 0, 0, this )), (this.a PropertyFactory.getProp(t, e.a, 0, 0.01, this)), this.dynamicProperties.length || this.getValue(); } return ( (r.prototype { getMult: function (r) { this._currentTextLength ! this.elem.textProperty.currentData.l.length && this.getValue(); var s 0, a 0, n 1, o 1; this.ne.v > 0 ? (s this.ne.v / 100) : (a -this.ne.v / 100), this.xe.v > 0 ? (n 1 - this.xe.v / 100) : (o 1 + this.xe.v / 100); var h BezierFactory.getBezierEasing(s, a, n, o).get, l 0, p this.finalS, f this.finalE, m this.data.sh; if (2 m) l h( (l f p ? r > f ? 1 : 0 : t(0, e(0.5 / (f - p) + (r - p) / (f - p), 1))) ); else if (3 m) l h( (l f p ? r > f ? 0 : 1 : 1 - t(0, e(0.5 / (f - p) + (r - p) / (f - p), 1))) ); else if (4 m) f p ? (l 0) : (l t(0, e(0.5 / (f - p) + (r - p) / (f - p), 1))) 0.5 ? (l * 2) : (l 1 - 2 * (l - 0.5)), (l h(l)); else if (5 m) { if (f p) l 0; else { var c f - p, d -c / 2 + (r e(t(0, r + 0.5 - p), f - p)), u c / 2; l Math.sqrt(1 - (d * d) / (u * u)); } l h(l); } else 6 m ? (f p ? (l 0) : ((r e(t(0, r + 0.5 - p), f - p)), (l (1 + Math.cos( Math.PI + (2 * Math.PI * r) / (f - p) )) / 2)), (l h(l))) : (r > i(p) && (l t( 0, e(r - p 0 ? e(f, 1) - (p - r) : f - r, 1) )), (l h(l))); if (100 ! this.sm.v) { var y 0.01 * this.sm.v; 0 y && (y 1e-8); var g 0.5 - 0.5 * y; l g ? (l 0) : (l (l - g) / y) > 1 && (l 1); } return l * this.a.v; }, getValue: function (t) { this.iterateDynamicProperties(), (this._mdf t || this._mdf), (this._currentTextLength this.elem.textProperty.currentData.l.length || 0), t && 2 this.data.r && (this.e.v this._currentTextLength); var e 2 this.data.r ? 1 : 100 / this.data.totalChars, i this.o.v / e, r this.s.v / e + i, s this.e.v / e + i; if (r > s) { var a r; (r s), (s a); } (this.finalS r), (this.finalE s); }, }), extendPrototype(DynamicPropertyContainer, r), { getTextSelectorProp: function (t, e, i) { return new r(t, e, i); }, } ); })(); function TextAnimatorDataProperty(t, e, i) { var r { propType: !1 }, s PropertyFactory.getProp, a e.a; (this.a { r: a.r ? s(t, a.r, 0, degToRads, i) : r, rx: a.rx ? s(t, a.rx, 0, degToRads, i) : r, ry: a.ry ? s(t, a.ry, 0, degToRads, i) : r, sk: a.sk ? s(t, a.sk, 0, degToRads, i) : r, sa: a.sa ? s(t, a.sa, 0, degToRads, i) : r, s: a.s ? s(t, a.s, 1, 0.01, i) : r, a: a.a ? s(t, a.a, 1, 0, i) : r, o: a.o ? s(t, a.o, 0, 0.01, i) : r, p: a.p ? s(t, a.p, 1, 0, i) : r, sw: a.sw ? s(t, a.sw, 0, 0, i) : r, sc: a.sc ? s(t, a.sc, 1, 0, i) : r, fc: a.fc ? s(t, a.fc, 1, 0, i) : r, fh: a.fh ? s(t, a.fh, 0, 0, i) : r, fs: a.fs ? s(t, a.fs, 0, 0.01, i) : r, fb: a.fb ? s(t, a.fb, 0, 0.01, i) : r, t: a.t ? s(t, a.t, 0, 0, i) : r, }), (this.s TextSelectorProp.getTextSelectorProp(t, e.s, i)), (this.s.t e.s.t); } function TextAnimatorProperty(t, e, i) { (this._isFirstFrame !0), (this._hasMaskedPath !1), (this._frameId -1), (this._textData t), (this._renderType e), (this._elem i), (this._animatorsData createSizedArray(this._textData.a.length)), (this._pathData {}), (this._moreOptions { alignment: {} }), (this.renderedLetters ), (this.lettersChangedFlag !1), this.initDynamicPropertyContainer(i); } function ITextElement() {} (TextAnimatorProperty.prototype.searchProperties function () { var t, e, i this._textData.a.length, r PropertyFactory.getProp; for (t 0; t i; t + 1) (e this._textData.at), (this._animatorsDatat new TextAnimatorDataProperty( this._elem, e, this )); this._textData.p && m in this._textData.p ? ((this._pathData { a: r(this._elem, this._textData.p.a, 0, 0, this), f: r(this._elem, this._textData.p.f, 0, 0, this), l: r(this._elem, this._textData.p.l, 0, 0, this), r: r(this._elem, this._textData.p.r, 0, 0, this), p: r(this._elem, this._textData.p.p, 0, 0, this), m: this._elem.maskManager.getMaskProperty(this._textData.p.m), }), (this._hasMaskedPath !0)) : (this._hasMaskedPath !1), (this._moreOptions.alignment r( this._elem, this._textData.m.a, 1, 0, this )); }), (TextAnimatorProperty.prototype.getMeasures function (t, e) { if ( ((this.lettersChangedFlag e), this._mdf || this._isFirstFrame || e || (this._hasMaskedPath && this._pathData.m._mdf)) ) { this._isFirstFrame !1; var i, r, s, a, n, o, h, l, p, f, m, c, d, u, y, g, v, b, x, P this._moreOptions.alignment.v, E this._animatorsData, S this._textData, C this.mHelper, _ this._renderType, A this.renderedLetters.length, T t.l; if (this._hasMaskedPath) { if ( ((x this._pathData.m), !this._pathData.n || this._pathData._mdf) ) { var M, k x.v; for ( this._pathData.r.v && (k k.reverse()), n { tLength: 0, segments: }, a k._length - 1, g 0, s 0; s a; s + 1 ) (M bez.buildBezierData( k.vs, k.vs + 1, k.os0 - k.vs0, k.os1 - k.vs1, k.is + 10 - k.vs + 10, k.is + 11 - k.vs + 11, )), (n.tLength + M.segmentLength), n.segments.push(M), (g + M.segmentLength); (s a), x.v.c && ((M bez.buildBezierData( k.vs, k.v0, k.os0 - k.vs0, k.os1 - k.vs1, k.i00 - k.v00, k.i01 - k.v01 )), (n.tLength + M.segmentLength), n.segments.push(M), (g + M.segmentLength)), (this._pathData.pi n); } if ( ((n this._pathData.pi), (o this._pathData.f.v), (m 0), (f 1), (l 0), (p !0), (u n.segments), o 0 && x.v.c) ) for ( n.tLength Math.abs(o) && (o -Math.abs(o) % n.tLength), f (d u(m u.length - 1).points).length - 1; o 0; ) (o + df.partialLength), (f - 1) 0 && (f (d u(m - 1).points).length - 1); (c (d um.points)f - 1), (y (h df).partialLength); } (a T.length), (i 0), (r 0); var D, F, w, I, V, B 1.2 * t.finalSize * 0.714, R !0; w E.length; var L, G, z, O, N, H, q, j, W, $, Y, J, X -1, Z o, K m, U f, Q -1, tt , et this.defaultPropsArray; if (2 t.j || 1 t.j) { var it 0, rt 0, st 2 t.j ? -0.5 : -1, at 0, nt !0; for (s 0; s a; s + 1) if (Ts.n) { for (it && (it + rt); at s; ) (Tat.animatorJustifyOffset it), (at + 1); (it 0), (nt !0); } else { for (F 0; F w; F + 1) (D EF.a).t.propType && (nt && 2 t.j && (rt + D.t.v * st), (V EF.s.getMult( Ts.anIndexesF, S.aF.s.totalChars )).length ? (it + D.t.v * V0 * st) : (it + D.t.v * V * st)); nt !1; } for (it && (it + rt); at s; ) (Tat.animatorJustifyOffset it), (at + 1); } for (s 0; s a; s + 1) { if ((C.reset(), (O 1), Ts.n)) (i 0), (r + t.yOffset), (r + R ? 1 : 0), (o Z), (R !1), this._hasMaskedPath && ((f U), (c (d u(m K).points)f - 1), (y (h df).partialLength), (l 0)), (tt ), (Y ), (W ), (J ), (et this.defaultPropsArray); else { if (this._hasMaskedPath) { if (Q ! Ts.line) { switch (t.j) { case 1: o + g - t.lineWidthsTs.line; break; case 2: o + (g - t.lineWidthsTs.line) / 2; } Q Ts.line; } X ! Ts.ind && (TX && (o + TX.extra), (o + Ts.an / 2), (X Ts.ind)), (o + P0 * Ts.an * 0.005); var ot 0; for (F 0; F w; F + 1) (D EF.a).p.propType && ((V EF.s.getMult( Ts.anIndexesF, S.aF.s.totalChars )).length ? (ot + D.p.v0 * V0) : (ot + D.p.v0 * V)), D.a.propType && ((V EF.s.getMult( Ts.anIndexesF, S.aF.s.totalChars )).length ? (ot + D.a.v0 * V0) : (ot + D.a.v0 * V)); for ( p !0, this._pathData.a.v && ((o 0.5 * T0.an + ((g - this._pathData.f.v - 0.5 * T0.an - 0.5 * TT.length - 1.an) * X) / (a - 1)), (o + this._pathData.f.v)); p; ) l + y > o + ot || !d ? ((v (o + ot - l) / h.partialLength), (G c.point0 + (h.point0 - c.point0) * v), (z c.point1 + (h.point1 - c.point1) * v), C.translate( -P0 * Ts.an * 0.005, -P1 * B * 0.01 ), (p !1)) : d && ((l + h.partialLength), (f + 1) > d.length && ((f 0), u(m + 1) ? (d um.points) : x.v.c ? ((f 0), (d u(m 0).points)) : ((l - h.partialLength), (d null))), d && ((c h), (y (h df).partialLength))); (L Ts.an / 2 - Ts.add), C.translate(-L, 0, 0); } else (L Ts.an / 2 - Ts.add), C.translate(-L, 0, 0), C.translate( -P0 * Ts.an * 0.005, -P1 * B * 0.01, 0 ); for (F 0; F w; F + 1) (D EF.a).t.propType && ((V EF.s.getMult( Ts.anIndexesF, S.aF.s.totalChars )), (0 i && 0 t.j) || (this._hasMaskedPath ? V.length ? (o + D.t.v * V0) : (o + D.t.v * V) : V.length ? (i + D.t.v * V0) : (i + D.t.v * V))); for ( t.strokeWidthAnim && (H t.sw || 0), t.strokeColorAnim && (N t.sc ? t.sc0, t.sc1, t.sc2 : 0, 0, 0), t.fillColorAnim && t.fc && (q t.fc0, t.fc1, t.fc2), F 0; F w; F + 1 ) (D EF.a).a.propType && ((V EF.s.getMult( Ts.anIndexesF, S.aF.s.totalChars )).length ? C.translate( -D.a.v0 * V0, -D.a.v1 * V1, D.a.v2 * V2 ) : C.translate( -D.a.v0 * V, -D.a.v1 * V, D.a.v2 * V )); for (F 0; F w; F + 1) (D EF.a).s.propType && ((V EF.s.getMult( Ts.anIndexesF, S.aF.s.totalChars )).length ? C.scale( 1 + (D.s.v0 - 1) * V0, 1 + (D.s.v1 - 1) * V1, 1 ) : C.scale( 1 + (D.s.v0 - 1) * V, 1 + (D.s.v1 - 1) * V, 1 )); for (F 0; F w; F + 1) { if ( ((D EF.a), (V EF.s.getMult( Ts.anIndexesF, S.aF.s.totalChars )), D.sk.propType && (V.length ? C.skewFromAxis(-D.sk.v * V0, D.sa.v * V1) : C.skewFromAxis(-D.sk.v * V, D.sa.v * V)), D.r.propType && (V.length ? C.rotateZ(-D.r.v * V2) : C.rotateZ(-D.r.v * V)), D.ry.propType && (V.length ? C.rotateY(D.ry.v * V1) : C.rotateY(D.ry.v * V)), D.rx.propType && (V.length ? C.rotateX(D.rx.v * V0) : C.rotateX(D.rx.v * V)), D.o.propType && (V.length ? (O + (D.o.v * V0 - O) * V0) : (O + (D.o.v * V - O) * V)), t.strokeWidthAnim && D.sw.propType && (V.length ? (H + D.sw.v * V0) : (H + D.sw.v * V)), t.strokeColorAnim && D.sc.propType) ) for (j 0; j 3; j + 1) V.length ? (Nj + (D.sc.vj - Nj) * V0) : (Nj + (D.sc.vj - Nj) * V); if (t.fillColorAnim && t.fc) { if (D.fc.propType) for (j 0; j 3; j + 1) V.length ? (qj + (D.fc.vj - qj) * V0) : (qj + (D.fc.vj - qj) * V); D.fh.propType && (q V.length ? addHueToRGB(q, D.fh.v * V0) : addHueToRGB(q, D.fh.v * V)), D.fs.propType && (q V.length ? addSaturationToRGB(q, D.fs.v * V0) : addSaturationToRGB(q, D.fs.v * V)), D.fb.propType && (q V.length ? addBrightnessToRGB(q, D.fb.v * V0) : addBrightnessToRGB(q, D.fb.v * V)); } } for (F 0; F w; F + 1) (D EF.a).p.propType && ((V EF.s.getMult( Ts.anIndexesF, S.aF.s.totalChars )), this._hasMaskedPath ? V.length ? C.translate(0, D.p.v1 * V0, -D.p.v2 * V1) : C.translate(0, D.p.v1 * V, -D.p.v2 * V) : V.length ? C.translate( D.p.v0 * V0, D.p.v1 * V1, -D.p.v2 * V2 ) : C.translate( D.p.v0 * V, D.p.v1 * V, -D.p.v2 * V )); if ( (t.strokeWidthAnim && (W H 0 ? 0 : H), t.strokeColorAnim && ($ rgb( + Math.round(255 * N0) + , + Math.round(255 * N1) + , + Math.round(255 * N2) + )), t.fillColorAnim && t.fc && (Y rgb( + Math.round(255 * q0) + , + Math.round(255 * q1) + , + Math.round(255 * q2) + )), this._hasMaskedPath) ) { if ( (C.translate(0, -t.ls), C.translate(0, P1 * B * 0.01 + r, 0), this._pathData.p.v) ) { b (h.point1 - c.point1) / (h.point0 - c.point0); var ht (180 * Math.atan(b)) / Math.PI; h.point0 c.point0 && (ht + 180), C.rotate((-ht * Math.PI) / 180); } C.translate(G, z, 0), (o - P0 * Ts.an * 0.005), Ts + 1 && X ! Ts + 1.ind && ((o + Ts.an / 2), (o + 0.001 * t.tr * t.finalSize)); } else { switch ( (C.translate(i, r, 0), t.ps && C.translate(t.ps0, t.ps1 + t.ascent, 0), t.j) ) { case 1: C.translate( Ts.animatorJustifyOffset + t.justifyOffset + (t.boxWidth - t.lineWidthsTs.line), 0, 0 ); break; case 2: C.translate( Ts.animatorJustifyOffset + t.justifyOffset + (t.boxWidth - t.lineWidthsTs.line) / 2, 0, 0 ); } C.translate(0, -t.ls), C.translate(L, 0, 0), C.translate(P0 * Ts.an * 0.005, P1 * B * 0.01, 0), (i + Ts.l + 0.001 * t.tr * t.finalSize); } html _ ? (tt C.toCSS()) : svg _ ? (tt C.to2dCSS()) : (et C.props0, C.props1, C.props2, C.props3, C.props4, C.props5, C.props6, C.props7, C.props8, C.props9, C.props10, C.props11, C.props12, C.props13, C.props14, C.props15, ), (J O); } A s ? ((I new LetterProps(J, W, $, Y, tt, et)), this.renderedLetters.push(I), (A + 1), (this.lettersChangedFlag !0)) : ((I this.renderedLetterss), (this.lettersChangedFlag I.update(J, W, $, Y, tt, et) || this.lettersChangedFlag)); } } }), (TextAnimatorProperty.prototype.getValue function () { this._elem.globalData.frameId ! this._frameId && ((this._frameId this._elem.globalData.frameId), this.iterateDynamicProperties()); }), (TextAnimatorProperty.prototype.mHelper new Matrix()), (TextAnimatorProperty.prototype.defaultPropsArray ), extendPrototype(DynamicPropertyContainer, TextAnimatorProperty), (ITextElement.prototype.initElement function (t, e, i) { (this.lettersChangedFlag !0), this.initFrame(), this.initBaseData(t, e, i), (this.textProperty new TextProperty( this, t.t, this.dynamicProperties )), (this.textAnimator new TextAnimatorProperty( t.t, this.renderType, this )), this.initTransform(t, e, i), this.initHierarchy(), this.initRenderable(), this.initRendererElement(), this.createContainerElements(), this.createRenderableComponents(), this.createContent(), this.hide(), this.textAnimator.searchProperties(this.dynamicProperties); }), (ITextElement.prototype.prepareFrame function (t) { (this._mdf !1), this.prepareRenderableFrame(t), this.prepareProperties(t, this.isInRange); }), (ITextElement.prototype.createPathShape function (t, e) { var i, r, s e.length, a ; for (i 0; i s; i + 1) sh ei.ty && ((r ei.ks.k), (a + buildShapeString(r, r.i.length, !0, t))); return a; }), (ITextElement.prototype.updateDocumentData function (t, e) { this.textProperty.updateDocumentData(t, e); }), (ITextElement.prototype.canResizeFont function (t) { this.textProperty.canResizeFont(t); }), (ITextElement.prototype.setMinimumFontSize function (t) { this.textProperty.setMinimumFontSize(t); }), (ITextElement.prototype.applyTextPropertiesToMatrix function ( t, e, i, r, s ) { switch ( (t.ps && e.translate(t.ps0, t.ps1 + t.ascent, 0), e.translate(0, -t.ls, 0), t.j) ) { case 1: e.translate( t.justifyOffset + (t.boxWidth - t.lineWidthsi), 0, 0 ); break; case 2: e.translate( t.justifyOffset + (t.boxWidth - t.lineWidthsi) / 2, 0, 0 ); } e.translate(r, s, 0); }), (ITextElement.prototype.buildColor function (t) { return ( rgb( + Math.round(255 * t0) + , + Math.round(255 * t1) + , + Math.round(255 * t2) + ) ); }), (ITextElement.prototype.emptyProp new LetterProps()), (ITextElement.prototype.destroy function () {}), (ITextElement.prototype.validateText function () { (this.textProperty._mdf || this.textProperty._isFirstFrame) && (this.buildNewText(), (this.textProperty._isFirstFrame !1), (this.textProperty._mdf !1)); }); var emptyShapeData { shapes: }; function SVGTextLottieElement(t, e, i) { (this.textSpans ), (this.renderType svg), this.initElement(t, e, i); } function ISolidElement(t, e, i) { this.initElement(t, e, i); } function NullElement(t, e, i) { this.initFrame(), this.initBaseData(t, e, i), this.initFrame(), this.initTransform(t, e, i), this.initHierarchy(); } function SVGRendererBase() {} function ICompElement() {} function SVGCompElement(t, e, i) { (this.layers t.layers), (this.supports3d !0), (this.completeLayers !1), (this.pendingElements ), (this.elements this.layers ? createSizedArray(this.layers.length) : ), this.initElement(t, e, i), (this.tm t.tm ? PropertyFactory.getProp(this, t.tm, 0, e.frameRate, this) : { _placeholder: !0 }); } function SVGRenderer(t, e) { (this.animationItem t), (this.layers null), (this.renderedFrame -1), (this.svgElement createNS(svg)); var i ; if (e && e.title) { var r createNS(title), s createElementID(); r.setAttribute(id, s), (r.textContent e.title), this.svgElement.appendChild(r), (i + s); } if (e && e.description) { var a createNS(desc), n createElementID(); a.setAttribute(id, n), (a.textContent e.description), this.svgElement.appendChild(a), (i + + n); } i && this.svgElement.setAttribute(aria-labelledby, i); var o createNS(defs); this.svgElement.appendChild(o); var h createNS(g); this.svgElement.appendChild(h), (this.layerElement h), (this.renderConfig { preserveAspectRatio: (e && e.preserveAspectRatio) || xMidYMid meet, imagePreserveAspectRatio: (e && e.imagePreserveAspectRatio) || xMidYMid slice, contentVisibility: (e && e.contentVisibility) || visible, progressiveLoad: (e && e.progressiveLoad) || !1, hideOnTransparent: !(e && !1 e.hideOnTransparent), viewBoxOnly: (e && e.viewBoxOnly) || !1, viewBoxSize: (e && e.viewBoxSize) || !1, className: (e && e.className) || , id: (e && e.id) || , focusable: e && e.focusable, filterSize: { width: (e && e.filterSize && e.filterSize.width) || 100%, height: (e && e.filterSize && e.filterSize.height) || 100%, x: (e && e.filterSize && e.filterSize.x) || 0%, y: (e && e.filterSize && e.filterSize.y) || 0%, }, width: e && e.width, height: e && e.height, runExpressions: !e || void 0 e.runExpressions || e.runExpressions, }), (this.globalData { _mdf: !1, frameNum: -1, defs: o, renderConfig: this.renderConfig, }), (this.elements ), (this.pendingElements ), (this.destroyed !1), (this.rendererType svg); } function ShapeTransformManager() { (this.sequences {}), (this.sequenceList ), (this.transform_key_count 0); } extendPrototype( BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement, , SVGTextLottieElement ), (SVGTextLottieElement.prototype.createContent function () { this.data.singleShape && !this.globalData.fontManager.chars && (this.textContainer createNS(text)); }), (SVGTextLottieElement.prototype.buildTextContents function (t) { for (var e 0, i t.length, r , s ; e i; ) te String.fromCharCode(13) || te String.fromCharCode(3) ? (r.push(s), (s )) : (s + te), (e + 1); return r.push(s), r; }), (SVGTextLottieElement.prototype.buildShapeData function (t, e) { if (t.shapes && t.shapes.length) { var i t.shapes0; if (i.it) { var r i.iti.it.length - 1; r.s && ((r.s.k0 e), (r.s.k1 e)); } } return t; }), (SVGTextLottieElement.prototype.buildNewText function () { var t, e; this.addDynamicProperty(this); var i this.textProperty.currentData; (this.renderedLetters createSizedArray(i ? i.l.length : 0)), i.fc ? this.layerElement.setAttribute( fill, this.buildColor(i.fc) ) : this.layerElement.setAttribute(fill, rgba(0,0,0,0)), i.sc && (this.layerElement.setAttribute( stroke, this.buildColor(i.sc) ), this.layerElement.setAttribute(stroke-width, i.sw)), this.layerElement.setAttribute(font-size, i.finalSize); var r this.globalData.fontManager.getFontByName(i.f); if (r.fClass) this.layerElement.setAttribute(class, r.fClass); else { this.layerElement.setAttribute(font-family, r.fFamily); var s i.fWeight, a i.fStyle; this.layerElement.setAttribute(font-style, a), this.layerElement.setAttribute(font-weight, s); } this.layerElement.setAttribute(aria-label, i.t); var n, o i.l || , h !!this.globalData.fontManager.chars; e o.length; var l this.mHelper, p this.data.singleShape, f 0, m 0, c !0, d 0.001 * i.tr * i.finalSize; if (!p || h || i.sz) { var u, y this.textSpans.length; for (t 0; t e; t + 1) { if ( (this.textSpanst || (this.textSpanst { span: null, childSpan: null, glyph: null, }), !h || !p || 0 t) ) { if ( ((n y > t ? this.textSpanst.span : createNS(h ? g : text)), y t) ) { if ( (n.setAttribute(stroke-linecap, butt), n.setAttribute(stroke-linejoin, round), n.setAttribute(stroke-miterlimit, 4), (this.textSpanst.span n), h) ) { var g createNS(g); n.appendChild(g), (this.textSpanst.childSpan g); } (this.textSpanst.span n), this.layerElement.appendChild(n); } n.style.display inherit; } if ( (l.reset(), p && (ot.n && ((f -d), (m + i.yOffset), (m + c ? 1 : 0), (c !1)), this.applyTextPropertiesToMatrix(i, l, ot.line, f, m), (f + ot.l || 0), (f + d)), h) ) { var v; if ( 1 (u this.globalData.fontManager.getCharData( i.finalTextt, r.fStyle, this.globalData.fontManager.getFontByName(i.f).fFamily )).t ) v new SVGCompElement(u.data, this.globalData, this); else { var b emptyShapeData; u.data && u.data.shapes && (b this.buildShapeData(u.data, i.finalSize)), (v new SVGShapeElement(b, this.globalData, this)); } if (this.textSpanst.glyph) { var x this.textSpanst.glyph; this.textSpanst.childSpan.removeChild(x.layerElement), x.destroy(); } (this.textSpanst.glyph v), (v._debug !0), v.prepareFrame(0), v.renderFrame(), this.textSpanst.childSpan.appendChild(v.layerElement), 1 u.t && this.textSpanst.childSpan.setAttribute( transform, scale( + i.finalSize / 100 + , + i.finalSize / 100 + ) ); } else p && n.setAttribute( transform, translate( + l.props12 + , + l.props13 + ) ), (n.textContent ot.val), n.setAttributeNS( http://www.w3.org/XML/1998/namespace, xml:space, preserve ); } p && n && n.setAttribute(d, ); } else { var P this.textContainer, E start; switch (i.j) { case 1: E end; break; case 2: E middle; break; default: E start; } P.setAttribute(text-anchor, E), P.setAttribute(letter-spacing, d); var S this.buildTextContents(i.finalText); for ( e S.length, m i.ps ? i.ps1 + i.ascent : 0, t 0; t e; t + 1 ) ((n this.textSpanst.span || createNS(tspan)).textContent St), n.setAttribute(x, 0), n.setAttribute(y, m), (n.style.display inherit), P.appendChild(n), this.textSpanst || (this.textSpanst { span: null, glyph: null }), (this.textSpanst.span n), (m + i.finalLineHeight); this.layerElement.appendChild(P); } for (; t this.textSpans.length; ) (this.textSpanst.span.style.display none), (t + 1); this._sizeChanged !0; }), (SVGTextLottieElement.prototype.sourceRectAtTime function () { if ( (this.prepareFrame(this.comp.renderedFrame - this.data.st), this.renderInnerContent(), this._sizeChanged) ) { this._sizeChanged !1; var t this.layerElement.getBBox(); this.bbox { top: t.y, left: t.x, width: t.width, height: t.height, }; } return this.bbox; }), (SVGTextLottieElement.prototype.getValue function () { var t, e, i this.textSpans.length; for ( this.renderedFrame this.comp.renderedFrame, t 0; t i; t + 1 ) (e this.textSpanst.glyph) && (e.prepareFrame(this.comp.renderedFrame - this.data.st), e._mdf && (this._mdf !0)); }), (SVGTextLottieElement.prototype.renderInnerContent function () { if ( (this.validateText(), (!this.data.singleShape || this._mdf) && (this.textAnimator.getMeasures( this.textProperty.currentData, this.lettersChangedFlag ), this.lettersChangedFlag || this.textAnimator.lettersChangedFlag)) ) { var t, e; this._sizeChanged !0; var i, r, s, a this.textAnimator.renderedLetters, n this.textProperty.currentData.l; for (e n.length, t 0; t e; t + 1) nt.n || ((i at), (r this.textSpanst.span), (s this.textSpanst.glyph) && s.renderFrame(), i._mdf.m && r.setAttribute(transform, i.m), i._mdf.o && r.setAttribute(opacity, i.o), i._mdf.sw && r.setAttribute(stroke-width, i.sw), i._mdf.sc && r.setAttribute(stroke, i.sc), i._mdf.fc && r.setAttribute(fill, i.fc)); } }), extendPrototype(IImageElement, ISolidElement), (ISolidElement.prototype.createContent function () { var t createNS(rect); t.setAttribute(width, this.data.sw), t.setAttribute(height, this.data.sh), t.setAttribute(fill, this.data.sc), this.layerElement.appendChild(t); }), (NullElement.prototype.prepareFrame function (t) { this.prepareProperties(t, !0); }), (NullElement.prototype.renderFrame function () {}), (NullElement.prototype.getBaseElement function () { return null; }), (NullElement.prototype.destroy function () {}), (NullElement.prototype.sourceRectAtTime function () {}), (NullElement.prototype.hide function () {}), extendPrototype( BaseElement, TransformElement, HierarchyElement, FrameElement, NullElement ), extendPrototype(BaseRenderer, SVGRendererBase), (SVGRendererBase.prototype.createNull function (t) { return new NullElement(t, this.globalData, this); }), (SVGRendererBase.prototype.createShape function (t) { return new SVGShapeElement(t, this.globalData, this); }), (SVGRendererBase.prototype.createText function (t) { return new SVGTextLottieElement(t, this.globalData, this); }), (SVGRendererBase.prototype.createImage function (t) { return new IImageElement(t, this.globalData, this); }), (SVGRendererBase.prototype.createSolid function (t) { return new ISolidElement(t, this.globalData, this); }), (SVGRendererBase.prototype.configAnimation function (t) { this.svgElement.setAttribute( xmlns, http://www.w3.org/2000/svg ), this.svgElement.setAttribute( xmlns:xlink, http://www.w3.org/1999/xlink ), this.renderConfig.viewBoxSize ? this.svgElement.setAttribute( viewBox, this.renderConfig.viewBoxSize ) : this.svgElement.setAttribute( viewBox, 0 0 + t.w + + t.h ), this.renderConfig.viewBoxOnly || (this.svgElement.setAttribute(width, t.w), this.svgElement.setAttribute(height, t.h), (this.svgElement.style.width 100%), (this.svgElement.style.height 100%), (this.svgElement.style.transform translate3d(0,0,0)), (this.svgElement.style.contentVisibility this.renderConfig.contentVisibility)), this.renderConfig.width && this.svgElement.setAttribute( width, this.renderConfig.width ), this.renderConfig.height && this.svgElement.setAttribute( height, this.renderConfig.height ), this.renderConfig.className && this.svgElement.setAttribute( class, this.renderConfig.className ), this.renderConfig.id && this.svgElement.setAttribute(id, this.renderConfig.id), void 0 ! this.renderConfig.focusable && this.svgElement.setAttribute( focusable, this.renderConfig.focusable ), this.svgElement.setAttribute( preserveAspectRatio, this.renderConfig.preserveAspectRatio ), this.animationItem.wrapper.appendChild(this.svgElement); var e this.globalData.defs; this.setupGlobalData(t, e), (this.globalData.progressiveLoad this.renderConfig.progressiveLoad), (this.data t); var i createNS(clipPath), r createNS(rect); r.setAttribute(width, t.w), r.setAttribute(height, t.h), r.setAttribute(x, 0), r.setAttribute(y, 0); var s createElementID(); i.setAttribute(id, s), i.appendChild(r), this.layerElement.setAttribute( clip-path, url( + getLocationHref() + # + s + ) ), e.appendChild(i), (this.layers t.layers), (this.elements createSizedArray(t.layers.length)); }), (SVGRendererBase.prototype.destroy function () { var t; this.animationItem.wrapper && (this.animationItem.wrapper.innerText ), (this.layerElement null), (this.globalData.defs null); var e this.layers ? this.layers.length : 0; for (t 0; t e; t + 1) this.elementst && this.elementst.destroy && this.elementst.destroy(); (this.elements.length 0), (this.destroyed !0), (this.animationItem null); }), (SVGRendererBase.prototype.updateContainerSize function () {}), (SVGRendererBase.prototype.findIndexByInd function (t) { var e 0, i this.layers.length; for (e 0; e i; e + 1) if (this.layerse.ind t) return e; return -1; }), (SVGRendererBase.prototype.buildItem function (t) { var e this.elements; if (!et && 99 ! this.layerst.ty) { et !0; var i this.createItem(this.layerst); if ( ((et i), getExpressionsPlugin() && (0 this.layerst.ty && this.globalData.projectInterface.registerComposition(i), i.initExpressions()), this.appendElementInPos(i, t), this.layerst.tt) ) { var r tp in this.layerst ? this.findIndexByInd(this.layerst.tp) : t - 1; if (-1 r) return; if (this.elementsr && !0 ! this.elementsr) { var s er.getMatte(this.layerst.tt); i.setMatte(s); } else this.buildItem(r), this.addPendingElement(i); } } }), (SVGRendererBase.prototype.checkPendingElements function () { for (; this.pendingElements.length; ) { var t this.pendingElements.pop(); if ((t.checkParenting(), t.data.tt)) for (var e 0, i this.elements.length; e i; ) { if (this.elementse t) { var r tp in t.data ? this.findIndexByInd(t.data.tp) : e - 1, s this.elementsr.getMatte(this.layerse.tt); t.setMatte(s); break; } e + 1; } } }), (SVGRendererBase.prototype.renderFrame function (t) { if (this.renderedFrame ! t && !this.destroyed) { var e; null t ? (t this.renderedFrame) : (this.renderedFrame t), (this.globalData.frameNum t), (this.globalData.frameId + 1), (this.globalData.projectInterface.currentFrame t), (this.globalData._mdf !1); var i this.layers.length; for ( this.completeLayers || this.checkLayers(t), e i - 1; e > 0; e - 1 ) (this.completeLayers || this.elementse) && this.elementse.prepareFrame(t - this.layerse.st); if (this.globalData._mdf) for (e 0; e i; e + 1) (this.completeLayers || this.elementse) && this.elementse.renderFrame(); } }), (SVGRendererBase.prototype.appendElementInPos function (t, e) { var i t.getBaseElement(); if (i) { for (var r, s 0; s e; ) this.elementss && !0 ! this.elementss && this.elementss.getBaseElement() && (r this.elementss.getBaseElement()), (s + 1); r ? this.layerElement.insertBefore(i, r) : this.layerElement.appendChild(i); } }), (SVGRendererBase.prototype.hide function () { this.layerElement.style.display none; }), (SVGRendererBase.prototype.show function () { this.layerElement.style.display block; }), extendPrototype( BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement, , ICompElement ), (ICompElement.prototype.initElement function (t, e, i) { this.initFrame(), this.initBaseData(t, e, i), this.initTransform(t, e, i), this.initRenderable(), this.initHierarchy(), this.initRendererElement(), this.createContainerElements(), this.createRenderableComponents(), (!this.data.xt && e.progressiveLoad) || this.buildAllItems(), this.hide(); }), (ICompElement.prototype.prepareFrame function (t) { if ( ((this._mdf !1), this.prepareRenderableFrame(t), this.prepareProperties(t, this.isInRange), this.isInRange || this.data.xt) ) { if (this.tm._placeholder) this.renderedFrame t / this.data.sr; else { var e this.tm.v; e this.data.op && (e this.data.op - 1), (this.renderedFrame e); } var i, r this.elements.length; for ( this.completeLayers || this.checkLayers(this.renderedFrame), i r - 1; i > 0; i - 1 ) (this.completeLayers || this.elementsi) && (this.elementsi.prepareFrame( this.renderedFrame - this.layersi.st ), this.elementsi._mdf && (this._mdf !0)); } }), (ICompElement.prototype.renderInnerContent function () { var t, e this.layers.length; for (t 0; t e; t + 1) (this.completeLayers || this.elementst) && this.elementst.renderFrame(); }), (ICompElement.prototype.setElements function (t) { this.elements t; }), (ICompElement.prototype.getElements function () { return this.elements; }), (ICompElement.prototype.destroyElements function () { var t, e this.layers.length; for (t 0; t e; t + 1) this.elementst && this.elementst.destroy(); }), (ICompElement.prototype.destroy function () { this.destroyElements(), this.destroyBaseElement(); }), extendPrototype( SVGRendererBase, ICompElement, SVGBaseElement, SVGCompElement ), (SVGCompElement.prototype.createComp function (t) { return new SVGCompElement(t, this.globalData, this); }), extendPrototype(SVGRendererBase, SVGRenderer), (SVGRenderer.prototype.createComp function (t) { return new SVGCompElement(t, this.globalData, this); }), (ShapeTransformManager.prototype { addTransformSequence: function (t) { var e, i t.length, r _; for (e 0; e i; e + 1) r + te.transform.key + _; var s this.sequencesr; return ( s || ((s { transforms: .concat(t), finalTransform: new Matrix(), _mdf: !1, }), (this.sequencesr s), this.sequenceList.push(s)), s ); }, processSequence: function (t, e) { for (var i 0, r t.transforms.length, s e; i r && !e; ) { if (t.transformsi.transform.mProps._mdf) { s !0; break; } i + 1; } if (s) for (t.finalTransform.reset(), i r - 1; i > 0; i - 1) t.finalTransform.multiply( t.transformsi.transform.mProps.v ); t._mdf s; }, processSequences: function (t) { var e, i this.sequenceList.length; for (e 0; e i; e + 1) this.processSequence(this.sequenceListe, t); }, getNewKey: function () { return ( (this.transform_key_count + 1), _ + this.transform_key_count ); }, }); var lumaLoader function () { var t __lottie_element_luma_buffer, e null, i null, r null; function s() { var s, a, n; e || ((s createNS(svg)), (a createNS(filter)), (n createNS(feColorMatrix)), a.setAttribute(id, t), n.setAttribute(type, matrix), n.setAttribute(color-interpolation-filters, sRGB), n.setAttribute( values, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0 ), a.appendChild(n), s.appendChild(a), s.setAttribute(id, t + _svg), featureSupport.svgLumaHidden && (s.style.display none), (r s), document.body.appendChild(r), (e createTag(canvas)), ((i e.getContext(2d)).filter url(# + t + )), (i.fillStyle rgba(0,0,0,0)), i.fillRect(0, 0, 1, 1)); } return { load: s, get: function (r) { return ( e || s(), (e.width r.width), (e.height r.height), (i.filter url(# + t + )), e ); }, }; }; function createCanvas(t, e) { if (featureSupport.offscreenCanvas) return new OffscreenCanvas(t, e); var i createTag(canvas); return (i.width t), (i.height e), i; } var assetLoader { loadLumaCanvas: lumaLoader.load, getLumaCanvas: lumaLoader.get, createCanvas: createCanvas, }, registeredEffects {}; function CVEffects(t) { var e, i, r t.data.ef ? t.data.ef.length : 0; for (this.filters , e 0; e r; e + 1) { i null; var s t.data.efe.ty; if (registeredEffectss) i new (0, registeredEffectss.effect)( t.effectsManager.effectElementse, t ); i && this.filters.push(i); } this.filters.length && t.addRenderableComponent(this); } function registerEffect(t, e) { registeredEffectst { effect: e }; } function CVMaskElement(t, e) { var i; (this.data t), (this.element e), (this.masksProperties this.data.masksProperties || ), (this.viewData createSizedArray(this.masksProperties.length)); var r this.masksProperties.length, s !1; for (i 0; i r; i + 1) n ! this.masksPropertiesi.mode && (s !0), (this.viewDatai ShapePropertyFactory.getShapeProp( this.element, this.masksPropertiesi, 3 )); (this.hasMasks s), s && this.element.addRenderableComponent(this); } function CVBaseElement() {} (CVEffects.prototype.renderFrame function (t) { var e, i this.filters.length; for (e 0; e i; e + 1) this.filterse.renderFrame(t); }), (CVEffects.prototype.getEffects function (t) { var e, i this.filters.length, r ; for (e 0; e i; e + 1) this.filterse.type t && r.push(this.filterse); return r; }), (CVMaskElement.prototype.renderFrame function () { if (this.hasMasks) { var t, e, i, r, s this.element.finalTransform.mat, a this.element.canvasContext, n this.masksProperties.length; for (a.beginPath(), t 0; t n; t + 1) if (n ! this.masksPropertiest.mode) { var o; this.masksPropertiest.inv && (a.moveTo(0, 0), a.lineTo(this.element.globalData.compSize.w, 0), a.lineTo( this.element.globalData.compSize.w, this.element.globalData.compSize.h ), a.lineTo(0, this.element.globalData.compSize.h), a.lineTo(0, 0)), (r this.viewDatat.v), (e s.applyToPointArray(r.v00, r.v01, 0)), a.moveTo(e0, e1); var h r._length; for (o 1; o h; o + 1) (i s.applyToTriplePoints(r.oo - 1, r.io, r.vo)), a.bezierCurveTo(i0, i1, i2, i3, i4, i5); (i s.applyToTriplePoints(r.oo - 1, r.i0, r.v0)), a.bezierCurveTo(i0, i1, i2, i3, i4, i5); } this.element.globalData.renderer.save(!0), a.clip(); } }), (CVMaskElement.prototype.getMaskProperty MaskElement.prototype.getMaskProperty), (CVMaskElement.prototype.destroy function () { this.element null; }); var operationsMap { 1: source-in, 2: source-out, 3: source-in, 4: source-out, }; function CVShapeData(t, e, i, r) { (this.styledShapes ), (this.tr 0, 0, 0, 0, 0, 0); var s, a 4; rc e.ty ? (a 5) : el e.ty ? (a 6) : sr e.ty && (a 7), (this.sh ShapePropertyFactory.getShapeProp(t, e, a, t)); var n, o i.length; for (s 0; s o; s + 1) is.closed || ((n { transforms: r.addTransformSequence(is.transforms), trNodes: , }), this.styledShapes.push(n), is.elements.push(n)); } function CVShapeElement(t, e, i) { (this.shapes ), (this.shapesData t.shapes), (this.stylesList ), (this.itemsData ), (this.prevViewData ), (this.shapeModifiers ), (this.processedElements ), (this.transformsManager new ShapeTransformManager()), this.initElement(t, e, i); } function CVTextElement(t, e, i) { (this.textSpans ), (this.yOffset 0), (this.fillColorAnim !1), (this.strokeColorAnim !1), (this.strokeWidthAnim !1), (this.stroke !1), (this.fill !1), (this.justifyOffset 0), (this.currentRender null), (this.renderType canvas), (this.values { fill: rgba(0,0,0,0), stroke: rgba(0,0,0,0), sWidth: 0, fValue: , }), this.initElement(t, e, i); } function CVImageElement(t, e, i) { (this.assetData e.getAssetData(t.refId)), (this.img e.imageLoader.getAsset(this.assetData)), this.initElement(t, e, i); } function CVSolidElement(t, e, i) { this.initElement(t, e, i); } function CanvasRendererBase() {} function CanvasContext() { (this.opacity -1), (this.transform createTypedArray(float32, 16)), (this.fillStyle ), (this.strokeStyle ), (this.lineWidth ), (this.lineCap ), (this.lineJoin ), (this.miterLimit ), (this.id Math.random()); } function CVContextData() { var t; (this.stack ), (this.cArrPos 0), (this.cTr new Matrix()); for (t 0; t 15; t + 1) { var e new CanvasContext(); this.stackt e; } (this._length 15), (this.nativeContext null), (this.transformMat new Matrix()), (this.currentOpacity 1), (this.currentFillStyle ), (this.appliedFillStyle ), (this.currentStrokeStyle ), (this.appliedStrokeStyle ), (this.currentLineWidth ), (this.appliedLineWidth ), (this.currentLineCap ), (this.appliedLineCap ), (this.currentLineJoin ), (this.appliedLineJoin ), (this.appliedMiterLimit ), (this.currentMiterLimit ); } function CVCompElement(t, e, i) { (this.completeLayers !1), (this.layers t.layers), (this.pendingElements ), (this.elements createSizedArray(this.layers.length)), this.initElement(t, e, i), (this.tm t.tm ? PropertyFactory.getProp(this, t.tm, 0, e.frameRate, this) : { _placeholder: !0 }); } function CanvasRenderer(t, e) { (this.animationItem t), (this.renderConfig { clearCanvas: !e || void 0 e.clearCanvas || e.clearCanvas, context: (e && e.context) || null, progressiveLoad: (e && e.progressiveLoad) || !1, preserveAspectRatio: (e && e.preserveAspectRatio) || xMidYMid meet, imagePreserveAspectRatio: (e && e.imagePreserveAspectRatio) || xMidYMid slice, contentVisibility: (e && e.contentVisibility) || visible, className: (e && e.className) || , id: (e && e.id) || , runExpressions: !e || void 0 e.runExpressions || e.runExpressions, }), (this.renderConfig.dpr (e && e.dpr) || 1), this.animationItem.wrapper && (this.renderConfig.dpr (e && e.dpr) || window.devicePixelRatio || 1), (this.renderedFrame -1), (this.globalData { frameNum: -1, _mdf: !1, renderConfig: this.renderConfig, currentGlobalAlpha: -1, }), (this.contextData new CVContextData()), (this.elements ), (this.pendingElements ), (this.transformMat new Matrix()), (this.completeLayers !1), (this.rendererType canvas), this.renderConfig.clearCanvas && ((this.ctxTransform this.contextData.transform.bind( this.contextData )), (this.ctxOpacity this.contextData.opacity.bind( this.contextData )), (this.ctxFillStyle this.contextData.fillStyle.bind( this.contextData )), (this.ctxStrokeStyle this.contextData.strokeStyle.bind( this.contextData )), (this.ctxLineWidth this.contextData.lineWidth.bind( this.contextData )), (this.ctxLineCap this.contextData.lineCap.bind( this.contextData )), (this.ctxLineJoin this.contextData.lineJoin.bind( this.contextData )), (this.ctxMiterLimit this.contextData.miterLimit.bind( this.contextData )), (this.ctxFill this.contextData.fill.bind(this.contextData)), (this.ctxFillRect this.contextData.fillRect.bind( this.contextData )), (this.ctxStroke this.contextData.stroke.bind( this.contextData )), (this.save this.contextData.save.bind(this.contextData))); } function HBaseElement() {} function HSolidElement(t, e, i) { this.initElement(t, e, i); } function HShapeElement(t, e, i) { (this.shapes ), (this.shapesData t.shapes), (this.stylesList ), (this.shapeModifiers ), (this.itemsData ), (this.processedElements ), (this.animatedContents ), (this.shapesContainer createNS(g)), this.initElement(t, e, i), (this.prevViewData ), (this.currentBBox { x: 999999, y: -999999, h: 0, w: 0 }); } function HTextElement(t, e, i) { (this.textSpans ), (this.textPaths ), (this.currentBBox { x: 999999, y: -999999, h: 0, w: 0 }), (this.renderType svg), (this.isMasked !1), this.initElement(t, e, i); } function HCameraElement(t, e, i) { this.initFrame(), this.initBaseData(t, e, i), this.initHierarchy(); var r PropertyFactory.getProp; if ( ((this.pe r(this, t.pe, 0, 0, this)), t.ks.p.s ? ((this.px r(this, t.ks.p.x, 1, 0, this)), (this.py r(this, t.ks.p.y, 1, 0, this)), (this.pz r(this, t.ks.p.z, 1, 0, this))) : (this.p r(this, t.ks.p, 1, 0, this)), t.ks.a && (this.a r(this, t.ks.a, 1, 0, this)), t.ks.or.k.length && t.ks.or.k0.to) ) { var s, a t.ks.or.k.length; for (s 0; s a; s + 1) (t.ks.or.ks.to null), (t.ks.or.ks.ti null); } (this.or r(this, t.ks.or, 1, degToRads, this)), (this.or.sh !0), (this.rx r(this, t.ks.rx, 0, degToRads, this)), (this.ry r(this, t.ks.ry, 0, degToRads, this)), (this.rz r(this, t.ks.rz, 0, degToRads, this)), (this.mat new Matrix()), (this._prevMat new Matrix()), (this._isFirstFrame !0), (this.finalTransform { mProp: this }); } function HImageElement(t, e, i) { (this.assetData e.getAssetData(t.refId)), this.initElement(t, e, i); } function HybridRendererBase(t, e) { (this.animationItem t), (this.layers null), (this.renderedFrame -1), (this.renderConfig { className: (e && e.className) || , imagePreserveAspectRatio: (e && e.imagePreserveAspectRatio) || xMidYMid slice, hideOnTransparent: !(e && !1 e.hideOnTransparent), filterSize: { width: (e && e.filterSize && e.filterSize.width) || 400%, height: (e && e.filterSize && e.filterSize.height) || 400%, x: (e && e.filterSize && e.filterSize.x) || -100%, y: (e && e.filterSize && e.filterSize.y) || -100%, }, }), (this.globalData { _mdf: !1, frameNum: -1, renderConfig: this.renderConfig, }), (this.pendingElements ), (this.elements ), (this.threeDElements ), (this.destroyed !1), (this.camera null), (this.supports3d !0), (this.rendererType html); } function HCompElement(t, e, i) { (this.layers t.layers), (this.supports3d !t.hasMask), (this.completeLayers !1), (this.pendingElements ), (this.elements this.layers ? createSizedArray(this.layers.length) : ), this.initElement(t, e, i), (this.tm t.tm ? PropertyFactory.getProp(this, t.tm, 0, e.frameRate, this) : { _placeholder: !0 }); } function HybridRenderer(t, e) { (this.animationItem t), (this.layers null), (this.renderedFrame -1), (this.renderConfig { className: (e && e.className) || , imagePreserveAspectRatio: (e && e.imagePreserveAspectRatio) || xMidYMid slice, hideOnTransparent: !(e && !1 e.hideOnTransparent), filterSize: { width: (e && e.filterSize && e.filterSize.width) || 400%, height: (e && e.filterSize && e.filterSize.height) || 400%, x: (e && e.filterSize && e.filterSize.x) || -100%, y: (e && e.filterSize && e.filterSize.y) || -100%, }, runExpressions: !e || void 0 e.runExpressions || e.runExpressions, }), (this.globalData { _mdf: !1, frameNum: -1, renderConfig: this.renderConfig, }), (this.pendingElements ), (this.elements ), (this.threeDElements ), (this.destroyed !1), (this.camera null), (this.supports3d !0), (this.rendererType html); } (CVBaseElement.prototype { createElements: function () {}, initRendererElement: function () {}, createContainerElements: function () { if (this.data.tt > 1) { this.buffers ; var t this.globalData.canvasContext, e assetLoader.createCanvas(t.canvas.width, t.canvas.height); this.buffers.push(e); var i assetLoader.createCanvas( t.canvas.width, t.canvas.height ); this.buffers.push(i), this.data.tt > 3 && !document._isProxy && assetLoader.loadLumaCanvas(); } (this.canvasContext this.globalData.canvasContext), (this.transformCanvas this.globalData.transformCanvas), (this.renderableEffectsManager new CVEffects(this)), this.searchEffectTransforms(); }, createContent: function () {}, setBlendMode: function () { var t this.globalData; if (t.blendMode ! this.data.bm) { t.blendMode this.data.bm; var e getBlendMode(this.data.bm); t.canvasContext.globalCompositeOperation e; } }, createRenderableComponents: function () { (this.maskManager new CVMaskElement(this.data, this)), (this.transformEffects this.renderableEffectsManager.getEffects( effectTypes.TRANSFORM_EFFECT )); }, hideElement: function () { this.hidden || (this.isInRange && !this.isTransparent) || (this.hidden !0); }, showElement: function () { this.isInRange && !this.isTransparent && ((this.hidden !1), (this._isFirstFrame !0), (this.maskManager._isFirstFrame !0)); }, clearCanvas: function (t) { t.clearRect( this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy ); }, prepareLayer: function () { if (this.data.tt > 1) { var t this.buffers0.getContext(2d); this.clearCanvas(t), t.drawImage(this.canvasContext.canvas, 0, 0), (this.currentTransform this.canvasContext.getTransform()), this.canvasContext.setTransform(1, 0, 0, 1, 0, 0), this.clearCanvas(this.canvasContext), this.canvasContext.setTransform(this.currentTransform); } }, exitLayer: function () { if (this.data.tt > 1) { var t this.buffers1, e t.getContext(2d); if ( (this.clearCanvas(e), e.drawImage(this.canvasContext.canvas, 0, 0), this.canvasContext.setTransform(1, 0, 0, 1, 0, 0), this.clearCanvas(this.canvasContext), this.canvasContext.setTransform(this.currentTransform), this.comp .getElementById( tp in this.data ? this.data.tp : this.data.ind - 1 ) .renderFrame(!0), this.canvasContext.setTransform(1, 0, 0, 1, 0, 0), this.data.tt > 3 && !document._isProxy) ) { var i assetLoader.getLumaCanvas(this.canvasContext.canvas); i.getContext(2d).drawImage(this.canvasContext.canvas, 0, 0), this.clearCanvas(this.canvasContext), this.canvasContext.drawImage(i, 0, 0); } (this.canvasContext.globalCompositeOperation operationsMapthis.data.tt), this.canvasContext.drawImage(t, 0, 0), (this.canvasContext.globalCompositeOperation destination-over), this.canvasContext.drawImage(this.buffers0, 0, 0), this.canvasContext.setTransform(this.currentTransform), (this.canvasContext.globalCompositeOperation source-over); } }, renderFrame: function (t) { if (!this.hidden && !this.data.hd && (1 ! this.data.td || t)) { this.renderTransform(), this.renderRenderable(), this.renderLocalTransform(), this.setBlendMode(); var e 0 this.data.ty; this.prepareLayer(), this.globalData.renderer.save(e), this.globalData.renderer.ctxTransform( this.finalTransform.localMat.props ), this.globalData.renderer.ctxOpacity( this.finalTransform.localOpacity ), this.renderInnerContent(), this.globalData.renderer.restore(e), this.exitLayer(), this.maskManager.hasMasks && this.globalData.renderer.restore(!0), this._isFirstFrame && (this._isFirstFrame !1); } }, destroy: function () { (this.canvasContext null), (this.data null), (this.globalData null), this.maskManager.destroy(); }, mHelper: new Matrix(), }), (CVBaseElement.prototype.hide CVBaseElement.prototype.hideElement), (CVBaseElement.prototype.show CVBaseElement.prototype.showElement), (CVShapeData.prototype.setAsAnimated SVGShapeData.prototype.setAsAnimated), extendPrototype( BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement, , CVShapeElement ), (CVShapeElement.prototype.initElement RenderableDOMElement.prototype.initElement), (CVShapeElement.prototype.transformHelper { opacity: 1, _opMdf: !1, }), (CVShapeElement.prototype.dashResetter ), (CVShapeElement.prototype.createContent function () { this.searchShapes( this.shapesData, this.itemsData, this.prevViewData, !0, ); }), (CVShapeElement.prototype.createStyleElement function (t, e) { var i { data: t, type: t.ty, preTransforms: this.transformsManager.addTransformSequence(e), transforms: , elements: , closed: !0 t.hd, }, r {}; if ( (fl t.ty || st t.ty ? ((r.c PropertyFactory.getProp(this, t.c, 1, 255, this)), r.c.k || (i.co rgb( + bmFloor(r.c.v0) + , + bmFloor(r.c.v1) + , + bmFloor(r.c.v2) + ))) : (gf ! t.ty && gs ! t.ty) || ((r.s PropertyFactory.getProp(this, t.s, 1, null, this)), (r.e PropertyFactory.getProp(this, t.e, 1, null, this)), (r.h PropertyFactory.getProp( this, t.h || { k: 0 }, 0, 0.01, this )), (r.a PropertyFactory.getProp( this, t.a || { k: 0 }, 0, degToRads, this )), (r.g new GradientProperty(this, t.g, this))), (r.o PropertyFactory.getProp(this, t.o, 0, 0.01, this)), st t.ty || gs t.ty) ) { if ( ((i.lc lineCapEnumt.lc || 2), (i.lj lineJoinEnumt.lj || 2), 1 t.lj && (i.ml t.ml), (r.w PropertyFactory.getProp(this, t.w, 0, null, this)), r.w.k || (i.wi r.w.v), t.d) ) { var s new DashProperty(this, t.d, canvas, this); (r.d s), r.d.k || ((i.da r.d.dashArray), (i.do r.d.dashoffset0)); } } else i.r 2 t.r ? evenodd : nonzero; return this.stylesList.push(i), (r.style i), r; }), (CVShapeElement.prototype.createGroupElement function () { return { it: , prevViewData: }; }), (CVShapeElement.prototype.createTransformElement function (t) { return { transform: { opacity: 1, _opMdf: !1, key: this.transformsManager.getNewKey(), op: PropertyFactory.getProp(this, t.o, 0, 0.01, this), mProps: TransformPropertyFactory.getTransformProperty( this, t, this ), }, }; }), (CVShapeElement.prototype.createShapeElement function (t) { var e new CVShapeData( this, t, this.stylesList, this.transformsManager ); return this.shapes.push(e), this.addShapeToModifiers(e), e; }), (CVShapeElement.prototype.reloadShapes function () { var t; this._isFirstFrame !0; var e this.itemsData.length; for (t 0; t e; t + 1) this.prevViewDatat this.itemsDatat; for ( this.searchShapes( this.shapesData, this.itemsData, this.prevViewData, !0, ), e this.dynamicProperties.length, t 0; t e; t + 1 ) this.dynamicPropertiest.getValue(); this.renderModifiers(), this.transformsManager.processSequences(this._isFirstFrame); }), (CVShapeElement.prototype.addTransformToStyleList function (t) { var e, i this.stylesList.length; for (e 0; e i; e + 1) this.stylesListe.closed || this.stylesListe.transforms.push(t); }), (CVShapeElement.prototype.removeTransformFromStyleList function () { var t, e this.stylesList.length; for (t 0; t e; t + 1) this.stylesListt.closed || this.stylesListt.transforms.pop(); }), (CVShapeElement.prototype.closeStyles function (t) { var e, i t.length; for (e 0; e i; e + 1) te.closed !0; }), (CVShapeElement.prototype.searchShapes function (t, e, i, r, s) { var a, n, o, h, l, p, f t.length - 1, m , c , d .concat(s); for (a f; a > 0; a - 1) { if ( ((h this.searchProcessedElement(ta)) ? (ea ih - 1) : (ta._shouldRender r), fl ta.ty || st ta.ty || gf ta.ty || gs ta.ty) ) h ? (ea.style.closed !1) : (ea this.createStyleElement(ta, d)), m.push(ea.style); else if (gr ta.ty) { if (h) for (o ea.it.length, n 0; n o; n + 1) ea.prevViewDatan ea.itn; else ea this.createGroupElement(ta); this.searchShapes(ta.it, ea.it, ea.prevViewData, r, d); } else tr ta.ty ? (h || ((p this.createTransformElement(ta)), (ea p)), d.push(ea), this.addTransformToStyleList(ea)) : sh ta.ty || rc ta.ty || el ta.ty || sr ta.ty ? h || (ea this.createShapeElement(ta)) : tm ta.ty || rd ta.ty || pb ta.ty || zz ta.ty || op ta.ty ? (h ? ((l ea).closed !1) : ((l ShapeModifiers.getModifier(ta.ty)).init( this, ta ), (ea l), this.shapeModifiers.push(l)), c.push(l)) : rp ta.ty && (h ? ((l ea).closed !0) : ((l ShapeModifiers.getModifier(ta.ty)), (ea l), l.init(this, t, a, e), this.shapeModifiers.push(l), (r !1)), c.push(l)); this.addProcessedElement(ta, a + 1); } for ( this.removeTransformFromStyleList(), this.closeStyles(m), f c.length, a 0; a f; a + 1 ) ca.closed !0; }), (CVShapeElement.prototype.renderInnerContent function () { (this.transformHelper.opacity 1), (this.transformHelper._opMdf !1), this.renderModifiers(), this.transformsManager.processSequences(this._isFirstFrame), this.renderShape( this.transformHelper, this.shapesData, this.itemsData, !0 ); }), (CVShapeElement.prototype.renderShapeTransform function (t, e) { (t._opMdf || e.op._mdf || this._isFirstFrame) && ((e.opacity t.opacity), (e.opacity * e.op.v), (e._opMdf !0)); }), (CVShapeElement.prototype.drawLayer function () { var t, e, i, r, s, a, n, o, h, l this.stylesList.length, p this.globalData.renderer, f this.globalData.canvasContext; for (t 0; t l; t + 1) if ( ((st ! (o (h this.stylesListt).type) && gs ! o) || 0 ! h.wi) && h.data._shouldRender && 0 ! h.coOp && 0 ! this.globalData.currentGlobalAlpha ) { for ( p.save(), a h.elements, st o || gs o ? (p.ctxStrokeStyle(st o ? h.co : h.grd), p.ctxLineWidth(h.wi), p.ctxLineCap(h.lc), p.ctxLineJoin(h.lj), p.ctxMiterLimit(h.ml || 0)) : p.ctxFillStyle(fl o ? h.co : h.grd), p.ctxOpacity(h.coOp), st ! o && gs ! o && f.beginPath(), p.ctxTransform(h.preTransforms.finalTransform.props), i a.length, e 0; e i; e + 1 ) { for ( (st ! o && gs ! o) || (f.beginPath(), h.da && (f.setLineDash(h.da), (f.lineDashOffset h.do))), s (n ae.trNodes).length, r 0; r s; r + 1 ) m nr.t ? f.moveTo(nr.p0, nr.p1) : c nr.t ? f.bezierCurveTo( nr.pts0, nr.pts1, nr.pts2, nr.pts3, nr.pts4, nr.pts5 ) : f.closePath(); (st ! o && gs ! o) || (p.ctxStroke(), h.da && f.setLineDash(this.dashResetter)); } st ! o && gs ! o && this.globalData.renderer.ctxFill(h.r), p.restore(); } }), (CVShapeElement.prototype.renderShape function (t, e, i, r) { var s, a; for (a t, s e.length - 1; s > 0; s - 1) tr es.ty ? ((a is.transform), this.renderShapeTransform(t, a)) : sh es.ty || el es.ty || rc es.ty || sr es.ty ? this.renderPath(es, is) : fl es.ty ? this.renderFill(es, is, a) : st es.ty ? this.renderStroke(es, is, a) : gf es.ty || gs es.ty ? this.renderGradientFill(es, is, a) : gr es.ty ? this.renderShape(a, es.it, is.it) : es.ty; r && this.drawLayer(); }), (CVShapeElement.prototype.renderStyledShape function (t, e) { if (this._isFirstFrame || e._mdf || t.transforms._mdf) { var i, r, s, a t.trNodes, n e.paths, o n._length; a.length 0; var h t.transforms.finalTransform; for (s 0; s o; s + 1) { var l n.shapess; if (l && l.v) { for (r l._length, i 1; i r; i + 1) 1 i && a.push({ t: m, p: h.applyToPointArray(l.v00, l.v01, 0), }), a.push({ t: c, pts: h.applyToTriplePoints( l.oi - 1, l.ii, l.vi ), }); 1 r && a.push({ t: m, p: h.applyToPointArray(l.v00, l.v01, 0), }), l.c && r && (a.push({ t: c, pts: h.applyToTriplePoints( l.oi - 1, l.i0, l.v0 ), }), a.push({ t: z })); } } t.trNodes a; } }), (CVShapeElement.prototype.renderPath function (t, e) { if (!0 ! t.hd && t._shouldRender) { var i, r e.styledShapes.length; for (i 0; i r; i + 1) this.renderStyledShape(e.styledShapesi, e.sh); } }), (CVShapeElement.prototype.renderFill function (t, e, i) { var r e.style; (e.c._mdf || this._isFirstFrame) && (r.co rgb( + bmFloor(e.c.v0) + , + bmFloor(e.c.v1) + , + bmFloor(e.c.v2) + )), (e.o._mdf || i._opMdf || this._isFirstFrame) && (r.coOp e.o.v * i.opacity); }), (CVShapeElement.prototype.renderGradientFill function (t, e, i) { var r, s e.style; if ( !s.grd || e.g._mdf || e.s._mdf || e.e._mdf || (1 ! t.t && (e.h._mdf || e.a._mdf)) ) { var a, n this.globalData.canvasContext, o e.s.v, h e.e.v; if (1 t.t) r n.createLinearGradient(o0, o1, h0, h1); else { var l Math.sqrt( Math.pow(o0 - h0, 2) + Math.pow(o1 - h1, 2) ), p Math.atan2(h1 - o1, h0 - o0), f e.h.v; f > 1 ? (f 0.99) : f -1 && (f -0.99); var m l * f, c Math.cos(p + e.a.v) * m + o0, d Math.sin(p + e.a.v) * m + o1; r n.createRadialGradient(c, d, 0, o0, o1, l); } var u t.g.p, y e.g.c, g 1; for (a 0; a u; a + 1) e.g._hasOpacity && e.g._collapsable && (g e.g.o2 * a + 1), r.addColorStop( y4 * a / 100, rgba( + y4 * a + 1 + , + y4 * a + 2 + , + y4 * a + 3 + , + g + ) ); s.grd r; } s.coOp e.o.v * i.opacity; }), (CVShapeElement.prototype.renderStroke function (t, e, i) { var r e.style, s e.d; s && (s._mdf || this._isFirstFrame) && ((r.da s.dashArray), (r.do s.dashoffset0)), (e.c._mdf || this._isFirstFrame) && (r.co rgb( + bmFloor(e.c.v0) + , + bmFloor(e.c.v1) + , + bmFloor(e.c.v2) + )), (e.o._mdf || i._opMdf || this._isFirstFrame) && (r.coOp e.o.v * i.opacity), (e.w._mdf || this._isFirstFrame) && (r.wi e.w.v); }), (CVShapeElement.prototype.destroy function () { (this.shapesData null), (this.globalData null), (this.canvasContext null), (this.stylesList.length 0), (this.itemsData.length 0); }), extendPrototype( BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement, , CVTextElement ), (CVTextElement.prototype.tHelper createTag(canvas).getContext(2d)), (CVTextElement.prototype.buildNewText function () { var t this.textProperty.currentData; this.renderedLetters createSizedArray(t.l ? t.l.length : 0); var e !1; t.fc ? ((e !0), (this.values.fill this.buildColor(t.fc))) : (this.values.fill rgba(0,0,0,0)), (this.fill e); var i !1; t.sc && ((i !0), (this.values.stroke this.buildColor(t.sc)), (this.values.sWidth t.sw)); var r, s, a, n, o, h, l, p, f, m, c, d, u this.globalData.fontManager.getFontByName(t.f), y t.l, g this.mHelper; (this.stroke i), (this.values.fValue t.finalSize + px + this.globalData.fontManager.getFontByName(t.f).fFamily), (s t.finalText.length); var v this.data.singleShape, b 0.001 * t.tr * t.finalSize, x 0, P 0, E !0, S 0; for (r 0; r s; r + 1) { (n ((a this.globalData.fontManager.getCharData( t.finalTextr, u.fStyle, this.globalData.fontManager.getFontByName(t.f).fFamily )) && a.data) || {}), g.reset(), v && yr.n && ((x -b), (P + t.yOffset), (P + E ? 1 : 0), (E !1)), (f (l n.shapes ? n.shapes0.it : ).length), g.scale(t.finalSize / 100, t.finalSize / 100), v && this.applyTextPropertiesToMatrix(t, g, yr.line, x, P), (c createSizedArray(f - 1)); var C 0; for (p 0; p f; p + 1) if (sh lp.ty) { for ( h lp.ks.k.i.length, m lp.ks.k, d , o 1; o h; o + 1 ) 1 o && d.push( g.applyToX(m.v00, m.v01, 0), g.applyToY(m.v00, m.v01, 0) ), d.push( g.applyToX(m.oo - 10, m.oo - 11, 0), g.applyToY(m.oo - 10, m.oo - 11, 0), g.applyToX(m.io0, m.io1, 0), g.applyToY(m.io0, m.io1, 0), g.applyToX(m.vo0, m.vo1, 0), g.applyToY(m.vo0, m.vo1, 0) ); d.push( g.applyToX(m.oo - 10, m.oo - 11, 0), g.applyToY(m.oo - 10, m.oo - 11, 0), g.applyToX(m.i00, m.i01, 0), g.applyToY(m.i00, m.i01, 0), g.applyToX(m.v00, m.v01, 0), g.applyToY(m.v00, m.v01, 0) ), (cC d), (C + 1); } v && ((x + yr.l), (x + b)), this.textSpansS ? (this.textSpansS.elem c) : (this.textSpansS { elem: c }), (S + 1); } }), (CVTextElement.prototype.renderInnerContent function () { var t, e, i, r, s, a; this.validateText(), (this.canvasContext.font this.values.fValue), this.globalData.renderer.ctxLineCap(butt), this.globalData.renderer.ctxLineJoin(miter), this.globalData.renderer.ctxMiterLimit(4), this.data.singleShape || this.textAnimator.getMeasures( this.textProperty.currentData, this.lettersChangedFlag ); var n, o this.textAnimator.renderedLetters, h this.textProperty.currentData.l; e h.length; var l, p, f null, m null, c null, d this.globalData.renderer; for (t 0; t e; t + 1) if (!ht.n) { if ( ((n ot) && (d.save(), d.ctxTransform(n.p), d.ctxOpacity(n.o)), this.fill) ) { for ( n && n.fc ? f ! n.fc && (d.ctxFillStyle(n.fc), (f n.fc)) : f ! this.values.fill && ((f this.values.fill), d.ctxFillStyle(this.values.fill)), r (l this.textSpanst.elem).length, this.globalData.canvasContext.beginPath(), i 0; i r; i + 1 ) for ( a (p li).length, this.globalData.canvasContext.moveTo(p0, p1), s 2; s a; s + 6 ) this.globalData.canvasContext.bezierCurveTo( ps, ps + 1, ps + 2, ps + 3, ps + 4, ps + 5 ); this.globalData.canvasContext.closePath(), d.ctxFill(); } if (this.stroke) { for ( n && n.sw ? c ! n.sw && ((c n.sw), d.ctxLineWidth(n.sw)) : c ! this.values.sWidth && ((c this.values.sWidth), d.ctxLineWidth(this.values.sWidth)), n && n.sc ? m ! n.sc && ((m n.sc), d.ctxStrokeStyle(n.sc)) : m ! this.values.stroke && ((m this.values.stroke), d.ctxStrokeStyle(this.values.stroke)), r (l this.textSpanst.elem).length, this.globalData.canvasContext.beginPath(), i 0; i r; i + 1 ) for ( a (p li).length, this.globalData.canvasContext.moveTo(p0, p1), s 2; s a; s + 6 ) this.globalData.canvasContext.bezierCurveTo( ps, ps + 1, ps + 2, ps + 3, ps + 4, ps + 5 ); this.globalData.canvasContext.closePath(), d.ctxStroke(); } n && this.globalData.renderer.restore(); } }), extendPrototype( BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, , CVImageElement ), (CVImageElement.prototype.initElement SVGShapeElement.prototype.initElement), (CVImageElement.prototype.prepareFrame IImageElement.prototype.prepareFrame), (CVImageElement.prototype.createContent function () { if ( this.img.width && (this.assetData.w ! this.img.width || this.assetData.h ! this.img.height) ) { var t createTag(canvas); (t.width this.assetData.w), (t.height this.assetData.h); var e, i, r t.getContext(2d), s this.img.width, a this.img.height, n s / a, o this.assetData.w / this.assetData.h, h this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio; (n > o && xMidYMid slice h) || (n o && xMidYMid slice ! h) ? (e (i a) * o) : (i (e s) / o), r.drawImage( this.img, (s - e) / 2, (a - i) / 2, e, i, 0, 0, this.assetData.w, this.assetData.h ), (this.img t); } }), (CVImageElement.prototype.renderInnerContent function () { this.canvasContext.drawImage(this.img, 0, 0); }), (CVImageElement.prototype.destroy function () { this.img null; }), extendPrototype( BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, , CVSolidElement ), (CVSolidElement.prototype.initElement SVGShapeElement.prototype.initElement), (CVSolidElement.prototype.prepareFrame IImageElement.prototype.prepareFrame), (CVSolidElement.prototype.renderInnerContent function () { this.globalData.renderer.ctxFillStyle(this.data.sc), this.globalData.renderer.ctxFillRect( 0, 0, this.data.sw, this.data.sh ); }), extendPrototype(BaseRenderer, CanvasRendererBase), (CanvasRendererBase.prototype.createShape function (t) { return new CVShapeElement(t, this.globalData, this); }), (CanvasRendererBase.prototype.createText function (t) { return new CVTextElement(t, this.globalData, this); }), (CanvasRendererBase.prototype.createImage function (t) { return new CVImageElement(t, this.globalData, this); }), (CanvasRendererBase.prototype.createSolid function (t) { return new CVSolidElement(t, this.globalData, this); }), (CanvasRendererBase.prototype.createNull SVGRenderer.prototype.createNull), (CanvasRendererBase.prototype.ctxTransform function (t) { (1 t0 && 0 t1 && 0 t4 && 1 t5 && 0 t12 && 0 t13) || this.canvasContext.transform( t0, t1, t4, t5, t12, t13 ); }), (CanvasRendererBase.prototype.ctxOpacity function (t) { this.canvasContext.globalAlpha * t 0 ? 0 : t; }), (CanvasRendererBase.prototype.ctxFillStyle function (t) { this.canvasContext.fillStyle t; }), (CanvasRendererBase.prototype.ctxStrokeStyle function (t) { this.canvasContext.strokeStyle t; }), (CanvasRendererBase.prototype.ctxLineWidth function (t) { this.canvasContext.lineWidth t; }), (CanvasRendererBase.prototype.ctxLineCap function (t) { this.canvasContext.lineCap t; }), (CanvasRendererBase.prototype.ctxLineJoin function (t) { this.canvasContext.lineJoin t; }), (CanvasRendererBase.prototype.ctxMiterLimit function (t) { this.canvasContext.miterLimit t; }), (CanvasRendererBase.prototype.ctxFill function (t) { this.canvasContext.fill(t); }), (CanvasRendererBase.prototype.ctxFillRect function (t, e, i, r) { this.canvasContext.fillRect(t, e, i, r); }), (CanvasRendererBase.prototype.ctxStroke function () { this.canvasContext.stroke(); }), (CanvasRendererBase.prototype.reset function () { this.renderConfig.clearCanvas ? this.contextData.reset() : this.canvasContext.restore(); }), (CanvasRendererBase.prototype.save function () { this.canvasContext.save(); }), (CanvasRendererBase.prototype.restore function (t) { this.renderConfig.clearCanvas ? (t && (this.globalData.blendMode source-over), this.contextData.restore(t)) : this.canvasContext.restore(); }), (CanvasRendererBase.prototype.configAnimation function (t) { if (this.animationItem.wrapper) { this.animationItem.container createTag(canvas); var e this.animationItem.container.style; (e.width 100%), (e.height 100%); var i 0px 0px 0px; (e.transformOrigin i), (e.mozTransformOrigin i), (e.webkitTransformOrigin i), (e-webkit-transform i), (e.contentVisibility this.renderConfig.contentVisibility), this.animationItem.wrapper.appendChild( this.animationItem.container ), (this.canvasContext this.animationItem.container.getContext(2d)), this.renderConfig.className && this.animationItem.container.setAttribute( class, this.renderConfig.className ), this.renderConfig.id && this.animationItem.container.setAttribute( id, this.renderConfig.id ); } else this.canvasContext this.renderConfig.context; this.contextData.setContext(this.canvasContext), (this.data t), (this.layers t.layers), (this.transformCanvas { w: t.w, h: t.h, sx: 0, sy: 0, tx: 0, ty: 0, }), this.setupGlobalData(t, document.body), (this.globalData.canvasContext this.canvasContext), (this.globalData.renderer this), (this.globalData.isDashed !1), (this.globalData.progressiveLoad this.renderConfig.progressiveLoad), (this.globalData.transformCanvas this.transformCanvas), (this.elements createSizedArray(t.layers.length)), this.updateContainerSize(); }), (CanvasRendererBase.prototype.updateContainerSize function ( t, e ) { var i, r, s, a; if ( (this.reset(), t ? ((i t), (r e), (this.canvasContext.canvas.width i), (this.canvasContext.canvas.height r)) : (this.animationItem.wrapper && this.animationItem.container ? ((i this.animationItem.wrapper.offsetWidth), (r this.animationItem.wrapper.offsetHeight)) : ((i this.canvasContext.canvas.width), (r this.canvasContext.canvas.height)), (this.canvasContext.canvas.width i * this.renderConfig.dpr), (this.canvasContext.canvas.height r * this.renderConfig.dpr)), -1 ! this.renderConfig.preserveAspectRatio.indexOf(meet) || -1 ! this.renderConfig.preserveAspectRatio.indexOf(slice)) ) { var n this.renderConfig.preserveAspectRatio.split( ), o n1 || meet, h n0 || xMidYMid, l h.substr(0, 4), p h.substr(4); (s i / r), ((a this.transformCanvas.w / this.transformCanvas.h) > s && meet o) || (a s && slice o) ? ((this.transformCanvas.sx i / (this.transformCanvas.w / this.renderConfig.dpr)), (this.transformCanvas.sy i / (this.transformCanvas.w / this.renderConfig.dpr))) : ((this.transformCanvas.sx r / (this.transformCanvas.h / this.renderConfig.dpr)), (this.transformCanvas.sy r / (this.transformCanvas.h / this.renderConfig.dpr))), (this.transformCanvas.tx xMid l && ((a s && meet o) || (a > s && slice o)) ? ((i - this.transformCanvas.w * (r / this.transformCanvas.h)) / 2) * this.renderConfig.dpr : xMax l && ((a s && meet o) || (a > s && slice o)) ? (i - this.transformCanvas.w * (r / this.transformCanvas.h)) * this.renderConfig.dpr : 0), (this.transformCanvas.ty YMid p && ((a > s && meet o) || (a s && slice o)) ? ((r - this.transformCanvas.h * (i / this.transformCanvas.w)) / 2) * this.renderConfig.dpr : YMax p && ((a > s && meet o) || (a s && slice o)) ? (r - this.transformCanvas.h * (i / this.transformCanvas.w)) * this.renderConfig.dpr : 0); } else none this.renderConfig.preserveAspectRatio ? ((this.transformCanvas.sx i / (this.transformCanvas.w / this.renderConfig.dpr)), (this.transformCanvas.sy r / (this.transformCanvas.h / this.renderConfig.dpr)), (this.transformCanvas.tx 0), (this.transformCanvas.ty 0)) : ((this.transformCanvas.sx this.renderConfig.dpr), (this.transformCanvas.sy this.renderConfig.dpr), (this.transformCanvas.tx 0), (this.transformCanvas.ty 0)); (this.transformCanvas.props this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1, ), this.ctxTransform(this.transformCanvas.props), this.canvasContext.beginPath(), this.canvasContext.rect( 0, 0, this.transformCanvas.w, this.transformCanvas.h ), this.canvasContext.closePath(), this.canvasContext.clip(), this.renderFrame(this.renderedFrame, !0); }), (CanvasRendererBase.prototype.destroy function () { var t; for ( this.renderConfig.clearCanvas && this.animationItem.wrapper && (this.animationItem.wrapper.innerText ), t (this.layers ? this.layers.length : 0) - 1; t > 0; t - 1 ) this.elementst && this.elementst.destroy && this.elementst.destroy(); (this.elements.length 0), (this.globalData.canvasContext null), (this.animationItem.container null), (this.destroyed !0); }), (CanvasRendererBase.prototype.renderFrame function (t, e) { if ( (this.renderedFrame ! t || !0 ! this.renderConfig.clearCanvas || e) && !this.destroyed && -1 ! t ) { var i; (this.renderedFrame t), (this.globalData.frameNum t - this.animationItem._isFirstFrame), (this.globalData.frameId + 1), (this.globalData._mdf !this.renderConfig.clearCanvas || e), (this.globalData.projectInterface.currentFrame t); var r this.layers.length; for ( this.completeLayers || this.checkLayers(t), i r - 1; i > 0; i - 1 ) (this.completeLayers || this.elementsi) && this.elementsi.prepareFrame(t - this.layersi.st); if (this.globalData._mdf) { for ( !0 this.renderConfig.clearCanvas ? this.canvasContext.clearRect( 0, 0, this.transformCanvas.w, this.transformCanvas.h ) : this.save(), i r - 1; i > 0; i - 1 ) (this.completeLayers || this.elementsi) && this.elementsi.renderFrame(); !0 ! this.renderConfig.clearCanvas && this.restore(); } } }), (CanvasRendererBase.prototype.buildItem function (t) { var e this.elements; if (!et && 99 ! this.layerst.ty) { var i this.createItem(this.layerst, this, this.globalData); (et i), i.initExpressions(); } }), (CanvasRendererBase.prototype.checkPendingElements function () { for (; this.pendingElements.length; ) { this.pendingElements.pop().checkParenting(); } }), (CanvasRendererBase.prototype.hide function () { this.animationItem.container.style.display none; }), (CanvasRendererBase.prototype.show function () { this.animationItem.container.style.display block; }), (CVContextData.prototype.duplicate function () { var t 2 * this._length, e 0; for (e this._length; e t; e + 1) this.stacke new CanvasContext(); this._length t; }), (CVContextData.prototype.reset function () { (this.cArrPos 0), this.cTr.reset(), (this.stackthis.cArrPos.opacity 1); }), (CVContextData.prototype.restore function (t) { this.cArrPos - 1; var e, i this.stackthis.cArrPos, r i.transform, s this.cTr.props; for (e 0; e 16; e + 1) se re; if (t) { this.nativeContext.restore(); var a this.stackthis.cArrPos + 1; (this.appliedFillStyle a.fillStyle), (this.appliedStrokeStyle a.strokeStyle), (this.appliedLineWidth a.lineWidth), (this.appliedLineCap a.lineCap), (this.appliedLineJoin a.lineJoin), (this.appliedMiterLimit a.miterLimit); } this.nativeContext.setTransform( r0, r1, r4, r5, r12, r13 ), (t || (-1 ! i.opacity && this.currentOpacity ! i.opacity)) && ((this.nativeContext.globalAlpha i.opacity), (this.currentOpacity i.opacity)), (this.currentFillStyle i.fillStyle), (this.currentStrokeStyle i.strokeStyle), (this.currentLineWidth i.lineWidth), (this.currentLineCap i.lineCap), (this.currentLineJoin i.lineJoin), (this.currentMiterLimit i.miterLimit); }), (CVContextData.prototype.save function (t) { t && this.nativeContext.save(); var e this.cTr.props; this._length this.cArrPos && this.duplicate(); var i, r this.stackthis.cArrPos; for (i 0; i 16; i + 1) r.transformi ei; this.cArrPos + 1; var s this.stackthis.cArrPos; (s.opacity r.opacity), (s.fillStyle r.fillStyle), (s.strokeStyle r.strokeStyle), (s.lineWidth r.lineWidth), (s.lineCap r.lineCap), (s.lineJoin r.lineJoin), (s.miterLimit r.miterLimit); }), (CVContextData.prototype.setOpacity function (t) { this.stackthis.cArrPos.opacity t; }), (CVContextData.prototype.setContext function (t) { this.nativeContext t; }), (CVContextData.prototype.fillStyle function (t) { this.stackthis.cArrPos.fillStyle ! t && ((this.currentFillStyle t), (this.stackthis.cArrPos.fillStyle t)); }), (CVContextData.prototype.strokeStyle function (t) { this.stackthis.cArrPos.strokeStyle ! t && ((this.currentStrokeStyle t), (this.stackthis.cArrPos.strokeStyle t)); }), (CVContextData.prototype.lineWidth function (t) { this.stackthis.cArrPos.lineWidth ! t && ((this.currentLineWidth t), (this.stackthis.cArrPos.lineWidth t)); }), (CVContextData.prototype.lineCap function (t) { this.stackthis.cArrPos.lineCap ! t && ((this.currentLineCap t), (this.stackthis.cArrPos.lineCap t)); }), (CVContextData.prototype.lineJoin function (t) { this.stackthis.cArrPos.lineJoin ! t && ((this.currentLineJoin t), (this.stackthis.cArrPos.lineJoin t)); }), (CVContextData.prototype.miterLimit function (t) { this.stackthis.cArrPos.miterLimit ! t && ((this.currentMiterLimit t), (this.stackthis.cArrPos.miterLimit t)); }), (CVContextData.prototype.transform function (t) { this.transformMat.cloneFromProps(t); var e this.cTr; this.transformMat.multiply(e), e.cloneFromProps(this.transformMat.props); var i e.props; this.nativeContext.setTransform( i0, i1, i4, i5, i12, i13 ); }), (CVContextData.prototype.opacity function (t) { var e this.stackthis.cArrPos.opacity; (e * t 0 ? 0 : t), this.stackthis.cArrPos.opacity ! e && (this.currentOpacity ! t && ((this.nativeContext.globalAlpha t), (this.currentOpacity t)), (this.stackthis.cArrPos.opacity e)); }), (CVContextData.prototype.fill function (t) { this.appliedFillStyle ! this.currentFillStyle && ((this.appliedFillStyle this.currentFillStyle), (this.nativeContext.fillStyle this.appliedFillStyle)), this.nativeContext.fill(t); }), (CVContextData.prototype.fillRect function (t, e, i, r) { this.appliedFillStyle ! this.currentFillStyle && ((this.appliedFillStyle this.currentFillStyle), (this.nativeContext.fillStyle this.appliedFillStyle)), this.nativeContext.fillRect(t, e, i, r); }), (CVContextData.prototype.stroke function () { this.appliedStrokeStyle ! this.currentStrokeStyle && ((this.appliedStrokeStyle this.currentStrokeStyle), (this.nativeContext.strokeStyle this.appliedStrokeStyle)), this.appliedLineWidth ! this.currentLineWidth && ((this.appliedLineWidth this.currentLineWidth), (this.nativeContext.lineWidth this.appliedLineWidth)), this.appliedLineCap ! this.currentLineCap && ((this.appliedLineCap this.currentLineCap), (this.nativeContext.lineCap this.appliedLineCap)), this.appliedLineJoin ! this.currentLineJoin && ((this.appliedLineJoin this.currentLineJoin), (this.nativeContext.lineJoin this.appliedLineJoin)), this.appliedMiterLimit ! this.currentMiterLimit && ((this.appliedMiterLimit this.currentMiterLimit), (this.nativeContext.miterLimit this.appliedMiterLimit)), this.nativeContext.stroke(); }), extendPrototype( CanvasRendererBase, ICompElement, CVBaseElement, CVCompElement ), (CVCompElement.prototype.renderInnerContent function () { var t, e this.canvasContext; for ( e.beginPath(), e.moveTo(0, 0), e.lineTo(this.data.w, 0), e.lineTo(this.data.w, this.data.h), e.lineTo(0, this.data.h), e.lineTo(0, 0), e.clip(), t this.layers.length - 1; t > 0; t - 1 ) (this.completeLayers || this.elementst) && this.elementst.renderFrame(); }), (CVCompElement.prototype.destroy function () { var t; for (t this.layers.length - 1; t > 0; t - 1) this.elementst && this.elementst.destroy(); (this.layers null), (this.elements null); }), (CVCompElement.prototype.createComp function (t) { return new CVCompElement(t, this.globalData, this); }), extendPrototype(CanvasRendererBase, CanvasRenderer), (CanvasRenderer.prototype.createComp function (t) { return new CVCompElement(t, this.globalData, this); }), (HBaseElement.prototype { checkBlendMode: function () {}, initRendererElement: function () { (this.baseElement createTag(this.data.tg || div)), this.data.hasMask ? ((this.svgElement createNS(svg)), (this.layerElement createNS(g)), (this.maskedElement this.layerElement), this.svgElement.appendChild(this.layerElement), this.baseElement.appendChild(this.svgElement)) : (this.layerElement this.baseElement), styleDiv(this.baseElement); }, createContainerElements: function () { (this.renderableEffectsManager new CVEffects(this)), (this.transformedElement this.baseElement), (this.maskedElement this.layerElement), this.data.ln && this.layerElement.setAttribute(id, this.data.ln), this.data.cl && this.layerElement.setAttribute(class, this.data.cl), 0 ! this.data.bm && this.setBlendMode(); }, renderElement: function () { var t this.transformedElement ? this.transformedElement.style : {}; if (this.finalTransform._matMdf) { var e this.finalTransform.mat.toCSS(); (t.transform e), (t.webkitTransform e); } this.finalTransform._opMdf && (t.opacity this.finalTransform.mProp.o.v); }, renderFrame: function () { this.data.hd || this.hidden || (this.renderTransform(), this.renderRenderable(), this.renderElement(), this.renderInnerContent(), this._isFirstFrame && (this._isFirstFrame !1)); }, destroy: function () { (this.layerElement null), (this.transformedElement null), this.matteElement && (this.matteElement null), this.maskManager && (this.maskManager.destroy(), (this.maskManager null)); }, createRenderableComponents: function () { this.maskManager new MaskElement( this.data, this, this.globalData ); }, addEffects: function () {}, setMatte: function () {}, }), (HBaseElement.prototype.getBaseElement SVGBaseElement.prototype.getBaseElement), (HBaseElement.prototype.destroyBaseElement HBaseElement.prototype.destroy), (HBaseElement.prototype.buildElementParenting BaseRenderer.prototype.buildElementParenting), extendPrototype( BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, , HSolidElement ), (HSolidElement.prototype.createContent function () { var t; this.data.hasMask ? ((t createNS(rect)).setAttribute(width, this.data.sw), t.setAttribute(height, this.data.sh), t.setAttribute(fill, this.data.sc), this.svgElement.setAttribute(width, this.data.sw), this.svgElement.setAttribute(height, this.data.sh)) : (((t createTag(div)).style.width this.data.sw + px), (t.style.height this.data.sh + px), (t.style.backgroundColor this.data.sc)), this.layerElement.appendChild(t); }), extendPrototype( BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement, , HShapeElement ), (HShapeElement.prototype._renderShapeFrame HShapeElement.prototype.renderInnerContent), (HShapeElement.prototype.createContent function () { var t; if (((this.baseElement.style.fontSize 0), this.data.hasMask)) this.layerElement.appendChild(this.shapesContainer), (t this.svgElement); else { t createNS(svg); var e this.comp.data ? this.comp.data : this.globalData.compSize; t.setAttribute(width, e.w), t.setAttribute(height, e.h), t.appendChild(this.shapesContainer), this.layerElement.appendChild(t); } this.searchShapes( this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, , !0 ), this.filterUniqueShapes(), (this.shapeCont t); }), (HShapeElement.prototype.getTransformedPoint function (t, e) { var i, r t.length; for (i 0; i r; i + 1) e ti.mProps.v.applyToPointArray(e0, e1, 0); return e; }), (HShapeElement.prototype.calculateShapeBoundingBox function ( t, e ) { var i, r, s, a, n, o t.sh.v, h t.transformers, l o._length; if (!(l 1)) { for (i 0; i l - 1; i + 1) (r this.getTransformedPoint(h, o.vi)), (s this.getTransformedPoint(h, o.oi)), (a this.getTransformedPoint(h, o.ii + 1)), (n this.getTransformedPoint(h, o.vi + 1)), this.checkBounds(r, s, a, n, e); o.c && ((r this.getTransformedPoint(h, o.vi)), (s this.getTransformedPoint(h, o.oi)), (a this.getTransformedPoint(h, o.i0)), (n this.getTransformedPoint(h, o.v0)), this.checkBounds(r, s, a, n, e)); } }), (HShapeElement.prototype.checkBounds function (t, e, i, r, s) { this.getBoundsOfCurve(t, e, i, r); var a this.shapeBoundingBox; (s.x bmMin(a.left, s.x)), (s.xMax bmMax(a.right, s.xMax)), (s.y bmMin(a.top, s.y)), (s.yMax bmMax(a.bottom, s.yMax)); }), (HShapeElement.prototype.shapeBoundingBox { left: 0, right: 0, top: 0, bottom: 0, }), (HShapeElement.prototype.tempBoundingBox { x: 0, xMax: 0, y: 0, yMax: 0, width: 0, height: 0, }), (HShapeElement.prototype.getBoundsOfCurve function (t, e, i, r) { for ( var s, a, n, o, h, l, p, f t0, r0, t1, r1, , m 0; m 2; ++m ) (a 6 * tm - 12 * em + 6 * im), (s -3 * tm + 9 * em - 9 * im + 3 * rm), (n 3 * em - 3 * tm), (a | 0), (n | 0), (0 (s | 0) && 0 a) || (0 s ? (o -n / a) > 0 && o 1 && fm.push(this.calculateF(o, t, e, i, r, m)) : (h a * a - 4 * n * s) > 0 && ((l (-a + bmSqrt(h)) / (2 * s)) > 0 && l 1 && fm.push(this.calculateF(l, t, e, i, r, m)), (p (-a - bmSqrt(h)) / (2 * s)) > 0 && p 1 && fm.push(this.calculateF(p, t, e, i, r, m)))); (this.shapeBoundingBox.left bmMin.apply(null, f0)), (this.shapeBoundingBox.top bmMin.apply(null, f1)), (this.shapeBoundingBox.right bmMax.apply(null, f0)), (this.shapeBoundingBox.bottom bmMax.apply(null, f1)); }), (HShapeElement.prototype.calculateF function (t, e, i, r, s, a) { return ( bmPow(1 - t, 3) * ea + 3 * bmPow(1 - t, 2) * t * ia + 3 * (1 - t) * bmPow(t, 2) * ra + bmPow(t, 3) * sa ); }), (HShapeElement.prototype.calculateBoundingBox function (t, e) { var i, r t.length; for (i 0; i r; i + 1) ti && ti.sh ? this.calculateShapeBoundingBox(ti, e) : ti && ti.it ? this.calculateBoundingBox(ti.it, e) : ti && ti.style && ti.w && this.expandStrokeBoundingBox(ti.w, e); }), (HShapeElement.prototype.expandStrokeBoundingBox function (t, e) { var i 0; if (t.keyframes) { for (var r 0; r t.keyframes.length; r + 1) { var s t.keyframesr.s; s > i && (i s); } i * t.mult; } else i t.v * t.mult; (e.x - i), (e.xMax + i), (e.y - i), (e.yMax + i); }), (HShapeElement.prototype.currentBoxContains function (t) { return ( this.currentBBox.x t.x && this.currentBBox.y t.y && this.currentBBox.width + this.currentBBox.x > t.x + t.width && this.currentBBox.height + this.currentBBox.y > t.y + t.height ); }), (HShapeElement.prototype.renderInnerContent function () { if ( (this._renderShapeFrame(), !this.hidden && (this._isFirstFrame || this._mdf)) ) { var t this.tempBoundingBox, e 999999; if ( ((t.x e), (t.xMax -e), (t.y e), (t.yMax -e), this.calculateBoundingBox(this.itemsData, t), (t.width t.xMax t.x ? 0 : t.xMax - t.x), (t.height t.yMax t.y ? 0 : t.yMax - t.y), this.currentBoxContains(t)) ) return; var i !1; if ( (this.currentBBox.w ! t.width && ((this.currentBBox.w t.width), this.shapeCont.setAttribute(width, t.width), (i !0)), this.currentBBox.h ! t.height && ((this.currentBBox.h t.height), this.shapeCont.setAttribute(height, t.height), (i !0)), i || this.currentBBox.x ! t.x || this.currentBBox.y ! t.y) ) { (this.currentBBox.w t.width), (this.currentBBox.h t.height), (this.currentBBox.x t.x), (this.currentBBox.y t.y), this.shapeCont.setAttribute( viewBox, this.currentBBox.x + + this.currentBBox.y + + this.currentBBox.w + + this.currentBBox.h ); var r this.shapeCont.style, s translate( + this.currentBBox.x + px, + this.currentBBox.y + px); (r.transform s), (r.webkitTransform s); } } }), extendPrototype( BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement, , HTextElement ), (HTextElement.prototype.createContent function () { if (((this.isMasked this.checkMasks()), this.isMasked)) { (this.renderType svg), (this.compW this.comp.data.w), (this.compH this.comp.data.h), this.svgElement.setAttribute(width, this.compW), this.svgElement.setAttribute(height, this.compH); var t createNS(g); this.maskedElement.appendChild(t), (this.innerElem t); } else (this.renderType html), (this.innerElem this.layerElement); this.checkParenting(); }), (HTextElement.prototype.buildNewText function () { var t this.textProperty.currentData; this.renderedLetters createSizedArray(t.l ? t.l.length : 0); var e this.innerElem.style, i t.fc ? this.buildColor(t.fc) : rgba(0,0,0,0); (e.fill i), (e.color i), t.sc && ((e.stroke this.buildColor(t.sc)), (e.strokeWidth t.sw + px)); var r, s, a this.globalData.fontManager.getFontByName(t.f); if (!this.globalData.fontManager.chars) if ( ((e.fontSize t.finalSize + px), (e.lineHeight t.finalSize + px), a.fClass) ) this.innerElem.className a.fClass; else { e.fontFamily a.fFamily; var n t.fWeight, o t.fStyle; (e.fontStyle o), (e.fontWeight n); } var h, l, p, f t.l; s f.length; var m, c this.mHelper, d , u 0; for (r 0; r s; r + 1) { if ( (this.globalData.fontManager.chars ? (this.textPathsu ? (h this.textPathsu) : ((h createNS(path)).setAttribute( stroke-linecap, lineCapEnum1 ), h.setAttribute(stroke-linejoin, lineJoinEnum2), h.setAttribute(stroke-miterlimit, 4)), this.isMasked || (this.textSpansu ? (p (l this.textSpansu).children0) : (((l createTag(div)).style.lineHeight 0), (p createNS(svg)).appendChild(h), styleDiv(l)))) : this.isMasked ? (h this.textPathsu ? this.textPathsu : createNS(text)) : this.textSpansu ? ((l this.textSpansu), (h this.textPathsu)) : (styleDiv((l createTag(span))), styleDiv((h createTag(span))), l.appendChild(h)), this.globalData.fontManager.chars) ) { var y, g this.globalData.fontManager.getCharData( t.finalTextr, a.fStyle, this.globalData.fontManager.getFontByName(t.f).fFamily ); if ( ((y g ? g.data : null), c.reset(), y && y.shapes && y.shapes.length && ((m y.shapes0.it), c.scale(t.finalSize / 100, t.finalSize / 100), (d this.createPathShape(c, m)), h.setAttribute(d, d)), this.isMasked) ) this.innerElem.appendChild(h); else { if ((this.innerElem.appendChild(l), y && y.shapes)) { document.body.appendChild(p); var v p.getBBox(); p.setAttribute(width, v.width + 2), p.setAttribute(height, v.height + 2), p.setAttribute( viewBox, v.x - 1 + + (v.y - 1) + + (v.width + 2) + + (v.height + 2) ); var b p.style, x translate( + (v.x - 1) + px, + (v.y - 1) + px); (b.transform x), (b.webkitTransform x), (fr.yOffset v.y - 1); } else p.setAttribute(width, 1), p.setAttribute(height, 1); l.appendChild(p); } } else if ( ((h.textContent fr.val), h.setAttributeNS( http://www.w3.org/XML/1998/namespace, xml:space, preserve ), this.isMasked) ) this.innerElem.appendChild(h); else { this.innerElem.appendChild(l); var P h.style, E translate3d(0, + -t.finalSize / 1.2 + px,0); (P.transform E), (P.webkitTransform E); } this.isMasked ? (this.textSpansu h) : (this.textSpansu l), (this.textSpansu.style.display block), (this.textPathsu h), (u + 1); } for (; u this.textSpans.length; ) (this.textSpansu.style.display none), (u + 1); }), (HTextElement.prototype.renderInnerContent function () { var t; if ((this.validateText(), this.data.singleShape)) { if (!this._isFirstFrame && !this.lettersChangedFlag) return; if (this.isMasked && this.finalTransform._matMdf) { this.svgElement.setAttribute( viewBox, -this.finalTransform.mProp.p.v0 + + -this.finalTransform.mProp.p.v1 + + this.compW + + this.compH ), (t this.svgElement.style); var e translate( + -this.finalTransform.mProp.p.v0 + px, + -this.finalTransform.mProp.p.v1 + px); (t.transform e), (t.webkitTransform e); } } if ( (this.textAnimator.getMeasures( this.textProperty.currentData, this.lettersChangedFlag ), this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) ) { var i, r, s, a, n, o 0, h this.textAnimator.renderedLetters, l this.textProperty.currentData.l; for (r l.length, i 0; i r; i + 1) li.n ? (o + 1) : ((a this.textSpansi), (n this.textPathsi), (s ho), (o + 1), s._mdf.m && (this.isMasked ? a.setAttribute(transform, s.m) : ((a.style.webkitTransform s.m), (a.style.transform s.m))), (a.style.opacity s.o), s.sw && s._mdf.sw && n.setAttribute(stroke-width, s.sw), s.sc && s._mdf.sc && n.setAttribute(stroke, s.sc), s.fc && s._mdf.fc && (n.setAttribute(fill, s.fc), (n.style.color s.fc))); if ( this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf) ) { var p this.innerElem.getBBox(); this.currentBBox.w ! p.width && ((this.currentBBox.w p.width), this.svgElement.setAttribute(width, p.width)), this.currentBBox.h ! p.height && ((this.currentBBox.h p.height), this.svgElement.setAttribute(height, p.height)); if ( this.currentBBox.w ! p.width + 2 || this.currentBBox.h ! p.height + 2 || this.currentBBox.x ! p.x - 1 || this.currentBBox.y ! p.y - 1 ) { (this.currentBBox.w p.width + 2), (this.currentBBox.h p.height + 2), (this.currentBBox.x p.x - 1), (this.currentBBox.y p.y - 1), this.svgElement.setAttribute( viewBox, this.currentBBox.x + + this.currentBBox.y + + this.currentBBox.w + + this.currentBBox.h ), (t this.svgElement.style); var f translate( + this.currentBBox.x + px, + this.currentBBox.y + px); (t.transform f), (t.webkitTransform f); } } } }), extendPrototype( BaseElement, FrameElement, HierarchyElement, HCameraElement ), (HCameraElement.prototype.setup function () { var t, e, i, r, s this.comp.threeDElements.length; for (t 0; t s; t + 1) if (3d (e this.comp.threeDElementst).type) { (i e.perspectiveElem.style), (r e.container.style); var a this.pe.v + px, n 0px 0px 0px, o matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1); (i.perspective a), (i.webkitPerspective a), (r.transformOrigin n), (r.mozTransformOrigin n), (r.webkitTransformOrigin n), (i.transform o), (i.webkitTransform o); } }), (HCameraElement.prototype.createElements function () {}), (HCameraElement.prototype.hide function () {}), (HCameraElement.prototype.renderFrame function () { var t, e, i this._isFirstFrame; if (this.hierarchy) for (e this.hierarchy.length, t 0; t e; t + 1) i this.hierarchyt.finalTransform.mProp._mdf || i; if ( i || this.pe._mdf || (this.p && this.p._mdf) || (this.px && (this.px._mdf || this.py._mdf || this.pz._mdf)) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || (this.a && this.a._mdf) ) { if ((this.mat.reset(), this.hierarchy)) for (t e this.hierarchy.length - 1; t > 0; t - 1) { var r this.hierarchyt.finalTransform.mProp; this.mat.translate(-r.p.v0, -r.p.v1, r.p.v2), this.mat .rotateX(-r.or.v0) .rotateY(-r.or.v1) .rotateZ(r.or.v2), this.mat .rotateX(-r.rx.v) .rotateY(-r.ry.v) .rotateZ(r.rz.v), this.mat.scale(1 / r.s.v0, 1 / r.s.v1, 1 / r.s.v2), this.mat.translate(r.a.v0, r.a.v1, r.a.v2); } if ( (this.p ? this.mat.translate( -this.p.v0, -this.p.v1, this.p.v2 ) : this.mat.translate(-this.px.v, -this.py.v, this.pz.v), this.a) ) { var s; s this.p ? this.p.v0 - this.a.v0, this.p.v1 - this.a.v1, this.p.v2 - this.a.v2, : this.px.v - this.a.v0, this.py.v - this.a.v1, this.pz.v - this.a.v2, ; var a Math.sqrt( Math.pow(s0, 2) + Math.pow(s1, 2) + Math.pow(s2, 2) ), n s0 / a, s1 / a, s2 / a, o Math.sqrt(n2 * n2 + n0 * n0), h Math.atan2(n1, o), l Math.atan2(n0, -n2); this.mat.rotateY(l).rotateX(-h); } this.mat .rotateX(-this.rx.v) .rotateY(-this.ry.v) .rotateZ(this.rz.v), this.mat .rotateX(-this.or.v0) .rotateY(-this.or.v1) .rotateZ(this.or.v2), this.mat.translate( this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0 ), this.mat.translate(0, 0, this.pe.v); var p !this._prevMat.equals(this.mat); if ((p || this.pe._mdf) && this.comp.threeDElements) { var f, m, c; for ( e this.comp.threeDElements.length, t 0; t e; t + 1 ) if (3d (f this.comp.threeDElementst).type) { if (p) { var d this.mat.toCSS(); ((c f.container.style).transform d), (c.webkitTransform d); } this.pe._mdf && (((m f.perspectiveElem.style).perspective this.pe.v + px), (m.webkitPerspective this.pe.v + px)); } this.mat.clone(this._prevMat); } } this._isFirstFrame !1; }), (HCameraElement.prototype.prepareFrame function (t) { this.prepareProperties(t, !0); }), (HCameraElement.prototype.destroy function () {}), (HCameraElement.prototype.getBaseElement function () { return null; }), extendPrototype( BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement, , HImageElement ), (HImageElement.prototype.createContent function () { var t this.globalData.getAssetsPath(this.assetData), e new Image(); this.data.hasMask ? ((this.imageElem createNS(image)), this.imageElem.setAttribute(width, this.assetData.w + px), this.imageElem.setAttribute( height, this.assetData.h + px ), this.imageElem.setAttributeNS( http://www.w3.org/1999/xlink, href, t ), this.layerElement.appendChild(this.imageElem), this.baseElement.setAttribute(width, this.assetData.w), this.baseElement.setAttribute(height, this.assetData.h)) : this.layerElement.appendChild(e), (e.crossOrigin anonymous), (e.src t), this.data.ln && this.baseElement.setAttribute(id, this.data.ln); }), extendPrototype(BaseRenderer, HybridRendererBase), (HybridRendererBase.prototype.buildItem SVGRenderer.prototype.buildItem), (HybridRendererBase.prototype.checkPendingElements function () { for (; this.pendingElements.length; ) { this.pendingElements.pop().checkParenting(); } }), (HybridRendererBase.prototype.appendElementInPos function (t, e) { var i t.getBaseElement(); if (i) { var r this.layerse; if (r.ddd && this.supports3d) this.addTo3dContainer(i, e); else if (this.threeDElements) this.addTo3dContainer(i, e); else { for (var s, a, n 0; n e; ) this.elementsn && !0 ! this.elementsn && this.elementsn.getBaseElement && ((a this.elementsn), (s (this.layersn.ddd ? this.getThreeDContainerByPos(n) : a.getBaseElement()) || s)), (n + 1); s ? (r.ddd && this.supports3d) || this.layerElement.insertBefore(i, s) : (r.ddd && this.supports3d) || this.layerElement.appendChild(i); } } }), (HybridRendererBase.prototype.createShape function (t) { return this.supports3d ? new HShapeElement(t, this.globalData, this) : new SVGShapeElement(t, this.globalData, this); }), (HybridRendererBase.prototype.createText function (t) { return this.supports3d ? new HTextElement(t, this.globalData, this) : new SVGTextLottieElement(t, this.globalData, this); }), (HybridRendererBase.prototype.createCamera function (t) { return ( (this.camera new HCameraElement(t, this.globalData, this)), this.camera ); }), (HybridRendererBase.prototype.createImage function (t) { return this.supports3d ? new HImageElement(t, this.globalData, this) : new IImageElement(t, this.globalData, this); }), (HybridRendererBase.prototype.createSolid function (t) { return this.supports3d ? new HSolidElement(t, this.globalData, this) : new ISolidElement(t, this.globalData, this); }), (HybridRendererBase.prototype.createNull SVGRenderer.prototype.createNull), (HybridRendererBase.prototype.getThreeDContainerByPos function ( t ) { for (var e 0, i this.threeDElements.length; e i; ) { if ( this.threeDElementse.startPos t && this.threeDElementse.endPos > t ) return this.threeDElementse.perspectiveElem; e + 1; } return null; }), (HybridRendererBase.prototype.createThreeDContainer function ( t, e ) { var i, r, s createTag(div); styleDiv(s); var a createTag(div); if ((styleDiv(a), 3d e)) { ((i s.style).width this.globalData.compSize.w + px), (i.height this.globalData.compSize.h + px); var n 50% 50%; (i.webkitTransformOrigin n), (i.mozTransformOrigin n), (i.transformOrigin n); var o matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1); ((r a.style).transform o), (r.webkitTransform o); } s.appendChild(a); var h { container: a, perspectiveElem: s, startPos: t, endPos: t, type: e, }; return this.threeDElements.push(h), h; }), (HybridRendererBase.prototype.build3dContainers function () { var t, e, i this.layers.length, r ; for (t 0; t i; t + 1) this.layerst.ddd && 3 ! this.layerst.ty ? (3d ! r && ((r 3d), (e this.createThreeDContainer(t, 3d))), (e.endPos Math.max(e.endPos, t))) : (2d ! r && ((r 2d), (e this.createThreeDContainer(t, 2d))), (e.endPos Math.max(e.endPos, t))); for (t (i this.threeDElements.length) - 1; t > 0; t - 1) this.resizerElem.appendChild( this.threeDElementst.perspectiveElem ); }), (HybridRendererBase.prototype.addTo3dContainer function (t, e) { for (var i 0, r this.threeDElements.length; i r; ) { if (e this.threeDElementsi.endPos) { for (var s, a this.threeDElementsi.startPos; a e; ) this.elementsa && this.elementsa.getBaseElement && (s this.elementsa.getBaseElement()), (a + 1); s ? this.threeDElementsi.container.insertBefore(t, s) : this.threeDElementsi.container.appendChild(t); break; } i + 1; } }), (HybridRendererBase.prototype.configAnimation function (t) { var e createTag(div), i this.animationItem.wrapper, r e.style; (r.width t.w + px), (r.height t.h + px), (this.resizerElem e), styleDiv(e), (r.transformStyle flat), (r.mozTransformStyle flat), (r.webkitTransformStyle flat), this.renderConfig.className && e.setAttribute(class, this.renderConfig.className), i.appendChild(e), (r.overflow hidden); var s createNS(svg); s.setAttribute(width, 1), s.setAttribute(height, 1), styleDiv(s), this.resizerElem.appendChild(s); var a createNS(defs); s.appendChild(a), (this.data t), this.setupGlobalData(t, s), (this.globalData.defs a), (this.layers t.layers), (this.layerElement this.resizerElem), this.build3dContainers(), this.updateContainerSize(); }), (HybridRendererBase.prototype.destroy function () { var t; this.animationItem.wrapper && (this.animationItem.wrapper.innerText ), (this.animationItem.container null), (this.globalData.defs null); var e this.layers ? this.layers.length : 0; for (t 0; t e; t + 1) this.elementst && this.elementst.destroy && this.elementst.destroy(); (this.elements.length 0), (this.destroyed !0), (this.animationItem null); }), (HybridRendererBase.prototype.updateContainerSize function () { var t, e, i, r, s this.animationItem.wrapper.offsetWidth, a this.animationItem.wrapper.offsetHeight, n s / a; this.globalData.compSize.w / this.globalData.compSize.h > n ? ((t s / this.globalData.compSize.w), (e s / this.globalData.compSize.w), (i 0), (r (a - this.globalData.compSize.h * (s / this.globalData.compSize.w)) / 2)) : ((t a / this.globalData.compSize.h), (e a / this.globalData.compSize.h), (i (s - this.globalData.compSize.w * (a / this.globalData.compSize.h)) / 2), (r 0)); var o this.resizerElem.style; (o.webkitTransform matrix3d( + t + ,0,0,0,0, + e + ,0,0,0,0,1,0, + i + , + r + ,0,1)), (o.transform o.webkitTransform); }), (HybridRendererBase.prototype.renderFrame SVGRenderer.prototype.renderFrame), (HybridRendererBase.prototype.hide function () { this.resizerElem.style.display none; }), (HybridRendererBase.prototype.show function () { this.resizerElem.style.display block; }), (HybridRendererBase.prototype.initItems function () { if ((this.buildAllItems(), this.camera)) this.camera.setup(); else { var t, e this.globalData.compSize.w, i this.globalData.compSize.h, r this.threeDElements.length; for (t 0; t r; t + 1) { var s this.threeDElementst.perspectiveElem.style; (s.webkitPerspective Math.sqrt(Math.pow(e, 2) + Math.pow(i, 2)) + px), (s.perspective s.webkitPerspective); } } }), (HybridRendererBase.prototype.searchExtraCompositions function ( t ) { var e, i t.length, r createTag(div); for (e 0; e i; e + 1) if (te.xt) { var s this.createComp(te, r, this.globalData.comp, null); s.initExpressions(), this.globalData.projectInterface.registerComposition(s); } }), extendPrototype( HybridRendererBase, ICompElement, HBaseElement, HCompElement ), (HCompElement.prototype._createBaseContainerElements HCompElement.prototype.createContainerElements), (HCompElement.prototype.createContainerElements function () { this._createBaseContainerElements(), this.data.hasMask ? (this.svgElement.setAttribute(width, this.data.w), this.svgElement.setAttribute(height, this.data.h), (this.transformedElement this.baseElement)) : (this.transformedElement this.layerElement); }), (HCompElement.prototype.addTo3dContainer function (t, e) { for (var i, r 0; r e; ) this.elementsr && this.elementsr.getBaseElement && (i this.elementsr.getBaseElement()), (r + 1); i ? this.layerElement.insertBefore(t, i) : this.layerElement.appendChild(t); }), (HCompElement.prototype.createComp function (t) { return this.supports3d ? new HCompElement(t, this.globalData, this) : new SVGCompElement(t, this.globalData, this); }), extendPrototype(HybridRendererBase, HybridRenderer), (HybridRenderer.prototype.createComp function (t) { return this.supports3d ? new HCompElement(t, this.globalData, this) : new SVGCompElement(t, this.globalData, this); }); var CompExpressionInterface function (t) { function e(e) { for (var i 0, r t.layers.length; i r; ) { if (t.layersi.nm e || t.layersi.ind e) return t.elementsi.layerInterface; i + 1; } return null; } return ( Object.defineProperty(e, _name, { value: t.data.nm }), (e.layer e), (e.pixelAspect 1), (e.height t.data.h || t.globalData.compSize.h), (e.width t.data.w || t.globalData.compSize.w), (e.pixelAspect 1), (e.frameDuration 1 / t.globalData.frameRate), (e.displayStartTime 0), (e.numLayers t.layers.length), e ); }; function _typeof$2(t) { return ( (_typeof$2 function typeof Symbol && symbol typeof Symbol.iterator ? function (t) { return typeof t; } : function (t) { return t && function typeof Symbol && t.constructor Symbol && t ! Symbol.prototype ? symbol : typeof t; }), _typeof$2(t) ); } function seedRandom(t, e) { var i, r this, s 256, a e.pow(s, 6), n e.pow(2, 52), o 2 * n, h 255; function l(t) { var e, i t.length, r this, a 0, n (r.i r.j 0), o (r.S ); for (i || (t i++); a s; ) oa a++; for (a 0; a s; a++) (oa o(n h & (n + ta % i + (e oa)))), (on e); r.g function (t) { for (var e, i 0, a r.i, n r.j, o r.S; t--; ) (e o(a h & (a + 1))), (i i * s + oh & ((oa o(n h & (n + e))) + (on e))); return (r.i a), (r.j n), i; }; } function p(t, e) { return (e.i t.i), (e.j t.j), (e.S t.S.slice()), e; } function f(t, e) { var i, r , s _typeof$2(t); if (e && object s) for (i in t) try { r.push(f(ti, e - 1)); } catch (t) {} return r.length ? r : string s ? t : t + \0; } function m(t, e) { for (var i, r t + , s 0; s r.length; ) eh & s h & ((i ^ 19 * eh & s) + r.charCodeAt(s++)); return c(e); } function c(t) { return String.fromCharCode.apply(0, t); } (e.seedrandom function (h, d, u) { var y , g m( f( (d !0 d ? { entropy: !0 } : d || {}).entropy ? h, c(t) : null h ? (function () { try { i; var e new Uint8Array(s); return ( (r.crypto || r.msCrypto).getRandomValues(e), c(e) ); } catch (e) { var a r.navigator, n a && a.plugins; return +new Date(), r, n, r.screen, c(t); } })() : h, 3 ), y ), v new l(y), b function () { for (var t v.g(6), e a, i 0; t n; ) (t (t + i) * s), (e * s), (i v.g(1)); for (; t > o; ) (t / 2), (e / 2), (i >>> 1); return (t + i) / e; }; return ( (b.int32 function () { return 0 | v.g(4); }), (b.quick function () { return v.g(4) / 4294967296; }), (b.double b), m(c(v.S), t), ( d.pass || u || function (t, i, r, s) { return ( s && (s.S && p(s, v), (t.state function () { return p(v, {}); })), r ? ((e.random t), i) : t ); } )(b, g, global in d ? d.global : this e, d.state) ); }), m(e.random(), t); } function initialize$2(t) { seedRandom(, t); } var propTypes { SHAPE: shape }; function _typeof$1(t) { return ( (_typeof$1 function typeof Symbol && symbol typeof Symbol.iterator ? function (t) { return typeof t; } : function (t) { return t && function typeof Symbol && t.constructor Symbol && t ! Symbol.prototype ? symbol : typeof t; }), _typeof$1(t) ); } var ExpressionManager (function () { var ob {}, Math BMMath, window null, document null, XMLHttpRequest null, fetch null, frames null, _lottieGlobal {}; function resetFrame() { _lottieGlobal {}; } function $bm_isInstanceOfArray(t) { return ( t.constructor Array || t.constructor Float32Array ); } function isNumerable(t, e) { return ( number t || e instanceof Number || boolean t || string t ); } function $bm_neg(t) { var e _typeof$1(t); if (number e || t instanceof Number || boolean e) return -t; if ($bm_isInstanceOfArray(t)) { var i, r t.length, s ; for (i 0; i r; i + 1) si -ti; return s; } return t.propType ? t.v : -t; } initialize$2(BMMath); var easeInBez BezierFactory.getBezierEasing( 0.333, 0, 0.833, 0.833, easeIn ).get, easeOutBez BezierFactory.getBezierEasing( 0.167, 0.167, 0.667, 1, easeOut ).get, easeInOutBez BezierFactory.getBezierEasing( 0.33, 0, 0.667, 1, easeInOut ).get; function sum(t, e) { var i _typeof$1(t), r _typeof$1(e); if ( (isNumerable(i, t) && isNumerable(r, e)) || string i || string r ) return t + e; if ($bm_isInstanceOfArray(t) && isNumerable(r, e)) return ((t t.slice(0))0 + e), t; if (isNumerable(i, t) && $bm_isInstanceOfArray(e)) return ((e e.slice(0))0 t + e0), e; if ($bm_isInstanceOfArray(t) && $bm_isInstanceOfArray(e)) { for ( var s 0, a t.length, n e.length, o ; s a || s n; ) (number typeof ts || ts instanceof Number) && (number typeof es || es instanceof Number) ? (os ts + es) : (os void 0 es ? ts : ts || es), (s + 1); return o; } return 0; } var add sum; function sub(t, e) { var i _typeof$1(t), r _typeof$1(e); if (isNumerable(i, t) && isNumerable(r, e)) return ( string i && (t parseInt(t, 10)), string r && (e parseInt(e, 10)), t - e ); if ($bm_isInstanceOfArray(t) && isNumerable(r, e)) return ((t t.slice(0))0 - e), t; if (isNumerable(i, t) && $bm_isInstanceOfArray(e)) return ((e e.slice(0))0 t - e0), e; if ($bm_isInstanceOfArray(t) && $bm_isInstanceOfArray(e)) { for ( var s 0, a t.length, n e.length, o ; s a || s n; ) (number typeof ts || ts instanceof Number) && (number typeof es || es instanceof Number) ? (os ts - es) : (os void 0 es ? ts : ts || es), (s + 1); return o; } return 0; } function mul(t, e) { var i, r, s, a _typeof$1(t), n _typeof$1(e); if (isNumerable(a, t) && isNumerable(n, e)) return t * e; if ($bm_isInstanceOfArray(t) && isNumerable(n, e)) { for ( s t.length, i createTypedArray(float32, s), r 0; r s; r + 1 ) ir tr * e; return i; } if (isNumerable(a, t) && $bm_isInstanceOfArray(e)) { for ( s e.length, i createTypedArray(float32, s), r 0; r s; r + 1 ) ir t * er; return i; } return 0; } function div(t, e) { var i, r, s, a _typeof$1(t), n _typeof$1(e); if (isNumerable(a, t) && isNumerable(n, e)) return t / e; if ($bm_isInstanceOfArray(t) && isNumerable(n, e)) { for ( s t.length, i createTypedArray(float32, s), r 0; r s; r + 1 ) ir tr / e; return i; } if (isNumerable(a, t) && $bm_isInstanceOfArray(e)) { for ( s e.length, i createTypedArray(float32, s), r 0; r s; r + 1 ) ir t / er; return i; } return 0; } function mod(t, e) { return ( string typeof t && (t parseInt(t, 10)), string typeof e && (e parseInt(e, 10)), t % e ); } var $bm_sum sum, $bm_sub sub, $bm_mul mul, $bm_div div, $bm_mod mod; function clamp(t, e, i) { if (e > i) { var r i; (i e), (e r); } return Math.min(Math.max(t, e), i); } function radiansToDegrees(t) { return t / degToRads; } var radians_to_degrees radiansToDegrees; function degreesToRadians(t) { return t * degToRads; } var degrees_to_radians radiansToDegrees, helperLengthArray 0, 0, 0, 0, 0, 0; function length(t, e) { if (number typeof t || t instanceof Number) return (e e || 0), Math.abs(t - e); var i; e || (e helperLengthArray); var r Math.min(t.length, e.length), s 0; for (i 0; i r; i + 1) s + Math.pow(ei - ti, 2); return Math.sqrt(s); } function normalize(t) { return div(t, length(t)); } function rgbToHsl(t) { var e, i, r t0, s t1, a t2, n Math.max(r, s, a), o Math.min(r, s, a), h (n + o) / 2; if (n o) (e 0), (i 0); else { var l n - o; switch (((i h > 0.5 ? l / (2 - n - o) : l / (n + o)), n)) { case r: e (s - a) / l + (s a ? 6 : 0); break; case s: e (a - r) / l + 2; break; case a: e (r - s) / l + 4; } e / 6; } return e, i, h, t3; } function hue2rgb(t, e, i) { return ( i 0 && (i + 1), i > 1 && (i - 1), i 1 / 6 ? t + 6 * (e - t) * i : i 0.5 ? e : i 2 / 3 ? t + (e - t) * (2 / 3 - i) * 6 : t ); } function hslToRgb(t) { var e, i, r, s t0, a t1, n t2; if (0 a) (e n), (r n), (i n); else { var o n 0.5 ? n * (1 + a) : n + a - n * a, h 2 * n - o; (e hue2rgb(h, o, s + 1 / 3)), (i hue2rgb(h, o, s)), (r hue2rgb(h, o, s - 1 / 3)); } return e, i, r, t3; } function linear(t, e, i, r, s) { if ( ((void 0 ! r && void 0 ! s) || ((r e), (s i), (e 0), (i 1)), i e) ) { var a i; (i e), (e a); } if (t e) return r; if (t > i) return s; var n, o i e ? 0 : (t - e) / (i - e); if (!r.length) return r + (s - r) * o; var h r.length, l createTypedArray(float32, h); for (n 0; n h; n + 1) ln rn + (sn - rn) * o; return l; } function random(t, e) { if ( (void 0 e && (void 0 t ? ((t 0), (e 1)) : ((e t), (t void 0))), e.length) ) { var i, r e.length; t || (t createTypedArray(float32, r)); var s createTypedArray(float32, r), a BMMath.random(); for (i 0; i r; i + 1) si ti + a * (ei - ti); return s; } return void 0 t && (t 0), t + BMMath.random() * (e - t); } function createPath(t, e, i, r) { var s, a t.length, n shapePool.newElement(); n.setPathData(!!r, a); var o, h, l 0, 0; for (s 0; s a; s + 1) (o e && es ? es : l), (h i && is ? is : l), n.setTripleAt( ts0, ts1, h0 + ts0, h1 + ts1, o0 + ts0, o1 + ts1, s, !0 ); return n; } function initiateExpression(elem, data, property) { function noOp(t) { return t; } if (!elem.globalData.renderConfig.runExpressions) return noOp; var val data.x, needsVelocity /velocity(?!\w\d)/.test(val), _needsRandom -1 ! val.indexOf(random), elemType elem.data.ty, transform, $bm_transform, content, effect, thisProperty property; (thisProperty.valueAtTime thisProperty.getValueAtTime), Object.defineProperty(thisProperty, value, { get: function () { return thisProperty.v; }, }), (elem.comp.frameDuration 1 / elem.comp.globalData.frameRate), (elem.comp.displayStartTime 0); var inPoint elem.data.ip / elem.comp.globalData.frameRate, outPoint elem.data.op / elem.comp.globalData.frameRate, width elem.data.sw ? elem.data.sw : 0, height elem.data.sh ? elem.data.sh : 0, name elem.data.nm, loopIn, loop_in, loopOut, loop_out, smooth, toWorld, fromWorld, fromComp, toComp, fromCompToSurface, position, rotation, anchorPoint, scale, thisLayer, thisComp, mask, valueAtTime, velocityAtTime, scoped_bm_rt, expression_function eval( function _expression_function(){ + val + ;scoped_bm_rt$bm_rt} )0, numKeys property.kf ? data.k.length : 0, active !this.data || !0 ! this.data.hd, wiggle function (t, e) { var i, r, s this.pv.length ? this.pv.length : 1, a createTypedArray(float32, s); var n Math.floor(5 * time); for (i 0, r 0; i n; ) { for (r 0; r s; r + 1) ar + -e + 2 * e * BMMath.random(); i + 1; } var o 5 * time, h o - Math.floor(o), l createTypedArray(float32, s); if (s > 1) { for (r 0; r s; r + 1) lr this.pvr + ar + (-e + 2 * e * BMMath.random()) * h; return l; } return this.pv + a0 + (-e + 2 * e * BMMath.random()) * h; }.bind(this); function loopInDuration(t, e) { return loopIn(t, e, !0); } function loopOutDuration(t, e) { return loopOut(t, e, !0); } thisProperty.loopIn && ((loopIn thisProperty.loopIn.bind(thisProperty)), (loop_in loopIn)), thisProperty.loopOut && ((loopOut thisProperty.loopOut.bind(thisProperty)), (loop_out loopOut)), thisProperty.smooth && (smooth thisProperty.smooth.bind(thisProperty)), this.getValueAtTime && (valueAtTime this.getValueAtTime.bind(this)), this.getVelocityAtTime && (velocityAtTime this.getVelocityAtTime.bind(this)); var comp elem.comp.globalData.projectInterface.bind( elem.comp.globalData.projectInterface ), time, velocity, value, text, textIndex, textTotal, selectorValue; function lookAt(t, e) { var i e0 - t0, e1 - t1, e2 - t2, r Math.atan2(i0, Math.sqrt(i1 * i1 + i2 * i2)) / degToRads; return -Math.atan2(i1, i2) / degToRads, r, 0; } function easeOut(t, e, i, r, s) { return applyEase(easeOutBez, t, e, i, r, s); } function easeIn(t, e, i, r, s) { return applyEase(easeInBez, t, e, i, r, s); } function ease(t, e, i, r, s) { return applyEase(easeInOutBez, t, e, i, r, s); } function applyEase(t, e, i, r, s, a) { void 0 s ? ((s i), (a r)) : (e (e - i) / (r - i)), e > 1 ? (e 1) : e 0 && (e 0); var n t(e); if ($bm_isInstanceOfArray(s)) { var o, h s.length, l createTypedArray(float32, h); for (o 0; o h; o + 1) lo (ao - so) * n + so; return l; } return (a - s) * n + s; } function nearestKey(t) { var e, i, r, s data.k.length; if (data.k.length && number ! typeof data.k0) if ( ((i -1), (t * elem.comp.globalData.frameRate) data.k0.t) ) (i 1), (r data.k0.t); else { for (e 0; e s - 1; e + 1) { if (t data.ke.t) { (i e + 1), (r data.ke.t); break; } if (t > data.ke.t && t data.ke + 1.t) { t - data.ke.t > data.ke + 1.t - t ? ((i e + 2), (r data.ke + 1.t)) : ((i e + 1), (r data.ke.t)); break; } } -1 i && ((i e + 1), (r data.ke.t)); } else (i 0), (r 0); var a {}; return ( (a.index i), (a.time r / elem.comp.globalData.frameRate), a ); } function key(t) { var e, i, r; if (!data.k.length || number typeof data.k0) throw new Error( The property has no keyframe at index + t ); (t - 1), (e { time: data.kt.t / elem.comp.globalData.frameRate, value: , }); var s Object.prototype.hasOwnProperty.call(data.kt, s) ? data.kt.s : data.kt - 1.e; for (r s.length, i 0; i r; i + 1) (ei si), (e.valuei si); return e; } function framesToTime(t, e) { return e || (e elem.comp.globalData.frameRate), t / e; } function timeToFrames(t, e) { return ( t || 0 t || (t time), e || (e elem.comp.globalData.frameRate), t * e ); } function seedRandom(t) { BMMath.seedrandom(randSeed + t); } function sourceRectAtTime() { return elem.sourceRectAtTime(); } function substring(t, e) { return string typeof value ? void 0 e ? value.substring(t) : value.substring(t, e) : ; } function substr(t, e) { return string typeof value ? void 0 e ? value.substr(t) : value.substr(t, e) : ; } function posterizeTime(t) { (time 0 t ? 0 : Math.floor(time * t) / t), (value valueAtTime(time)); } var index elem.data.ind, hasParent !(!elem.hierarchy || !elem.hierarchy.length), parent, randSeed Math.floor(1e6 * Math.random()), globalData elem.globalData; function executeExpression(t) { return ( (value t), this.frameExpressionId elem.globalData.frameId && textSelector ! this.propType ? value : (textSelector this.propType && ((textIndex this.textIndex), (textTotal this.textTotal), (selectorValue this.selectorValue)), thisLayer || ((text elem.layerInterface.text), (thisLayer elem.layerInterface), (thisComp elem.comp.compInterface), (toWorld thisLayer.toWorld.bind(thisLayer)), (fromWorld thisLayer.fromWorld.bind(thisLayer)), (fromComp thisLayer.fromComp.bind(thisLayer)), (toComp thisLayer.toComp.bind(thisLayer)), (mask thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null), (fromCompToSurface fromComp)), transform || ((transform elem.layerInterface( ADBE Transform Group )), ($bm_transform transform), transform && (anchorPoint transform.anchorPoint)), 4 ! elemType || content || (content thisLayer(ADBE Root Vectors Group)), effect || (effect thisLayer(4)), (hasParent !( !elem.hierarchy || !elem.hierarchy.length )) && !parent && (parent elem.hierarchy0.layerInterface), (time this.comp.renderedFrame / this.comp.globalData.frameRate), _needsRandom && seedRandom(randSeed + time), needsVelocity && (velocity velocityAtTime(time)), expression_function(), (this.frameExpressionId elem.globalData.frameId), (scoped_bm_rt scoped_bm_rt.propType propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt)) ); } return ( (executeExpression.__preventDeadCodeRemoval $bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData, ), executeExpression ); } return ( (ob.initiateExpression initiateExpression), (ob.__preventDeadCodeRemoval window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal, ), (ob.resetFrame resetFrame), ob ); })(), Expressions (function () { var t {}; return ( (t.initExpressions function (t) { var e 0, i ; (t.renderer.compInterface CompExpressionInterface( t.renderer )), t.renderer.globalData.projectInterface.registerComposition( t.renderer ), (t.renderer.globalData.pushExpression function () { e + 1; }), (t.renderer.globalData.popExpression function () { 0 (e - 1) && (function () { var t, e i.length; for (t 0; t e; t + 1) it.release(); i.length 0; })(); }), (t.renderer.globalData.registerExpressionProperty function (t) { -1 i.indexOf(t) && i.push(t); }); }), (t.resetFrame ExpressionManager.resetFrame), t ); })(), MaskManagerInterface (function () { function t(t, e) { (this._mask t), (this._data e); } Object.defineProperty(t.prototype, maskPath, { get: function () { return ( this._mask.prop.k && this._mask.prop.getValue(), this._mask.prop ); }, }), Object.defineProperty(t.prototype, maskOpacity, { get: function () { return ( this._mask.op.k && this._mask.op.getValue(), 100 * this._mask.op.v ); }, }); return function (e) { var i, r createSizedArray(e.viewData.length), s e.viewData.length; for (i 0; i s; i + 1) ri new t(e.viewDatai, e.masksPropertiesi); return function (t) { for (i 0; i s; ) { if (e.masksPropertiesi.nm t) return ri; i + 1; } return null; }; }; })(), ExpressionPropertyInterface (function () { var t { pv: 0, v: 0, mult: 1 }, e { pv: 0, 0, 0, v: 0, 0, 0, mult: 1 }; function i(t, e, i) { Object.defineProperty(t, velocity, { get: function () { return e.getVelocityAtTime(e.comp.currentFrame); }, }), (t.numKeys e.keyframes ? e.keyframes.length : 0), (t.key function (r) { if (!t.numKeys) return 0; var s ; s s in e.keyframesr - 1 ? e.keyframesr - 1.s : e in e.keyframesr - 2 ? e.keyframesr - 2.e : e.keyframesr - 2.s; var a unidimensional i ? new Number(s) : Object.assign({}, s); return ( (a.time e.keyframesr - 1.t / e.elem.comp.globalData.frameRate), (a.value unidimensional i ? s0 : s), a ); }), (t.valueAtTime e.getValueAtTime), (t.speedAtTime e.getSpeedAtTime), (t.velocityAtTime e.getVelocityAtTime), (t.propertyGroup e.propertyGroup); } function r() { return t; } return function (s) { return s ? unidimensional s.propType ? (function (e) { (e && pv in e) || (e t); var r 1 / e.mult, s e.pv * r, a new Number(s); return ( (a.value s), i(a, e, unidimensional), function () { return ( e.k && e.getValue(), (s e.v * r), a.value ! s && (((a new Number(s)).value s), i(a, e, unidimensional)), a ); } ); })(s) : (function (t) { (t && pv in t) || (t e); var r 1 / t.mult, s (t.data && t.data.l) || t.pv.length, a createTypedArray(float32, s), n createTypedArray(float32, s); return ( (a.value n), i(a, t, multidimensional), function () { t.k && t.getValue(); for (var e 0; e s; e + 1) (ne t.ve * r), (ae ne); return a; } ); })(s) : r; }; })(), TransformExpressionInterface function (t) { function e(t) { switch (t) { case scale: case Scale: case ADBE Scale: case 6: return e.scale; case rotation: case Rotation: case ADBE Rotation: case ADBE Rotate Z: case 10: return e.rotation; case ADBE Rotate X: return e.xRotation; case ADBE Rotate Y: return e.yRotation; case position: case Position: case ADBE Position: case 2: return e.position; case ADBE Position_0: return e.xPosition; case ADBE Position_1: return e.yPosition; case ADBE Position_2: return e.zPosition; case anchorPoint: case AnchorPoint: case Anchor Point: case ADBE AnchorPoint: case 1: return e.anchorPoint; case opacity: case Opacity: case 11: return e.opacity; default: return null; } } var i, r, s, a; return ( Object.defineProperty(e, rotation, { get: ExpressionPropertyInterface(t.r || t.rz), }), Object.defineProperty(e, zRotation, { get: ExpressionPropertyInterface(t.rz || t.r), }), Object.defineProperty(e, xRotation, { get: ExpressionPropertyInterface(t.rx), }), Object.defineProperty(e, yRotation, { get: ExpressionPropertyInterface(t.ry), }), Object.defineProperty(e, scale, { get: ExpressionPropertyInterface(t.s), }), t.p ? (a ExpressionPropertyInterface(t.p)) : ((i ExpressionPropertyInterface(t.px)), (r ExpressionPropertyInterface(t.py)), t.pz && (s ExpressionPropertyInterface(t.pz))), Object.defineProperty(e, position, { get: function () { return t.p ? a() : i(), r(), s ? s() : 0; }, }), Object.defineProperty(e, xPosition, { get: ExpressionPropertyInterface(t.px), }), Object.defineProperty(e, yPosition, { get: ExpressionPropertyInterface(t.py), }), Object.defineProperty(e, zPosition, { get: ExpressionPropertyInterface(t.pz), }), Object.defineProperty(e, anchorPoint, { get: ExpressionPropertyInterface(t.a), }), Object.defineProperty(e, opacity, { get: ExpressionPropertyInterface(t.o), }), Object.defineProperty(e, skew, { get: ExpressionPropertyInterface(t.sk), }), Object.defineProperty(e, skewAxis, { get: ExpressionPropertyInterface(t.sa), }), Object.defineProperty(e, orientation, { get: ExpressionPropertyInterface(t.or), }), e ); }, LayerExpressionInterface (function () { function t(t) { var e new Matrix(); void 0 ! t ? this._elem.finalTransform.mProp.getValueAtTime(t).clone(e) : this._elem.finalTransform.mProp.applyToMatrix(e); return e; } function e(t, e) { var i this.getMatrix(e); return ( (i.props12 0), (i.props13 0), (i.props14 0), this.applyPoint(i, t) ); } function i(t, e) { var i this.getMatrix(e); return this.applyPoint(i, t); } function r(t, e) { var i this.getMatrix(e); return ( (i.props12 0), (i.props13 0), (i.props14 0), this.invertPoint(i, t) ); } function s(t, e) { var i this.getMatrix(e); return this.invertPoint(i, t); } function a(t, e) { if (this._elem.hierarchy && this._elem.hierarchy.length) { var i, r this._elem.hierarchy.length; for (i 0; i r; i + 1) this._elem.hierarchyi.finalTransform.mProp.applyToMatrix( t ); } return t.applyToPointArray(e0, e1, e2 || 0); } function n(t, e) { if (this._elem.hierarchy && this._elem.hierarchy.length) { var i, r this._elem.hierarchy.length; for (i 0; i r; i + 1) this._elem.hierarchyi.finalTransform.mProp.applyToMatrix( t ); } return t.inversePoint(e); } function o(t) { var e new Matrix(); if ( (e.reset(), this._elem.finalTransform.mProp.applyToMatrix(e), this._elem.hierarchy && this._elem.hierarchy.length) ) { var i, r this._elem.hierarchy.length; for (i 0; i r; i + 1) this._elem.hierarchyi.finalTransform.mProp.applyToMatrix( e ); return e.inversePoint(t); } return e.inversePoint(t); } function h() { return 1, 1, 1, 1; } return function (l) { var p; function f(t) { switch (t) { case ADBE Root Vectors Group: case Contents: case 2: return f.shapeInterface; case 1: case 6: case Transform: case transform: case ADBE Transform Group: return p; case 4: case ADBE Effect Parade: case effects: case Effects: return f.effect; case ADBE Text Properties: return f.textInterface; default: return null; } } (f.getMatrix t), (f.invertPoint n), (f.applyPoint a), (f.toWorld i), (f.toWorldVec e), (f.fromWorld s), (f.fromWorldVec r), (f.toComp i), (f.fromComp o), (f.sampleImage h), (f.sourceRectAtTime l.sourceRectAtTime.bind(l)), (f._elem l); var m getDescriptor( (p TransformExpressionInterface(l.finalTransform.mProp)), anchorPoint ); return ( Object.defineProperties(f, { hasParent: { get: function () { return l.hierarchy.length; }, }, parent: { get: function () { return l.hierarchy0.layerInterface; }, }, rotation: getDescriptor(p, rotation), scale: getDescriptor(p, scale), position: getDescriptor(p, position), opacity: getDescriptor(p, opacity), anchorPoint: m, anchor_point: m, transform: { get: function () { return p; }, }, active: { get: function () { return l.isInRange; }, }, }), (f.startTime l.data.st), (f.index l.data.ind), (f.source l.data.refId), (f.height 0 l.data.ty ? l.data.h : 100), (f.width 0 l.data.ty ? l.data.w : 100), (f.inPoint l.data.ip / l.comp.globalData.frameRate), (f.outPoint l.data.op / l.comp.globalData.frameRate), (f._name l.data.nm), (f.registerMaskInterface function (t) { f.mask new MaskManagerInterface(t, l); }), (f.registerEffectsInterface function (t) { f.effect t; }), f ); }; })(), propertyGroupFactory function (t, e) { return function (i) { return (i void 0 i ? 1 : i) 0 ? t : e(i - 1); }; }, PropertyInterface function (t, e) { var i { _name: t }; return function (t) { return (t void 0 t ? 1 : t) 0 ? i : e(t - 1); }; }, EffectsExpressionInterface (function () { function t(i, r, s, a) { function n(t) { for (var e i.ef, r 0, s e.length; r s; ) { if (t er.nm || t er.mn || t er.ix) return 5 er.ty ? lr : lr(); r + 1; } throw new Error(); } var o, h propertyGroupFactory(n, s), l , p i.ef.length; for (o 0; o p; o + 1) 5 i.efo.ty ? l.push( t( i.efo, r.effectElementso, r.effectElementso.propertyGroup, a ) ) : l.push(e(r.effectElementso, i.efo.ty, a, h)); return ( ADBE Color Control i.mn && Object.defineProperty(n, color, { get: function () { return l0(); }, }), Object.defineProperties(n, { numProperties: { get: function () { return i.np; }, }, _name: { value: i.nm }, propertyGroup: { value: h }, }), (n.enabled 0 ! i.en), (n.active n.enabled), n ); } function e(t, e, i, r) { var s ExpressionPropertyInterface(t.p); return ( t.p.setGroupProperty && t.p.setGroupProperty(PropertyInterface(, r)), function () { return 10 e ? i.comp.compInterface(t.p.v) : s(); } ); } return { createEffectsInterface: function (e, i) { if (e.effectsManager) { var r, s , a e.data.ef, n e.effectsManager.effectElements.length; for (r 0; r n; r + 1) s.push(t(ar, e.effectsManager.effectElementsr, i, e)); var o e.data.ef || , h function (t) { for (r 0, n o.length; r n; ) { if (t or.nm || t or.mn || t or.ix) return sr; r + 1; } return null; }; return ( Object.defineProperty(h, numProperties, { get: function () { return o.length; }, }), h ); } return null; }, }; })(), ShapePathInterface function (t, e, i) { var r e.sh; function s(t) { return Shape t || shape t || Path t || path t || ADBE Vector Shape t || 2 t ? s.path : null; } var a propertyGroupFactory(s, i); return ( r.setGroupProperty(PropertyInterface(Path, a)), Object.defineProperties(s, { path: { get: function () { return r.k && r.getValue(), r; }, }, shape: { get: function () { return r.k && r.getValue(), r; }, }, _name: { value: t.nm }, ix: { value: t.ix }, propertyIndex: { value: t.ix }, mn: { value: t.mn }, propertyGroup: { value: i }, }), s ); }, ShapeExpressionInterface (function () { function t(t, o, c) { var d, u , y t ? t.length : 0; for (d 0; d y; d + 1) gr td.ty ? u.push(e(td, od, c)) : fl td.ty ? u.push(i(td, od, c)) : st td.ty ? u.push(a(td, od, c)) : tm td.ty ? u.push(n(td, od, c)) : tr td.ty || (el td.ty ? u.push(h(td, od, c)) : sr td.ty ? u.push(l(td, od, c)) : sh td.ty ? u.push(ShapePathInterface(td, od, c)) : rc td.ty ? u.push(p(td, od, c)) : rd td.ty ? u.push(f(td, od, c)) : rp td.ty ? u.push(m(td, od, c)) : gf td.ty ? u.push(r(td, od, c)) : u.push(s(td, od))); return u; } function e(e, i, r) { var s function (t) { switch (t) { case ADBE Vectors Group: case Contents: case 2: return s.content; default: return s.transform; } }; s.propertyGroup propertyGroupFactory(s, r); var a (function (e, i, r) { var s, a function (t) { for (var e 0, i s.length; e i; ) { if ( se._name t || se.mn t || se.propertyIndex t || se.ix t || se.ind t ) return se; e + 1; } return number typeof t ? st - 1 : null; }; (a.propertyGroup propertyGroupFactory(a, r)), (s t(e.it, i.it, a.propertyGroup)), (a.numProperties s.length); var n o( e.ite.it.length - 1, i.iti.it.length - 1, a.propertyGroup ); return ( (a.transform n), (a.propertyIndex e.cix), (a._name e.nm), a ); })(e, i, s.propertyGroup), n o( e.ite.it.length - 1, i.iti.it.length - 1, s.propertyGroup ); return ( (s.content a), (s.transform n), Object.defineProperty(s, _name, { get: function () { return e.nm; }, }), (s.numProperties e.np), (s.propertyIndex e.ix), (s.nm e.nm), (s.mn e.mn), s ); } function i(t, e, i) { function r(t) { return Color t || color t ? r.color : Opacity t || opacity t ? r.opacity : null; } return ( Object.defineProperties(r, { color: { get: ExpressionPropertyInterface(e.c) }, opacity: { get: ExpressionPropertyInterface(e.o) }, _name: { value: t.nm }, mn: { value: t.mn }, }), e.c.setGroupProperty(PropertyInterface(Color, i)), e.o.setGroupProperty(PropertyInterface(Opacity, i)), r ); } function r(t, e, i) { function r(t) { return Start Point t || start point t ? r.startPoint : End Point t || end point t ? r.endPoint : Opacity t || opacity t ? r.opacity : null; } return ( Object.defineProperties(r, { startPoint: { get: ExpressionPropertyInterface(e.s) }, endPoint: { get: ExpressionPropertyInterface(e.e) }, opacity: { get: ExpressionPropertyInterface(e.o) }, type: { get: function () { return a; }, }, _name: { value: t.nm }, mn: { value: t.mn }, }), e.s.setGroupProperty(PropertyInterface(Start Point, i)), e.e.setGroupProperty(PropertyInterface(End Point, i)), e.o.setGroupProperty(PropertyInterface(Opacity, i)), r ); } function s() { return function () { return null; }; } function a(t, e, i) { var r, s propertyGroupFactory(l, i), a propertyGroupFactory(h, s); function n(i) { Object.defineProperty(h, t.di.nm, { get: ExpressionPropertyInterface(e.d.dataPropsi.p), }); } var o t.d ? t.d.length : 0, h {}; for (r 0; r o; r + 1) n(r), e.d.dataPropsr.p.setGroupProperty(a); function l(t) { return Color t || color t ? l.color : Opacity t || opacity t ? l.opacity : Stroke Width t || stroke width t ? l.strokeWidth : null; } return ( Object.defineProperties(l, { color: { get: ExpressionPropertyInterface(e.c) }, opacity: { get: ExpressionPropertyInterface(e.o) }, strokeWidth: { get: ExpressionPropertyInterface(e.w) }, dash: { get: function () { return h; }, }, _name: { value: t.nm }, mn: { value: t.mn }, }), e.c.setGroupProperty(PropertyInterface(Color, s)), e.o.setGroupProperty(PropertyInterface(Opacity, s)), e.w.setGroupProperty(PropertyInterface(Stroke Width, s)), l ); } function n(t, e, i) { function r(e) { return e t.e.ix || End e || end e ? r.end : e t.s.ix ? r.start : e t.o.ix ? r.offset : null; } var s propertyGroupFactory(r, i); return ( (r.propertyIndex t.ix), e.s.setGroupProperty(PropertyInterface(Start, s)), e.e.setGroupProperty(PropertyInterface(End, s)), e.o.setGroupProperty(PropertyInterface(Offset, s)), (r.propertyIndex t.ix), (r.propertyGroup i), Object.defineProperties(r, { start: { get: ExpressionPropertyInterface(e.s) }, end: { get: ExpressionPropertyInterface(e.e) }, offset: { get: ExpressionPropertyInterface(e.o) }, _name: { value: t.nm }, }), (r.mn t.mn), r ); } function o(t, e, i) { function r(e) { return t.a.ix e || Anchor Point e ? r.anchorPoint : t.o.ix e || Opacity e ? r.opacity : t.p.ix e || Position e ? r.position : t.r.ix e || Rotation e || ADBE Vector Rotation e ? r.rotation : t.s.ix e || Scale e ? r.scale : (t.sk && t.sk.ix e) || Skew e ? r.skew : (t.sa && t.sa.ix e) || Skew Axis e ? r.skewAxis : null; } var s propertyGroupFactory(r, i); return ( e.transform.mProps.o.setGroupProperty( PropertyInterface(Opacity, s) ), e.transform.mProps.p.setGroupProperty( PropertyInterface(Position, s) ), e.transform.mProps.a.setGroupProperty( PropertyInterface(Anchor Point, s) ), e.transform.mProps.s.setGroupProperty( PropertyInterface(Scale, s) ), e.transform.mProps.r.setGroupProperty( PropertyInterface(Rotation, s) ), e.transform.mProps.sk && (e.transform.mProps.sk.setGroupProperty( PropertyInterface(Skew, s) ), e.transform.mProps.sa.setGroupProperty( PropertyInterface(Skew Angle, s) )), e.transform.op.setGroupProperty( PropertyInterface(Opacity, s) ), Object.defineProperties(r, { opacity: { get: ExpressionPropertyInterface(e.transform.mProps.o), }, position: { get: ExpressionPropertyInterface(e.transform.mProps.p), }, anchorPoint: { get: ExpressionPropertyInterface(e.transform.mProps.a), }, scale: { get: ExpressionPropertyInterface(e.transform.mProps.s), }, rotation: { get: ExpressionPropertyInterface(e.transform.mProps.r), }, skew: { get: ExpressionPropertyInterface(e.transform.mProps.sk), }, skewAxis: { get: ExpressionPropertyInterface(e.transform.mProps.sa), }, _name: { value: t.nm }, }), (r.ty tr), (r.mn t.mn), (r.propertyGroup i), r ); } function h(t, e, i) { function r(e) { return t.p.ix e ? r.position : t.s.ix e ? r.size : null; } var s propertyGroupFactory(r, i); r.propertyIndex t.ix; var a tm e.sh.ty ? e.sh.prop : e.sh; return ( a.s.setGroupProperty(PropertyInterface(Size, s)), a.p.setGroupProperty(PropertyInterface(Position, s)), Object.defineProperties(r, { size: { get: ExpressionPropertyInterface(a.s) }, position: { get: ExpressionPropertyInterface(a.p) }, _name: { value: t.nm }, }), (r.mn t.mn), r ); } function l(t, e, i) { function r(e) { return t.p.ix e ? r.position : t.r.ix e ? r.rotation : t.pt.ix e ? r.points : t.or.ix e || ADBE Vector Star Outer Radius e ? r.outerRadius : t.os.ix e ? r.outerRoundness : !t.ir || (t.ir.ix ! e && ADBE Vector Star Inner Radius ! e) ? t.is && t.is.ix e ? r.innerRoundness : null : r.innerRadius; } var s propertyGroupFactory(r, i), a tm e.sh.ty ? e.sh.prop : e.sh; return ( (r.propertyIndex t.ix), a.or.setGroupProperty(PropertyInterface(Outer Radius, s)), a.os.setGroupProperty( PropertyInterface(Outer Roundness, s) ), a.pt.setGroupProperty(PropertyInterface(Points, s)), a.p.setGroupProperty(PropertyInterface(Position, s)), a.r.setGroupProperty(PropertyInterface(Rotation, s)), t.ir && (a.ir.setGroupProperty( PropertyInterface(Inner Radius, s) ), a.is.setGroupProperty( PropertyInterface(Inner Roundness, s) )), Object.defineProperties(r, { position: { get: ExpressionPropertyInterface(a.p) }, rotation: { get: ExpressionPropertyInterface(a.r) }, points: { get: ExpressionPropertyInterface(a.pt) }, outerRadius: { get: ExpressionPropertyInterface(a.or) }, outerRoundness: { get: ExpressionPropertyInterface(a.os) }, innerRadius: { get: ExpressionPropertyInterface(a.ir) }, innerRoundness: { get: ExpressionPropertyInterface(a.is) }, _name: { value: t.nm }, }), (r.mn t.mn), r ); } function p(t, e, i) { function r(e) { return t.p.ix e ? r.position : t.r.ix e ? r.roundness : t.s.ix e || Size e || ADBE Vector Rect Size e ? r.size : null; } var s propertyGroupFactory(r, i), a tm e.sh.ty ? e.sh.prop : e.sh; return ( (r.propertyIndex t.ix), a.p.setGroupProperty(PropertyInterface(Position, s)), a.s.setGroupProperty(PropertyInterface(Size, s)), a.r.setGroupProperty(PropertyInterface(Rotation, s)), Object.defineProperties(r, { position: { get: ExpressionPropertyInterface(a.p) }, roundness: { get: ExpressionPropertyInterface(a.r) }, size: { get: ExpressionPropertyInterface(a.s) }, _name: { value: t.nm }, }), (r.mn t.mn), r ); } function f(t, e, i) { function r(e) { return t.r.ix e || Round Corners 1 e ? r.radius : null; } var s propertyGroupFactory(r, i), a e; return ( (r.propertyIndex t.ix), a.rd.setGroupProperty(PropertyInterface(Radius, s)), Object.defineProperties(r, { radius: { get: ExpressionPropertyInterface(a.rd) }, _name: { value: t.nm }, }), (r.mn t.mn), r ); } function m(t, e, i) { function r(e) { return t.c.ix e || Copies e ? r.copies : t.o.ix e || Offset e ? r.offset : null; } var s propertyGroupFactory(r, i), a e; return ( (r.propertyIndex t.ix), a.c.setGroupProperty(PropertyInterface(Copies, s)), a.o.setGroupProperty(PropertyInterface(Offset, s)), Object.defineProperties(r, { copies: { get: ExpressionPropertyInterface(a.c) }, offset: { get: ExpressionPropertyInterface(a.o) }, _name: { value: t.nm }, }), (r.mn t.mn), r ); } return function (e, i, r) { var s; function a(t) { if (number typeof t) return 0 (t void 0 t ? 1 : t) ? r : st - 1; for (var e 0, i s.length; e i; ) { if (se._name t) return se; e + 1; } return null; } return ( (a.propertyGroup propertyGroupFactory(a, function () { return r; })), (s t(e, i, a.propertyGroup)), (a.numProperties s.length), (a._name Contents), a ); }; })(), TextExpressionInterface function (t) { var e; function i(t) { return ADBE Text Document t ? i.sourceText : null; } return ( Object.defineProperty(i, sourceText, { get: function () { t.textProperty.getValue(); var i t.textProperty.currentData.t; return ( (e && i e.value) || (((e new String(i)).value i || new String(i)), Object.defineProperty(e, style, { get: function () { return { fillColor: t.textProperty.currentData.fc }; }, })), e ); }, }), i ); }; function _typeof(t) { return ( (_typeof function typeof Symbol && symbol typeof Symbol.iterator ? function (t) { return typeof t; } : function (t) { return t && function typeof Symbol && t.constructor Symbol && t ! Symbol.prototype ? symbol : typeof t; }), _typeof(t) ); } var FootageInterface ((dataInterfaceFactory function (t) { function e(t) { return Outline t ? e.outlineInterface() : null; } return ( (e._name Outline), (e.outlineInterface (function (t) { var e , i t.getFootageData(); function r(t) { if (it) return ( (e t), object _typeof((i it)) ? r : i ); var s t.indexOf(e); if (-1 ! s) { var a parseInt(t.substr(s + e.length), 10); return object _typeof((i ia)) ? r : i; } return ; } return function () { return (e ), (i t.getFootageData()), r; }; })(t)), e ); }), function (t) { function e(t) { return Data t ? e.dataInterface : null; } return ( (e._name Data), (e.dataInterface dataInterfaceFactory(t)), e ); }), dataInterfaceFactory, interfaces { layer: LayerExpressionInterface, effects: EffectsExpressionInterface, comp: CompExpressionInterface, shape: ShapeExpressionInterface, text: TextExpressionInterface, footage: FootageInterface, }; function getInterface(t) { return interfacest || null; } var expressionHelpers { searchExpressions: function (t, e, i) { e.x && ((i.k !0), (i.x !0), (i.initiateExpression ExpressionManager.initiateExpression), i.effectsSequence.push(i.initiateExpression(t, e, i).bind(i))); }, getSpeedAtTime: function (t) { var e this.getValueAtTime(t), i this.getValueAtTime(t + -0.01), r 0; if (e.length) { var s; for (s 0; s e.length; s + 1) r + Math.pow(is - es, 2); r 100 * Math.sqrt(r); } else r 0; return r; }, getVelocityAtTime: function (t) { if (void 0 ! this.vel) return this.vel; var e, i, r -0.001, s this.getValueAtTime(t), a this.getValueAtTime(t + r); if (s.length) for ( e createTypedArray(float32, s.length), i 0; i s.length; i + 1 ) ei (ai - si) / r; else e (a - s) / r; return e; }, getValueAtTime: function (t) { return ( (t * this.elem.globalData.frameRate), (t - this.offsetTime) ! this._cachingAtTime.lastFrame && ((this._cachingAtTime.lastIndex this._cachingAtTime.lastFrame t ? this._cachingAtTime.lastIndex : 0), (this._cachingAtTime.value this.interpolateValue( t, this._cachingAtTime )), (this._cachingAtTime.lastFrame t)), this._cachingAtTime.value ); }, getStaticValueAtTime: function () { return this.pv; }, setGroupProperty: function (t) { this.propertyGroup t; }, }; function addPropertyDecorator() { function t(t, e, i) { if (!this.k || !this.keyframes) return this.pv; t t ? t.toLowerCase() : ; var r, s, a, n, o, h this.comp.renderedFrame, l this.keyframes, p ll.length - 1.t; if (h p) return this.pv; if ( (i ? (s p - (r e ? Math.abs(p - this.elem.comp.globalData.frameRate * e) : Math.max(0, p - this.elem.data.ip))) : ((!e || e > l.length - 1) && (e l.length - 1), (r p - (s ll.length - 1 - e.t))), pingpong t) ) { if (Math.floor((h - s) / r) % 2 ! 0) return this.getValueAtTime( (r - ((h - s) % r) + s) / this.comp.globalData.frameRate, 0 ); } else { if (offset t) { var f this.getValueAtTime( s / this.comp.globalData.frameRate, 0 ), m this.getValueAtTime( p / this.comp.globalData.frameRate, 0 ), c this.getValueAtTime( (((h - s) % r) + s) / this.comp.globalData.frameRate, 0 ), d Math.floor((h - s) / r); if (this.pv.length) { for ( n (o new Array(f.length)).length, a 0; a n; a + 1 ) oa (ma - fa) * d + ca; return o; } return (m - f) * d + c; } if (continue t) { var u this.getValueAtTime( p / this.comp.globalData.frameRate, 0 ), y this.getValueAtTime( (p - 0.001) / this.comp.globalData.frameRate, 0 ); if (this.pv.length) { for ( n (o new Array(u.length)).length, a 0; a n; a + 1 ) oa ua + ((ua - ya) * ((h - p) / this.comp.globalData.frameRate)) / 5e-4; return o; } return u + ((h - p) / 0.001) * (u - y); } } return this.getValueAtTime( (((h - s) % r) + s) / this.comp.globalData.frameRate, 0 ); } function e(t, e, i) { if (!this.k) return this.pv; t t ? t.toLowerCase() : ; var r, s, a, n, o, h this.comp.renderedFrame, l this.keyframes, p l0.t; if (h > p) return this.pv; if ( (i ? (s p + (r e ? Math.abs(this.elem.comp.globalData.frameRate * e) : Math.max(0, this.elem.data.op - p))) : ((!e || e > l.length - 1) && (e l.length - 1), (r (s le.t) - p)), pingpong t) ) { if (Math.floor((p - h) / r) % 2 0) return this.getValueAtTime( (((p - h) % r) + p) / this.comp.globalData.frameRate, 0 ); } else { if (offset t) { var f this.getValueAtTime( p / this.comp.globalData.frameRate, 0 ), m this.getValueAtTime( s / this.comp.globalData.frameRate, 0 ), c this.getValueAtTime( (r - ((p - h) % r) + p) / this.comp.globalData.frameRate, 0 ), d Math.floor((p - h) / r) + 1; if (this.pv.length) { for ( n (o new Array(f.length)).length, a 0; a n; a + 1 ) oa ca - (ma - fa) * d; return o; } return c - (m - f) * d; } if (continue t) { var u this.getValueAtTime( p / this.comp.globalData.frameRate, 0 ), y this.getValueAtTime( (p + 0.001) / this.comp.globalData.frameRate, 0 ); if (this.pv.length) { for ( n (o new Array(u.length)).length, a 0; a n; a + 1 ) oa ua + ((ua - ya) * (p - h)) / 0.001; return o; } return u + ((u - y) * (p - h)) / 0.001; } } return this.getValueAtTime( (r - (((p - h) % r) + p)) / this.comp.globalData.frameRate, 0 ); } function i(t, e) { if (!this.k) return this.pv; if (((t 0.5 * (t || 0.4)), (e Math.floor(e || 5)) 1)) return this.pv; var i, r, s this.comp.renderedFrame / this.comp.globalData.frameRate, a s - t, n e > 1 ? (s + t - a) / (e - 1) : 1, o 0, h 0; for ( i this.pv.length ? createTypedArray(float32, this.pv.length) : 0; o e; ) { if (((r this.getValueAtTime(a + o * n)), this.pv.length)) for (h 0; h this.pv.length; h + 1) ih + rh; else i + r; o + 1; } if (this.pv.length) for (h 0; h this.pv.length; h + 1) ih / e; else i / e; return i; } function r(t) { this._transformCachingAtTime || (this._transformCachingAtTime { v: new Matrix() }); var e this._transformCachingAtTime.v; if ( (e.cloneFromProps(this.pre.props), this.appliedTransformations 1) ) { var i this.a.getValueAtTime(t); e.translate( -i0 * this.a.mult, -i1 * this.a.mult, i2 * this.a.mult ); } if (this.appliedTransformations 2) { var r this.s.getValueAtTime(t); e.scale( r0 * this.s.mult, r1 * this.s.mult, r2 * this.s.mult ); } if (this.sk && this.appliedTransformations 3) { var s this.sk.getValueAtTime(t), a this.sa.getValueAtTime(t); e.skewFromAxis(-s * this.sk.mult, a * this.sa.mult); } if (this.r && this.appliedTransformations 4) { var n this.r.getValueAtTime(t); e.rotate(-n * this.r.mult); } else if (!this.r && this.appliedTransformations 4) { var o this.rz.getValueAtTime(t), h this.ry.getValueAtTime(t), l this.rx.getValueAtTime(t), p this.or.getValueAtTime(t); e.rotateZ(-o * this.rz.mult) .rotateY(h * this.ry.mult) .rotateX(l * this.rx.mult) .rotateZ(-p2 * this.or.mult) .rotateY(p1 * this.or.mult) .rotateX(p0 * this.or.mult); } if (this.data.p && this.data.p.s) { var f this.px.getValueAtTime(t), m this.py.getValueAtTime(t); if (this.data.p.z) { var c this.pz.getValueAtTime(t); e.translate( f * this.px.mult, m * this.py.mult, -c * this.pz.mult ); } else e.translate(f * this.px.mult, m * this.py.mult, 0); } else { var d this.p.getValueAtTime(t); e.translate( d0 * this.p.mult, d1 * this.p.mult, -d2 * this.p.mult ); } return e; } function s() { return this.v.clone(new Matrix()); } var a TransformPropertyFactory.getTransformProperty; TransformPropertyFactory.getTransformProperty function (t, e, i) { var n a(t, e, i); return ( n.dynamicProperties.length ? (n.getValueAtTime r.bind(n)) : (n.getValueAtTime s.bind(n)), (n.setGroupProperty expressionHelpers.setGroupProperty), n ); }; var n PropertyFactory.getProp; PropertyFactory.getProp function (r, s, a, o, h) { var l n(r, s, a, o, h); l.kf ? (l.getValueAtTime expressionHelpers.getValueAtTime.bind(l)) : (l.getValueAtTime expressionHelpers.getStaticValueAtTime.bind(l)), (l.setGroupProperty expressionHelpers.setGroupProperty), (l.loopOut t), (l.loopIn e), (l.smooth i), (l.getVelocityAtTime expressionHelpers.getVelocityAtTime.bind(l)), (l.getSpeedAtTime expressionHelpers.getSpeedAtTime.bind(l)), (l.numKeys 1 s.a ? s.k.length : 0), (l.propertyIndex s.ix); var p 0; return ( 0 ! a && (p createTypedArray( float32, 1 s.a ? s.k0.s.length : s.k.length )), (l._cachingAtTime { lastFrame: initialDefaultFrame, lastIndex: 0, value: p, }), expressionHelpers.searchExpressions(r, s, l), l.k && h.addDynamicProperty(l), l ); }; var o ShapePropertyFactory.getConstructorFunction(), h ShapePropertyFactory.getKeyframedConstructorFunction(); function l() {} (l.prototype { vertices: function (t, e) { this.k && this.getValue(); var i, r this.v; void 0 ! e && (r this.getValueAtTime(e, 0)); var s r._length, a rt, n r.v, o createSizedArray(s); for (i 0; i s; i + 1) oi i t || o t ? ai0 - ni0, ai1 - ni1 : ai0, ai1; return o; }, points: function (t) { return this.vertices(v, t); }, inTangents: function (t) { return this.vertices(i, t); }, outTangents: function (t) { return this.vertices(o, t); }, isClosed: function () { return this.v.c; }, pointOnPath: function (t, e) { var i this.v; void 0 ! e && (i this.getValueAtTime(e, 0)), this._segmentsLength || (this._segmentsLength bez.getSegmentsLength(i)); for ( var r, s this._segmentsLength, a s.lengths, n s.totalLength * t, o 0, h a.length, l 0; o h; ) { if (l + ao.addedLength > n) { var p o, f i.c && o h - 1 ? 0 : o + 1, m (n - l) / ao.addedLength; r bez.getPointInSegment( i.vp, i.vf, i.op, i.if, m, ao ); break; } (l + ao.addedLength), (o + 1); } return ( r || (r i.c ? i.v00, i.v01 : i.vi._length - 10, i.vi._length - 11), r ); }, vectorOnPath: function (t, e, i) { 1 t ? (t this.v.c) : 0 t && (t 0.999); var r this.pointOnPath(t, e), s this.pointOnPath(t + 0.001, e), a s0 - r0, n s1 - r1, o Math.sqrt(Math.pow(a, 2) + Math.pow(n, 2)); return 0 o ? 0, 0 : tangent i ? a / o, n / o : -n / o, a / o; }, tangentOnPath: function (t, e) { return this.vectorOnPath(t, e, tangent); }, normalOnPath: function (t, e) { return this.vectorOnPath(t, e, normal); }, setGroupProperty: expressionHelpers.setGroupProperty, getValueAtTime: expressionHelpers.getStaticValueAtTime, }), extendPrototype(l, o), extendPrototype(l, h), (h.prototype.getValueAtTime function (t) { return ( this._cachingAtTime || (this._cachingAtTime { shapeValue: shapePool.clone(this.pv), lastIndex: 0, lastTime: initialDefaultFrame, }), (t * this.elem.globalData.frameRate), (t - this.offsetTime) ! this._cachingAtTime.lastTime && ((this._cachingAtTime.lastIndex this._cachingAtTime.lastTime t ? this._caching.lastIndex : 0), (this._cachingAtTime.lastTime t), this.interpolateShape( t, this._cachingAtTime.shapeValue, this._cachingAtTime )), this._cachingAtTime.shapeValue ); }), (h.prototype.initiateExpression ExpressionManager.initiateExpression); var p ShapePropertyFactory.getShapeProp; ShapePropertyFactory.getShapeProp function (t, e, i, r, s) { var a p(t, e, i, r, s); return ( (a.propertyIndex e.ix), (a.lock !1), 3 i ? expressionHelpers.searchExpressions(t, e.pt, a) : 4 i && expressionHelpers.searchExpressions(t, e.ks, a), a.k && t.addDynamicProperty(a), a ); }; } function initialize$1() { addPropertyDecorator(); } function addDecorator() { (TextProperty.prototype.getExpressionValue function (t, e) { var i this.calculateExpression(e); if (t.t ! i) { var r {}; return ( this.copyData(r, t), (r.t i.toString()), (r.__complete !1), r ); } return t; }), (TextProperty.prototype.searchProperty function () { var t this.searchKeyframes(), e this.searchExpressions(); return (this.kf t || e), this.kf; }), (TextProperty.prototype.searchExpressions function () { return this.data.d.x ? ((this.calculateExpression ExpressionManager.initiateExpression.bind(this)( this.elem, this.data.d, this )), this.addEffect(this.getExpressionValue.bind(this)), !0) : null; }); } function initialize() { addDecorator(); } function SVGComposableEffect() {} SVGComposableEffect.prototype { createMergeNode: function (t, e) { var i, r, s createNS(feMerge); for (s.setAttribute(result, t), r 0; r e.length; r + 1) (i createNS(feMergeNode)).setAttribute(in, er), s.appendChild(i), s.appendChild(i); return s; }, }; var linearFilterValue 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0; function SVGTintFilter(t, e, i, r, s) { this.filterManager e; var a createNS(feColorMatrix); a.setAttribute(type, matrix), a.setAttribute(color-interpolation-filters, linearRGB), a.setAttribute(values, linearFilterValue + 1 0), (this.linearFilter a), a.setAttribute(result, r + _tint_1), t.appendChild(a), (a createNS(feColorMatrix)).setAttribute(type, matrix), a.setAttribute(color-interpolation-filters, sRGB), a.setAttribute( values, 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 ), a.setAttribute(result, r + _tint_2), t.appendChild(a), (this.matrixFilter a); var n this.createMergeNode(r, s, r + _tint_1, r + _tint_2); t.appendChild(n); } function SVGFillFilter(t, e, i, r) { this.filterManager e; var s createNS(feColorMatrix); s.setAttribute(type, matrix), s.setAttribute(color-interpolation-filters, sRGB), s.setAttribute( values, 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 ), s.setAttribute(result, r), t.appendChild(s), (this.matrixFilter s); } function SVGStrokeEffect(t, e, i) { (this.initialized !1), (this.filterManager e), (this.elem i), (this.paths ); } function SVGTritoneFilter(t, e, i, r) { this.filterManager e; var s createNS(feColorMatrix); s.setAttribute(type, matrix), s.setAttribute(color-interpolation-filters, linearRGB), s.setAttribute( values, 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0 ), t.appendChild(s); var a createNS(feComponentTransfer); a.setAttribute(color-interpolation-filters, sRGB), a.setAttribute(result, r), (this.matrixFilter a); var n createNS(feFuncR); n.setAttribute(type, table), a.appendChild(n), (this.feFuncR n); var o createNS(feFuncG); o.setAttribute(type, table), a.appendChild(o), (this.feFuncG o); var h createNS(feFuncB); h.setAttribute(type, table), a.appendChild(h), (this.feFuncB h), t.appendChild(a); } function SVGProLevelsFilter(t, e, i, r) { this.filterManager e; var s this.filterManager.effectElements, a createNS(feComponentTransfer); (s10.p.k || 0 ! s10.p.v || s11.p.k || 1 ! s11.p.v || s12.p.k || 1 ! s12.p.v || s13.p.k || 0 ! s13.p.v || s14.p.k || 1 ! s14.p.v) && (this.feFuncR this.createFeFunc(feFuncR, a)), (s17.p.k || 0 ! s17.p.v || s18.p.k || 1 ! s18.p.v || s19.p.k || 1 ! s19.p.v || s20.p.k || 0 ! s20.p.v || s21.p.k || 1 ! s21.p.v) && (this.feFuncG this.createFeFunc(feFuncG, a)), (s24.p.k || 0 ! s24.p.v || s25.p.k || 1 ! s25.p.v || s26.p.k || 1 ! s26.p.v || s27.p.k || 0 ! s27.p.v || s28.p.k || 1 ! s28.p.v) && (this.feFuncB this.createFeFunc(feFuncB, a)), (s31.p.k || 0 ! s31.p.v || s32.p.k || 1 ! s32.p.v || s33.p.k || 1 ! s33.p.v || s34.p.k || 0 ! s34.p.v || s35.p.k || 1 ! s35.p.v) && (this.feFuncA this.createFeFunc(feFuncA, a)), (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) && (a.setAttribute(color-interpolation-filters, sRGB), t.appendChild(a)), (s3.p.k || 0 ! s3.p.v || s4.p.k || 1 ! s4.p.v || s5.p.k || 1 ! s5.p.v || s6.p.k || 0 ! s6.p.v || s7.p.k || 1 ! s7.p.v) && ((a createNS(feComponentTransfer)).setAttribute( color-interpolation-filters, sRGB ), a.setAttribute(result, r), t.appendChild(a), (this.feFuncRComposed this.createFeFunc(feFuncR, a)), (this.feFuncGComposed this.createFeFunc(feFuncG, a)), (this.feFuncBComposed this.createFeFunc(feFuncB, a))); } function SVGDropShadowEffect(t, e, i, r, s) { var a e.container.globalData.renderConfig.filterSize, n e.data.fs || a; t.setAttribute(x, n.x || a.x), t.setAttribute(y, n.y || a.y), t.setAttribute(width, n.width || a.width), t.setAttribute(height, n.height || a.height), (this.filterManager e); var o createNS(feGaussianBlur); o.setAttribute(in, SourceAlpha), o.setAttribute(result, r + _drop_shadow_1), o.setAttribute(stdDeviation, 0), (this.feGaussianBlur o), t.appendChild(o); var h createNS(feOffset); h.setAttribute(dx, 25), h.setAttribute(dy, 0), h.setAttribute(in, r + _drop_shadow_1), h.setAttribute(result, r + _drop_shadow_2), (this.feOffset h), t.appendChild(h); var l createNS(feFlood); l.setAttribute(flood-color, #00ff00), l.setAttribute(flood-opacity, 1), l.setAttribute(result, r + _drop_shadow_3), (this.feFlood l), t.appendChild(l); var p createNS(feComposite); p.setAttribute(in, r + _drop_shadow_3), p.setAttribute(in2, r + _drop_shadow_2), p.setAttribute(operator, in), p.setAttribute(result, r + _drop_shadow_4), t.appendChild(p); var f this.createMergeNode(r, r + _drop_shadow_4, s); t.appendChild(f); } extendPrototype(SVGComposableEffect, SVGTintFilter), (SVGTintFilter.prototype.renderFrame function (t) { if (t || this.filterManager._mdf) { var e this.filterManager.effectElements0.p.v, i this.filterManager.effectElements1.p.v, r this.filterManager.effectElements2.p.v / 100; this.linearFilter.setAttribute( values, linearFilterValue + + r + 0 ), this.matrixFilter.setAttribute( values, i0 - e0 + 0 0 0 + e0 + + (i1 - e1) + 0 0 0 + e1 + + (i2 - e2) + 0 0 0 + e2 + 0 0 0 1 0 ); } }), (SVGFillFilter.prototype.renderFrame function (t) { if (t || this.filterManager._mdf) { var e this.filterManager.effectElements2.p.v, i this.filterManager.effectElements6.p.v; this.matrixFilter.setAttribute( values, 0 0 0 0 + e0 + 0 0 0 0 + e1 + 0 0 0 0 + e2 + 0 0 0 + i + 0 ); } }), (SVGStrokeEffect.prototype.initialize function () { var t, e, i, r, s this.elem.layerElement.children || this.elem.layerElement.childNodes; for ( 1 this.filterManager.effectElements1.p.v ? ((r this.elem.maskManager.masksProperties.length), (i 0)) : (r (i this.filterManager.effectElements0.p.v - 1) + 1), (e createNS(g)).setAttribute(fill, none), e.setAttribute(stroke-linecap, round), e.setAttribute(stroke-dashoffset, 1); i r; i + 1 ) (t createNS(path)), e.appendChild(t), this.paths.push({ p: t, m: i }); if (3 this.filterManager.effectElements10.p.v) { var a createNS(mask), n createElementID(); a.setAttribute(id, n), a.setAttribute(mask-type, alpha), a.appendChild(e), this.elem.globalData.defs.appendChild(a); var o createNS(g); for ( o.setAttribute( mask, url( + getLocationHref() + # + n + ) ); s0; ) o.appendChild(s0); this.elem.layerElement.appendChild(o), (this.masker a), e.setAttribute(stroke, #fff); } else if ( 1 this.filterManager.effectElements10.p.v || 2 this.filterManager.effectElements10.p.v ) { if (2 this.filterManager.effectElements10.p.v) for ( s this.elem.layerElement.children || this.elem.layerElement.childNodes; s.length; ) this.elem.layerElement.removeChild(s0); this.elem.layerElement.appendChild(e), this.elem.layerElement.removeAttribute(mask), e.setAttribute(stroke, #fff); } (this.initialized !0), (this.pathMasker e); }), (SVGStrokeEffect.prototype.renderFrame function (t) { var e; this.initialized || this.initialize(); var i, r, s this.paths.length; for (e 0; e s; e + 1) if ( -1 ! this.pathse.m && ((i this.elem.maskManager.viewDatathis.pathse.m), (r this.pathse.p), (t || this.filterManager._mdf || i.prop._mdf) && r.setAttribute(d, i.lastPath), t || this.filterManager.effectElements9.p._mdf || this.filterManager.effectElements4.p._mdf || this.filterManager.effectElements7.p._mdf || this.filterManager.effectElements8.p._mdf || i.prop._mdf) ) { var a; if ( 0 ! this.filterManager.effectElements7.p.v || 100 ! this.filterManager.effectElements8.p.v ) { var n 0.01 * Math.min( this.filterManager.effectElements7.p.v, this.filterManager.effectElements8.p.v ), o 0.01 * Math.max( this.filterManager.effectElements7.p.v, this.filterManager.effectElements8.p.v ), h r.getTotalLength(); a 0 0 0 + h * n + ; var l, p h * (o - n), f 1 + 2 * this.filterManager.effectElements4.p.v * this.filterManager.effectElements9.p.v * 0.01, m Math.floor(p / f); for (l 0; l m; l + 1) a + 1 + 2 * this.filterManager.effectElements4.p.v * this.filterManager.effectElements9.p.v * 0.01 + ; a + 0 + 10 * h + 0 0; } else a 1 + 2 * this.filterManager.effectElements4.p.v * this.filterManager.effectElements9.p.v * 0.01; r.setAttribute(stroke-dasharray, a); } if ( ((t || this.filterManager.effectElements4.p._mdf) && this.pathMasker.setAttribute( stroke-width, 2 * this.filterManager.effectElements4.p.v ), (t || this.filterManager.effectElements6.p._mdf) && this.pathMasker.setAttribute( opacity, this.filterManager.effectElements6.p.v ), (1 this.filterManager.effectElements10.p.v || 2 this.filterManager.effectElements10.p.v) && (t || this.filterManager.effectElements3.p._mdf)) ) { var c this.filterManager.effectElements3.p.v; this.pathMasker.setAttribute( stroke, rgb( + bmFloor(255 * c0) + , + bmFloor(255 * c1) + , + bmFloor(255 * c2) + ) ); } }), (SVGTritoneFilter.prototype.renderFrame function (t) { if (t || this.filterManager._mdf) { var e this.filterManager.effectElements0.p.v, i this.filterManager.effectElements1.p.v, r this.filterManager.effectElements2.p.v, s r0 + + i0 + + e0, a r1 + + i1 + + e1, n r2 + + i2 + + e2; this.feFuncR.setAttribute(tableValues, s), this.feFuncG.setAttribute(tableValues, a), this.feFuncB.setAttribute(tableValues, n); } }), (SVGProLevelsFilter.prototype.createFeFunc function (t, e) { var i createNS(t); return i.setAttribute(type, table), e.appendChild(i), i; }), (SVGProLevelsFilter.prototype.getTableValue function ( t, e, i, r, s ) { for ( var a, n, o 0, h Math.min(t, e), l Math.max(t, e), p Array.call(null, { length: 256 }), f 0, m s - r, c e - t; o 256; ) (n (a o / 256) h ? c 0 ? s : r : a > l ? c 0 ? r : s : r + m * Math.pow((a - t) / c, 1 / i)), (pf n), (f + 1), (o + 256 / 255); return p.join( ); }), (SVGProLevelsFilter.prototype.renderFrame function (t) { if (t || this.filterManager._mdf) { var e, i this.filterManager.effectElements; this.feFuncRComposed && (t || i3.p._mdf || i4.p._mdf || i5.p._mdf || i6.p._mdf || i7.p._mdf) && ((e this.getTableValue( i3.p.v, i4.p.v, i5.p.v, i6.p.v, i7.p.v )), this.feFuncRComposed.setAttribute(tableValues, e), this.feFuncGComposed.setAttribute(tableValues, e), this.feFuncBComposed.setAttribute(tableValues, e)), this.feFuncR && (t || i10.p._mdf || i11.p._mdf || i12.p._mdf || i13.p._mdf || i14.p._mdf) && ((e this.getTableValue( i10.p.v, i11.p.v, i12.p.v, i13.p.v, i14.p.v )), this.feFuncR.setAttribute(tableValues, e)), this.feFuncG && (t || i17.p._mdf || i18.p._mdf || i19.p._mdf || i20.p._mdf || i21.p._mdf) && ((e this.getTableValue( i17.p.v, i18.p.v, i19.p.v, i20.p.v, i21.p.v )), this.feFuncG.setAttribute(tableValues, e)), this.feFuncB && (t || i24.p._mdf || i25.p._mdf || i26.p._mdf || i27.p._mdf || i28.p._mdf) && ((e this.getTableValue( i24.p.v, i25.p.v, i26.p.v, i27.p.v, i28.p.v )), this.feFuncB.setAttribute(tableValues, e)), this.feFuncA && (t || i31.p._mdf || i32.p._mdf || i33.p._mdf || i34.p._mdf || i35.p._mdf) && ((e this.getTableValue( i31.p.v, i32.p.v, i33.p.v, i34.p.v, i35.p.v )), this.feFuncA.setAttribute(tableValues, e)); } }), extendPrototype(SVGComposableEffect, SVGDropShadowEffect), (SVGDropShadowEffect.prototype.renderFrame function (t) { if (t || this.filterManager._mdf) { if ( ((t || this.filterManager.effectElements4.p._mdf) && this.feGaussianBlur.setAttribute( stdDeviation, this.filterManager.effectElements4.p.v / 4 ), t || this.filterManager.effectElements0.p._mdf) ) { var e this.filterManager.effectElements0.p.v; this.feFlood.setAttribute( flood-color, rgbToHex( Math.round(255 * e0), Math.round(255 * e1), Math.round(255 * e2) ) ); } if ( ((t || this.filterManager.effectElements1.p._mdf) && this.feFlood.setAttribute( flood-opacity, this.filterManager.effectElements1.p.v / 255 ), t || this.filterManager.effectElements2.p._mdf || this.filterManager.effectElements3.p._mdf) ) { var i this.filterManager.effectElements3.p.v, r (this.filterManager.effectElements2.p.v - 90) * degToRads, s i * Math.cos(r), a i * Math.sin(r); this.feOffset.setAttribute(dx, s), this.feOffset.setAttribute(dy, a); } } }); var _svgMatteSymbols ; function SVGMatte3Effect(t, e, i) { (this.initialized !1), (this.filterManager e), (this.filterElem t), (this.elem i), (i.matteElement createNS(g)), i.matteElement.appendChild(i.layerElement), i.matteElement.appendChild(i.transformedElement), (i.baseElement i.matteElement); } function SVGGaussianBlurEffect(t, e, i, r) { t.setAttribute(x, -100%), t.setAttribute(y, -100%), t.setAttribute(width, 300%), t.setAttribute(height, 300%), (this.filterManager e); var s createNS(feGaussianBlur); s.setAttribute(result, r), t.appendChild(s), (this.feGaussianBlur s); } function TransformEffect() {} function SVGTransformEffect(t, e) { this.init(e); } function CVTransformEffect(t) { this.init(t); } return ( (SVGMatte3Effect.prototype.findSymbol function (t) { for (var e 0, i _svgMatteSymbols.length; e i; ) { if (_svgMatteSymbolse t) return _svgMatteSymbolse; e + 1; } return null; }), (SVGMatte3Effect.prototype.replaceInParent function (t, e) { var i t.layerElement.parentNode; if (i) { for ( var r, s i.children, a 0, n s.length; a n && sa ! t.layerElement; ) a + 1; a n - 2 && (r sa + 1); var o createNS(use); o.setAttribute(href, # + e), r ? i.insertBefore(o, r) : i.appendChild(o); } }), (SVGMatte3Effect.prototype.setElementAsMask function (t, e) { if (!this.findSymbol(e)) { var i createElementID(), r createNS(mask); r.setAttribute(id, e.layerId), r.setAttribute(mask-type, alpha), _svgMatteSymbols.push(e); var s t.globalData.defs; s.appendChild(r); var a createNS(symbol); a.setAttribute(id, i), this.replaceInParent(e, i), a.appendChild(e.layerElement), s.appendChild(a); var n createNS(use); n.setAttribute(href, # + i), r.appendChild(n), (e.data.hd !1), e.show(); } t.setMatte(e.layerId); }), (SVGMatte3Effect.prototype.initialize function () { for ( var t this.filterManager.effectElements0.p.v, e this.elem.comp.elements, i 0, r e.length; i r; ) ei && ei.data.ind t && this.setElementAsMask(this.elem, ei), (i + 1); this.initialized !0; }), (SVGMatte3Effect.prototype.renderFrame function () { this.initialized || this.initialize(); }), (SVGGaussianBlurEffect.prototype.renderFrame function (t) { if (t || this.filterManager._mdf) { var e 0.3 * this.filterManager.effectElements0.p.v, i this.filterManager.effectElements1.p.v, r 3 i ? 0 : e, s 2 i ? 0 : e; this.feGaussianBlur.setAttribute(stdDeviation, r + + s); var a 1 this.filterManager.effectElements2.p.v ? wrap : duplicate; this.feGaussianBlur.setAttribute(edgeMode, a); } }), (TransformEffect.prototype.init function (t) { (this.effectsManager t), (this.type effectTypes.TRANSFORM_EFFECT), (this.matrix new Matrix()), (this.opacity -1), (this._mdf !1), (this._opMdf !1); }), (TransformEffect.prototype.renderFrame function (t) { if ( ((this._opMdf !1), (this._mdf !1), t || this.effectsManager._mdf) ) { var e this.effectsManager.effectElements, i e0.p.v, r e1.p.v, s 1 e2.p.v, a e3.p.v, n s ? a : e4.p.v, o e5.p.v, h e6.p.v, l e7.p.v; this.matrix.reset(), this.matrix.translate(-i0, -i1, i2), this.matrix.scale(0.01 * n, 0.01 * a, 1), this.matrix.rotate(-l * degToRads), this.matrix.skewFromAxis( -o * degToRads, (h + 90) * degToRads ), this.matrix.translate(r0, r1, 0), (this._mdf !0), this.opacity ! e8.p.v && ((this.opacity e8.p.v), (this._opMdf !0)); } }), extendPrototype(TransformEffect, SVGTransformEffect), extendPrototype(TransformEffect, CVTransformEffect), registerRenderer(canvas, CanvasRenderer), registerRenderer(html, HybridRenderer), registerRenderer(svg, SVGRenderer), ShapeModifiers.registerModifier(tm, TrimModifier), ShapeModifiers.registerModifier(pb, PuckerAndBloatModifier), ShapeModifiers.registerModifier(rp, RepeaterModifier), ShapeModifiers.registerModifier(rd, RoundCornersModifier), ShapeModifiers.registerModifier(zz, ZigZagModifier), ShapeModifiers.registerModifier(op, OffsetPathModifier), setExpressionsPlugin(Expressions), setExpressionInterfaces(getInterface), initialize$1(), initialize(), registerEffect$1(20, SVGTintFilter, !0), registerEffect$1(21, SVGFillFilter, !0), registerEffect$1(22, SVGStrokeEffect, !1), registerEffect$1(23, SVGTritoneFilter, !0), registerEffect$1(24, SVGProLevelsFilter, !0), registerEffect$1(25, SVGDropShadowEffect, !0), registerEffect$1(28, SVGMatte3Effect, !1), registerEffect$1(29, SVGGaussianBlurEffect, !0), registerEffect$1(35, SVGTransformEffect, !1), registerEffect(35, CVTransformEffect), lottie ); }); /script> /div> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-d23fd84 navigation_panel_section link-box elementor-section-boxed elementor-section-height-default elementor-section-height-default data-idd23fd84 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-53ddc18 navigation-panel data-id53ddc18 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-0f32ceb elementor-widget elementor-widget-heading data-id0f32ceb data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>Navigation/span> /div> div classelementor-element elementor-element-9f8e4ae icon-list elementor-mobile-align-left elementor-tablet-align-center elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list data-id9f8e4ae data-element_typewidget data-widget_typeicon-list.default> ul classelementor-icon-list-items> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/#value> span classelementor-icon-list-text>Artificial Intelligence Services and Solutions to help you unlock greater value/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/#business> span classelementor-icon-list-text>Beneficial results of artificial intelligence services and solutions in business/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/#why-choose> span classelementor-icon-list-text>Why choose AI Superior/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/#build> span classelementor-icon-list-text>AI solutions we can build for your project/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/#industry> span classelementor-icon-list-text>Industries/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/#work-process> span classelementor-icon-list-text>Our Work Process/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/#customer> span classelementor-icon-list-text>Explore our customer cases/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/#awards> span classelementor-icon-list-text> Our awards and recognitions/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/#faq> span classelementor-icon-list-text>FAQs/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/#insight> span classelementor-icon-list-text>Check out AI Insights Hub by AI Superior/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/#discuss> span classelementor-icon-list-text>Let’s discuss your next AI project/span> /a> /li> /ul> /div> /div> /div> div classelementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-339e3e0 services-solutions data-id339e3e0 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-28232d4 elementor-widget elementor-widget-heading data-id28232d4 data-element_typewidget idvalue data-widget_typeheading.default> h2 classelementor-heading-title elementor-size-default>Artificial Intelligence Services and Solutions span stylecolor:#4665A4>to help you unlock greater value/span>/h2> /div> div classelementor-element elementor-element-08e6b80 elementor-widget elementor-widget-text-editor data-id08e6b80 data-element_typewidget data-widget_typetext-editor.default> div classfl-col fl-node-tmdjs64yvng8 data-nodetmdjs64yvng8>div classfl-col-content fl-node-content>div idhow-we-work classfl-module fl-module-rich-text fl-node-3hu07b49pcwi parag data-node3hu07b49pcwi>div classfl-module-content fl-node-content>div classfl-rich-text>p>AI Superior is a German-based AI services company focusing on end-to-end AI-based application development and AI consulting. We design and build web and mobile apps as well as custom software products that rely on complex machine learning and AI models and algorithms. Our Ph.D.-level Data Scientists and Software Engineers are ready to help you create your success story./p>/div>/div>/div>/div>/div> /div> div classelementor-element elementor-element-1df53f4 elementor-testimonial--layout-image_above elementor-testimonial--align-left carousl home-slider elementor-testimonial--skin-default elementor-arrows-yes elementor-widget elementor-widget-testimonial-carousel data-id1df53f4 data-element_typewidget data-settings{"slides_per_view":"2","slides_to_scroll":"2","slides_per_view_tablet":"2","slides_to_scroll_tablet":"2","show_arrows":"yes","speed":500,"space_between":{"unit":"px","size":10,"sizes":},"space_between_tablet":{"unit":"px","size":10,"sizes":},"space_between_mobile":{"unit":"px","size":10,"sizes":}} data-widget_typetestimonial-carousel.default> div classelementor-main-swiper swiper roleregion aria-roledescriptioncarousel aria-labelSlides> div classswiper-wrapper> div classswiper-slide rolegroup aria-roledescriptionslide> div classelementor-testimonial> div classelementor-testimonial__content> div classelementor-testimonial__text> Customized development of AI-driven software solutions tailored to meet your specific business needs and objectives. /div> cite classelementor-testimonial__cite>span classelementor-testimonial__name>span>a stylecolor:#18276A; hrefhttps://aisuperior.com/services/ai-software-development/>AI Software Development/a>/span>/span>/cite> /div> div classelementor-testimonial__footer> div classelementor-testimonial__image> img decodingasync srchttps://aisuperior.com/wp-content/uploads/2023/12/AISD_icon.svg alt<span><a style"color:#18276A;" href"https://aisuperior.com/services/ai-software-development/">AI Software Development</a></span>> /div> /div> /div> /div> div classswiper-slide rolegroup aria-roledescriptionslide> div classelementor-testimonial> div classelementor-testimonial__content> div classelementor-testimonial__text> Comprehensive training programs to equip individuals and teams with the knowledge and skills required to leverage AI effectively /div> cite classelementor-testimonial__cite>span classelementor-testimonial__name>span>a stylecolor:#18276A; hrefhttps://aisuperior.com/services/artificial-intelligence-training/>Artificial Intelligence Training/a>/span>/span>/cite> /div> div classelementor-testimonial__footer> div classelementor-testimonial__image> img decodingasync srchttps://aisuperior.com/wp-content/uploads/2023/12/AIT_icon.svg alt<span><a style"color:#18276A;" href"https://aisuperior.com/services/artificial-intelligence-training/">Artificial Intelligence Training</a></span>> /div> /div> /div> /div> div classswiper-slide rolegroup aria-roledescriptionslide> div classelementor-testimonial> div classelementor-testimonial__content> div classelementor-testimonial__text> We assist you in the process of recognizing, assessing, prioritizing, and defining potential areas of application for data science, machine learning, and artificial intelligence. /div> cite classelementor-testimonial__cite>span classelementor-testimonial__name>span>a stylecolor:#18276A; hrefhttps://aisuperior.com/services/artificial-intelligence-consulting/>Artificial Intelligence Consulting /a>/span>/span>/cite> /div> div classelementor-testimonial__footer> div classelementor-testimonial__image> img decodingasync srchttps://aisuperior.com/wp-content/uploads/2023/08/icon-cutting-edge.png alt<span><a style"color:#18276A;" href"https://aisuperior.com/services/artificial-intelligence-consulting/">Artificial Intelligence Consulting </a></span>> /div> /div> /div> /div> div classswiper-slide rolegroup aria-roledescriptionslide> div classelementor-testimonial> div classelementor-testimonial__content> div classelementor-testimonial__text> We provide guidance and assistance in fostering a data-driven mindset and behaviours within your organization, cultivating a culture that values and embraces data and AI. /div> cite classelementor-testimonial__cite>span classelementor-testimonial__name>span>a stylecolor:#18276A; hrefhttps://aisuperior.com/services/research-and-development/>Artificial Intelligence R&D/a>/span>/span>/cite> /div> div classelementor-testimonial__footer> div classelementor-testimonial__image> img decodingasync srchttps://aisuperior.com/wp-content/uploads/2023/12/Ai_RD_icon.svg alt<span><a style"color:#18276A;" href"https://aisuperior.com/services/research-and-development/">Artificial Intelligence R&D</a></span>> /div> /div> /div> /div> /div> div classelementor-swiper-button elementor-swiper-button-prev rolebutton tabindex0 aria-labelPrécédent> svg aria-hiddentrue classe-font-icon-svg e-eicon-chevron-left viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z>/path>/svg> /div> div classelementor-swiper-button elementor-swiper-button-next rolebutton tabindex0 aria-labelSuivant> svg aria-hiddentrue classe-font-icon-svg e-eicon-chevron-right viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z>/path>/svg> /div> /div> /div> /div> /div> div classelementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-9e5b5b2 image-side-block data-id9e5b5b2 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-5498dfe image-box elementor-position-top elementor-widget elementor-widget-image-box data-id5498dfe data-element_typewidget data-widget_typeimage-box.default> div classelementor-image-box-wrapper>figure classelementor-image-box-img>img loadinglazy decodingasync width218 height218 srchttps://aisuperior.com/wp-content/uploads/2023/08/Framejourney-img.png classattachment-medium size-medium wp-image-109 alt srcsethttps://aisuperior.com/wp-content/uploads/2023/08/Framejourney-img.png 218w, https://aisuperior.com/wp-content/uploads/2023/08/Framejourney-img-150x150.png 150w sizes(max-width: 218px) 100vw, 218px />/figure>div classelementor-image-box-content>h3 classelementor-image-box-title>Start your databr> journey/h3>p classelementor-image-box-description>a hrefhttps://aisuperior.com/artificial-intelligence-consulting/>Get Started/a>/p>/div>/div> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-d05dcde logo-carousel elementor-section-boxed elementor-section-height-default elementor-section-height-default data-idd05dcde data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ed25dda data-ided25dda data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-4b482c7 elementor-widget elementor-widget-heading data-id4b482c7 data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>Trusted by/span> /div> div classelementor-element elementor-element-b8f3964 image_carousl elementor-arrows-position-outside elementor-pagination-position-outside elementor-widget elementor-widget-image-carousel data-idb8f3964 data-element_typewidget data-settings{"slides_to_show":"5","slides_to_scroll":"5","slides_to_show_mobile":"2","slides_to_scroll_mobile":"2","slides_to_scroll_tablet":"4","slides_to_show_tablet":"4","navigation":"both","autoplay":"yes","pause_on_hover":"yes","pause_on_interaction":"yes","autoplay_speed":5000,"infinite":"yes","speed":500} data-widget_typeimage-carousel.default> div classelementor-image-carousel-wrapper swiper roleregion aria-roledescriptioncarousel aria-labelImage Carousel dirltr> div classelementor-image-carousel swiper-wrapper aria-liveoff> div classswiper-slide rolegroup aria-roledescriptionslide aria-label1 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/elementor/thumbs/carousl-1-1-1-qhh70nwl95dmg4xqqsraa3ekq34ddclukggudrg43e.webp altcarousl-1-1-1 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label2 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/elementor/thumbs/carousl_002-qhpro5lfcc67iovjfsvjg5cd9vzt58ggx8eq4cbttm.webp altcarousl_002 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label3 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/elementor/thumbs/carousl_004-qhprl4k5bk0y3x9x4hqtewuwd6x8ccflu8qeg8thve.webp altcarousl_004 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label4 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/elementor/thumbs/carousl-005-qit93uv5kudhmv4gn1v5b5beix6t5skf1n4tmzjanu.png altcarousl-005 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label5 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/elementor/thumbs/carousl_006-qhprvyn63suxy3jauocznof6w3ik2qg7nvgwm2r456.webp altcarousl_006 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label6 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/elementor/thumbs/carousl-07-qit93txbe0c7b95tsjgiqnjxxjbfy3gopihc5pkou2.png altcarousl-07 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label7 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/elementor/thumbs/carousl-08-qit93txbe0c7b95tsjgiqnjxxjbfy3gopihc5pkou2.png altcarousl-08 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label8 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/elementor/thumbs/carousl-09-qit93txbe0c7b95tsjgiqnjxxjbfy3gopihc5pkou2.png altcarousl-09 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label9 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/elementor/thumbs/carousl-01000-qit93txbe0c7b95tsjgiqnjxxjbfy3gopihc5pkou2.png altcarousl-01000 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label10 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/elementor/thumbs/carousl-003-qhppc03lhaz23h41txcypvtqp0rt0rdl0pssdj3ovu.webp altcarousl-003 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label11 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/elementor/thumbs/carousl-011-qit93txbe0c7b95tsjgiqnjxxjbfy3gopihc5pkou2.png altcarousl-011 />/figure>/div> /div> div classelementor-swiper-button elementor-swiper-button-prev rolebutton tabindex0> svg aria-hiddentrue classe-font-icon-svg e-eicon-chevron-left viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z>/path>/svg> /div> div classelementor-swiper-button elementor-swiper-button-next rolebutton tabindex0> svg aria-hiddentrue classe-font-icon-svg e-eicon-chevron-right viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z>/path>/svg> /div> div classswiper-pagination>/div> /div> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-7b27629 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id7b27629 data-element_typesection idbusiness> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0019099 data-id0019099 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-d04dfd0 elementor-widget elementor-widget-heading data-idd04dfd0 data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>Beneficial span stylecolor:#4665A4>results of artificial intelligence services/span> and solutions in business/span> /div> section classelementor-section elementor-inner-section elementor-element elementor-element-a605c6b elementor-section-boxed elementor-section-height-default elementor-section-height-default data-ida605c6b data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-d6e1dd5 data-idd6e1dd5 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-161c20f elementor-widget elementor-widget-heading data-id161c20f data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>75%/span> /div> div classelementor-element elementor-element-8a06083 elementor-widget__width-initial elementor-widget elementor-widget-text-editor data-id8a06083 data-element_typewidget data-widget_typetext-editor.default> p>of executives believe AI helps improve decision-making and provides a competitive advantage./p> /div> /div> /div> div classelementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-d758750 data-idd758750 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-d68115c elementor-widget elementor-widget-heading data-idd68115c data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>45%/span> /div> div classelementor-element elementor-element-8157510 elementor-widget__width-initial elementor-widget elementor-widget-text-editor data-id8157510 data-element_typewidget data-widget_typetext-editor.default> p>of activities in various industries can be automated with the help of AI./p> /div> /div> /div> /div> /section> section classelementor-section elementor-inner-section elementor-element elementor-element-1a00353 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id1a00353 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-1ba7980 data-id1ba7980 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-383e227 elementor-widget elementor-widget-heading data-id383e227 data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>72%/span> /div> div classelementor-element elementor-element-0ea6925 elementor-widget__width-initial elementor-widget elementor-widget-text-editor data-id0ea6925 data-element_typewidget data-widget_typetext-editor.default> p>of customers expect personalized engagement from businesses that can be reached with the help of AI./p> /div> /div> /div> div classelementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-4e7056f data-id4e7056f data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-142b9ea elementor-widget elementor-widget-heading data-id142b9ea data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>40%/span> /div> div classelementor-element elementor-element-e42a0d7 elementor-widget__width-initial elementor-widget elementor-widget-text-editor data-ide42a0d7 data-element_typewidget data-widget_typetext-editor.default> p>reduction in financial losses among organizations that use AI for fraud detection./p> /div> /div> /div> /div> /section> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-35c742a elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id35c742a data-element_typesection idwhy-choose data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-174ffa0 data-id174ffa0 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-9bc62db elementor-widget elementor-widget-heading data-id9bc62db data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>Why choose span stylecolor:#4665A4>AI Superior as your artificial intelligence/span> br>services partner/span> /div> section classelementor-section elementor-inner-section elementor-element elementor-element-6bd5e33 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id6bd5e33 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-6a2d718 data-id6a2d718 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-54fac17 img-text elementor-position-top elementor-widget elementor-widget-image-box data-id54fac17 data-element_typewidget data-widget_typeimage-box.default> div classelementor-image-box-wrapper>figure classelementor-image-box-img>img loadinglazy decodingasync width101 height101 srchttps://aisuperior.com/wp-content/uploads/2023/08/icon-experienced-professionals.png classattachment-full size-full wp-image-371 alt />/figure>div classelementor-image-box-content>span classelementor-image-box-title>Team of seasoned professionals/span>p classelementor-image-box-description>Our team of highly skilled consultants, many of whom have a Ph.D. degree in AI or related fields, possess extensive knowledge and hands-on experience with different kinds of AI projects. We’ve developed AI-driven solutions for various industries, ranging from insurance, construction, and finance to pharmaceutical and real estate./p>/div>/div> /div> /div> /div> div classelementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-861c7ed data-id861c7ed data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-2aaa3b8 img-text elementor-position-top elementor-widget elementor-widget-image-box data-id2aaa3b8 data-element_typewidget data-widget_typeimage-box.default> div classelementor-image-box-wrapper>figure classelementor-image-box-img>img loadinglazy decodingasync width101 height101 srchttps://aisuperior.com/wp-content/uploads/2023/08/icon-cutting-edge.png classattachment-full size-full wp-image-377 alt />/figure>div classelementor-image-box-content>span classelementor-image-box-title>Utilizing cutting-edge technology/span>p classelementor-image-box-description>In addition to years of experience and deep domain knowledge in AI development, we take pride in using the latest tools & technologies. Whether you’re looking to adopt AI for the first time, want to audit existing AI systems, or scale your AI systems, we can help!/p>/div>/div> /div> /div> /div> /div> /section> section classelementor-section elementor-inner-section elementor-element elementor-element-cc9c745 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-idcc9c745 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-9139100 data-id9139100 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-65565a7 img-text elementor-position-top elementor-widget elementor-widget-image-box data-id65565a7 data-element_typewidget data-widget_typeimage-box.default> div classelementor-image-box-wrapper>figure classelementor-image-box-img>img loadinglazy decodingasync width101 height101 srchttps://aisuperior.com/wp-content/uploads/2023/08/icon-guaranteed.png classattachment-full size-full wp-image-378 alt />/figure>div classelementor-image-box-content>span classelementor-image-box-title>Guaranteed reliability and flexibility/span>p classelementor-image-box-description>Transparency and continuous communication are paramount for the success of any AI project or solution. At AI Superior, we prioritize close collaboration with our clients, ensuring they comprehend the value of each step along the way. Our flexible approach allows us to adapt to your project goals and requirements, providing you with peace of mind. /p>/div>/div> /div> /div> /div> div classelementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-a025b6a data-ida025b6a data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-8f683c9 img-text elementor-position-top elementor-widget elementor-widget-image-box data-id8f683c9 data-element_typewidget data-widget_typeimage-box.default> div classelementor-image-box-wrapper>figure classelementor-image-box-img>img loadinglazy decodingasync width101 height101 srchttps://aisuperior.com/wp-content/uploads/2023/08/icon-new-heights.png classattachment-full size-full wp-image-379 alt />/figure>div classelementor-image-box-content>span classelementor-image-box-title>Elevate your business to new heights/span>p classelementor-image-box-description>As a trusted artificial intelligence service company, we integrate AI into various processes to drive long-term efficiency and ensure business continuity. Through careful analysis, we identify areas and operations where AI-powered solutions can add substantial value to your business, empowering you to harness the full potential of AI./p>/div>/div> /div> /div> /div> /div> /section> div classelementor-element elementor-element-5c4980e elementor-align-center elementor-widget elementor-widget-button data-id5c4980e data-element_typewidget data-widget_typebutton.default> a classelementor-button elementor-button-link elementor-size-sm hrefhttps://aisuperior.com/contact/> span classelementor-button-content-wrapper> span classelementor-button-text>Contact Us/span> /span> /a> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-2819e63 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id2819e63 data-element_typesection idbuild> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5c5ed2c data-id5c5ed2c data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-a4be2d8 elementor-widget elementor-widget-heading data-ida4be2d8 data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>AI solutions span stylecolor: #4665a4> we can build/span> for your project/span> /div> div classelementor-element elementor-element-5eeeb6a elementor-position-left elementor-vertical-align-middle elementor-widget elementor-widget-image-box data-id5eeeb6a data-element_typewidget data-widget_typeimage-box.default> div classelementor-image-box-wrapper>figure classelementor-image-box-img>a hrefhttps://aisuperior.com/technology/computer-vision-and-image-analysis/ aria-labelcomputer tabindex-1>img loadinglazy decodingasync width100 height100 srchttps://aisuperior.com/wp-content/uploads/2023/08/ai-icon-1.png classattachment-full size-full wp-image-406 alt />/a>/figure>div classelementor-image-box-content>h3 classelementor-image-box-title>a hrefhttps://aisuperior.com/technology/computer-vision-and-image-analysis/ aria-labelcomputer>Computer vision and Image Processing/a>/h3>p classelementor-image-box-description>Leverage the power of computer vision to drive impactful image analysis and processing to enhance growth and solve business challenges. Our computer vision technology, which includes video analysis, object detection, and image analysis, can help you extract meaningful information from videos and images and turn it into actionable insights. Whether you’re looking for image segmentation, emotional analysis, optical character recognition, face recognition, or contextual image classification, AI Superior has you covered./p>/div>/div> /div> div classelementor-element elementor-element-dcdd541 elementor-position-left elementor-vertical-align-middle elementor-widget elementor-widget-image-box data-iddcdd541 data-element_typewidget data-widget_typeimage-box.default> div classelementor-image-box-wrapper>figure classelementor-image-box-img>a hrefhttps://aisuperior.com/technology/natural-language-processing-machine-learning/ aria-labeltechnology tabindex-1>img loadinglazy decodingasync width100 height100 srchttps://aisuperior.com/wp-content/uploads/2023/08/5.png classattachment-full size-full wp-image-2164 alt />/a>/figure>div classelementor-image-box-content>h3 classelementor-image-box-title>a hrefhttps://aisuperior.com/technology/natural-language-processing-machine-learning/ aria-labeltechnology>Natural Language Processing/a>/h3>p classelementor-image-box-description>Each customer interaction, whether that’s through social media, email, or customer support chat, generates a large volume of unstructured textual data every second that can be valuable for business. With our natural language processing services, you can discover invaluable insights from this data, solve various text analysis problems such as sentiment analysis, and find meaningful information in seconds. Our experts can also help develop robust NLP apps with features like question answering, speech recognition, semantic search, machine translation, control spamming, and emotional meaning. /p>/div>/div> /div> div classelementor-element elementor-element-7a1fffe elementor-position-left elementor-vertical-align-middle elementor-widget elementor-widget-image-box data-id7a1fffe data-element_typewidget data-widget_typeimage-box.default> div classelementor-image-box-wrapper>figure classelementor-image-box-img>img loadinglazy decodingasync width100 height100 srchttps://aisuperior.com/wp-content/uploads/2023/08/6.png classattachment-full size-full wp-image-2165 alt />/figure>div classelementor-image-box-content>h3 classelementor-image-box-title>Predictive analytics/h3>p classelementor-image-box-description>Because of the constantly changing business landscape, historical data is no longer enough to drive profitable ROIs. This is where predictive analytics can help. It takes both current and historical data to provide trends and insights about the future for better data-driven decision-making. AI Superior’s predictive analytics services can help you drive actions based on customer behaviour and predicted market trends. From fraud detection and predicting equipment failure to forecasting market trends, we guarantee reliable and accurate predictive models that can boost business. /p>/div>/div> /div> div classelementor-element elementor-element-513b3fc elementor-position-left elementor-vertical-align-middle elementor-widget elementor-widget-image-box data-id513b3fc data-element_typewidget data-widget_typeimage-box.default> div classelementor-image-box-wrapper>figure classelementor-image-box-img>a hrefhttps://aisuperior.com/technology/business-intelligence-and-statistical-analysis/ aria-labelbig data tabindex-1>img loadinglazy decodingasync width100 height100 srchttps://aisuperior.com/wp-content/uploads/2023/08/2.png classattachment-full size-full wp-image-2166 alt />/a>/figure>div classelementor-image-box-content>h3 classelementor-image-box-title>a hrefhttps://aisuperior.com/technology/business-intelligence-and-statistical-analysis/ aria-labelbig data>BI solutions/a>/h3>p classelementor-image-box-description>Make smarter decisions based on business data with our BI solutions. We can help you identify areas for improvement, organizational issues, and new opportunities for your business by taking advantage of raw, unstructured data coming from multiple origins. Our BI solutions can help improve operational efficiency and make compelling visualization for data-driven decisions and strategies./p>/div>/div> /div> div classelementor-element elementor-element-e5baa7d elementor-position-left elementor-vertical-align-middle elementor-widget elementor-widget-image-box data-ide5baa7d data-element_typewidget data-widget_typeimage-box.default> div classelementor-image-box-wrapper>figure classelementor-image-box-img>img loadinglazy decodingasync width100 height100 srchttps://aisuperior.com/wp-content/uploads/2023/08/3.png classattachment-full size-full wp-image-2167 alt />/figure>div classelementor-image-box-content>h3 classelementor-image-box-title>Big Data Analytics/h3>p classelementor-image-box-description>Make decision-making quicker and better with big data analytics in real time. With our expertise in big data analytics, we can help implement analytical capabilities that you can use to solve business challenges, predict future outcomes, and gain new actionable insights and patterns that can make your business more efficient. You can also analyze data from different sources, including logs, transactional applications, and sensors, to identify opportunities for creating new services and products and gauging potential risks and customer needs. /p>/div>/div> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-9e959bf elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id9e959bf data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3a5f5b1 data-id3a5f5b1 data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-c43dd44 elementor-widget elementor-widget-heading data-idc43dd44 data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>Wondering if your problem can be solved with AI?/span> /div> div classelementor-element elementor-element-2a723f2 elementor-align-center elementor-widget elementor-widget-button data-id2a723f2 data-element_typewidget data-widget_typebutton.default> a classelementor-button elementor-button-link elementor-size-sm href#form> span classelementor-button-content-wrapper> span classelementor-button-text>Start AI assessment/span> /span> /a> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-0443c11 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id0443c11 data-element_typesection idindustry> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-45cecd3 data-id45cecd3 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-da0ca49 elementor-widget elementor-widget-heading data-idda0ca49 data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>Industries/span> /div> div classelementor-element elementor-element-72eeb5b elementor-widget elementor-widget-text-editor data-id72eeb5b data-element_typewidget data-widget_typetext-editor.default> p>Building award-winning AI solutions across multiple business domains./p> /div> div classelementor-element elementor-element-8475937 elementor-testimonial--layout-image_above elementor-testimonial--align-left carousl industries elementor-testimonial--skin-default elementor-arrows-yes elementor-widget elementor-widget-testimonial-carousel data-id8475937 data-element_typewidget data-settings{"slides_per_view":"4","slides_to_scroll":"4","space_between":{"unit":"px","size":20,"sizes":},"slides_per_view_tablet":"4","slides_to_scroll_tablet":"3","space_between_mobile":{"unit":"px","size":20,"sizes":},"show_arrows":"yes","speed":500,"autoplay":"yes","autoplay_speed":5000,"pause_on_hover":"yes","pause_on_interaction":"yes","space_between_tablet":{"unit":"px","size":10,"sizes":}} data-widget_typetestimonial-carousel.default> div classelementor-main-swiper swiper roleregion aria-roledescriptioncarousel aria-labelSlides> div classswiper-wrapper> div classswiper-slide rolegroup aria-roledescriptionslide> div classelementor-testimonial> div classelementor-testimonial__content> div classelementor-testimonial__text> /div> cite classelementor-testimonial__cite>span classelementor-testimonial__name>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-finance/>Finance/a>/span>/cite> /div> div classelementor-testimonial__footer> div classelementor-testimonial__image> img decodingasync srchttps://aisuperior.com/wp-content/uploads/2023/08/finance.png alt<a href"https://aisuperior.com/industry/artificial-intelligence-in-finance/">Finance</a>> /div> /div> /div> /div> div classswiper-slide rolegroup aria-roledescriptionslide> div classelementor-testimonial> div classelementor-testimonial__content> div classelementor-testimonial__text> /div> cite classelementor-testimonial__cite>span classelementor-testimonial__name>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-government-sector/>Government/a>/span>/cite> /div> div classelementor-testimonial__footer> div classelementor-testimonial__image> img decodingasync srchttps://aisuperior.com/wp-content/uploads/2023/08/government.png alt<a href"https://aisuperior.com/industry/artificial-intelligence-in-government-sector/">Government</a>> /div> /div> /div> /div> div classswiper-slide rolegroup aria-roledescriptionslide> div classelementor-testimonial> div classelementor-testimonial__content> div classelementor-testimonial__text> /div> cite classelementor-testimonial__cite>span classelementor-testimonial__name>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-internet-industry-and-tech-start-ups/>Internet and Tech Startups/a>/span>/cite> /div> div classelementor-testimonial__footer> div classelementor-testimonial__image> img decodingasync srchttps://aisuperior.com/wp-content/uploads/2023/08/internet.png alt<a href"https://aisuperior.com/industry/artificial-intelligence-in-internet-industry-and-tech-start-ups/">Internet and Tech Startups</a>> /div> /div> /div> /div> div classswiper-slide rolegroup aria-roledescriptionslide> div classelementor-testimonial> div classelementor-testimonial__content> div classelementor-testimonial__text> /div> cite classelementor-testimonial__cite>span classelementor-testimonial__name>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-media-and-entertainment/>Media/a>/span>/cite> /div> div classelementor-testimonial__footer> div classelementor-testimonial__image> img decodingasync srchttps://aisuperior.com/wp-content/uploads/2023/08/media.png alt<a href"https://aisuperior.com/industry/artificial-intelligence-in-media-and-entertainment/">Media</a>> /div> /div> /div> /div> div classswiper-slide rolegroup aria-roledescriptionslide> div classelementor-testimonial> div classelementor-testimonial__content> div classelementor-testimonial__text> /div> cite classelementor-testimonial__cite>span classelementor-testimonial__name>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-construction/>Construction/a>/span>/cite> /div> div classelementor-testimonial__footer> div classelementor-testimonial__image> img decodingasync srchttps://aisuperior.com/wp-content/uploads/2023/08/Group-2.png alt<a href"https://aisuperior.com/industry/artificial-intelligence-in-construction/">Construction</a>> /div> /div> /div> /div> div classswiper-slide rolegroup aria-roledescriptionslide> div classelementor-testimonial> div classelementor-testimonial__content> div classelementor-testimonial__text> /div> cite classelementor-testimonial__cite>span classelementor-testimonial__name>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-oil-and-gas-industry/>Oil and Gas/a>/span>/cite> /div> div classelementor-testimonial__footer> div classelementor-testimonial__image> img decodingasync srchttps://aisuperior.com/wp-content/uploads/2023/08/Group-3515.png alt<a href"https://aisuperior.com/industry/artificial-intelligence-in-oil-and-gas-industry/">Oil and Gas</a>> /div> /div> /div> /div> div classswiper-slide rolegroup aria-roledescriptionslide> div classelementor-testimonial> div classelementor-testimonial__content> div classelementor-testimonial__text> /div> cite classelementor-testimonial__cite>span classelementor-testimonial__name>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-pharma/>Pharmaceuticals/a>/span>/cite> /div> div classelementor-testimonial__footer> div classelementor-testimonial__image> img decodingasync srchttps://aisuperior.com/wp-content/uploads/2023/08/Vector.png alt<a href"https://aisuperior.com/industry/artificial-intelligence-in-pharma/">Pharmaceuticals</a>> /div> /div> /div> /div> div classswiper-slide rolegroup aria-roledescriptionslide> div classelementor-testimonial> div classelementor-testimonial__content> div classelementor-testimonial__text> /div> cite classelementor-testimonial__cite>span classelementor-testimonial__name>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-real-estate/>Real Estate/a>/span>/cite> /div> div classelementor-testimonial__footer> div classelementor-testimonial__image> img decodingasync srchttps://aisuperior.com/wp-content/uploads/2023/08/Vector-1.png alt<a href"https://aisuperior.com/industry/artificial-intelligence-in-real-estate/">Real Estate</a>> /div> /div> /div> /div> div classswiper-slide rolegroup aria-roledescriptionslide> div classelementor-testimonial> div classelementor-testimonial__content> div classelementor-testimonial__text> /div> cite classelementor-testimonial__cite>span classelementor-testimonial__name>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-space-industry/>Space/a>/span>/cite> /div> div classelementor-testimonial__footer> div classelementor-testimonial__image> img decodingasync srchttps://aisuperior.com/wp-content/uploads/2023/08/1.png alt<a href"https://aisuperior.com/industry/artificial-intelligence-in-space-industry/">Space</a>> /div> /div> /div> /div> div classswiper-slide rolegroup aria-roledescriptionslide> div classelementor-testimonial> div classelementor-testimonial__content> div classelementor-testimonial__text> /div> cite classelementor-testimonial__cite>span classelementor-testimonial__name>a hrefhttps://aisuperior.com/industry/artificial-intelligence-software-development-for-ngos-npos-and-ncos/>NGOs, NPOs, NCOs/a>/span>/cite> /div> div classelementor-testimonial__footer> div classelementor-testimonial__image> img decodingasync srchttps://aisuperior.com/wp-content/uploads/2023/08/Group-3516.png alt<a href"https://aisuperior.com/industry/artificial-intelligence-software-development-for-ngos-npos-and-ncos/">NGOs, NPOs, NCOs</a>> /div> /div> /div> /div> div classswiper-slide rolegroup aria-roledescriptionslide> div classelementor-testimonial> div classelementor-testimonial__content> div classelementor-testimonial__text> /div> cite classelementor-testimonial__cite>span classelementor-testimonial__name>a hrefhttps://aisuperior.com/industry/artificial-intelligence-in-insurance/>Insurance/a>/span>/cite> /div> div classelementor-testimonial__footer> div classelementor-testimonial__image> img decodingasync srchttps://aisuperior.com/wp-content/uploads/2023/09/Insurance-Ico.svg alt<a href"https://aisuperior.com/industry/artificial-intelligence-in-insurance/">Insurance</a>> /div> /div> /div> /div> /div> div classelementor-swiper-button elementor-swiper-button-prev rolebutton tabindex0 aria-labelPrécédent> svg aria-hiddentrue classe-font-icon-svg e-eicon-chevron-left viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z>/path>/svg> /div> div classelementor-swiper-button elementor-swiper-button-next rolebutton tabindex0 aria-labelSuivant> svg aria-hiddentrue classe-font-icon-svg e-eicon-chevron-right viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z>/path>/svg> /div> /div> /div> div classelementor-element elementor-element-c17cc78 elementor-align-center elementor-widget elementor-widget-button data-idc17cc78 data-element_typewidget data-widget_typebutton.default> a classelementor-button elementor-button-link elementor-size-sm href#form> span classelementor-button-content-wrapper> span classelementor-button-text>Your Industry/span> /span> /a> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-1fb4a09 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id1fb4a09 data-element_typesection idwork-process> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-21f20f7 data-id21f20f7 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-45a02ca elementor-widget elementor-widget-heading data-id45a02ca data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>Our span stylecolor:#4665A4>Work Process/span>/span> /div> section classelementor-section elementor-inner-section elementor-element elementor-element-0d30bba elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id0d30bba data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-1f0c6c1 work-process-left data-id1f0c6c1 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-f97b207 elementor-widget elementor-widget-text-editor data-idf97b207 data-element_typewidget data-widget_typetext-editor.default> p>At AI Superior, we follow a systematic approach for all AI development projects. When you choose us as your partner, here’s what you can expect:/p> /div> div classelementor-element elementor-element-ea1d58d elementor-align-left elementor-mobile-align-center elementor-widget elementor-widget-button data-idea1d58d data-element_typewidget data-widget_typebutton.default> a classelementor-button elementor-button-link elementor-size-sm href#form> span classelementor-button-content-wrapper> span classelementor-button-text>Lets Talk/span> /span> /a> /div> /div> /div> div classelementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-3e0946d work-process-right data-id3e0946d data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-857ae7a work-image-box elementor-widget elementor-widget-image-box data-id857ae7a data-element_typewidget data-widget_typeimage-box.default> div classelementor-image-box-wrapper>div classelementor-image-box-content>h3 classelementor-image-box-title>Discovery stage:/h3>p classelementor-image-box-description>We begin by thoroughly understanding the problem you aim to solve. Through close collaboration, we gather insights and define the general direction and approach for the solution. We provide high-level estimations to give you a clear understanding of the project scope and expected outcomes./p>/div>/div> /div> div classelementor-element elementor-element-bb2bc3d work-image-box elementor-widget elementor-widget-image-box data-idbb2bc3d data-element_typewidget data-widget_typeimage-box.default> div classelementor-image-box-wrapper>div classelementor-image-box-content>h3 classelementor-image-box-title>Initial setup:/h3>p classelementor-image-box-description>Once we grasp your requirements, we delve deeper into understanding your team and the data needed for a successful project. We assess the available dataset to determine if AI is the optimal solution for addressing the problem at hand./p>/div>/div> /div> div classelementor-element elementor-element-68eda40 work-image-box elementor-widget elementor-widget-image-box data-id68eda40 data-element_typewidget data-widget_typeimage-box.default> div classelementor-image-box-wrapper>div classelementor-image-box-content>h3 classelementor-image-box-title>Building MVP:/h3>p classelementor-image-box-description>We adopt an incremental approach by starting small and utilizing the available dataset to test the viability of our idea. This allows us to determine the effectiveness of the proposed solution and assess its worthiness for further investment./p>/div>/div> /div> div classelementor-element elementor-element-d6c88f0 work-image-box elementor-widget elementor-widget-image-box data-idd6c88f0 data-element_typewidget data-widget_typeimage-box.default> div classelementor-image-box-wrapper>div classelementor-image-box-content>h3 classelementor-image-box-title>Scaling and integrating:/h3>p classelementor-image-box-description>After successfully developing and testing a prototype, we focus on integrating the AI solution into your existing system. We ensure seamless compatibility with your data, fine-tuning the models, and making necessary adjustments as required./p>/div>/div> /div> div classelementor-element elementor-element-7a346e8 work-image-box elementor-widget elementor-widget-image-box data-id7a346e8 data-element_typewidget data-widget_typeimage-box.default> div classelementor-image-box-wrapper>div classelementor-image-box-content>h3 classelementor-image-box-title>Evaluating results:/h3>p classelementor-image-box-description>We work closely with you to comprehensively evaluate the results of the implemented AI integration. Our goal is to provide valuable insights and ensure their accurate interpretation, enabling you to derive maximum value from the AI solution./p>/div>/div> /div> /div> /div> /div> /section> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-0078507 CTA elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id0078507 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-63a2fbd data-id63a2fbd data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-ac2f881 paragraph elementor-widget elementor-widget-text-editor data-idac2f881 data-element_typewidget data-widget_typetext-editor.default> span classelementor-heading-title elementor-size-default elementor-inline-editing pen stylefont-size: 22px; font-style: normal; font-weight: 500; margin-bottom: 0px; color: #293350; line-height: 36px; data-elementor-setting-keytitle data-pen-placeholderType Here...>By following this process, we ensure transparency, collaboration, and a thorough understanding of your needs throughout the project, resulting in successful AI implementations that drive tangible business outcomes./span> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-3040132 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id3040132 data-element_typesection idcustomer data-settings{"background_background":"gradient"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5dd7ac1 data-id5dd7ac1 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-13840db elementor-widget elementor-widget-heading data-id13840db data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>Customer span stylecolor:#4665A4>success stories/span>/span> /div> div classelementor-element elementor-element-cff292a loop_carousl elementor-arrows-position-inside elementor-widget elementor-widget-loop-carousel data-idcff292a data-element_typewidget data-settings{"template_id":"1030","slides_to_show":"1","slides_to_show_tablet":"1","_skin":"post","slides_to_show_mobile":"1","slides_to_scroll":"1","edit_handle_selector":".elementor-loop-container","autoplay":"yes","autoplay_speed":5000,"pause_on_hover":"yes","pause_on_interaction":"yes","infinite":"yes","speed":500,"offset_sides":"none","arrows":"yes","image_spacing_custom":{"unit":"px","size":10,"sizes":},"image_spacing_custom_tablet":{"unit":"px","size":"","sizes":},"image_spacing_custom_mobile":{"unit":"px","size":"","sizes":}} data-widget_typeloop-carousel.post> div classswiper elementor-loop-container elementor-grid rolelist dirltr> div classswiper-wrapper aria-liveoff> style idloop-1030>.elementor-1030 .elementor-element.elementor-element-f3336f6 > .elementor-container{max-width:1400px;}.elementor-1030 .elementor-element.elementor-element-190cfd9:not(.elementor-motion-effects-element-type-background) > .elementor-widget-wrap, .elementor-1030 .elementor-element.elementor-element-190cfd9 > .elementor-widget-wrap > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#FFFFFF;}.elementor-1030 .elementor-element.elementor-element-190cfd9 > .elementor-element-populated{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;padding:70px 70px 70px 50px;}.elementor-1030 .elementor-element.elementor-element-190cfd9 > .elementor-element-populated > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-widget-post-info .elementor-icon-list-item:not(:last-child):after{border-color:var( --e-global-color-text );}.elementor-widget-post-info .elementor-icon-list-icon i{color:var( --e-global-color-primary );}.elementor-widget-post-info .elementor-icon-list-icon svg{fill:var( --e-global-color-primary );}.elementor-widget-post-info .elementor-icon-list-text, .elementor-widget-post-info .elementor-icon-list-text a{color:var( --e-global-color-secondary );}.elementor-widget-post-info .elementor-icon-list-item{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-1030 .elementor-element.elementor-element-37318c1 .elementor-icon-list-items:not(.elementor-inline-items) .elementor-icon-list-item:not(:last-child){padding-bottom:calc(0px/2);}.elementor-1030 .elementor-element.elementor-element-37318c1 .elementor-icon-list-items:not(.elementor-inline-items) .elementor-icon-list-item:not(:first-child){margin-top:calc(0px/2);}.elementor-1030 .elementor-element.elementor-element-37318c1 .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item{margin-right:calc(0px/2);margin-left:calc(0px/2);}.elementor-1030 .elementor-element.elementor-element-37318c1 .elementor-icon-list-items.elementor-inline-items{margin-right:calc(-0px/2);margin-left:calc(-0px/2);}body.rtl .elementor-1030 .elementor-element.elementor-element-37318c1 .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after{left:calc(-0px/2);}body:not(.rtl) .elementor-1030 .elementor-element.elementor-element-37318c1 .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after{right:calc(-0px/2);}.elementor-1030 .elementor-element.elementor-element-37318c1 .elementor-icon-list-icon{width:14px;}.elementor-1030 .elementor-element.elementor-element-37318c1 .elementor-icon-list-icon i{font-size:14px;}.elementor-1030 .elementor-element.elementor-element-37318c1 .elementor-icon-list-icon svg{--e-icon-list-icon-size:14px;}.elementor-1030 .elementor-element.elementor-element-37318c1 .elementor-icon-list-text, .elementor-1030 .elementor-element.elementor-element-37318c1 .elementor-icon-list-text a{color:#4665A4;}.elementor-1030 .elementor-element.elementor-element-37318c1 .elementor-icon-list-item{font-family:Poppins, Sans-serif;font-size:18px;font-weight:400;}.elementor-widget-theme-post-title .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-1030 .elementor-element.elementor-element-3e440a2{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;}.elementor-1030 .elementor-element.elementor-element-3e440a2 .elementor-heading-title{font-family:Poppins, Sans-serif;font-size:36px;font-weight:500;line-height:40px;color:#293350;}.elementor-widget-theme-post-excerpt{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-1030 .elementor-element.elementor-element-08fcd96{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;font-family:Poppins, Sans-serif;font-size:16px;font-weight:400;color:var( --e-global-color-secondary );}.elementor-widget-button .elementor-button{background-color:var( --e-global-color-accent );font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-1030 .elementor-element.elementor-element-a7539f1 .elementor-button{background-color:#FFFFFF00;font-family:Poppins, Sans-serif;font-size:16px;font-weight:bold;letter-spacing:1.69px;fill:#252E5A;color:#252E5A;border-radius:0px 0px 0px 0px;padding:0px 0px 0px 0px;}.elementor-1030 .elementor-element.elementor-element-a7539f1{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;padding:0px 0px 0px 0px;}.elementor-widget-theme-post-featured-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}@media(max-width:1024px){.elementor-1030 .elementor-element.elementor-element-190cfd9 > .elementor-element-populated{margin:20px 20px 20px 20px;--e-column-margin-right:20px;--e-column-margin-left:20px;}.elementor-1030 .elementor-element.elementor-element-3e440a2 .elementor-heading-title{font-size:30px;}.elementor-1030 .elementor-element.elementor-element-c2959d0 > .elementor-element-populated{margin:20px 20px 20px 20px;--e-column-margin-right:20px;--e-column-margin-left:20px;}.elementor-1030 .elementor-element.elementor-element-faceeb4{margin:20px 20px calc(var(--kit-widget-spacing, 0px) + 20px) 20px;}}@media(max-width:767px){.elementor-1030 .elementor-element.elementor-element-f3336f6{margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 0px;}.elementor-1030 .elementor-element.elementor-element-190cfd9 > .elementor-widget-wrap > .elementor-widget:not(.elementor-widget__width-auto):not(.elementor-widget__width-initial):not(:last-child):not(.elementor-absolute){--kit-widget-spacing:0px;}.elementor-1030 .elementor-element.elementor-element-190cfd9 > .elementor-element-populated{margin:0px 0px 0px 0px;--e-column-margin-right:0px;--e-column-margin-left:0px;padding:40px 20px 40px 20px;}.elementor-1030 .elementor-element.elementor-element-37318c1{margin:20px 0px calc(var(--kit-widget-spacing, 0px) + 20px) 0px;padding:0px 0px 0px 0px;}.elementor-1030 .elementor-element.elementor-element-37318c1 .elementor-icon-list-item{font-size:16px;}.elementor-1030 .elementor-element.elementor-element-3e440a2{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 20px) 0px;padding:0px 0px 0px 0px;}.elementor-1030 .elementor-element.elementor-element-3e440a2 .elementor-heading-title{font-size:26px;}.elementor-1030 .elementor-element.elementor-element-08fcd96{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 16px) 0px;padding:0px 0px 0px 0px;font-size:14px;}.elementor-1030 .elementor-element.elementor-element-a7539f1{margin:30px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;padding:0px 0px 0px 0px;}.elementor-1030 .elementor-element.elementor-element-a7539f1 .elementor-button{font-size:14px;}.elementor-1030 .elementor-element.elementor-element-c2959d0 > .elementor-widget-wrap > .elementor-widget:not(.elementor-widget__width-auto):not(.elementor-widget__width-initial):not(:last-child):not(.elementor-absolute){--kit-widget-spacing:0px;}.elementor-1030 .elementor-element.elementor-element-c2959d0 > .elementor-element-populated{margin:0px 0px 25px 0px;--e-column-margin-right:0px;--e-column-margin-left:0px;padding:20px 20px 0px 20px;}.elementor-1030 .elementor-element.elementor-element-faceeb4{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;padding:0px 0px 0px 0px;}}@media(max-width:1024px) and (min-width:768px){.elementor-1030 .elementor-element.elementor-element-190cfd9{width:100%;}.elementor-1030 .elementor-element.elementor-element-c2959d0{width:100%;}}/style> div data-elementor-typeloop-item data-elementor-id1030 classelementor elementor-1030 swiper-slide e-loop-item e-loop-item-16597 post-16597 projects type-projects status-publish has-post-thumbnail hentry project_categories-generative-ai project_categories-nlp-technology project_categories-other ast-article-single data-elementor-post-typeelementor_library rolegroup aria-roledescriptionslide data-custom-edit-handle1> section classelementor-section elementor-top-section elementor-element elementor-element-f3336f6 stories-carousl elementor-section-boxed elementor-section-height-default elementor-section-height-default data-idf3336f6 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-190cfd9 stories-column-left data-id190cfd9 data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-37318c1 elementor-widget elementor-widget-post-info data-id37318c1 data-element_typewidget data-widget_typepost-info.default> ul classelementor-inline-items elementor-icon-list-items elementor-post-info> li classelementor-icon-list-item elementor-repeater-item-33d207a elementor-inline-item itempropabout> span classelementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms> span classelementor-post-info__terms-list> a hrefhttps://aisuperior.com/project_categories/generative-ai/ classelementor-post-info__terms-list-item>Generative AI/a>, a hrefhttps://aisuperior.com/project_categories/nlp-technology/ classelementor-post-info__terms-list-item>NLP/a>, a hrefhttps://aisuperior.com/project_categories/other/ classelementor-post-info__terms-list-item>Other/a> /span> /span> /li> /ul> /div> div classelementor-element elementor-element-3e440a2 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading data-id3e440a2 data-element_typewidget data-widget_typetheme-post-title.default> span classelementor-heading-title elementor-size-default>a hrefhttps://aisuperior.com/projects/empowering-organizations-with-custom-llm-enabled-chatbot-solutions/>Empowering Organizations with Custom LLM-Enabled Chatbot Solutions/a>/span> /div> div classelementor-element elementor-element-08fcd96 elementor-widget elementor-widget-theme-post-excerpt data-id08fcd96 data-element_typewidget data-widget_typetheme-post-excerpt.default> p>The AI Superior team developed a web application that allows users to communicate with a Custom LLM through a chatbot interface. This innovation empowers organizations to establish private, hosted /div> div classelementor-element elementor-element-a7539f1 elementor-button-info elementor-widget elementor-widget-button data-ida7539f1 data-element_typewidget data-widget_typebutton.default> a classelementor-button elementor-button-link elementor-size-sm hrefhttps://aisuperior.com/projects/empowering-organizations-with-custom-llm-enabled-chatbot-solutions/> span classelementor-button-content-wrapper> span classelementor-button-text>View More/span> /span> /a> /div> /div> /div> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-c2959d0 elementor-hidden-mobile data-idc2959d0 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-faceeb4 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image data-idfaceeb4 data-element_typewidget data-widget_typetheme-post-featured-image.default> img loadinglazy decodingasync width1024 height624 srchttps://aisuperior.com/wp-content/uploads/2021/11/Group-3015.svg classattachment-large size-large wp-image-12052 alt /> /div> /div> /div> /div> /section> /div> div data-elementor-typeloop-item data-elementor-id1030 classelementor elementor-1030 swiper-slide e-loop-item e-loop-item-14651 post-14651 projects type-projects status-publish has-post-thumbnail hentry project_categories-cv project_categories-internet ast-article-single data-elementor-post-typeelementor_library rolegroup aria-roledescriptionslide data-custom-edit-handle1> section classelementor-section elementor-top-section elementor-element elementor-element-f3336f6 stories-carousl elementor-section-boxed elementor-section-height-default elementor-section-height-default data-idf3336f6 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-190cfd9 stories-column-left data-id190cfd9 data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-37318c1 elementor-widget elementor-widget-post-info data-id37318c1 data-element_typewidget data-widget_typepost-info.default> ul classelementor-inline-items elementor-icon-list-items elementor-post-info> li classelementor-icon-list-item elementor-repeater-item-33d207a elementor-inline-item itempropabout> span classelementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms> span classelementor-post-info__terms-list> a hrefhttps://aisuperior.com/project_categories/cv/ classelementor-post-info__terms-list-item>Computer Vision/a>, a hrefhttps://aisuperior.com/project_categories/internet/ classelementor-post-info__terms-list-item>Internet/a> /span> /span> /li> /ul> /div> div classelementor-element elementor-element-3e440a2 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading data-id3e440a2 data-element_typewidget data-widget_typetheme-post-title.default> span classelementor-heading-title elementor-size-default>a hrefhttps://aisuperior.com/projects/enhancing-workplace-hygiene-with-ai-powered-object-detection/>Enhancing Workplace Hygiene with AI-Powered Object Detection/a>/span> /div> div classelementor-element elementor-element-a7539f1 elementor-button-info elementor-widget elementor-widget-button data-ida7539f1 data-element_typewidget data-widget_typebutton.default> a classelementor-button elementor-button-link elementor-size-sm hrefhttps://aisuperior.com/projects/enhancing-workplace-hygiene-with-ai-powered-object-detection/> span classelementor-button-content-wrapper> span classelementor-button-text>View More/span> /span> /a> /div> /div> /div> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-c2959d0 elementor-hidden-mobile data-idc2959d0 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-faceeb4 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image data-idfaceeb4 data-element_typewidget data-widget_typetheme-post-featured-image.default> img loadinglazy decodingasync width1024 height624 srchttps://aisuperior.com/wp-content/uploads/2021/11/Group-3015.svg classattachment-large size-large wp-image-12052 alt /> /div> /div> /div> /div> /section> /div> div data-elementor-typeloop-item data-elementor-id1030 classelementor elementor-1030 swiper-slide e-loop-item e-loop-item-10765 post-10765 projects type-projects status-publish has-post-thumbnail hentry project_categories-cv project_categories-core-machine-learning project_categories-real-estate ast-article-single data-elementor-post-typeelementor_library rolegroup aria-roledescriptionslide data-custom-edit-handle1> section classelementor-section elementor-top-section elementor-element elementor-element-f3336f6 stories-carousl elementor-section-boxed elementor-section-height-default elementor-section-height-default data-idf3336f6 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-190cfd9 stories-column-left data-id190cfd9 data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-37318c1 elementor-widget elementor-widget-post-info data-id37318c1 data-element_typewidget data-widget_typepost-info.default> ul classelementor-inline-items elementor-icon-list-items elementor-post-info> li classelementor-icon-list-item elementor-repeater-item-33d207a elementor-inline-item itempropabout> span classelementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms> span classelementor-post-info__terms-list> a hrefhttps://aisuperior.com/project_categories/cv/ classelementor-post-info__terms-list-item>Computer Vision/a>, a hrefhttps://aisuperior.com/project_categories/core-machine-learning/ classelementor-post-info__terms-list-item>Core Machine Learning/a>, a hrefhttps://aisuperior.com/project_categories/real-estate/ classelementor-post-info__terms-list-item>Real Estate/a> /span> /span> /li> /ul> /div> div classelementor-element elementor-element-3e440a2 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading data-id3e440a2 data-element_typewidget data-widget_typetheme-post-title.default> span classelementor-heading-title elementor-size-default>a hrefhttps://aisuperior.com/projects/harnessing-deep-learning-for-urban-zone-pricing-analysis/>Harnessing Deep Learning for Urban Zone Pricing Analysis/a>/span> /div> div classelementor-element elementor-element-a7539f1 elementor-button-info elementor-widget elementor-widget-button data-ida7539f1 data-element_typewidget data-widget_typebutton.default> a classelementor-button elementor-button-link elementor-size-sm hrefhttps://aisuperior.com/projects/harnessing-deep-learning-for-urban-zone-pricing-analysis/> span classelementor-button-content-wrapper> span classelementor-button-text>View More/span> /span> /a> /div> /div> /div> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-c2959d0 elementor-hidden-mobile data-idc2959d0 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-faceeb4 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image data-idfaceeb4 data-element_typewidget data-widget_typetheme-post-featured-image.default> img loadinglazy decodingasync width1024 height1024 srchttps://aisuperior.com/wp-content/uploads/2023/09/MAP@3x-1024x1024.png classattachment-large size-large wp-image-10766 alt srcsethttps://aisuperior.com/wp-content/uploads/2023/09/MAP@3x-1024x1024.png 1024w, https://aisuperior.com/wp-content/uploads/2023/09/MAP@3x-300x300.png 300w, https://aisuperior.com/wp-content/uploads/2023/09/MAP@3x-150x150.png 150w, https://aisuperior.com/wp-content/uploads/2023/09/MAP@3x-768x768.png 768w, https://aisuperior.com/wp-content/uploads/2023/09/MAP@3x-1536x1536.png 1536w, https://aisuperior.com/wp-content/uploads/2023/09/MAP@3x-2048x2048.png 2048w sizes(max-width: 1024px) 100vw, 1024px /> /div> /div> /div> /div> /section> /div> div data-elementor-typeloop-item data-elementor-id1030 classelementor elementor-1030 swiper-slide e-loop-item e-loop-item-10764 post-10764 projects type-projects status-publish has-post-thumbnail hentry project_categories-cv project_categories-core-machine-learning project_categories-medical ast-article-single data-elementor-post-typeelementor_library rolegroup aria-roledescriptionslide data-custom-edit-handle1> section classelementor-section elementor-top-section elementor-element elementor-element-f3336f6 stories-carousl elementor-section-boxed elementor-section-height-default elementor-section-height-default data-idf3336f6 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-190cfd9 stories-column-left data-id190cfd9 data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-37318c1 elementor-widget elementor-widget-post-info data-id37318c1 data-element_typewidget data-widget_typepost-info.default> ul classelementor-inline-items elementor-icon-list-items elementor-post-info> li classelementor-icon-list-item elementor-repeater-item-33d207a elementor-inline-item itempropabout> span classelementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms> span classelementor-post-info__terms-list> a hrefhttps://aisuperior.com/project_categories/cv/ classelementor-post-info__terms-list-item>Computer Vision/a>, a hrefhttps://aisuperior.com/project_categories/core-machine-learning/ classelementor-post-info__terms-list-item>Core Machine Learning/a>, a hrefhttps://aisuperior.com/project_categories/medical/ classelementor-post-info__terms-list-item>Medical/a> /span> /span> /li> /ul> /div> div classelementor-element elementor-element-3e440a2 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading data-id3e440a2 data-element_typewidget data-widget_typetheme-post-title.default> span classelementor-heading-title elementor-size-default>a hrefhttps://aisuperior.com/projects/from-scans-to-insights-using-deep-learning-to-estimate-fat-and-muscle-volume-of-human-eyes/>From Scans to Insights: Using Deep Learning to Estimate Fat and Muscle Volume of Human Eyes/a>/span> /div> div classelementor-element elementor-element-a7539f1 elementor-button-info elementor-widget elementor-widget-button data-ida7539f1 data-element_typewidget data-widget_typebutton.default> a classelementor-button elementor-button-link elementor-size-sm hrefhttps://aisuperior.com/projects/from-scans-to-insights-using-deep-learning-to-estimate-fat-and-muscle-volume-of-human-eyes/> span classelementor-button-content-wrapper> span classelementor-button-text>View More/span> /span> /a> /div> /div> /div> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-c2959d0 elementor-hidden-mobile data-idc2959d0 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-faceeb4 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image data-idfaceeb4 data-element_typewidget data-widget_typetheme-post-featured-image.default> img loadinglazy decodingasync width720 height720 srchttps://aisuperior.com/wp-content/uploads/2023/06/brain.png classattachment-large size-large wp-image-11299 alt srcsethttps://aisuperior.com/wp-content/uploads/2023/06/brain.png 720w, https://aisuperior.com/wp-content/uploads/2023/06/brain-300x300.png 300w, https://aisuperior.com/wp-content/uploads/2023/06/brain-150x150.png 150w sizes(max-width: 720px) 100vw, 720px /> /div> /div> /div> /div> /section> /div> div data-elementor-typeloop-item data-elementor-id1030 classelementor elementor-1030 swiper-slide e-loop-item e-loop-item-10763 post-10763 projects type-projects status-publish has-post-thumbnail hentry project_categories-core-machine-learning project_categories-insurance ast-article-single data-elementor-post-typeelementor_library rolegroup aria-roledescriptionslide data-custom-edit-handle1> section classelementor-section elementor-top-section elementor-element elementor-element-f3336f6 stories-carousl elementor-section-boxed elementor-section-height-default elementor-section-height-default data-idf3336f6 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-190cfd9 stories-column-left data-id190cfd9 data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-37318c1 elementor-widget elementor-widget-post-info data-id37318c1 data-element_typewidget data-widget_typepost-info.default> ul classelementor-inline-items elementor-icon-list-items elementor-post-info> li classelementor-icon-list-item elementor-repeater-item-33d207a elementor-inline-item itempropabout> span classelementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms> span classelementor-post-info__terms-list> a hrefhttps://aisuperior.com/project_categories/core-machine-learning/ classelementor-post-info__terms-list-item>Core Machine Learning/a>, a hrefhttps://aisuperior.com/project_categories/insurance/ classelementor-post-info__terms-list-item>Insurance/a> /span> /span> /li> /ul> /div> div classelementor-element elementor-element-3e440a2 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading data-id3e440a2 data-element_typewidget data-widget_typetheme-post-title.default> span classelementor-heading-title elementor-size-default>a hrefhttps://aisuperior.com/projects/data-driven-insurance-ai-superiors-breakthrough-in-usage-based-insurance/>Data-Driven Insurance: Deep Learning Solution for Usage-Based Insurance/a>/span> /div> div classelementor-element elementor-element-a7539f1 elementor-button-info elementor-widget elementor-widget-button data-ida7539f1 data-element_typewidget data-widget_typebutton.default> a classelementor-button elementor-button-link elementor-size-sm hrefhttps://aisuperior.com/projects/data-driven-insurance-ai-superiors-breakthrough-in-usage-based-insurance/> span classelementor-button-content-wrapper> span classelementor-button-text>View More/span> /span> /a> /div> /div> /div> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-c2959d0 elementor-hidden-mobile data-idc2959d0 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-faceeb4 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image data-idfaceeb4 data-element_typewidget data-widget_typetheme-post-featured-image.default> img loadinglazy decodingasync width720 height720 srchttps://aisuperior.com/wp-content/uploads/2023/06/Artboard-4-1.png classattachment-large size-large wp-image-11300 alt srcsethttps://aisuperior.com/wp-content/uploads/2023/06/Artboard-4-1.png 720w, https://aisuperior.com/wp-content/uploads/2023/06/Artboard-4-1-300x300.png 300w, https://aisuperior.com/wp-content/uploads/2023/06/Artboard-4-1-150x150.png 150w sizes(max-width: 720px) 100vw, 720px /> /div> /div> /div> /div> /section> /div> div data-elementor-typeloop-item data-elementor-id1030 classelementor elementor-1030 swiper-slide e-loop-item e-loop-item-10761 post-10761 projects type-projects status-publish has-post-thumbnail hentry project_categories-cv project_categories-government ast-article-single data-elementor-post-typeelementor_library rolegroup aria-roledescriptionslide data-custom-edit-handle1> section classelementor-section elementor-top-section elementor-element elementor-element-f3336f6 stories-carousl elementor-section-boxed elementor-section-height-default elementor-section-height-default data-idf3336f6 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-190cfd9 stories-column-left data-id190cfd9 data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-37318c1 elementor-widget elementor-widget-post-info data-id37318c1 data-element_typewidget data-widget_typepost-info.default> ul classelementor-inline-items elementor-icon-list-items elementor-post-info> li classelementor-icon-list-item elementor-repeater-item-33d207a elementor-inline-item itempropabout> span classelementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms> span classelementor-post-info__terms-list> a hrefhttps://aisuperior.com/project_categories/cv/ classelementor-post-info__terms-list-item>Computer Vision/a>, a hrefhttps://aisuperior.com/project_categories/government/ classelementor-post-info__terms-list-item>Government/a> /span> /span> /li> /ul> /div> div classelementor-element elementor-element-3e440a2 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading data-id3e440a2 data-element_typewidget data-widget_typetheme-post-title.default> span classelementor-heading-title elementor-size-default>a hrefhttps://aisuperior.com/projects/ai-superiors-advanced-graffiti-detection-system/>AI Superior’s Advanced Graffiti Detection System/a>/span> /div> div classelementor-element elementor-element-a7539f1 elementor-button-info elementor-widget elementor-widget-button data-ida7539f1 data-element_typewidget data-widget_typebutton.default> a classelementor-button elementor-button-link elementor-size-sm hrefhttps://aisuperior.com/projects/ai-superiors-advanced-graffiti-detection-system/> span classelementor-button-content-wrapper> span classelementor-button-text>View More/span> /span> /a> /div> /div> /div> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-c2959d0 elementor-hidden-mobile data-idc2959d0 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-faceeb4 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image data-idfaceeb4 data-element_typewidget data-widget_typetheme-post-featured-image.default> img loadinglazy decodingasync width720 height720 srchttps://aisuperior.com/wp-content/uploads/2023/09/Artboard-6-1.png classattachment-large size-large wp-image-10762 alt srcsethttps://aisuperior.com/wp-content/uploads/2023/09/Artboard-6-1.png 720w, https://aisuperior.com/wp-content/uploads/2023/09/Artboard-6-1-300x300.png 300w, https://aisuperior.com/wp-content/uploads/2023/09/Artboard-6-1-150x150.png 150w sizes(max-width: 720px) 100vw, 720px /> /div> /div> /div> /div> /section> /div> /div> /div> div classelementor-swiper-button elementor-swiper-button-prev rolebutton tabindex0 aria-labelPrevious> svg aria-hiddentrue classe-font-icon-svg e-eicon-chevron-left viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z>/path>/svg> /div> div classelementor-swiper-button elementor-swiper-button-next rolebutton tabindex0 aria-labelNext> svg aria-hiddentrue classe-font-icon-svg e-eicon-chevron-right viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z>/path>/svg> /div> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-889eb36 development-packages elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id889eb36 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d1b3bcf data-idd1b3bcf data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> section classelementor-section elementor-inner-section elementor-element elementor-element-85aeed3 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id85aeed3 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-d69b521 faq_tab_s data-idd69b521 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-c578612 elementor-widget__width-initial packages-accordion elementor-widget elementor-widget-eael-adv-accordion data-idc578612 data-element_typewidget data-widget_typeeael-adv-accordion.default> div classeael-adv-accordion ideael-adv-accordion-c578612 data-scroll-on-clickno data-scroll-speed300 data-accordion-idc578612 data-accordion-typeaccordion data-toogle-speed300> div classeael-accordion-list> div idproof-of-concept-poc classelementor-tab-title eael-accordion-header active-default tabindex0 data-tab1 aria-controlselementor-tab-content-2071>span classeael-advanced-accordion-icon-closed>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-plus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-advanced-accordion-icon-opened>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-minus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-accordion-tab-title>Proof of Concept (PoC)/span>/div>div idelementor-tab-content-2071 classeael-accordion-content clearfix active-default data-tab1 aria-labelledbyproof-of-concept-poc>We help you test your product idea/div> /div>div classeael-accordion-list> div idminimum-viable-product-mvp classelementor-tab-title eael-accordion-header tabindex0 data-tab2 aria-controlselementor-tab-content-2072>span classeael-advanced-accordion-icon-closed>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-plus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-advanced-accordion-icon-opened>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-minus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-accordion-tab-title>Minimum viable product (MVP)/span>/div>div idelementor-tab-content-2072 classeael-accordion-content clearfix data-tab2 aria-labelledbyminimum-viable-product-mvp>We help you validate your business model with a minimum viable product fit/div> /div>div classeael-accordion-list> div idproduct classelementor-tab-title eael-accordion-header tabindex0 data-tab3 aria-controlselementor-tab-content-2073>span classeael-advanced-accordion-icon-closed>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-plus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-advanced-accordion-icon-opened>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-minus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-accordion-tab-title>Product/span>/div>div idelementor-tab-content-2073 classeael-accordion-content clearfix data-tab3 aria-labelledbyproduct>We help you scale from MVP to a full-scale product/div> /div>/div> /div> /div> /div> div classelementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-09ab30f data-id09ab30f data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-4695938 elementor-widget elementor-widget-heading data-id4695938 data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>AI Development span stylecolor:#4665A4>Packages br> for Startups/span>/span> /div> div classelementor-element elementor-element-49396b0 elementor-widget__width-initial elementor-widget elementor-widget-text-editor data-id49396b0 data-element_typewidget data-widget_typetext-editor.default> div classfl-module fl-module-rich-text fl-node-ghjx869v4zdr data-nodeghjx869v4zdr>div classfl-module-content fl-node-content>div classfl-rich-text>p>AI Superior offers fixed AI development plans tailored to support startups at every stage of the software development process. From AI proof of concept (PoC) to fully scalable products leveraging advanced AI models, our plans ensure a guaranteed outcome at a predefined price./p>/div>/div>/div> /div> div classelementor-element elementor-element-1b3b238 elementor-align-left elementor-mobile-align-center elementor-widget elementor-widget-button data-id1b3b238 data-element_typewidget data-widget_typebutton.default> a classelementor-button elementor-button-link elementor-size-sm hrefhttps://aisuperior.com/packages-for-startups/> span classelementor-button-content-wrapper> span classelementor-button-text>View more/span> /span> /a> /div> /div> /div> /div> /section> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-2f21c27 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id2f21c27 data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c90bac4 data-idc90bac4 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-1287c11 elementor-widget__width-inherit elementor-widget elementor-widget-html data-id1287c11 data-element_typewidget data-widget_typehtml.default> script typetext/javascript srchttps://widget.clutch.co/static/js/widget.js defer>/script> div classclutch-widget data-urlhttps://widget.clutch.co data-widget-type12 data-height375 data-nofollowtrue data-expandifrtrue data-reviews2147394,2119222,2087670,1883392,1880654,1875690,1830410,1787327,1776687,1765743,1677732 data-clutchcompany-id1557153>iframe idiframe-0.8757677658569052 width100% srchttps://widget.clutch.co/widgets/get/12?ref_domainaisuperior.com&uid1557153&rel_nofollowtrue&reviews2147394%2C2119222%2C2087670%2C1883392%2C1880654%2C1875690%2C1830410%2C1787327%2C1776687%2C1765743%2C1677732&ref_path/ height375px scrollingno data-lf-yt-playback-inspected-dzlr5a5jvlw8boq2true data-lf-vimeo-playback-inspected-dzlr5a5jvlw8boq2true styleborder: none; overflow: hidden; display: block; height: 357px; titleiFrameSizeriframe-0.8757677658569052:0:0:mouseleave:639:35112>/iframe>/div> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-a52323a elementor-section-content-middle bg-cta elementor-section-boxed elementor-section-height-default elementor-section-height-default data-ida52323a data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-f50c437 data-idf50c437 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-c3ab447 elementor-widget__width-initial para elementor-widget elementor-widget-text-editor data-idc3ab447 data-element_typewidget data-widget_typetext-editor.default> We are Trusted Partners of NGOs, NPOs & NCOs /div> /div> /div> div classelementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-f5ca965 data-idf5ca965 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-9ca3806 elementor-align-left elementor-mobile-align-center elementor-widget elementor-widget-button data-id9ca3806 data-element_typewidget data-widget_typebutton.default> a classelementor-button elementor-button-link elementor-size-sm hrefhttps://aisuperior.com/industry/artificial-intelligence-software-development-for-ngos-npos-and-ncos/> span classelementor-button-content-wrapper> span classelementor-button-text>See Our Approach/span> /span> /a> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-3cee353 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id3cee353 data-element_typesection idawards> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f4cf495 data-idf4cf495 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-2f94cfc elementor-widget elementor-widget-heading data-id2f94cfc data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>Our span stylecolor: #4665a4>awards and recogitions/span>/span> /div> div classelementor-element elementor-element-bc4c32c awards-carousl elementor-arrows-position-outside elementor-widget elementor-widget-image-carousel data-idbc4c32c data-element_typewidget data-settings{"slides_to_show":"4","slides_to_scroll":"4","slides_to_show_mobile":"2","slides_to_scroll_mobile":"2","slides_to_show_tablet":"4","slides_to_scroll_tablet":"4","navigation":"arrows","autoplay":"yes","pause_on_hover":"yes","pause_on_interaction":"yes","autoplay_speed":5000,"infinite":"yes","speed":500} data-widget_typeimage-carousel.default> div classelementor-image-carousel-wrapper swiper roleregion aria-roledescriptioncarousel aria-labelImage Carousel dirltr> div classelementor-image-carousel swiper-wrapper aria-liveoff> div classswiper-slide rolegroup aria-roledescriptionslide aria-label1 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-1-300x283.png altcluch-1 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label2 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-3-300x283.png altcluch-3 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label3 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-4-300x283.png altcluch-4 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label4 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-6-300x283.jpg altcluch-6 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label5 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-7-300x283.png altcluch-7 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label6 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-8-300x283.png altcluch-8 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label7 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-9-300x283.png altcluch-9 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label8 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-10-300x283.png altcluch-10 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label9 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/11/Champion-Badge-2023-Fall-s-300x257.png altChampion-Badge-2023-Fall-s />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label10 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/11/Global-Badge-2023-Fall-s-300x257.png altGlobal-Badge-2023-Fall-s />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label11 de 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/11/staff_aug_award-3.png altstaff_aug_award (3) />/figure>/div> /div> div classelementor-swiper-button elementor-swiper-button-prev rolebutton tabindex0> svg aria-hiddentrue classe-font-icon-svg e-eicon-chevron-left viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z>/path>/svg> /div> div classelementor-swiper-button elementor-swiper-button-next rolebutton tabindex0> svg aria-hiddentrue classe-font-icon-svg e-eicon-chevron-right viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z>/path>/svg> /div> /div> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-fd18cb7 faq-section elementor-section-boxed elementor-section-height-default elementor-section-height-default data-idfd18cb7 data-element_typesection idfaq data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-edf0902 data-idedf0902 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-05ffaf6 elementor-widget elementor-widget-heading data-id05ffaf6 data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>Still uncertain about span stylecolor:#4665A4>how an AI services company can help your business?/span> Read the FAQs to find the answers: /span> /div> div classelementor-element elementor-element-e738400 elementor-widget__width-initial elementor-widget elementor-widget-eael-adv-accordion data-ide738400 data-element_typewidget data-widget_typeeael-adv-accordion.default> div classeael-adv-accordion ideael-adv-accordion-e738400 data-scroll-on-clickno data-scroll-speed300 data-accordion-ide738400 data-accordion-typeaccordion data-toogle-speed300> div classeael-accordion-list> div idwhat-are-typical-ai-services classelementor-tab-title eael-accordion-header active-default tabindex0 data-tab1 aria-controlselementor-tab-content-2421>span classeael-advanced-accordion-icon-closed>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-plus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-advanced-accordion-icon-opened>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-minus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-accordion-tab-title>What are typical AI services?/span>/div>div idelementor-tab-content-2421 classeael-accordion-content clearfix active-default data-tab1 aria-labelledbywhat-are-typical-ai-services>We offer a range of AI services to help businesses harness the true power of AI. Some typical AI services include:br>br>strong>Custom AI solutions:/strong> We build AI solutions tailor-made to your business needs and challenges. Our AI experts closely work with you to understand your unique requirements and develop AI systems that meet your needs, improve efficiency, put you ahead of competitors, and drive innovation.br>br>strong>AI Consulting: /strong> We specialize in providing strategic guidance to businesses looking to adopt AI to drive growth and improve operations. Experts at AI Superior assess your business needs, identify AI opportunities, and develop a strategy for AI development and implementation.br>br>strong>Implementation: /strong> Once a plan is in place and an AI solution is deemed viable, the AI consulting company works to implement the project. This involves building the necessary framework, selecting and customizing the model, and integrating the AI solution with the existing system.br>br>strong>AI Training & Education:/strong> We offer training modules, workshops, and lectures for businesses looking to upskill their employees in AI. From coding rules to data science team training and from machine learning and data mining workshops to lectures on AI software development, we strive to provide leading AI skills that can keep your business relevant in today’s constantly changing business landscape.br>br>strong>AI Integration & Deployment: /strong> At AI Superior, we help businesses integrate AI into their existing legacy systems and workflows. Our experts can incorporate AI into existing software applications, optimize models and algorithms for faster performance, and deploy them seamlessly into your existing processes.br>br>strong>Data Analysis: /strong> Professionals at AI Superior help businesses extract valuable information from raw data using AI. We can help you identify trends and patterns and provide actionable insights for data-driven decision-making./div> /div>div classeael-accordion-list> div idhow-can-businesses-benefit-from-ai-services-and-solutions classelementor-tab-title eael-accordion-header tabindex0 data-tab2 aria-controlselementor-tab-content-2422>span classeael-advanced-accordion-icon-closed>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-plus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-advanced-accordion-icon-opened>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-minus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-accordion-tab-title>How can businesses benefit from AI services and solutions?/span>/div>div idelementor-tab-content-2422 classeael-accordion-content clearfix data-tab2 aria-labelledbyhow-can-businesses-benefit-from-ai-services-and-solutions>As AI evolves, businesses get to enjoy more benefits—greater customer satisfaction, increased employee productivity, and improved business operations.br>br>Using AI to analyze customer behaviour and preferences and provide personalized experiences and tailored recommendations can result in higher customer satisfaction, higher conversion rates, and increased engagement and loyalty, which is ultimately good for business.br>br>AI can also automate mundane and repetitive tasks so that your employees can focus more on innovating rather than routine tasks. It can also process huge amounts of data quickly and efficiently and process complex calculations, leading to improved productivity, reduced human error, and better efficiency. Plus, automating repetitive tasks helps businesses save resources and time.br>br>Fully leveraging AI can also put you ahead of your competitor since it allows businesses to identify new opportunities, respond quickly to market changes, and innovate faster./div> /div>div classeael-accordion-list> div idwhat-is-ai-as-a-service classelementor-tab-title eael-accordion-header tabindex0 data-tab3 aria-controlselementor-tab-content-2423>span classeael-advanced-accordion-icon-closed>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-plus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-advanced-accordion-icon-opened>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-minus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-accordion-tab-title>What is AI as a service?/span>/div>div idelementor-tab-content-2423 classeael-accordion-content clearfix data-tab3 aria-labelledbywhat-is-ai-as-a-service>AI as a service is a cloud-based service that allows you to use AI solutions and services pre-configured on the cloud. It follows a pay-as-you-go model and allows you to experiment with AI and ensure that it provides value to your business before making any investment. It also allows businesses to use AI in production without a huge up-front investment, and with low risk and greater speed.br>br>Numerous platforms provide AI as a service and allow you to experiment with their ML algorithms and services. At AI Superior, we understand that it can become overwhelming to choose the right tools and platforms that completely meet your needs from today’s ever-expanding market, but our AI consultants can help. Our experts can guide you through the selection process and help you integrate all the necessary tools into your project./div> /div>div classeael-accordion-list> div idhow-much-do-ai-services-cost classelementor-tab-title eael-accordion-header tabindex0 data-tab4 aria-controlselementor-tab-content-2424>span classeael-advanced-accordion-icon-closed>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-plus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-advanced-accordion-icon-opened>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-minus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-accordion-tab-title>How much do AI services cost?/span>/div>div idelementor-tab-content-2424 classeael-accordion-content clearfix data-tab4 aria-labelledbyhow-much-do-ai-services-cost>Since every AI project is unique, the cost of AI services can vary and depend on a variety of factors, including the complexity of the project, availability of data, deployment considerations, and customization needs. While we can’t give an exact figure without knowing the project details, we closely work with our clients to assess their needs and provide personalized solutions that fit their budgets. Get in touch with us today, and we’ll be happy to provide you with a customized quote based on your project./div> /div>div classeael-accordion-list> div idwhat-ai-solutions-are-the-most-common-in-business-use classelementor-tab-title eael-accordion-header tabindex0 data-tab5 aria-controlselementor-tab-content-2425>span classeael-advanced-accordion-icon-closed>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-plus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-advanced-accordion-icon-opened>svg aria-hiddentrue classfa-accordion-icon e-font-icon-svg e-fas-minus viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z>/path>/svg>/span>span classeael-accordion-tab-title>What AI solutions are the most common in business use?/span>/div>div idelementor-tab-content-2425 classeael-accordion-content clearfix data-tab5 aria-labelledbywhat-ai-solutions-are-the-most-common-in-business-use>From operations and marketing to customer service, AI is used in many aspects of business. Some common use cases include:br>br>strong>Chatbots for better customer service: /strong> Companies can streamline and improve their customer service processes with chatbots and free up their customer service representatives for problems that require human intervention. Chatbots can also route customers to representatives who can address their questions better and be available 24/7 to solve customer queries.br>br>strong>Personalized recommendations:/strong> AI can analyze customer behaviour and recommend products that align with the user’s interest. This is particularly popular with e-commerce and streaming websites. By analyzing the kinds of shows and movies you watch the most or products you search the most for, the AI can present you with similar titles to keep you on the platform for longer.br>br>strong>Audience segmentation for targeted campaigns:/strong> AI is used in the advertisement industry to segment users and make targeted campaigns to boost sales, especially in highly competitive industries.br>br>strong>Sentiment analysis for customer satisfaction: /strong> Sentiment analysis with AI allows companies to gauge customer reactions and gather insights on how customers view their brand by scanning through ratings, reviews, and posts that mention the brand. These insights help companies identify areas that can be improved to ensure better customer service.br>br>strong>Fraud detection: /strong> Companies use AI to identify and respond to fraud and prevent cybercrime. Different machine learning algorithms are used to identify suspicious transactions and whenever there’s a risk of fraud, the transaction is stopped and relevant parties are informed of the risk.br>br>strong>Optimizing supply chain:/strong> AI is also helpful for companies that struggle to deliver products on time. It can help predict the price of the material and shipping and estimate the time it’ll take for the products to pass through the supply chain. As a result, companies can make better decisions about the optimal way of shipping products. It is also commonly used to find faster routes to help delivery drivers./div> /div>/div> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-87f7ceb elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id87f7ceb data-element_typesection idinsight> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-097b455 data-id097b455 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-275b47c elementor-widget elementor-widget-heading data-id275b47c data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>Check out AI Insights Hub by AI Superior/span> /div> div classelementor-element elementor-element-6071f28 blog-loop-carousl elementor-arrows-position-inside elementor-widget elementor-widget-loop-carousel data-id6071f28 data-element_typewidget data-settings{"template_id":"976","image_spacing_custom_tablet":{"unit":"px","size":20,"sizes":},"_skin":"post","slides_to_show":"3","slides_to_show_tablet":"2","slides_to_show_mobile":"1","slides_to_scroll":"1","edit_handle_selector":".elementor-loop-container","speed":500,"arrows":"yes","image_spacing_custom":{"unit":"px","size":10,"sizes":},"image_spacing_custom_mobile":{"unit":"px","size":"","sizes":}} data-widget_typeloop-carousel.post> div classswiper elementor-loop-container elementor-grid rolelist dirltr> div classswiper-wrapper aria-livepolite> style idloop-976>@media(max-width:767px){.elementor-image-box-wrapper { align-items: flex-start !important;}.elementor-image-box-wrapper figure { min-width: 40px;}}.elementor-976 .elementor-element.elementor-element-dd086a0:not(.elementor-motion-effects-element-type-background), .elementor-976 .elementor-element.elementor-element-dd086a0 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#23B6CE;}.elementor-976 .elementor-element.elementor-element-dd086a0 > .elementor-container{max-width:1400px;}.elementor-976 .elementor-element.elementor-element-dd086a0{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;padding:20px 20px 20px 20px;}.elementor-976 .elementor-element.elementor-element-dd086a0 > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-bc-flex-widget .elementor-976 .elementor-element.elementor-element-386490e.elementor-column .elementor-widget-wrap{align-items:center;}.elementor-976 .elementor-element.elementor-element-386490e.elementor-column.elementor-elementdata-element_typecolumn > .elementor-widget-wrap.elementor-element-populated{align-content:center;align-items:center;}.elementor-976 .elementor-element.elementor-element-386490e.elementor-column > .elementor-widget-wrap{justify-content:center;}.elementor-976 .elementor-element.elementor-element-386490e > .elementor-element-populated{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;margin:20px 0px 20px 0px;--e-column-margin-right:0px;--e-column-margin-left:0px;padding:0px 0px 0px 0px;}.elementor-976 .elementor-element.elementor-element-386490e > .elementor-element-populated > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-widget-theme-post-featured-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-976 .elementor-element.elementor-element-d257254{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;text-align:center;}.elementor-976 .elementor-element.elementor-element-d257254 img{width:100%;max-width:359px;height:179px;object-fit:cover;object-position:center center;}.elementor-widget-theme-post-title .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-976 .elementor-element.elementor-element-45ae849{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 20px) 0px;padding:0px 0px 0px 0px;}.elementor-976 .elementor-element.elementor-element-45ae849 .elementor-heading-title{font-family:Poppins, Sans-serif;font-size:20px;font-weight:500;line-height:30px;color:#FFFFFF;}.elementor-widget-theme-post-content{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-976 .elementor-element.elementor-element-e2e5c2e{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;padding:0px 15px 0px 0px;text-align:left;color:#FFFFFF;font-family:Poppins, Sans-serif;font-size:15px;font-weight:300;line-height:24px;}.elementor-widget-post-info .elementor-icon-list-item:not(:last-child):after{border-color:var( --e-global-color-text );}.elementor-widget-post-info .elementor-icon-list-icon i{color:var( --e-global-color-primary );}.elementor-widget-post-info .elementor-icon-list-icon svg{fill:var( --e-global-color-primary );}.elementor-widget-post-info .elementor-icon-list-text, .elementor-widget-post-info .elementor-icon-list-text a{color:var( --e-global-color-secondary );}.elementor-widget-post-info .elementor-icon-list-item{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-976 .elementor-element.elementor-element-a81df6f{margin:0px 20px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;}.elementor-976 .elementor-element.elementor-element-a81df6f .elementor-icon-list-icon{width:14px;}.elementor-976 .elementor-element.elementor-element-a81df6f .elementor-icon-list-icon i{font-size:14px;}.elementor-976 .elementor-element.elementor-element-a81df6f .elementor-icon-list-icon svg{--e-icon-list-icon-size:14px;}.elementor-976 .elementor-element.elementor-element-a81df6f .elementor-icon-list-text, .elementor-976 .elementor-element.elementor-element-a81df6f .elementor-icon-list-text a{color:#FFFFFF;}.elementor-976 .elementor-element.elementor-element-a81df6f .elementor-icon-list-item{font-family:Poppins, Sans-serif;font-size:14px;font-weight:400;}@media(max-width:1024px) and (min-width:768px){.elementor-976 .elementor-element.elementor-element-386490e{width:100%;}}@media(max-width:1024px){.elementor-976 .elementor-element.elementor-element-dd086a0{margin-top:80px;margin-bottom:80px;padding:0px 25px 0px 25px;}.elementor-976 .elementor-element.elementor-element-386490e > .elementor-element-populated{margin:0px 0px 0px 0px;--e-column-margin-right:0px;--e-column-margin-left:0px;padding:0px 0px 0px 0px;}.elementor-976 .elementor-element.elementor-element-d257254{margin:25px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;padding:0px 0px 0px 0px;}}@media(max-width:767px){.elementor-976 .elementor-element.elementor-element-dd086a0{margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 0px;}.elementor-976 .elementor-element.elementor-element-386490e > .elementor-widget-wrap > .elementor-widget:not(.elementor-widget__width-auto):not(.elementor-widget__width-initial):not(:last-child):not(.elementor-absolute){--kit-widget-spacing:0px;}.elementor-976 .elementor-element.elementor-element-386490e > .elementor-element-populated{margin:30px 0px 30px 0px;--e-column-margin-right:0px;--e-column-margin-left:0px;padding:0px 30px 0px 30px;}.elementor-976 .elementor-element.elementor-element-d257254{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;padding:0px 0px 0px 0px;}.elementor-976 .elementor-element.elementor-element-45ae849{margin:20px 0px calc(var(--kit-widget-spacing, 0px) + 20px) 0px;padding:10px 0px 10px 0px;}.elementor-976 .elementor-element.elementor-element-e2e5c2e{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;padding:10px 30px 0px 10px;}.elementor-976 .elementor-element.elementor-element-a81df6f{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;padding:10px 10px 10px 0px;}.elementor-976 .elementor-element.elementor-element-a81df6f .elementor-icon-list-item{font-size:16px;}}/style> div data-elementor-typeloop-item data-elementor-id976 classelementor elementor-976 swiper-slide e-loop-item e-loop-item-12276 post-12276 blog type-blog status-publish has-post-thumbnail hentry category-ai blog_category-ai ast-article-single data-elementor-post-typeelementor_library rolegroup aria-roledescriptionslide data-custom-edit-handle1> section classelementor-section elementor-top-section elementor-element elementor-element-dd086a0 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-iddd086a0 data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-386490e data-id386490e data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-d257254 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image data-idd257254 data-element_typewidget data-widget_typetheme-post-featured-image.default> img loadinglazy decodingasync width300 height169 srchttps://aisuperior.com/wp-content/uploads/2023/10/AdobeStock_309676324-1536x864-1-300x169.jpg classattachment-medium size-medium wp-image-12277 alt srcsethttps://aisuperior.com/wp-content/uploads/2023/10/AdobeStock_309676324-1536x864-1-300x169.jpg 300w, https://aisuperior.com/wp-content/uploads/2023/10/AdobeStock_309676324-1536x864-1-1024x576.jpg 1024w, https://aisuperior.com/wp-content/uploads/2023/10/AdobeStock_309676324-1536x864-1-768x432.jpg 768w, https://aisuperior.com/wp-content/uploads/2023/10/AdobeStock_309676324-1536x864-1.jpg 1536w sizes(max-width: 300px) 100vw, 300px /> /div> div classelementor-element elementor-element-45ae849 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading data-id45ae849 data-element_typewidget data-widget_typetheme-post-title.default> h3 classelementor-heading-title elementor-size-default>a hrefhttps://aisuperior.com/blog/ai-in-space-how-ml-is-revolutionizing-space-exploration/>AI in Space: How ML is Revolutionizing Space Exploration/a>/h3> /div> div classelementor-element elementor-element-e2e5c2e post-content-block blogs-para elementor-widget elementor-widget-theme-post-content data-ide2e5c2e data-element_typewidget data-widget_typetheme-post-content.default> p>Space exploration has always captured the attention of humanity. The pursuit to understand the cosmos, unravel its mysteries, and discover new frontiers is undeniably captivating, however, this journey is not without its challenges. The vastness of space, the harsh conditions, and the sheer distance from Earth have made space exploration a daunting endeavor./p>p>However, with the latest advancements in artificial intelligence (AI), humanity has been able to push the boundaries of what’s possible in the final frontier. From autonomous rovers to data analysis and satellite operations, artificial intelligence is helping us understand the mysteries of our universe./p>p>In this blog post, we’ll delve into the exciting world of AI in space exploration and discover how it’s shaping the future of interstellar discovery./p>p> /p> div data-elementor-typesection data-elementor-id22355 classelementor elementor-22355 data-elementor-post-typeelementor_library> section classelementor-section elementor-top-section elementor-element elementor-element-d855004 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-idd855004 data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-bfba3a2 data-idbfba3a2 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-9f1b53f elementor-widget elementor-widget-html data-id9f1b53f data-element_typewidget data-widget_typehtml.default> script typetext/javascript srchttps://widget.clutch.co/static/js/widget.js defer>/script> div classclutch-widget data-urlhttps://widget.clutch.co data-widget-type12 data-height375 data-nofollowtrue data-expandifrtrue data-reviews2147394,2119222,2087670,1883392,1880654,1875690,1830410,1787327,1776687,1765743,1677732 data-clutchcompany-id1557153>iframe idiframe-0.8757677658569052 width100% srchttps://widget.clutch.co/widgets/get/12?ref_domainaisuperior.com&uid1557153&rel_nofollowtrue&reviews2147394%2C2119222%2C2087670%2C1883392%2C1880654%2C1875690%2C1830410%2C1787327%2C1776687%2C1765743%2C1677732&ref_path/ height375px scrollingno data-lf-yt-playback-inspected-dzlr5a5jvlw8boq2true data-lf-vimeo-playback-inspected-dzlr5a5jvlw8boq2true styleborder: none; overflow: hidden; display: block; height: 357px; titleiFrameSizeriframe-0.8757677658569052:0:0:mouseleave:639:35112>/iframe>/div> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-d1b7c44 foundation-section elementor-section-boxed elementor-section-height-default elementor-section-height-default data-idd1b7c44 data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-no> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-363bc51 data-id363bc51 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> section classelementor-section elementor-inner-section elementor-element elementor-element-0ee9ddd elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id0ee9ddd data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-68fca2a data-id68fca2a data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-9b2589f elementor-widget elementor-widget-heading data-id9b2589f data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>AI Superior span stylecolor: #4665a4>Founders/span>/span> /div> /div> /div> /div> /section> section classelementor-section elementor-inner-section elementor-element elementor-element-e1b6e42 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-ide1b6e42 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-167494d data-id167494d data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-6688ed2 elementor-widget elementor-widget-heading data-id6688ed2 data-element_typewidget data-widget_typeheading.default> h2 classelementor-heading-title elementor-size-default>AI Superior was founded in 2019 in Darmstadt, Germany by Dr. Ivan Tankoyeu and Dr. Sergey Sukhanov. Fuelled by their deep expertise in artificial intelligence and a shared vision for its limitless possibilities, they created a company that delivers cutting-edge artificial intelligence services and software solutions.With a talented team and a customer-centric approach, AI Superior is empowering businesses worldwide with innovative AI technologies./h2> /div> /div> /div> div classelementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-d17bd94 data-idd17bd94 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-09e4c17 elementor-widget elementor-widget-image data-id09e4c17 data-element_typewidget data-widget_typeimage.default> img fetchpriorityhigh fetchpriorityhigh decodingasync width800 height800 srchttps://aisuperior.com/wp-content/uploads/2023/08/Ivan-Tankoyeu-circle-2c95f8030c4282e4d5cebb5b889f7400-il8nemx07o9z.jpg classattachment-large size-large wp-image-2375 alt srcsethttps://aisuperior.com/wp-content/uploads/2023/08/Ivan-Tankoyeu-circle-2c95f8030c4282e4d5cebb5b889f7400-il8nemx07o9z.jpg 800w, https://aisuperior.com/wp-content/uploads/2023/08/Ivan-Tankoyeu-circle-2c95f8030c4282e4d5cebb5b889f7400-il8nemx07o9z-300x300.jpg 300w, https://aisuperior.com/wp-content/uploads/2023/08/Ivan-Tankoyeu-circle-2c95f8030c4282e4d5cebb5b889f7400-il8nemx07o9z-150x150.jpg 150w, https://aisuperior.com/wp-content/uploads/2023/08/Ivan-Tankoyeu-circle-2c95f8030c4282e4d5cebb5b889f7400-il8nemx07o9z-768x768.jpg 768w sizes(max-width: 800px) 100vw, 800px /> /div> div classelementor-element elementor-element-ad8506e elementor-widget elementor-widget-heading data-idad8506e data-element_typewidget data-widget_typeheading.default> h2 classelementor-heading-title elementor-size-default>Dr. Ivan Tankoyeu/h2> /div> div classelementor-element elementor-element-9e588a7 elementor-widget__width-auto elementor-view-default elementor-widget elementor-widget-icon data-id9e588a7 data-element_typewidget data-widget_typeicon.default> div classelementor-icon-wrapper> a classelementor-icon hrefhttps://www.linkedin.com/in/tankoyeu/> svg aria-hiddentrue classe-font-icon-svg e-fab-linkedin-in viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z>/path>/svg> /a> /div> /div> div classelementor-element elementor-element-6cd73cb elementor-widget__width-auto elementor-view-default elementor-widget elementor-widget-icon data-id6cd73cb data-element_typewidget data-widget_typeicon.default> div classelementor-icon-wrapper> a classelementor-icon hrefhttps://scholar.google.com/citations?userIRoS0JoAAAAJ&hlen&oiao> svg aria-hiddentrue classe-font-icon-svg e-fab-google viewBox0 0 488 512 xmlnshttp://www.w3.org/2000/svg>path dM488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z>/path>/svg> /a> /div> /div> /div> /div> div classelementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-2cffbbb data-id2cffbbb data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-27bc4ac elementor-widget elementor-widget-image data-id27bc4ac data-element_typewidget data-widget_typeimage.default> img decodingasync width720 height720 srchttps://aisuperior.com/wp-content/uploads/2023/08/DSC03528-modified-circle-7f1140f080058fcd766575636c44fdec-3str7hgc1idw.png classattachment-large size-large wp-image-2396 alt srcsethttps://aisuperior.com/wp-content/uploads/2023/08/DSC03528-modified-circle-7f1140f080058fcd766575636c44fdec-3str7hgc1idw.png 720w, https://aisuperior.com/wp-content/uploads/2023/08/DSC03528-modified-circle-7f1140f080058fcd766575636c44fdec-3str7hgc1idw-300x300.png 300w, https://aisuperior.com/wp-content/uploads/2023/08/DSC03528-modified-circle-7f1140f080058fcd766575636c44fdec-3str7hgc1idw-150x150.png 150w sizes(max-width: 720px) 100vw, 720px /> /div> div classelementor-element elementor-element-4da4128 elementor-widget elementor-widget-heading data-id4da4128 data-element_typewidget data-widget_typeheading.default> h2 classelementor-heading-title elementor-size-default>Dr. Sergey Sukhanov/h2> /div> div classelementor-element elementor-element-997e33e elementor-widget__width-auto elementor-view-default elementor-widget elementor-widget-icon data-id997e33e data-element_typewidget data-widget_typeicon.default> div classelementor-icon-wrapper> a classelementor-icon hrefhttps://www.linkedin.com/in/sergey-sukhanov/> svg aria-hiddentrue classe-font-icon-svg e-fab-linkedin-in viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z>/path>/svg> /a> /div> /div> div classelementor-element elementor-element-0314fda elementor-widget__width-auto elementor-view-default elementor-widget elementor-widget-icon data-id0314fda data-element_typewidget data-widget_typeicon.default> div classelementor-icon-wrapper> a classelementor-icon hrefhttps://scholar.google.com/citations?hlen&userWYJLLfwAAAAJ> svg aria-hiddentrue classe-font-icon-svg e-fab-google viewBox0 0 488 512 xmlnshttp://www.w3.org/2000/svg>path dM488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z>/path>/svg> /a> /div> /div> /div> /div> /div> /section> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-b735a75 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-idb735a75 data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f2c2332 data-idf2c2332 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-a992c5b elementor-widget elementor-widget-heading data-ida992c5b data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>AI Superior span stylecolor: #4665a4>Awards/span>/span> /div> div classelementor-element elementor-element-84675db awards-carousl elementor-arrows-position-outside elementor-widget elementor-widget-image-carousel data-id84675db data-element_typewidget data-settings{"slides_to_show":"4","slides_to_scroll":"4","slides_to_show_mobile":"2","slides_to_scroll_mobile":"2","slides_to_show_tablet":"4","slides_to_scroll_tablet":"4","navigation":"arrows","autoplay":"yes","pause_on_hover":"yes","pause_on_interaction":"yes","autoplay_speed":5000,"infinite":"yes","speed":500} data-widget_typeimage-carousel.default> div classelementor-image-carousel-wrapper swiper roleregion aria-roledescriptioncarousel aria-labelBild Karussell dirltr> div classelementor-image-carousel swiper-wrapper aria-liveoff> div classswiper-slide rolegroup aria-roledescriptionslide aria-label1 von 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-1-300x283.png altcluch-1 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label2 von 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-3-300x283.png altcluch-3 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label3 von 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-4-300x283.png altcluch-4 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label4 von 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-6-300x283.jpg altcluch-6 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label5 von 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-7-300x283.png altcluch-7 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label6 von 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-8-300x283.png altcluch-8 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label7 von 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-9-300x283.png altcluch-9 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label8 von 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/08/cluch-10-300x283.png altcluch-10 />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label9 von 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/11/Champion-Badge-2023-Fall-s-300x257.png altChampion-Badge-2023-Fall-s />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label10 von 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/11/Global-Badge-2023-Fall-s-300x257.png altGlobal-Badge-2023-Fall-s />/figure>/div>div classswiper-slide rolegroup aria-roledescriptionslide aria-label11 von 11>figure classswiper-slide-inner>img decodingasync classswiper-slide-image srchttps://aisuperior.com/wp-content/uploads/2023/11/staff_aug_award-3.png altstaff_aug_award (3) />/figure>/div> /div> div classelementor-swiper-button elementor-swiper-button-prev rolebutton tabindex0> svg aria-hiddentrue classe-font-icon-svg e-eicon-chevron-left viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z>/path>/svg> /div> div classelementor-swiper-button elementor-swiper-button-next rolebutton tabindex0> svg aria-hiddentrue classe-font-icon-svg e-eicon-chevron-right viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z>/path>/svg> /div> /div> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-6fd44df elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id6fd44df data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7a7535e data-id7a7535e data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> section classelementor-section elementor-inner-section elementor-element elementor-element-bec7c5f elementor-section-boxed elementor-section-height-default elementor-section-height-default data-idbec7c5f data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-e3189bc data-ide3189bc data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-05e65ab bottom-section elementor-widget elementor-widget-heading data-id05e65ab data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>Lets work together!/span> /div> div classelementor-element elementor-element-5a02997 elementor-align-center elementor-widget elementor-widget-button data-id5a02997 data-element_typewidget data-widget_typebutton.default> a classelementor-button elementor-button-link elementor-size-sm hrefhttps://aisuperior.com/contact/> span classelementor-button-content-wrapper> span classelementor-button-text>Contact Us/span> /span> /a> /div> /div> /div> /div> /section> /div> /div> /div> /section> /div> h3>span classwp-block-heading>5 Ways AI Is Used in Space Exploration/span>/h3>h3>Autonomous Rovers/h3>p>AI is playing an increasingly important role in space exploration, primarily through the deployment of autonomous vehicles. Rovers like NASA’s Curiosity and Perseverance have been executing autonomous navigation missions across the Martian terrain for years. These rovers are equipped with sensors engineered to detect environmental hazards, including rocks, craters, and various terrain features. Subsequently, an AI-driven system analyzes the data to determine the best path forward, enabling the rovers to safely savigate the Martian landscape mitigating the risk of collisions. Furthermore, NASA’s Perseverance is equipped with AI software known as Autonomous Exploration for Gathering Increased Science (a hrefhttps://mars.nasa.gov/resources/26782/perseverances-supercam-uses-aegis-for-the-first-time/ target_blank relnoreferrer noopener>AEGIS)/a>. AEGIS enables the Perseverance to collect valuable data on the different types of rocks and other Martian features that it discovers while driving Mars surface. This capability, in turn, enables us to learn more about the composition of the planet./p>h3>Satellite Operations/h3>p>Another way AI is revolutionizing space exploration is through satellites operations. AI can provide more efficient and rapid solutions for managing satellite operations, including critical collision-avoidance maneuvers. Take, for instance, SpaceX’s Starlink satellites, which leverage an autonomous collision avoidance system driven by AI. This system is designed to detect the presence of nearby orbital debris and other hazards in real-time and swiftly take evasive actions by adjusting the speed and trajectory of the satellite. These adaptive measures ensure that the satellite safely navigates its path, avoiding any collisions that could jeopardize its mission or the safety of other space assets./p>h3>strong>Data Analysis/strong>/h3>p>AI plays a pivotal role in data analysis within space exploration, offering more precise and efficient methods of analyzing data captured from space missions. Satellites, probes, and other space exploration tools capture and collect vast amounts of data and AI algorithms play a crucial role in analyzing and interpreting this data. Machine learning models, particularly, exhibit a remarkable ability to identify patterns, classify celestial objects, detect anomalies and even venture into the real of predictive analysis. By harnessing the power of AI, scientists can now unlock deeper insights from the cosmos and accelerate our understanding of the universe./p>h3>Rocket Landing/h3>p>Rocket landing is a complex and critical aspect of space exploration. The safe and precise return of rockets to Earth or their controlled landing on other celestial bodies is essential for mission success. In recent years, the integration of artificial intelligence has significantly improved how rockets operate.br />SpaceX, for instance, employs an A-driven system to analyze data from rocket’s sensors and cameras. This AI system then calculates and adjusts the rocket’s trajectory in real time, accounting for variables like wind and atmosphere, ensuring optimal landing positioning./p>h3>Galaxy Mapping/h3>p>AI has ushered in a new era of precision in star and galaxy mapping, enabling astronomers to accurately identify stars and galaxies in space and even understand their physical properties (like mass and age) Through AI-based algorithms, astronomers can now detect, classify, and recognize patterns in star clusters that form distant nebulae and classify other features that are detected in deep space.br />One example is NASA’s Kepler telescope which leverages AI to discern subtle dips in the light emitted by stars. These fluctuations indicate the presence of planets and help scientists identify the likely location of planets. AI’s predictive prowess can also be used to forecast the behavior of stars and galaxies over time, empowering scientists to gain invaluable insights that can be used for future mapping and exploration missions./p>h3>span classwp-block-heading>Conclusion/span>/h3>p>Artificial intelligence is transforming space exploration in ways previously thought impossible. It’s enabling us to venture deeper into space, gather more data, and make groundbreaking discoveries. As AI continues to evolve, we can expect even more exciting developments in the field of space exploration. Whether it’s exploring distant planets, unraveling the mysteries of black holes, or understanding the origins of our universe, AI is proving to be an invaluable tool in our quest to explore the cosmos./p> /div> div classelementor-element elementor-element-a81df6f elementor-widget elementor-widget-post-info data-ida81df6f data-element_typewidget data-widget_typepost-info.default> ul classelementor-inline-items elementor-icon-list-items elementor-post-info> li classelementor-icon-list-item elementor-repeater-item-6f968e4 elementor-inline-item itempropabout> span classelementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms> span classelementor-post-info__terms-list> a hrefhttps://aisuperior.com/category/ai/ classelementor-post-info__terms-list-item>AI/a> /span> /span> /li> /ul> /div> /div> /div> /div> /section> /div> div data-elementor-typeloop-item data-elementor-id976 classelementor elementor-976 swiper-slide e-loop-item e-loop-item-12134 post-12134 blog type-blog status-publish has-post-thumbnail hentry category-nlp blog_category-nlp ast-article-single data-elementor-post-typeelementor_library rolegroup aria-roledescriptionslide data-custom-edit-handle1> section classelementor-section elementor-top-section elementor-element elementor-element-dd086a0 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-iddd086a0 data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-386490e data-id386490e data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-d257254 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image data-idd257254 data-element_typewidget data-widget_typetheme-post-featured-image.default> img loadinglazy decodingasync width300 height171 srchttps://aisuperior.com/wp-content/uploads/2023/09/AdobeStock_415754534-1024x583-1-300x171.jpeg classattachment-medium size-medium wp-image-12135 alt srcsethttps://aisuperior.com/wp-content/uploads/2023/09/AdobeStock_415754534-1024x583-1-300x171.jpeg 300w, https://aisuperior.com/wp-content/uploads/2023/09/AdobeStock_415754534-1024x583-1-768x437.jpeg 768w, https://aisuperior.com/wp-content/uploads/2023/09/AdobeStock_415754534-1024x583-1.jpeg 1024w sizes(max-width: 300px) 100vw, 300px /> /div> div classelementor-element elementor-element-45ae849 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading data-id45ae849 data-element_typewidget data-widget_typetheme-post-title.default> h3 classelementor-heading-title elementor-size-default>a hrefhttps://aisuperior.com/blog/how-can-sentiment-analysis-be-used-to-improve-customer-experience/>How can sentiment analysis be used to improve customer experience?/a>/h3> /div> div classelementor-element elementor-element-e2e5c2e post-content-block blogs-para elementor-widget elementor-widget-theme-post-content data-ide2e5c2e data-element_typewidget data-widget_typetheme-post-content.default> p>In today’s highly competitive business landscape, customer experience has become a crucial factor in determining the success of any organization. Understanding how customers feel about your products, services, and brand is invaluable for making informed decisions that can lead to improvements. This is where sentiment analysis or opinion mining comes into play. In this article, we will explore what sentiment analysis is, its different types, and why it is essential for businesses looking to enhance customer experience./p>h3>span classwp-block-heading>What is Sentiment Analysis?/span>/h3>p>Sentiment analysis, or sentiment mining, is a natural language processing (NLP) technique used to determine the emotional tone or sentiment expressed (positive, negative, or neutral) in text, such as customer reviews, social media posts, or survey responses./p>h3>span classwp-block-heading>Types of Sentiment Analysis/span>/h3>p>strong>Emotion Detection Sentiment Analysis: /strong>Emotion detection, as the term implies, assists in identifying the emotions expressed in text. It can detect emotions like happiness, anger, sadness, fear, and surprise, providing deeper insights into customer feelings. Emotion detection systems often rely on lexicons, which are compilations of words associated with specific emotional states./p>p>strong>Fine-Grained Sentiment Analysis: /strong>Fine-grained sentiment analysis provides a more nuanced understanding of sentiment. It evaluates the opinion’s polarity, which can range from a basic binary classification of positive and negative sentiment to more detailed specifications, such as very positive, positive, neutral, negative, and very negative. This level of granularity allows businesses to pinpoint specific areas for improvement./p>p>strong>Aspect-Based Sentiment Analysis:/strong> Aspect-based sentiment analysis delves into the specifics of customer feedback by identifying and categorizing sentiment related to different aspects of a product or service. For example, imagine you run a restaurant, and you come across a customer review that mentions, “The food was excellent, but the service was slow.” Using aspect-based sentiment analysis, you can identify that the customer had a “positive” sentiment about the “food” but a “negative” sentiment regarding the “service.” This type of analysis helps businesses monitor customer perceptions of their products and services and identify their strengths and weaknesses./p>p>strong>Intent-Based Sentiment Analysis:/strong> Intent-based sentiment analysis focuses on understanding the underlying intentions or goals of customers when expressing their sentiment. It helps businesses identify whether customers are seeking information, making a complaint, or expressing satisfaction, allowing for more tailored responses./p>h3>span classwp-block-heading>Ustrong>tilizing Sentiment Analysis to Improve Customer Experience/strong>/span>/h3>p>Sentiment analysis isn’t just a passive tool for understanding customer sentiment; it can provide valuable insights that enable businesses to enhance customer service and improve the overall customer experience. Here’s how:/p>p>strong>Tailored Recommendations/strong>: By analyzing the sentiment behind customer reviews and feedback, businesses can better understand their preferences. Sentiment analysis can help recommend products or services that align with individual customer preferences, enhancing the likelihood of repeat business./p>p>strong>Proactive Issue Resolution/strong>: Sentiment analysis enables businesses to identify emerging issues or negative sentiment trends. When negative sentiments are detected, companies can take swift action to resolve problems and prevent further customer dissatisfaction. This proactive approach demonstrates a commitment to customer satisfaction./p>p>strong>Feedback Loop for Product Development/strong>: Sentiment analysis can feed directly into the product development process. Businesses can use customer feedback, especially fine-grained and aspect-based sentiment analysis, to prioritize feature enhancements, bug fixes, and new product development that align with customer needs and desires./p>p>strong>Enhanced Marketing Campaigns/strong>: Understanding the sentiment of past marketing campaigns helps in creating more effective future campaigns. By analyzing the emotional tone of customer responses to marketing materials, businesses can fine-tune their messaging and targeting to resonate better with their audience./p>p>strong>Sentiment-Driven A/B Testing/strong>: Companies can use sentiment analysis to measure the impact of changes in their products, services, or policies. By conducting A/B tests and comparing the sentiment of customers in different groups, organizations can make data-driven decisions about which changes lead to improved customer satisfaction./p>p>strong>Employee Training and Feedback/strong>: Sentiment analysis isn’t limited to customer feedback. It can also be applied to internal communications and feedback from employees. Understanding employee sentiment can lead to improvements in team dynamics, workplace culture, and customer service quality./p>p>Incorporating sentiment analysis into these aspects of your business can result in a more customer-centric approach, leading to increased customer loyalty, higher customer satisfaction, and ultimately, improved customer experiences./p>h3>span classwp-block-heading>Conclusion/span>/h3>p>Sentiment analysis is a powerful tool that goes beyond just understanding customer sentiment; it actively contributes to enhancing the overall customer experience. By leveraging the insights gained from sentiment analysis, businesses can make informed decisions, deliver personalized experiences, and continuously improve their products and services to meet and exceed customer expectations. This proactive approach not only benefits customers but also strengthens the brand’s reputation and competitiveness in the marketplace./p>p>Ready to take the next step in harnessing the potential of sentiment analysis? a hrefhttps://aisuperior.com/contact/ target_blank relnoreferrer noopener>Contact us/a> today, and we’ll be happy to consult with you on a hrefhttps://aisuperior.com/technology/natural-language-processing-machine-learning/ target_blank relnoreferrer noopener>Natural Language Processing (NLP)/a> and sentiment analysis solutions development tailored to your unique business needs./p> /div> div classelementor-element elementor-element-a81df6f elementor-widget elementor-widget-post-info data-ida81df6f data-element_typewidget data-widget_typepost-info.default> ul classelementor-inline-items elementor-icon-list-items elementor-post-info> li classelementor-icon-list-item elementor-repeater-item-6f968e4 elementor-inline-item itempropabout> span classelementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms> span classelementor-post-info__terms-list> a hrefhttps://aisuperior.com/category/nlp/ classelementor-post-info__terms-list-item>NLP/a> /span> /span> /li> /ul> /div> /div> /div> /div> /section> /div> div data-elementor-typeloop-item data-elementor-id976 classelementor elementor-976 swiper-slide e-loop-item e-loop-item-12136 post-12136 blog type-blog status-publish has-post-thumbnail hentry category-ai blog_category-ai ast-article-single data-elementor-post-typeelementor_library rolegroup aria-roledescriptionslide data-custom-edit-handle1> section classelementor-section elementor-top-section elementor-element elementor-element-dd086a0 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-iddd086a0 data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-386490e data-id386490e data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-d257254 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image data-idd257254 data-element_typewidget data-widget_typetheme-post-featured-image.default> img loadinglazy decodingasync width300 height200 srchttps://aisuperior.com/wp-content/uploads/2023/09/AdobeStock_620699445-1024x683-1-300x200.jpeg classattachment-medium size-medium wp-image-12138 alt srcsethttps://aisuperior.com/wp-content/uploads/2023/09/AdobeStock_620699445-1024x683-1-300x200.jpeg 300w, https://aisuperior.com/wp-content/uploads/2023/09/AdobeStock_620699445-1024x683-1-768x512.jpeg 768w, https://aisuperior.com/wp-content/uploads/2023/09/AdobeStock_620699445-1024x683-1.jpeg 1024w sizes(max-width: 300px) 100vw, 300px /> /div> div classelementor-element elementor-element-45ae849 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading data-id45ae849 data-element_typewidget data-widget_typetheme-post-title.default> h3 classelementor-heading-title elementor-size-default>a hrefhttps://aisuperior.com/blog/large-language-models-applications-in-business/>Large Language Models Applications in Business/a>/h3> /div> div classelementor-element elementor-element-e2e5c2e post-content-block blogs-para elementor-widget elementor-widget-theme-post-content data-ide2e5c2e data-element_typewidget data-widget_typetheme-post-content.default> p>In today’s rapidly evolving technological landscape, large language models (LLMs) have emerged as game-changers, reshaping the way businesses operate and interact with their customers. In this article, we will explore the world of LLMs and showcase how this technology can enhance any business/p>h3>span classwp-block-heading>What are Large Language Models (LLMs)?/span>/h3>p>Large language models are a type of deep learning model designed specifically to understand, process, and generate human language. These models can perform various language-related tasks, from answering questions conversationally and summarizing texts to language translation, content generation, sentiment analysis, and more./p>h3>span classwp-block-heading>How are Large Language Models trained?/span>/h3>p>LLMs are pre-trained on massive amounts of data and employ self-supervised learning techniques to predict the subsequent token within a sentence. With each iteration, the model refines its language understanding and generation abilities, achieving higher levels of precision./p>h3>span classwp-block-heading>List of leading LLMs/span>/h3>p>Several LLMs have gained prominence in recent years due to their impressive capabilities. Some of the most notable examples include OpenAI’s GPT-3 and GPT-4, with the latter offering more advanced language understanding and generation. Google has also made significant contributions with models like PaLM-2, BERT, T5, and LaMDA. Meta, formerly known as Facebook, has developed LLaMA and RoBERTa, while Anthropic has introduced Claude./p>h3>span classwp-block-heading>Business Applications of Large Language Models/span>/h3>p>LLMs have found extensive applications across various industries, revolutionizing how businesses engage with their audience. Some dynamic applications of LLMs include:/p>h3>Customer Service:/h3>p>Businesses can reduce response time and increase customer satisfaction by leveraging LLM-powered chatbots. These virtual assistants can handle various customer inquiries at the same time, provide instant information and improve overall user experience while freeing up human agents for more complex tasks./p>h3>Content Generation:/h3>p>LLMs are proficient in generating high-quality articles, blog posts, product descriptions, and marketing materials./p>p>LLMs can help streamline content generation, saving time while generating high-quality content. From articles and blog posts to marketing material and product descriptions, Large Language Models can help businesses save resources while maintaining a consistent style and tone./p>h3>Translation and Localization:/h3>p>LLMs can help break language barriers by facilitating seamless language translation. By leveraging LLMs, businesses can expand their reach to global audiences confidently. LLMs can even provide real-time translation of both written and spoken language for real-time customer support./p>h3>Sentiment Analysis:/h3>p>Large language models can help businesses gain insights into customer satisfaction levels and tailor strategies accordingly. LLMs are able to analyze textual data, such as reviews and social media posts to gauge gauge customers’ sentiment and opinions, allowing businesses to refine strategies, ensure meaningful engagement, and optimize overall user experience./p>h3>Market Research:/h3>p>LLMs can scour vast amounts of data to identify emerging trends, market shifts, and consumer preferences, helping businesses make informed decisions and pivot strategies based on real-time insights./p>h3>Legal and Compliance Assistance:/h3>p>LLMs can quickly extract key information without compromising understanding. By leveraging LLMs legal professionals can automate contract reviews, identifying potential risks, and ensuring compliance, and automate legal document generation. This allows awyers to focus on more strategic aspects of their work while saving time./p>h3>span classwp-block-heading>Conclusion/span>/h3>p>As businesses continue to adapt to an increasingly digital world, the applications of LLMs become more evident and essential. These AI-powered tools unlock new levels of efficiency, engagement, and innovation, allowing companies to deliver better services, reach wider audiences, and gain a competitive edge./p>p>Through a partnership with a reliable expert capable of creating and deploying tailored generative AI solutions, businesses can leverage the potential of this technology to foster innovation and access fresh avenues for expansion./p>p>To tap into the transformative power of LLMs, look no further than AI Superior. From large language model consulting and strategic planning to seamless integration and maintenance, AI Superior’s LLM development services can help you leverage the power of LLMs to enhance your business./p> /div> div classelementor-element elementor-element-a81df6f elementor-widget elementor-widget-post-info data-ida81df6f data-element_typewidget data-widget_typepost-info.default> ul classelementor-inline-items elementor-icon-list-items elementor-post-info> li classelementor-icon-list-item elementor-repeater-item-6f968e4 elementor-inline-item itempropabout> span classelementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms> span classelementor-post-info__terms-list> a hrefhttps://aisuperior.com/category/ai/ classelementor-post-info__terms-list-item>AI/a> /span> /span> /li> /ul> /div> /div> /div> /div> /section> /div> div data-elementor-typeloop-item data-elementor-id976 classelementor elementor-976 swiper-slide e-loop-item e-loop-item-12139 post-12139 blog type-blog status-publish has-post-thumbnail hentry category-ai blog_category-ai ast-article-single data-elementor-post-typeelementor_library rolegroup aria-roledescriptionslide data-custom-edit-handle1> section classelementor-section elementor-top-section elementor-element elementor-element-dd086a0 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-iddd086a0 data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-386490e data-id386490e data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-d257254 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image data-idd257254 data-element_typewidget data-widget_typetheme-post-featured-image.default> img loadinglazy decodingasync width300 height169 srchttps://aisuperior.com/wp-content/uploads/2023/09/Untitled-design-1024x576-1-300x169.png classattachment-medium size-medium wp-image-12140 alt srcsethttps://aisuperior.com/wp-content/uploads/2023/09/Untitled-design-1024x576-1-300x169.png 300w, https://aisuperior.com/wp-content/uploads/2023/09/Untitled-design-1024x576-1-768x432.png 768w, https://aisuperior.com/wp-content/uploads/2023/09/Untitled-design-1024x576-1.png 1024w sizes(max-width: 300px) 100vw, 300px /> /div> div classelementor-element elementor-element-45ae849 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading data-id45ae849 data-element_typewidget data-widget_typetheme-post-title.default> h3 classelementor-heading-title elementor-size-default>a hrefhttps://aisuperior.com/blog/exploring-the-transformative-power-of-generative-ai-applications-for-businesses/>Exploring the Transformative Power of Generative AI Applications for Businesses/a>/h3> /div> div classelementor-element elementor-element-e2e5c2e post-content-block blogs-para elementor-widget elementor-widget-theme-post-content data-ide2e5c2e data-element_typewidget data-widget_typetheme-post-content.default> p>In today’s rapidly evolving technological landscape, businesses are constantly on the lookout for innovative ways to gain a competitive edge. Generative Artificial Intelligence (AI) has recently emerged as a groundbreaking technology with the potential to revolutionize various aspects of business operations. In this article, we will explore the concept of Generative AI and its top applications across different industries./p>h3>span classwp-block-heading>What is Generative AI?/span>/h3>p>Generative artificial intelligence (AI) refers to algorithms that enable users to generate new content based on a variety of inputs. These include images, text, audio, code and more. Unlike traditional AI models, generative AI models can learn from existing data and generate new outputs based on that information/p>h3>span classwp-block-heading>How Does Generative AI Work?/span>/h3>p>Generative AIstrong> /strong>models are often built using neural networks, a subset of machine learning that’s inspired by the human brain and attempts to mimic the way that biological neurons signal to one another./p>p>Generative AI commences by utilizing a given prompt, including text, image, video, or any input that the system is capable of handling. Subsequently, different AI algorithms generate new content in response to the provided prompt./p>h3>span classwp-block-heading>Top Generative AI Applications for Businesses/span>br />Content Generation/h3>p>Generative AI has transformed the way businesses create content by automating the process of generating text, images, audio, videos, and more. This technology can be employed to draft compelling marketing copy, generate personalized email content, and even produce social media posts. Thanks to it, organizations not only save time and resources but also ensure a consistent flow of content./p>h3>Product Design and Prototyping/h3>p>In industries such as fashion and manufacturing, generative AI can aid in product design and prototyping. By analyzing existing designs and user preferences, AI models can generate new design concepts, helping businesses innovate and iterate faster. This can significantly reduce the time required to bring new products to market./p>h3>Customer Support/h3>p>Generative AI-powered virtual assistants and chatbots are becoming increasingly sophisticated in simulating human-like conversations. These AI-powered conversational agents can understand and respond to user queries, providing real-time assistance to customers on websites, apps, and messaging platforms. This technology streamlines customer support, enhances user experience, and operates 24/7./p>h3>Art and Content Creation/h3>p>For businesses in creative industries, generative AI offers a novel way to produce art and multimedia content. Creatives can harness the power of AI to generate unique pieces, merging human creativity with machine-generated ideas. Musicians can use AI to compose melodies, and filmmakers can explore new visual effects and animations./p>h3>Data Augmentation and Analysis/h3>p>Generative AI can assist businesses in generating synthetic data to augment their datasets for training machine learning models, which comes in handy when dealing with limited data availability. Moreover, AI models can also help analyze vast amounts of data, extracting insights and patterns that can inform strategic decision-making./p>h3>Software Development/h3>p>IT departments can leverage generative AI to handle small technical tasks, like automating code generation, debugging, and system testing. This approach can accelerate the development process and help programmers create more efficient and robust software applications./p>h3>span classwp-block-heading>Conclusion/span>/h3>p>Generative AI stands as a transformative technology with a vast array of applications. From content generation to product design, customer support, software development, and data analysis, its potential to streamline operations, enhance creativity, and improve customer experiences is undeniable. As businesses continue to embrace digital transformation, integrating generative AI into their strategies can lead to increased efficiency, innovation, and a competitive edge in the market./p>p>At AI Superior, we are at the forefront of a hrefhttps://aisuperior.com/services/generative-ai-development/ target_blank relnoreferrer noopener>generative AI development services/a>, helping businesses harness the power of this technology to achieve their goals. With our assistance, you can navigate the challenges and opportunities presented by Generative AI, ensuring responsible implementation and optimal results./p>p>a hrefhttps://aisuperior.com/contact/ target_blank relnoreferrer noopener>Contact us /a>to explore the possibilities of generative AI for your business./p> /div> div classelementor-element elementor-element-a81df6f elementor-widget elementor-widget-post-info data-ida81df6f data-element_typewidget data-widget_typepost-info.default> ul classelementor-inline-items elementor-icon-list-items elementor-post-info> li classelementor-icon-list-item elementor-repeater-item-6f968e4 elementor-inline-item itempropabout> span classelementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms> span classelementor-post-info__terms-list> a hrefhttps://aisuperior.com/category/ai/ classelementor-post-info__terms-list-item>AI/a> /span> /span> /li> /ul> /div> /div> /div> /div> /section> /div> div data-elementor-typeloop-item data-elementor-id976 classelementor elementor-976 swiper-slide e-loop-item e-loop-item-12141 post-12141 blog type-blog status-publish has-post-thumbnail hentry category-ai blog_category-ai ast-article-single data-elementor-post-typeelementor_library rolegroup aria-roledescriptionslide data-custom-edit-handle1> section classelementor-section elementor-top-section elementor-element elementor-element-dd086a0 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-iddd086a0 data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-386490e data-id386490e data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-d257254 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image data-idd257254 data-element_typewidget data-widget_typetheme-post-featured-image.default> img loadinglazy decodingasync width300 height169 srchttps://aisuperior.com/wp-content/uploads/2023/09/Businesses-Harness-ChatGPT-for-Commercial-Success-300x169.jpg classattachment-medium size-medium wp-image-12142 alt srcsethttps://aisuperior.com/wp-content/uploads/2023/09/Businesses-Harness-ChatGPT-for-Commercial-Success-300x169.jpg 300w, https://aisuperior.com/wp-content/uploads/2023/09/Businesses-Harness-ChatGPT-for-Commercial-Success-768x432.jpg 768w, https://aisuperior.com/wp-content/uploads/2023/09/Businesses-Harness-ChatGPT-for-Commercial-Success.jpg 800w sizes(max-width: 300px) 100vw, 300px /> /div> div classelementor-element elementor-element-45ae849 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading data-id45ae849 data-element_typewidget data-widget_typetheme-post-title.default> h3 classelementor-heading-title elementor-size-default>a hrefhttps://aisuperior.com/blog/how-can-businesses-harness-chatgpt-for-commercial-success/>How Can Businesses Harness ChatGPT for Commercial Success?/a>/h3> /div> div classelementor-element elementor-element-e2e5c2e post-content-block blogs-para elementor-widget elementor-widget-theme-post-content data-ide2e5c2e data-element_typewidget data-widget_typetheme-post-content.default> p>In recent years, the development of Artificial Intelligence (AI) a hrefhttps://aisuperior.com/technology/natural-language-processing-machine-learning/ target_blank relnoreferrer noopener>language models/a> has transformed the way businesses operate, since they have quickly become one of the best solutions to automate various tasks, including repetitive activities and enhance overall efficiency./p>p>Among the remarkable AI language models available, OpenAI’s ChatGPT has proven itself as an exceptional tool for generating high-quality outputs through seamless dialogue. But, how can businesses benefit from it and what are the limitations that businesses should be aware of?/p>p>In this article, we will explore how businesses can harness the potential of AI language models such as Chat GPT for various applications, such as content creation, customer service and more./p>h3>span classwp-block-heading>Utilizing ChatGPT for business applications/span>/h3>p>Businesses can leverage ChatGPT for several commercial applications. Some of the most popular applications include:/p>h3>Content Creation/h3>p>Creating compelling and engaging content is crucial for businesses to attract and retain customers. As a a hrefhttps://aisuperior.com/services/generative-ai-development/ target_blank relnoreferrer noopener>generative AI/a> model, ChatGPT, excels in rapidly producing vast amounts of textual content, revolutionizing the way companies approach content creation./p>p>Using the appropriate input, businesses can produce engaging and high-quality content for their blogs, websites, social media platforms and email marketing campaigns in a highly efficient manner./p>h3>Market Research/h3>p>Understanding market trends, customer preferences, and competitors’ strategies is vital for making informed business decisions. Chat GPT can assist in market research and analysis by gathering and presenting publicly available data, analyzing information about competitors to help businesses stay ahead in the market and adjust their strategies accordingly, and even contributing to building audience personas for better targeting and marketing efforts./p>h3>Customer Service/h3>p>Chat GPT can also significantly enhance customer service experiences for businesses. By serving as the backbone of AI-powered chatbots, it enables real-time interactions with customers, addressing frequently asked questions, and resolving issues. With its contextual understanding, Chat GPT ensures quicker and more accurate responses to customer queries, leading to reduced waiting times and increased customer satisfaction. Moreover, with the capability to attend an unlimited number of clients, Chat GPT ensures businesses can provide continuous and seamless support to their customers around the clockbr />span classwp-block-heading has-medium-font-size>Constraints in employing ChatGPT for commercial purposes/span>br />While ChatGPT is a powerful tool with numerous advantages, it also comes with certain limitations that businesses should be aware of when considering its commercial usage:/p>h3>Contextual Understanding/h3>p>Although Chat GPT has shown impressive contextual understanding, it can still produce responses that are contextually incorrect or nonsensical. This limitation could potentially lead to miscommunication in customer service interactions./p>h3>Ethical Concerns/h3>p>As any AI system, Chat GPT can generate biassed content if exposed to biassed data during training. Businesses should be mindful of this and ensure that the output from Chat GPT aligns with their ethical standards./p>h3>Data Privacy and Security/h3>p>Integrating Chat GPT into business processes involves sharing data with third-party services, which raises concerns about data privacy and security. For this reason, businesses must safeguard customer data and sensitive information./p>h3>Costs/h3>p>To incorporate commercial ChatGPT into their operations, businesses need a paid subscription to OpenAI’s API. Companies must include this expense in their budget planning and be mindful of their reliance on third-party services for ongoing access and support./p>h3>Conclusion/h3>p>In sum, even though businesses can benefit tremendously from using ChatGPT for commercial purposes, in order to unlock its full potential, businesses should consider investing in API access and models tailored to their specific needs./p>p>The first step towards this is to find the right AI company to partner with. At AI Superior, we specialize in integrating AI into businesses’ internal structures. If you’re looking to introduce a hrefhttps://aisuperior.com/services/generative-ai-development/ target_blank relnoreferrer noopener>generative AI solutions /a>into your operations, don’t hesitate to a hrefhttps://aisuperior.com/contact/ target_blank relnoreferrer noopener>contact us./a> Our team will work closely with you to develop an integration that aligns seamlessly with your company’s objectives and operations./p> /div> div classelementor-element elementor-element-a81df6f elementor-widget elementor-widget-post-info data-ida81df6f data-element_typewidget data-widget_typepost-info.default> ul classelementor-inline-items elementor-icon-list-items elementor-post-info> li classelementor-icon-list-item elementor-repeater-item-6f968e4 elementor-inline-item itempropabout> span classelementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms> span classelementor-post-info__terms-list> a hrefhttps://aisuperior.com/category/ai/ classelementor-post-info__terms-list-item>AI/a> /span> /span> /li> /ul> /div> /div> /div> /div> /section> /div> div data-elementor-typeloop-item data-elementor-id976 classelementor elementor-976 swiper-slide e-loop-item e-loop-item-12143 post-12143 blog type-blog status-publish has-post-thumbnail hentry category-ai blog_category-ai ast-article-single data-elementor-post-typeelementor_library rolegroup aria-roledescriptionslide data-custom-edit-handle1> section classelementor-section elementor-top-section elementor-element elementor-element-dd086a0 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-iddd086a0 data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-386490e data-id386490e data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-d257254 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image data-idd257254 data-element_typewidget data-widget_typetheme-post-featured-image.default> img loadinglazy decodingasync width300 height160 srchttps://aisuperior.com/wp-content/uploads/2023/09/Demystifying-Explainable-AI-300x160.png classattachment-medium size-medium wp-image-12144 alt srcsethttps://aisuperior.com/wp-content/uploads/2023/09/Demystifying-Explainable-AI-300x160.png 300w, https://aisuperior.com/wp-content/uploads/2023/09/Demystifying-Explainable-AI-768x409.png 768w, https://aisuperior.com/wp-content/uploads/2023/09/Demystifying-Explainable-AI.png 785w sizes(max-width: 300px) 100vw, 300px /> /div> div classelementor-element elementor-element-45ae849 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading data-id45ae849 data-element_typewidget data-widget_typetheme-post-title.default> h3 classelementor-heading-title elementor-size-default>a hrefhttps://aisuperior.com/blog/demystifying-explainable-ai-shedding-light-on-transparent-decision-making/>Demystifying Explainable AI: Shedding Light on Transparent Decision-Making/a>/h3> /div> div classelementor-element elementor-element-e2e5c2e post-content-block blogs-para elementor-widget elementor-widget-theme-post-content data-ide2e5c2e data-element_typewidget data-widget_typetheme-post-content.default> p>Artificial intelligence (AI) has become an integral part of our lives, influencing various sectors from healthcare to finance and transportation. However, in recent years, the increasing complexity of AI systems has raised concerns about their decision-making processes. Understanding the reasoning behind decisions or predictions made by AI systems has become of great importance for organizations and users of AI-powered systems. Within this context, explainable artificial intelligence (XAI), arises as a burgeoning field that aims to solve this questions and bring transparency and interpretability to AI models./p>h3>span classwp-block-heading>What is Explainable AI (XAI)? :/span>/h3>p>Explainable AI refers to the development of AI models that enable human users to understand the results and outputs created by AI models. Traditional machine learning models often operate as “black boxes,” making it challenging for humans to comprehend how they arrive at their conclusions. This lack of transparency can be a barrier to trust and acceptance, especially in critical domains where decisions have far-reaching consequences. Explainable AI helps users understand the reasoning behind decisions made by AI models and it’s potential biases/p>h3>span classwp-block-heading>Why is Explainable AI (XAI) important?:/span>/h3>p>strong>Transparency and Trust: /strong>XAI bridges the gap between human users and AI systems, fostering trust by providing clear explanations for the reasoning behind decisions. This transparency is crucial, particularly in sectors like healthcare, where lives are at stake, or finance, where algorithmic biases can lead to unfair outcomes./p>p>strong>Regulatory Compliance and Accountability:/strong> With the increasing scrutiny of AI technologies, regulatory bodies and ethical guidelines are calling for greater transparency. Explainable AI helps organizations comply with regulations while enabling them to be accountable for the decisions made by their AI systems./p>p>strong>Bias and Fairness: /strong>AI models can inadvertently perpetuate biases present in the data they are trained on. Explainable AI techniques enable the identification and mitigation of bias, allowing stakeholders to understand and rectify unfair or discriminatory practices./p>p>strong>Error Detection and Improvement: /strong>Transparent AI models make it easier to detect errors or unexpected behaviors. By providing interpretable explanations, developers can pinpoint and rectify flaws, enhancing the overall performance and reliability of AI systems./p>h3>span classwp-block-heading>Exploring Techniques in Explainable AI:/span>/h3>p>There are several techniques or methods that contribute to achieving explainability in AI models, including the following five:/p>p>strong>Layer-wise relevance propagation (LRP): /strong>LRP is a technique used primarily in neural networks to attribute relevance or importance to individual input features or neurons. It aims to explain the contribution of each feature or neuron in the network to the final prediction. LRP propagates relevance backward through the network, assigning relevance scores to different layers and neurons./p>p>strong>Counterfactual method:/strong> The counterfactual method involves generating counterfactual examples, which are modified instances of input data that result in different model predictions. By exploring the changes needed to achieve a desired outcome, counterfactuals provide insights into the decision-making process of AI models. They help identify the most influential features or factors affecting predictions and can be useful for explainability and fairness analysis./p>p>strong>Local interpretable model-agnostic explanations (LIME)/strong>: LIME is a model-agnostic method that provides local explanations for individual predictions of any machine learning model. It generates a simplified surrogate model around a specific instance and estimates the importance of input features in influencing the model’s prediction. LIME creates locally interpretable explanations, helping to understand the model’s behavior on specific instances./p>p>strong>Generalized additive model (GAM)/strong>: GAM is a type of statistical model that extends linear regression by allowing non-linear relationships between predictors and the target variable. GAMs provide interpretability by modeling the target variable as a sum of smooth functions of the input features. These smooth functions allow insights into the impact of individual features on the target variable while accounting for potential non-linearities./p>p>strong>Rationalization/strong>: Rationalization refers to the process of generating explanations or justifications for AI model decisions. It aims to provide understandable and coherent reasoning for the outputs produced by the model. Rationalization techniques focus on generating human-readable explanations to enhance transparency and user trust in AI systems./p>h3>span classwp-block-heading>The Future of Explainable AI:/span>/h3>p>As AI continues to evolve, so does the field of Explainable AI. Researchers are actively working on developing new methodologies and techniques to enhance the interpretability and transparency of AI systems. Moreover, the adoption of Explainable AI is gaining traction across industries. Regulatory bodies are incorporating requirements for explainability, and organizations are recognizing the value of transparent decision-making in gaining user trust and meeting ethical obligations./p>p>Explainable AI is a crucial area of research and development that addresses the need for transparency, accountability, and trust in AI systems. By demystifying the decision-making process, explainable AI models bridge the gap between humans and machines, allowing us to harness the full potential of AI./p> /div> div classelementor-element elementor-element-a81df6f elementor-widget elementor-widget-post-info data-ida81df6f data-element_typewidget data-widget_typepost-info.default> ul classelementor-inline-items elementor-icon-list-items elementor-post-info> li classelementor-icon-list-item elementor-repeater-item-6f968e4 elementor-inline-item itempropabout> span classelementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms> span classelementor-post-info__terms-list> a hrefhttps://aisuperior.com/category/ai/ classelementor-post-info__terms-list-item>AI/a> /span> /span> /li> /ul> /div> /div> /div> /div> /section> /div> /div> /div> div classelementor-swiper-button elementor-swiper-button-prev rolebutton tabindex0 aria-labelPrevious> svg aria-hiddentrue classe-font-icon-svg e-eicon-chevron-left viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z>/path>/svg> /div> div classelementor-swiper-button elementor-swiper-button-next rolebutton tabindex0 aria-labelNext> svg aria-hiddentrue classe-font-icon-svg e-eicon-chevron-right viewBox0 0 1000 1000 xmlnshttp://www.w3.org/2000/svg>path dM696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z>/path>/svg> /div> /div> /div> /div> /div> /section> section classelementor-section elementor-top-section elementor-element elementor-element-df5d878 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-iddf5d878 data-element_typesection iddiscuss> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2cdfac9 data-id2cdfac9 data-element_typecolumn idlets-discuss-ai> div classelementor-widget-wrap elementor-element-populated> section classelementor-section elementor-inner-section elementor-element elementor-element-3a3110b elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id3a3110b data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-8acdff1 form-left-section data-id8acdff1 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-04d158d elementor-widget elementor-widget-heading data-id04d158d data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>Let’s discuss your next AI project/span> /div> div classelementor-element elementor-element-772057a elementor-widget elementor-widget-shortcode data-id772057a data-element_typewidget data-widget_typeshortcode.default> div classelementor-shortcode> div data-elementor-typesection data-elementor-id32744 classelementor elementor-32744 data-elementor-post-typeelementor_library> section classelementor-section elementor-top-section elementor-element elementor-element-21d5693 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id21d5693 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-816ff5a data-id816ff5a data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-9ce283d elementor-widget elementor-widget-html data-id9ce283d data-element_typewidget data-widget_typehtml.default> div classpipedriveWebForms data-pd-webformshttps://webforms.pipedrive.com/f/1r3P6Sa8ve23FBajB0w7WA8bud5LJ0ogT1rsOo626yFVds9GPrhswn6mxqdBvOCfV>script srchttps://webforms.pipedrive.com/f/loader>/script>/div> /div> /div> /div> /div> /section> /div> /div> /div> div classelementor-element elementor-element-f9161f4 elementor-button-align-start elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile elementor-widget elementor-widget-global elementor-global-19586 elementor-widget-form data-idf9161f4 data-element_typewidget idform data-settings{"step_next_label":"Next","step_previous_label":"Previous","button_width":"100","step_type":"number_text","step_icon_shape":"circle"} data-widget_typeform.default> form classelementor-form methodpost idhome_form nameNew Form aria-labelNew Form> input typehidden namepost_id value11/> input typehidden nameform_id valuef9161f4/> input typehidden namereferer_title valueAI Services and Development Company | AI Superior /> input typehidden namequeried_id value11/> div classelementor-form-fields-wrapper elementor-labels-> div classelementor-field-type-text elementor-field-group elementor-column elementor-field-group-name elementor-col-50 elementor-field-required> label forform-field-name classelementor-field-label elementor-screen-only> Name /label> input size1 typetext nameform_fieldsname idform-field-name classelementor-field elementor-size-sm elementor-field-textual placeholderName requiredrequired> /div> div classelementor-field-type-email elementor-field-group elementor-column elementor-field-group-field_6691c5f elementor-col-50 elementor-field-required> input size1 typeemail nameform_fieldsfield_6691c5f idform-field-field_6691c5f classelementor-field elementor-size-sm elementor-field-textual placeholderEmail requiredrequired> /div> div classelementor-field-type-tel elementor-field-group elementor-column elementor-field-group-field_d30b8cb elementor-col-50 elementor-field-required> input size1 typetel nameform_fieldsfield_d30b8cb idform-field-field_d30b8cb classelementor-field elementor-size-sm elementor-field-textual placeholderPhone number requiredrequired pattern0-9()#&+*-.+ titleOnly numbers and phone characters (#, -, *, etc) are accepted.> /div> div classelementor-field-type-text elementor-field-group elementor-column elementor-field-group-field_15699d4 elementor-col-50 elementor-field-required> input size1 typetext nameform_fieldsfield_15699d4 idform-field-field_15699d4 classelementor-field elementor-size-sm elementor-field-textual placeholderCompany requiredrequired> /div> div classelementor-field-type-textarea elementor-field-group elementor-column elementor-field-group-field_069a1b8 elementor-col-100 elementor-field-required> textarea classelementor-field-textual elementor-field elementor-size-sm nameform_fieldsfield_069a1b8 idform-field-field_069a1b8 rows4 placeholderMessage requiredrequired>/textarea> /div> div classelementor-field-type-recaptcha elementor-field-group elementor-column elementor-field-group-field_0e961de elementor-col-100> div classelementor-field idform-field-field_0e961de>div classelementor-g-recaptcha data-sitekey6Lfv7_woAAAAAHftMvnJQOSIRh1BddYiT75kTwWo data-typev2_checkbox data-themelight data-sizenormal>/div>/div> /div> div classelementor-field-group elementor-column elementor-field-type-submit elementor-col-100 e-form__buttons> button classelementor-button elementor-size-sm typesubmit> span classelementor-button-content-wrapper> span classelementor-button-text>Submit/span> /span> /button> /div> /div> /form> /div> div classelementor-element elementor-element-ad4b8f5 disclaimer-txt elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile elementor-widget elementor-widget-text-editor data-idad4b8f5 data-element_typewidget data-widget_typetext-editor.default> p>By clicking Submit, you agree to our a hrefhttps://aisuperior.com/privacy-policy/>Privacy Policy./a>/p> /div> /div> /div> div classelementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-692df01 form-right-section data-id692df01 data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-472ca13 elementor-widget elementor-widget-image data-id472ca13 data-element_typewidget data-widget_typeimage.default> img loadinglazy decodingasync width140 height84 srchttps://aisuperior.com/wp-content/uploads/2023/08/logo-2.png classattachment-large size-large wp-image-812 alt /> /div> div classelementor-element elementor-element-33b9099 elementor-align-left elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list data-id33b9099 data-element_typewidget data-widget_typeicon-list.default> ul classelementor-icon-list-items> li classelementor-icon-list-item> a hreftel:+49%206151%2039438%2074> span classelementor-icon-list-icon> svg aria-hiddentrue classe-font-icon-svg e-fas-phone-alt viewBox0 0 512 512 xmlnshttp://www.w3.org/2000/svg>path dM497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z>/path>/svg> /span> span classelementor-icon-list-text>+49 6151 3943489/span> /a> /li> li classelementor-icon-list-item> a hrefmailto:info@aisuperior.com> span classelementor-icon-list-icon> svg aria-hiddentrue classe-font-icon-svg e-fas-envelope viewBox0 0 512 512 xmlnshttp://www.w3.org/2000/svg>path dM502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z>/path>/svg> /span> span classelementor-icon-list-text>info@aisuperior.com/span> /a> /li> li classelementor-icon-list-item> span classelementor-icon-list-icon> svg aria-hiddentrue classe-font-icon-svg e-fas-map-marker-alt viewBox0 0 384 512 xmlnshttp://www.w3.org/2000/svg>path dM172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z>/path>/svg> /span> span classelementor-icon-list-text>Robert-Bosch-Str.7, 64293 Darmstadt, Germany/span> /li> /ul> /div> /div> /div> /div> /section> /div> /div> /div> /section> /div> /div> !-- ast-container --> /div>!-- #content --> footer data-elementor-typefooter data-elementor-id1086 classelementor elementor-1086 elementor-location-footer data-elementor-post-typeelementor_library> section classelementor-section elementor-top-section elementor-element elementor-element-1fc55e76 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id1fc55e76 data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-791c22ab data-id791c22ab data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-3faef1b elementor-widget elementor-widget-image data-id3faef1b data-element_typewidget data-widget_typeimage.default> img width1024 height185 srchttps://aisuperior.com/wp-content/uploads/2023/08/footer-logo.svg classattachment-large size-large wp-image-1088 alt /> /div> div classelementor-element elementor-element-9f8e133 elementor-widget-mobile__width-initial elementor-widget elementor-widget-text-editor data-id9f8e133 data-element_typewidget data-widget_typetext-editor.default> p>AI development company focused on providing the most comprehensive AI services/p> /div> div classelementor-element elementor-element-0bfceb6 elementor-widget elementor-widget-text-editor data-id0bfceb6 data-element_typewidget data-widget_typetext-editor.default> p>We are a member of/p> /div> div classelementor-element elementor-element-8317a01 elementor-widget elementor-widget-image data-id8317a01 data-element_typewidget data-widget_typeimage.default> img width300 height39 srchttps://aisuperior.com/wp-content/uploads/2023/08/DE_KI-Verband-Logo_weis-300x39-1.png classattachment-large size-large wp-image-1089 alt /> /div> /div> /div> div classelementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-5de75c95 data-id5de75c95 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-4a623271 elementor-align-left elementor-mobile-align-left elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list data-id4a623271 data-element_typewidget data-widget_typeicon-list.default> ul classelementor-icon-list-items> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/about-aisuperior/> span classelementor-icon-list-text>Company/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/services/development-of-ai-components/> span classelementor-icon-list-text>Development of AI components/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/services/artificial-intelligence-consulting/> span classelementor-icon-list-text>Artificial Intelligence Consulting/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/artificial-intelligence-education/> span classelementor-icon-list-text>Education & Training/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/services/research-and-development/> span classelementor-icon-list-text>Research & Development/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/services/packages-for-startups/> span classelementor-icon-list-text>Packages for Startups/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/projects/> span classelementor-icon-list-text>Projects/span> /a> /li> /ul> /div> /div> /div> div classelementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-1fc2f32 data-id1fc2f32 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-6a2ad74 elementor-align-left elementor-mobile-align-left elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list data-id6a2ad74 data-element_typewidget data-widget_typeicon-list.default> ul classelementor-icon-list-items> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/privacy-policy/> span classelementor-icon-list-text>Privacy Policy/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/data-privacy/> span classelementor-icon-list-text>Data & Privacy/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://aisuperior.com/imprint/> span classelementor-icon-list-text>Imprint/span> /a> /li> li classelementor-icon-list-item> a href/contact/> span classelementor-icon-list-text>Contact Us/span> /a> /li> /ul> /div> /div> /div> div classelementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-fe030c3 data-idfe030c3 data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-9b8d592 elementor-align-left elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list data-id9b8d592 data-element_typewidget data-widget_typeicon-list.default> ul classelementor-icon-list-items> li classelementor-icon-list-item> a hreftel:+49%206151%203943489> span classelementor-icon-list-icon> svg aria-hiddentrue classe-font-icon-svg e-fas-phone-alt viewBox0 0 512 512 xmlnshttp://www.w3.org/2000/svg>path dM497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z>/path>/svg> /span> span classelementor-icon-list-text>+49 6151 3943489/span> /a> /li> li classelementor-icon-list-item> a hrefmailto:info@aisuperior.com> span classelementor-icon-list-icon> svg aria-hiddentrue classe-font-icon-svg e-fas-envelope viewBox0 0 512 512 xmlnshttp://www.w3.org/2000/svg>path dM502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z>/path>/svg> /span> span classelementor-icon-list-text>info@aisuperior.com/span> /a> /li> li classelementor-icon-list-item> a hrefhttps://maps.app.goo.gl/bsKDsEk34zvnzncE6> span classelementor-icon-list-icon> svg aria-hiddentrue classe-font-icon-svg e-fas-map-marker-alt viewBox0 0 384 512 xmlnshttp://www.w3.org/2000/svg>path dM172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z>/path>/svg> /span> span classelementor-icon-list-text>Robert-Bosch-Str.7, 64293 Darmstadt, Germany/span> /a> /li> /ul> /div> div classelementor-element elementor-element-9d9f284 elementor-shape-square e-grid-align-mobile-left elementor-grid-0 e-grid-align-center elementor-widget elementor-widget-social-icons data-id9d9f284 data-element_typewidget data-widget_typesocial-icons.default> div classelementor-social-icons-wrapper elementor-grid rolelist> span classelementor-grid-item rolelistitem> a classelementor-icon elementor-social-icon elementor-social-icon-facebook-f elementor-repeater-item-69f43d7 hrefhttps://www.facebook.com/aisuperior target_blank> span classelementor-screen-only>Facebook-f/span> svg aria-hiddentrue classe-font-icon-svg e-fab-facebook-f viewBox0 0 320 512 xmlnshttp://www.w3.org/2000/svg>path dM279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z>/path>/svg> /a> /span> span classelementor-grid-item rolelistitem> a classelementor-icon elementor-social-icon elementor-social-icon-instagram elementor-repeater-item-d754927 hrefhttps://www.instagram.com/ai_superior/ target_blank> span classelementor-screen-only>Instagram/span> svg aria-hiddentrue classe-font-icon-svg e-fab-instagram viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z>/path>/svg> /a> /span> span classelementor-grid-item rolelistitem> a classelementor-icon elementor-social-icon elementor-social-icon-youtube elementor-repeater-item-1abaf5e hrefhttps://www.youtube.com/channel/UCNq7KZXztu6jODLpgVWpfFg target_blank> span classelementor-screen-only>Youtube/span> svg aria-hiddentrue classe-font-icon-svg e-fab-youtube viewBox0 0 576 512 xmlnshttp://www.w3.org/2000/svg>path dM549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z>/path>/svg> /a> /span> span classelementor-grid-item rolelistitem> a classelementor-icon elementor-social-icon elementor-social-icon-twitter elementor-repeater-item-86de14e hrefhttps://twitter.com/aisuperior target_blank> span classelementor-screen-only>Twitter/span> svg aria-hiddentrue classe-font-icon-svg e-fab-twitter viewBox0 0 512 512 xmlnshttp://www.w3.org/2000/svg>path dM459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z>/path>/svg> /a> /span> span classelementor-grid-item rolelistitem> a classelementor-icon elementor-social-icon elementor-social-icon-linkedin-in elementor-repeater-item-4865322 hrefhttps://www.linkedin.com/company/ai-superior target_blank> span classelementor-screen-only>Linkedin-in/span> svg aria-hiddentrue classe-font-icon-svg e-fab-linkedin-in viewBox0 0 448 512 xmlnshttp://www.w3.org/2000/svg>path dM100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z>/path>/svg> /a> /span> /div> /div> /div> /div> /div> /section> footer classelementor-section elementor-top-section elementor-element elementor-element-29b5bd30 elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id29b5bd30 data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-74563ee data-id74563ee data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-555a1648 elementor-widget elementor-widget-heading data-id555a1648 data-element_typewidget data-widget_typeheading.default> h3 classelementor-heading-title elementor-size-default>© AI Superior GmbH – All Rights Reserved/h3> /div> /div> /div> /div> /footer> /footer> /div>!-- #page -->template idtp-language data-tp-languageen_US>/template>script typespeculationrules>{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\/astra-child\/*,\/wp-content\/themes\/astra\/*,\/*\\?(.+)}},{not:{selector_matches:arel~\nofollow\}},{not:{selector_matches:.no-prefetch, .no-prefetch a}}},eagerness:conservative}}/script> div idtrp-floater-ls onclick data-no-translation classtrp-language-switcher-container trp-floater-ls-names trp-bottom-right trp-color-dark flags-full-names > div idtrp-floater-ls-current-language classtrp-with-flags> a href# classtrp-floater-ls-disabled-language trp-ls-disabled-language onclickevent.preventDefault()> img classtrp-flag-image srchttps://aisuperior.com/wp-content/plugins/translatepress-multilingual/assets/images/flags/en_US.png width18 height12 alten_US titleEnglish>English /a> /div> div idtrp-floater-ls-language-list classtrp-with-flags > div classtrp-language-wrap trp-language-wrap-bottom> a hrefhttps://aisuperior.com/de/ titleGerman> img classtrp-flag-image srchttps://aisuperior.com/wp-content/plugins/translatepress-multilingual/assets/images/flags/de_DE.png width18 height12 altde_DE titleGerman>German /a> a hrefhttps://aisuperior.com/ar/ titleArabic> img classtrp-flag-image srchttps://aisuperior.com/wp-content/plugins/translatepress-multilingual/assets/images/flags/ar.png width18 height12 altar titleArabic>Arabic /a> a hrefhttps://aisuperior.com/fr/ titleFrench> img classtrp-flag-image srchttps://aisuperior.com/wp-content/plugins/translatepress-multilingual/assets/images/flags/fr_FR.png width18 height12 altfr_FR titleFrench>French /a> a hrefhttps://aisuperior.com/nl/ titleDutch> img classtrp-flag-image srchttps://aisuperior.com/wp-content/plugins/translatepress-multilingual/assets/images/flags/nl_NL.png width18 height12 altnl_NL titleDutch>Dutch /a> a hrefhttps://aisuperior.com/es/ titleSpanish> img classtrp-flag-image srchttps://aisuperior.com/wp-content/plugins/translatepress-multilingual/assets/images/flags/es_ES.png width18 height12 altes_ES titleSpanish>Spanish /a> a href# classtrp-floater-ls-disabled-language trp-ls-disabled-language onclickevent.preventDefault()>img classtrp-flag-image srchttps://aisuperior.com/wp-content/plugins/translatepress-multilingual/assets/images/flags/en_US.png width18 height12 alten_US titleEnglish>English/a>/div> /div> /div> style idai_sup_custom_css> .elementor-sub-item.elementor-item-active{ background: transparent !important; } /style> script srchttps://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js>/script> script> jQuery(document).ready(function(){ jQuery(.home-mega-menu nav > ul > li > ul.sub-menu).wrap(div classmenucontainer>/div>);// jQuery(.home-mega-menu nav > ul > li).hover( function(){// event.preventDefault();// jQuery(this).children(.menucontainer).slideToggle(slow);// }); jQuery(.home-mega-menu ul li).hover(function() { event.preventDefault(); var isHovered jQuery(this).is(:hover); if (isHovered) { jQuery(this).children(.menucontainer).stop().slideDown(500); } else { jQuery(this).children(.menucontainer).stop().slideUp(500); } }); }); jQuery(document).ready(function($) { var delay 5000; setTimeout(function() { jQuery(.home .elementor-tab-title).removeClass(elementor-active); jQuery(.home .elementor-tab-content).css(display, none); }, delay); });/script>script> const paragraphs document.querySelectorAll(.blogs-para .elementor-widget-container); paragraphs.forEach(paragraph > { const lineHeight parseInt(getComputedStyle(paragraph).lineHeight); const maxLines 8; paragraph.style.maxHeight `${lineHeight * maxLines}px`; paragraph.style.overflow hidden; paragraph.style.position relative; paragraph.style.before ...; });/script>script typetext/javascript> jQuery(document).ready(function(){ jQuery(.btn-all).click(function(){ jQuery(.btn-all).toggleClass(selectAcitive); jQuery(.project-all-categories).toggleClass(showCategories); jQuery(.industry-btn).removeClass(selectAcitive); jQuery(.industry-all-categories).removeClass(showCategories); jQuery(.technology-btn).removeClass(selectAcitive); jQuery(.technology-all-categories).removeClass(showCategories); }); }); jQuery(document).ready(function(){ jQuery(.industry-btn).click(function(){ jQuery(.industry-btn).toggleClass(selectAcitive); jQuery(.industry-all-categories).toggleClass(showCategories); jQuery(.btn-all).removeClass(selectAcitive); jQuery(.project-all-categories).removeClass(showCategories); jQuery(.technology-btn).removeClass(selectAcitive); jQuery(.technology-all-categories).removeClass(showCategories); }); }); jQuery(document).ready(function(){ jQuery(.technology-btn).click(function(){ jQuery(.technology-btn).toggleClass(selectAcitive); jQuery(.technology-all-categories).toggleClass(showCategories); jQuery(.btn-all).removeClass(selectAcitive); jQuery(.project-all-categories).removeClass(showCategories); jQuery(.industry-btn).removeClass(selectAcitive); jQuery(.industry-all-categories).removeClass(showCategories); }); }); jQuery(document).ready(function(){ jQuery(.select-categ-item).click(function(){ jQuery(.select-categ-item).toggleClass(selectAcitive); jQuery(.blog-categories-block ul).toggleClass(showCategories); });}); var likeurl window.location.href; var divs document.querySelectorAll(.blogCategories_ul li a); .forEach.call(divs, function(div) { if(likeurldiv.href){ document.querySelector(.select-categ-item).innerTextdiv.innerHTML; } });/script>div idast-scroll-top tabindex0 classast-scroll-top-icon ast-scroll-to-top-right data-on-devicesboth> span classast-icon icon-arrow>svg classast-arrow-svg xmlnshttp://www.w3.org/2000/svg xmlns:xlinkhttp://www.w3.org/1999/xlink version1.1 x0px y0px width26px height16.043px viewBox57 35.171 26 16.043 enable-backgroundnew 57 35.171 26 16.043 xml:spacepreserve> path dM57.5,38.193l12.5,12.5l12.5-12.5l-2.5-2.5l-10,10l-10-10L57.5,38.193z /> /svg>/span> span classscreen-reader-text>Scroll to Top/span>/div> div data-elementor-typepopup data-elementor-id32277 classelementor elementor-32277 elementor-location-popup data-elementor-settings{"a11y_navigation":"yes","triggers":,"timing":} data-elementor-post-typeelementor_library> section classelementor-section elementor-top-section elementor-element elementor-element-77f5220 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id77f5220 data-element_typesection data-settings{"background_background":"classic"}> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-792c8c3 data-id792c8c3 data-element_typecolumn data-settings{"background_background":"classic"}> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-bb52d9e elementor-widget elementor-widget-heading data-idbb52d9e data-element_typewidget data-widget_typeheading.default> span classelementor-heading-title elementor-size-default>Let’s discuss your nextbr> AI project/span> /div> div classelementor-element elementor-element-e1c7be7 elementor-widget elementor-widget-shortcode data-ide1c7be7 data-element_typewidget data-widget_typeshortcode.default> div classelementor-shortcode> div data-elementor-typesection data-elementor-id32744 classelementor elementor-32744 elementor-location-popup data-elementor-post-typeelementor_library> section classelementor-section elementor-top-section elementor-element elementor-element-21d5693 elementor-section-boxed elementor-section-height-default elementor-section-height-default data-id21d5693 data-element_typesection> div classelementor-container elementor-column-gap-default> div classelementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-816ff5a data-id816ff5a data-element_typecolumn> div classelementor-widget-wrap elementor-element-populated> div classelementor-element elementor-element-9ce283d elementor-widget elementor-widget-html data-id9ce283d data-element_typewidget data-widget_typehtml.default> div classpipedriveWebForms data-pd-webformshttps://webforms.pipedrive.com/f/1r3P6Sa8ve23FBajB0w7WA8bud5LJ0ogT1rsOo626yFVds9GPrhswn6mxqdBvOCfV>script srchttps://webforms.pipedrive.com/f/loader>/script>/div> /div> /div> /div> /div> /section> /div> /div> /div> /div> /div> /div> /section> /div> script> const lazyloadRunObserver () > { const lazyloadBackgrounds document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` ); const lazyloadBackgroundObserver new IntersectionObserver( ( entries ) > { entries.forEach( ( entry ) > { if ( entry.isIntersecting ) { let lazyloadBackground entry.target; if( lazyloadBackground ) { lazyloadBackground.classList.add( e-lazyloaded ); } lazyloadBackgroundObserver.unobserve( entry.target ); } }); }, { rootMargin: 200px 0px 200px 0px } ); lazyloadBackgrounds.forEach( ( lazyloadBackground ) > { lazyloadBackgroundObserver.observe( lazyloadBackground ); } ); }; const events DOMContentLoaded, elementor/lazyload/observe, ; events.forEach( ( event ) > { document.addEventListener( event, lazyloadRunObserver ); } ); /script> link relstylesheet idwidget-post-info-css hrefhttps://aisuperior.com/wp-content/plugins/elementor-pro/assets/css/widget-post-info.min.css?ver3.33.1 mediaall />link relstylesheet idelementor-post-22355-css hrefhttps://aisuperior.com/wp-content/uploads/elementor/css/post-22355.css?ver1763699844 mediaall />script idastra-theme-js-js-extra>var astra {break_point:921,isRtl:,is_scroll_to_id:1,is_scroll_to_top:1,is_header_footer_builder_active:1,responsive_cart_click:flyout,is_dark_palette:};/script>script srchttps://aisuperior.com/wp-content/themes/astra/assets/js/minified/frontend.min.js?ver4.11.12 idastra-theme-js-js>/script>script srchttps://aisuperior.com/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver3.33.1 idelementor-webpack-runtime-js>/script>script srchttps://aisuperior.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver3.33.1 idelementor-frontend-modules-js>/script>script srchttps://aisuperior.com/wp-includes/js/jquery/ui/core.min.js?ver1.13.3 idjquery-ui-core-js>/script>script idelementor-frontend-js-extra>var EAELImageMaskingConfig {svg_dir_url:https:\/\/aisuperior.com\/wp-content\/plugins\/essential-addons-for-elementor-lite\/assets\/front-end\/img\/image-masking\/svg-shapes\/};/script>script idelementor-frontend-js-before>var elementorFrontendConfig {environmentMode:{edit:false,wpPreview:false,isScriptDebug:false},i18n:{shareOnFacebook:Share on Facebook,shareOnTwitter:Share on Twitter,pinIt:Pin it,download:Download,downloadImage:Download image,fullscreen:Fullscreen,zoom:Zoom,share:Share,playVideo:Play Video,previous:Previous,next:Next,close:Close,a11yCarouselPrevSlideMessage:Previous slide,a11yCarouselNextSlideMessage:Next slide,a11yCarouselFirstSlideMessage:This is the first slide,a11yCarouselLastSlideMessage:This is the last slide,a11yCarouselPaginationBulletMessage:Go to slide},is_rtl:false,breakpoints:{xs:0,sm:480,md:768,lg:1025,xl:1440,xxl:1600},responsive:{breakpoints:{mobile:{label:Mobile Portrait,value:767,default_value:767,direction:max,is_enabled:true},mobile_extra:{label:Mobile Landscape,value:880,default_value:880,direction:max,is_enabled:false},tablet:{label:Tablet Portrait,value:1024,default_value:1024,direction:max,is_enabled:true},tablet_extra:{label:Tablet Landscape,value:1200,default_value:1200,direction:max,is_enabled:false},laptop:{label:Laptop,value:1366,default_value:1366,direction:max,is_enabled:false},widescreen:{label:Widescreen,value:2400,default_value:2400,direction:min,is_enabled:false}},hasCustomBreakpoints:false},version:3.33.1,is_static:false,experimentalFeatures:{e_font_icon_svg:true,additional_custom_breakpoints:true,e_optimized_markup:true,theme_builder_v2:true,home_screen:true,global_classes_should_enforce_capabilities:true,e_variables:true,cloud-library:true,e_opt_in_v4_page:true,import-export-customization:true,e_pro_variables:true},urls:{assets:https:\/\/aisuperior.com\/wp-content\/plugins\/elementor\/assets\/,ajaxurl:https:\/\/aisuperior.com\/wp-admin\/admin-ajax.php,uploadUrl:https:\/\/aisuperior.com\/wp-content\/uploads},nonces:{floatingButtonsClickTracking:985ad08ffa},swiperClass:swiper,settings:{page:,editorPreferences:},kit:{active_breakpoints:viewport_mobile,viewport_tablet,global_image_lightbox:yes,lightbox_enable_counter:yes,lightbox_enable_fullscreen:yes,lightbox_enable_zoom:yes,lightbox_enable_share:yes,lightbox_title_src:title,lightbox_description_src:description},post:{id:11,title:AI%20Services%20and%20Development%20Company%20%7C%20AI%20Superior,excerpt:,featuredImage:false}};/script>script srchttps://aisuperior.com/wp-content/plugins/elementor/assets/js/frontend.min.js?ver3.33.1 idelementor-frontend-js>/script>script srchttps://aisuperior.com/wp-content/plugins/elementor-pro/assets/lib/smartmenus/jquery.smartmenus.min.js?ver1.2.1 idsmartmenus-js>/script>script ideael-general-js-extra>var localize {ajaxurl:https:\/\/aisuperior.com\/wp-admin\/admin-ajax.php,nonce:22074c82bc,i18n:{added:Added ,compare:Compare,loading:Loading...},eael_translate_text:{required_text:is a required field,invalid_text:Invalid,billing_text:Billing,shipping_text:Shipping,fg_mfp_counter_text:of},page_permalink:https:\/\/aisuperior.com\/,cart_redirectition:,cart_page_url:,el_breakpoints:{mobile:{label:Mobile Portrait,value:767,default_value:767,direction:max,is_enabled:true},mobile_extra:{label:Mobile Landscape,value:880,default_value:880,direction:max,is_enabled:false},tablet:{label:Tablet Portrait,value:1024,default_value:1024,direction:max,is_enabled:true},tablet_extra:{label:Tablet Landscape,value:1200,default_value:1200,direction:max,is_enabled:false},laptop:{label:Laptop,value:1366,default_value:1366,direction:max,is_enabled:false},widescreen:{label:Widescreen,value:2400,default_value:2400,direction:min,is_enabled:false}}};/script>script srchttps://aisuperior.com/wp-content/plugins/essential-addons-for-elementor-lite/assets/front-end/js/view/general.min.js?ver6.5.1 ideael-general-js>/script>script srchttps://aisuperior.com/wp-content/uploads/essential-addons-elementor/eael-11.js?ver1755004878 ideael-11-js>/script>script srchttps://aisuperior.com/wp-content/plugins/elementor-pro/assets/lib/lottie/lottie.min.js?ver5.6.6 idlottie-js>/script>script srchttps://aisuperior.com/wp-content/plugins/elementor/assets/lib/swiper/v8/swiper.min.js?ver8.4.5 idswiper-js>/script>script srchttps://aisuperior.com/wp-includes/js/imagesloaded.min.js?ver5.0.0 idimagesloaded-js>/script>script srchttps://aisuperior.com/wp-content/plugins/litespeed-cache/assets/js/instant_click.min.js?ver7.6.2 idlitespeed-cache-js>/script>script srchttps://www.google.com/recaptcha/api.js?renderexplicit&ver3.33.1 idelementor-recaptcha-api-js>/script>script srchttps://aisuperior.com/wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js?ver3.33.1 idelementor-pro-webpack-runtime-js>/script>script srchttps://aisuperior.com/wp-includes/js/dist/hooks.min.js?ver4d63a3d491d11ffd8ac6 idwp-hooks-js>/script>script srchttps://aisuperior.com/wp-includes/js/dist/i18n.min.js?ver5e580eb46a90c2b997e6 idwp-i18n-js>/script>script idwp-i18n-js-after>wp.i18n.setLocaleData( { text direction\u0004ltr: ltr } );/script>script idelementor-pro-frontend-js-before>var ElementorProFrontendConfig {ajaxurl:https:\/\/aisuperior.com\/wp-admin\/admin-ajax.php,nonce:649700f3f1,urls:{assets:https:\/\/aisuperior.com\/wp-content\/plugins\/elementor-pro\/assets\/,rest:https:\/\/aisuperior.com\/wp-json\/},settings:{lazy_load_background_images:true},popup:{hasPopUps:true},shareButtonsNetworks:{facebook:{title:Facebook,has_counter:true},twitter:{title:Twitter},linkedin:{title:LinkedIn,has_counter:true},pinterest:{title:Pinterest,has_counter:true},reddit:{title:Reddit,has_counter:true},vk:{title:VK,has_counter:true},odnoklassniki:{title:OK,has_counter:true},tumblr:{title:Tumblr},digg:{title:Digg},skype:{title:Skype},stumbleupon:{title:StumbleUpon,has_counter:true},mix:{title:Mix},telegram:{title:Telegram},pocket:{title:Pocket,has_counter:true},xing:{title:XING,has_counter:true},whatsapp:{title:WhatsApp},email:{title:Email},print:{title:Print},x-twitter:{title:X},threads:{title:Threads}},facebook_sdk:{lang:en_US,app_id:},lottie:{defaultAnimationUrl:https:\/\/aisuperior.com\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json}};/script>script srchttps://aisuperior.com/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver3.33.1 idelementor-pro-frontend-js>/script>script srchttps://aisuperior.com/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver3.33.1 idpro-elements-handlers-js>/script> script> /(trident|msie)/i.test(navigator.userAgent)&&document.getElementById&&window.addEventListener&&window.addEventListener(hashchange,function(){var t,elocation.hash.substring(1);/^A-z0-9_-+$/.test(e)&&(tdocument.getElementById(e))&&(/^(?:a|select|input|button|textarea)$/i.test(t.tagName)||(t.tabIndex-1),t.focus())},!1); /script> script> document.addEventListener(DOMContentLoaded, function () { let popupShown false;let popupEShown false; function showPopup() { if (!popupShown && typeof elementorProFrontend ! undefined) { popupShown true; elementorProFrontend.modules.popup.showPopup({ id: 32277 }); } } // Show popup after 30 seconds (Condition 1) setTimeout(showEPopup, 30000); // Show popup on exit intent before 30s (Condition 2) function showEPopup() { document.addEventListener(mouseout, function (e) { if (!popupShown && e.clientY 50) { showPopup(); } }); } });/script>script>document.addEventListener(DOMContentLoaded, function() { var currentUrl window.location.href; document.getElementById(current-url).value currentUrl;});/script> /body>/html>!-- Page cached by LiteSpeed Cache 7.6.2 on 2025-11-21 04:41:29 -->
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]