CINXE.COM

Computed Tomography Organ and Disease Segmentation Using the NVIDIA VISTA-3D NIM Microservice | NVIDIA Technical Blog

<!doctype html> <html lang="en-US" id="html"> <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"><script type="text/javascript">(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"NRJS-2b0defbeb07862260b2",applicationID:"745178505"};;/*! For license information please see nr-loader-rum-1.273.1.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>g,gD:()=>h,xN:()=>p});var n=r(993);const i=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u="[data-nr-mask]",d=()=>{const e={mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,harvestTimeSeconds:10,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},feature_flags:[],generic_events:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},harvest:{tooManyRequestsDelay:60},jserrors:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},logging:{enabled:!0,harvestTimeSeconds:10,autoStart:!0,level:n.p_.INFO},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,harvestTimeSeconds:60,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector="".concat(t,",").concat(u):""===t||null===t?e.mask_selector=u:(0,a.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){i(t)?e.block_selector+=",".concat(t):""!==t&&(0,a.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,a.R)(7,t)}},session_trace:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},soft_navigations:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},spa:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},ssl:void 0,user_actions:{enabled:!0}}},l={},f="All configuration objects require an agent identifier!";function g(e){if(!e)throw new Error(f);if(!l[e])throw new Error("Configuration for ".concat(e," was never set"));return l[e]}function p(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r&&(r.init=l[e])}function h(e,t){if(!e)throw new Error(f);var r=g(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0},d={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!d[e])throw new Error("Runtime for ".concat(e," was never set"));return d[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],"harvestCount")||Object.defineProperty(d[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=d[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,xv:()=>n});const n="1.273.1",i="PROD",o="CDN"},6154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>c,RI:()=>i,WN:()=>d,bv:()=>o,gm:()=>a,mw:()=>s,sb:()=>u});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s=Boolean("hidden"===a?.document?.visibilityState),c=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=c&&"undefined"==typeof SharedWorker,d=((()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)())},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),g(e,t,!1),s[e].size&&f(e))}function d(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(d(e),!e||!s[e].get(t)||r)return g(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),g(e,t)})))}function g(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=g(n),c=h(e),d=c.length,l=0;l<d;l++)c[l].apply(a,r);var p=m()[s[e]];p&&p.push([f,e,r,a]);return a},get:v,listeners:h,context:g,buffer:function(e,t){const r=m();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!m()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=h(e).concat(t)}function h(e){return n[e]||[]}function v(t){return d[t]=d[t]||e(f,t)}function m(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>d,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},3434:(e,t,r)=>{"use strict";r.d(t,{YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];d(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return d(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,d,l;try{a=this,o=[...arguments],d="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],d],e)}i(r+"start",[o,a,s],d,c);try{return l=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],d,c),e}finally{i(r+"end",[o,a,l],d,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function d(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},993:(e,t,r)=>{"use strict";r.d(t,{ET:()=>o,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o="log";n.K7.logging},3969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>s,rs:()=>i,xV:()=>a,z_:()=>o});const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{G4:()=>i});var n=r(2614);r(860).K7.sessionReplay;const i={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"};n.g.ERROR,n.g.FULL,n.g.OFF},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7603:(e,t,r)=>{"use strict";r.d(t,{j:()=>P});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(3969),g=r(384),p=r(6344);const h=["setErrorHandler","finished","addToTrace","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],v=["setErrorHandler","finished","addToTrace","addRelease"];var m=r(1863),b=r(2614),y=r(993);var w=r(2646),A=r(3434);function R(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,A.YM)(i),a=new w.y(s.P);return a.level=n.level,a.customAttributes=n.customAttributes,o.inPlace(t,[r],"wrap-logger-",a),i}function E(){const e=(0,g.pV)();h.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const x={};function _(e,t,g=!1){t||(0,c.Ak)(e,"api");const h={};var w=s.ee.get(e),A=w.get("tracer");x[e]=b.g.OFF,w.on(p.G4.REPLAY_RUNNING,(t=>{x[e]=t}));var E="api-",_=E+"ixn-";function N(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),j(E,n,!0,o||null===r?"session":void 0)(t,r)}function T(){}h.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,w),function(e,t,r={},i=y.p_.INFO){(0,a.p)(f.xV,["API/logging/".concat(i.toLowerCase(),"/called")],void 0,n.K7.metrics,e),(0,a.p)(y.ET,[(0,m.t)(),t,r,i],void 0,n.K7.logging,e)}(w,e,t,r)},h.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,w),R(w,e,t,{customAttributes:r,level:i})},v.forEach((e=>{h[e]=j(E,e,!0,"api")})),h.addPageAction=j(E,"addPageAction",!0,n.K7.genericEvents),h.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,j(E,"setPageViewName",!0)()},h.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(e,t,"setCustomAttribute",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},h.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},h.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,l.R)(42,typeof e)},h.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,w),w.emit("manual-start-all")}catch(e){(0,l.R)(23,e)}},h[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,w)},h[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,w)},h.interaction=function(e){return(new T).get("object"==typeof e?e:{})};const S=T.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,w),g||(0,a.p)(_+"tracer",[(0,m.t)(),e,r],i,n.K7.spa,w),function(){if(A.emit((o?"":"no-")+"fn-start",[(0,m.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw A.emit("fn-err",[arguments,this,t],r),t}finally{A.emit("fn-end",[(0,m.t)()],r)}}}};function j(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,w),i&&(0,a.p)(e+t,[(0,m.t)(),...arguments],r?null:this,i,w),r?void 0:this}}function k(){r.e(296).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,l.R)(27,e),w.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{S[e]=j(_,e,void 0,g?n.K7.softNav:n.K7.spa)})),h.setCurrentRouteName=g?j(_,"routeName",void 0,n.K7.softNav):j(E,"routeName",!0,n.K7.spa),h.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,w),(0,a.p)("err",[t,(0,m.t)(),!1,r,!!x[e]],void 0,n.K7.jserrors,w)},d.RI?(0,u.GG)((()=>k()),!0):k(),h}var N=r(9417),T=r(8122);const S={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},j={};var k=r(5284);const I=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let O=!1;function P(e,t={},r,n){let{init:a,info:c,loader_config:u,runtime:l={},exposed:f=!0}=t;l.loaderType=r;const p=(0,g.pV)();c||(a=p.init,c=p.info,u=p.loader_config),(0,N.xN)(e.agentIdentifier,a||{}),function(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");j[e]=(0,T.a)(t,S);const r=(0,g.nY)(e);r&&(r.loader_config=j[e])}(e.agentIdentifier,u||{}),c.jsAttributes??={},d.bv&&(c.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,c);const h=(0,N.D0)(e.agentIdentifier),v=[c.beacon,c.errorBeacon];O||(h.proxy.assets&&(I(h.proxy.assets),v.push(h.proxy.assets)),h.proxy.beacon&&v.push(h.proxy.beacon),E(),(0,g.US)("activatedFeatures",k.B),e.runSoftNavOverSpa&&=!0===h.soft_navigations.enabled&&h.feature_flags.includes("soft_nav")),l.denyList=[...h.ajax.deny_list||[],...h.ajax.block_internal?v:[]],l.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,l),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=_(e.agentIdentifier,n,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=f),O=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>o,K7:()=>n,P3:()=>i});const n={ajax:"ajax",genericEvents:"generic_events",jserrors:"jserrors",logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.spa]:5,[n.ajax]:6,[n.sessionTrace]:7,[n.softNav]:8,[n.sessionReplay]:9,[n.logging]:10,[n.genericEvents]:11},o={[n.pageViewTiming]:"events",[n.ajax]:"events",[n.spa]:"events",[n.softNav]:"events",[n.metrics]:"jserrors",[n.jserrors]:"jserrors",[n.sessionTrace]:"browser/blobs",[n.sessionReplay]:"browser/blobs",[n.logging]:"browser/logs",[n.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>"nr-rum-1.273.1.min.js",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.273.1.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+o){s=l;break}}if(!s){c=!0;var f={296:"sha512-Pel/oKB1rTEfX7XMf0BA3mU/6uscyqtmJfCrvPixhxNsxMn3wc6GmT2qyKBDLZarj8byz09b2DFF7IVK2/b/KQ=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var g=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(g.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=g.bind(null,s.onerror),s.onload=g.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={840:0,374:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.273.1.PROD"]=self["webpackChunk:NRBA-1.273.1.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(e=(0,r.LA)(16)){this.agentIdentifier=e}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var d=i(7603);var l=i(1687),f=i(4234),g=i(5289),p=i(6154),h=i(384);const v=e=>p.RI&&!0===(0,s.gD)(e,"privacy.cookies_enabled");function m(e){return!!(0,h.dV)().o.MO&&v(e)&&!0===(0,s.gD)(e,"session_trace.enabled")}var b=i(6389);class y extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,b.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if(v(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(296).then(i.bind(i,3861));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(t.sharedAggregator)await t.sharedAggregator;else{t.sharedAggregator=i.e(296).then(i.bind(i,9337));const{EventAggregator:e}=await t.sharedAggregator;t.sharedAggregator=new e}if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(296).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,g.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return m(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var w=i(6630);class A extends y{static featureName=w.T;constructor(e,t=!0){super(e,w.T,t),this.importAggregator(e)}}var R=i(9908),E=i(2843),x=i(3878),_=i(782),N=i(1863);class T extends y{static featureName=_.T;constructor(e,t=!0){super(e,_.T,t),p.RI&&((0,E.u)((()=>(0,R.p)("docHidden",[(0,N.t)()],void 0,_.T,this.ee)),!0),(0,x.sp)("pagehide",(()=>(0,R.p)("winPagehide",[(0,N.t)()],void 0,_.T,this.ee))),this.importAggregator(e))}}var S=i(3969);class j extends y{static featureName=S.TZ;constructor(e,t=!0){super(e,S.TZ,t),this.importAggregator(e)}}new class extends o{constructor(t,r){super(r),p.gm?(this.features={},(0,h.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(A),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,h.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[A,T,j],loaderType:"lite"})})()})();</script> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link rel="shortcut icon" href="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/dist/images/favicon_300a1064.ico" type="image/vnd.microsoft.icon"> <link media="all" href="https://developer-blogs.nvidia.com/wp-content/uploads/autoptimize/1/css/aggregated_61cb4f5a3725d1aa6eecb31d5cfc4db0.css" rel="stylesheet"><title>Computed Tomography Organ and Disease Segmentation Using the NVIDIA VISTA&#x2d;3D NIM Microservice | NVIDIA Technical Blog</title> <!-- OneTrust Cookies Consent Notice start for nvidia.com --> <script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" data-document-language="true" type="text/javascript" charset="UTF-8" data-domain-script="3e2b62ff-7ae7-4ac5-87c8-d5949ecafff5" ></script> <script type="text/javascript"> function OptanonWrapper() { var event = new Event('bannerLoaded'); window.dispatchEvent(event); } </script> <!-- OneTrust Cookies Consent Notice end for nvidia.com --><link rel="preload" href="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/dist/scripts/main_5b99443a.js" as="script"><script src="//app-sj14.marketo.com/js/forms2/js/forms2.min.js?ver=5.6.2" defer></script><script src="https://unpkg.com/infinite-scroll@4/dist/infinite-scroll.pkgd.min.js" defer></script><meta property="interest" content="Computer Vision / Video Analytics"><meta property="estimated-read-time" content="9 MIN"> <!-- The SEO Framework by Sybre Waaijer --> <meta name="robots" content="max-snippet:-1,max-image-preview:standard,max-video-preview:-1" /> <link rel="canonical" href="https://developer.nvidia.com/blog/computed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim/" /> <link rel="shortlink" href="https://developer.nvidia.com/blog/?p=85863" /> <meta name="description" content="Over 300M computed tomography (CT) scans are performed globally, 85M in the US alone. Radiologists are looking for ways to speed up their workflow and generate&#8230;" /> <meta property="og:type" content="article" /> <meta property="og:locale" content="en_US" /> <meta property="og:site_name" content="NVIDIA Technical Blog" /> <meta property="og:title" content="Computed Tomography Organ and Disease Segmentation Using the NVIDIA VISTA&#x2d;3D NIM Microservice | NVIDIA Technical Blog" /> <meta property="og:description" content="Over 300M computed tomography (CT) scans are performed globally, 85M in the US alone. Radiologists are looking for ways to speed up their workflow and generate accurate reports, so having a foundation&#8230;" /> <meta property="og:url" content="https://developer.nvidia.com/blog/computed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim/" /> <meta property="og:image" content="https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/monai-vista3d-nim-featured.jpg" /> <meta property="og:image:width" content="828" /> <meta property="og:image:height" content="466" /> <meta property="og:image:alt" content="Three CT scan segments on a black background." /> <meta property="article:published_time" content="2024-07-26T18:41+00:00" /> <meta property="article:modified_time" content="2024-08-08T18:48+00:00" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:title" content="Computed Tomography Organ and Disease Segmentation Using the NVIDIA VISTA&#x2d;3D NIM Microservice | NVIDIA Technical Blog" /> <meta name="twitter:description" content="Over 300M computed tomography (CT) scans are performed globally, 85M in the US alone. Radiologists are looking for ways to speed up their workflow and generate accurate reports, so having a foundation&#8230;" /> <meta name="twitter:image" content="https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/monai-vista3d-nim-featured.jpg" /> <meta name="twitter:image:alt" content="Three CT scan segments on a black background." /> <script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://developer.nvidia.com/blog/#/schema/WebSite","url":"https://developer.nvidia.com/blog/","name":"NVIDIA Technical Blog","description":"News and tutorials for developers, data scientists, and IT admins","inLanguage":"en-US","potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://developer.nvidia.com/blog/search/{search_term_string}/"},"query-input":"required name=search_term_string"},"publisher":{"@type":"Organization","@id":"https://developer.nvidia.com/blog/#/schema/Organization","name":"NVIDIA Technical Blog","url":"https://developer.nvidia.com/blog/"}},{"@type":"WebPage","@id":"https://developer.nvidia.com/blog/computed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim/","url":"https://developer.nvidia.com/blog/computed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim/","name":"Computed Tomography Organ and Disease Segmentation Using the NVIDIA VISTA&#x2d;3D NIM Microservice | NVIDIA Technical Blog","description":"Over 300M computed tomography (CT) scans are performed globally, 85M in the US alone. Radiologists are looking for ways to speed up their workflow and generate&#8230;","inLanguage":"en-US","isPartOf":{"@id":"https://developer.nvidia.com/blog/#/schema/WebSite"},"breadcrumb":{"@type":"BreadcrumbList","@id":"https://developer.nvidia.com/blog/#/schema/BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":"https://developer.nvidia.com/blog/","name":"NVIDIA Technical Blog"},{"@type":"ListItem","position":2,"item":"https://developer.nvidia.com/blog/category/computer-vision/","name":"Category: Computer Vision / Video Analytics"},{"@type":"ListItem","position":3,"name":"Computed Tomography Organ and Disease Segmentation Using the NVIDIA VISTA&#x2d;3D NIM Microservice"}]},"potentialAction":{"@type":"ReadAction","target":"https://developer.nvidia.com/blog/computed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim/"},"datePublished":"2024-07-26T18:41+00:00","dateModified":"2024-08-08T18:48+00:00","author":{"@type":"Person","@id":"https://developer.nvidia.com/blog/#/schema/Person/bb044b16e4bc9608ca6638ed96307a71","name":"Ahmed Harouni","description":"Ahmed Harouni is a Deep Learning Solutions Architect for medical imaging at NVIDIA. Ahmed received his PhD in Electrical and Computer Engineering from Johns Hopkins University focusing on MR image acquisition and image processing."}}]}</script> <!-- / The SEO Framework by Sybre Waaijer | 17.04ms meta | 0.59ms boot --> <link rel='dns-prefetch' href='//developer-blogs.nvidia.com' /> <link rel='dns-prefetch' href='//secure.gravatar.com' /> <link rel='dns-prefetch' href='//widgets.wp.com' /> <link rel='dns-prefetch' href='//s0.wp.com' /> <link rel='dns-prefetch' href='//0.gravatar.com' /> <link rel='dns-prefetch' href='//1.gravatar.com' /> <link rel='dns-prefetch' href='//2.gravatar.com' /> <link rel='dns-prefetch' href='//v0.wordpress.com' /> <link href='https://assets.adobedtm.com' rel='preconnect' /> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/resources/assets/scripts/munchkin.js?ver=1732134315" id="munchkin-js-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/resources/assets/scripts/user-dropdown.js?ver=1732134315" id="user_dropdown.js-js"></script> <link rel="https://api.w.org/" href="https://developer-blogs.nvidia.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://developer-blogs.nvidia.com/wp-json/wp/v2/posts/85863" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://developer-blogs.nvidia.com/xmlrpc.php?rsd" /> <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://developer-blogs.nvidia.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fcomputed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim%2F" /> <link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://developer-blogs.nvidia.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fcomputed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim%2F&#038;format=xml" /> <link rel="alternate" hreflang="en" href="https://developer.nvidia.com/blog/computed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim/" title="en_US" /> <link rel="alternate" hreflang="zh" href="https://developer.nvidia.com/zh-cn/blog/computed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim/" title="zh_CN" /> <!-- Stream WordPress user activity plugin v4.0.1 --> <!--wp code prettify--> <script src="//assets.adobedtm.com/5d4962a43b79/c1061d2c5e7b/launch-191c2462b890.min.js" data-ot-ignore="true"></script> <link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.12.1/css/all.css" integrity="sha384-TxKWSXbsweFt0o2WqfkfJRRNVaPdzXJ/YLqgStggBVRREXkwU7OKz+xXtqOU4u8+" crossorigin="anonymous" media="none" onload="if(media!='all')media='all'"> <script src='https://developer-blogs.nvidia.com/wp-content/plugins/nv-faceted-search/js/faceted-search/build/direflowBundle.js?ver=b82bf53'></script> </head> <body class="post-template-default single single-post postid-85863 single-format-standard computed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim app-data index-data singular-data single-data single-post-data single-post-computed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim-data"> <svg xmlns="http://www.w3.org/2000/svg" class="hide" style="display: none;"> <symbol id="n24-user-circle" viewBox="0 0 24 24"> <defs> </defs> <rect id="n24-icon-user-circle-bounds" class="n24-bounds" width="24" height="24"></rect> <g id="n24-icon-user-circle"> <circle id="user-circle" class="n24-user-circle-cls-1" cx="12" cy="12" r="9.75"></circle> <polyline id="user-body" class="n24-user-circle-cls-1" points="17.55 20.01 16.34 15.48 7.66 15.48 6.45 20.01"></polyline> <circle id="user-head" class="n24-user-circle-cls-1" cx="12" cy="9.91" r="3.48"></circle> </g> </symbol> </svg> <header class="page-header"> <div class="container"> <button class="navbar-toggle" type="button"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <div class="logo"> <a class="primary-logo" href="/" title="Home" data-wpel-link="internal" target="_blank" rel="follow noopener"> <img alt="Home" width="142" height="32" src="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/dist/images/nvidia-logo_28b633c7.svg"> </a> <a class="secondary-logo" href="/" title="Home" data-wpel-link="internal" target="_blank" rel="follow noopener">DEVELOPER</a> </div> <nav class="navbar primary navbar-expand-md navbar-inverse"> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <div class="menu-top-menu-container"><ul id="menu-top-menu" class="menu nav navbar-nav primary mr-auto"><li id="menu-item-25291" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25291"><a title="Home" href="/" class="nav-link" data-wpel-link="internal" target="_blank" rel="follow noopener">Home</a></li><li id="menu-item-25292" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25292"><a title="Blog" href="/blog" class="nav-link active" data-wpel-link="internal" target="_blank" rel="follow noopener">Blog</a></li><li id="menu-item-25293" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25293"><a title="Forums" href="https://forums.developer.nvidia.com/" class="nav-link" data-wpel-link="internal" target="_blank" rel="follow noopener">Forums</a></li><li id="menu-item-25294" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25294"><a title="Docs" href="https://docs.nvidia.com/" class="nav-link" data-wpel-link="internal" target="_blank" rel="follow noopener">Docs</a></li><li id="menu-item-25295" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25295"><a title="Downloads" href="https://developer.nvidia.com/downloads" class="nav-link" data-wpel-link="internal" target="_blank" rel="follow noopener">Downloads</a></li><li id="menu-item-25296" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25296"><a title="Training" href="https://www.nvidia.com/en-us/training/" class="nav-link" data-wpel-link="internal" target="_blank" rel="follow noopener">Training</a></li></ul></div> </div> </nav> <nav class="navbar navbar-right" id="topRightNavbar"> <ul class="nav navbar-nav navbar-margin navbar-right navbar-margin-media login-nav"> <li class="search" id="search-top"> <div class="search-form" id="search-top-form"> <form class="gss form-search content-search" data-base-url="https://developer.nvidia.com/blog/" action="https://developer.nvidia.com/blog/search-posts" method="GET" id="nvidia-site-search-form" accept-charset="UTF-8"> <div> <div class="input-group"> <div id="top-site-search-form"> <input placeholder="Search" class="form-control form-text" type="text" id="edit-term" name="q" value="" size="15" maxlength="128"> </div> <span class="input-group-btn"> <button type="submit" class="btn btn-default"> <i class="fa fa-search" aria-hidden="true"></i> </button> </span> </div> <button class="btn element-invisible btn-primary form-submit" type="submit" id="edit-submit" name="op" value="Search">Search</button> </div> </form> </div> </li> <li class="leaf" id="dzauth_join_link"> <a href="https://developer.nvidia.com/login" class="cta--prim nv-join" data-wpel-link="internal" target="_blank" rel="follow noopener">Join</a> </li> <li class="leaf last" id="dzauth_login_link"> <a href="https://developer.nvidia.com/login" class="nv-login" data-wpel-link="internal" target="_blank" rel="follow noopener"> <svg aria-label="User Account" class="n24-icon nvprofileicon n24-account" style="width: 24px; height: 24px;"> <use xlink:href="#n24-user-circle"></use> </svg> </a> </li> </ul> </nav> </div> </header> <section class="main"> <div class="faceted-search-top-wrapper"> <div class="container"> <div class="row"> <div class="col col-lg-12 faceted-search-component-wrapper"> <faceted-search-bar appUrl="https://developer.nvidia.com/blog" componentTitle="Technical Blog" text="" subscribeUrl="https://developer.nvidia.com/email-signup" subscribeLabel="Subscribe" locale="en-US" redirectUrl="https://developer.nvidia.com/blog/search-posts/" autocompleteEndpointUrl="https://developer.nvidia.com/blog/wp-json/faceted-search/v1/autocomplete/" data-search-page="false"></faceted-search-bar> </div> </div> </div> </div> <div class="search-filters-component-wrapper--inner-page position-fixed w-100"> <div class="container"> <div class="row"> <faceted-search-filters endpoint="https://developer.nvidia.com/blog/wp-json/faceted-search/v1/select/" redirectUrl="https://developer.nvidia.com/blog/search-posts/" data-expanded="false" data-with-redirect="true" data-with-overlay="false" sortBy="post_date" locale="en-US" handleURls=""></faceted-search-filters> </div> </div> </div> <div class="container single-page"> <div id="main-content" class="row"> <script> sessionStorage.removeItem('facets.search.text'); sessionStorage.removeItem('facets.search.text-copy'); sessionStorage.removeItem('facets.search.filters'); </script> <div class="col-sm-12 d-none text-right sidebar-toggle-link-wrapper"> <a class="sidebar-toggle sidebar-toggle-link" href="#main-content-end"> Related Resources <i class="fa fa-angle-right" aria-hidden="true"></i> </a> </div> <div class="main-content col-lg-9 col-md-9 mt-0 mb-0"> <div class="post-card--single"> <div class="row"> <div class="col-lg-12 mb-0"> <div class="card--post-attributes"> <span class="category-name content-s"> <a href="https://developer.nvidia.com/blog/category/computer-vision/" data-wpel-link="internal" target="_blank" rel="follow noopener">Computer Vision / Video Analytics</a> </span> <span class="post-rate-widget content-s"></span> <span class="post-lang-switcher"> <div class="posts-filter-form"><div class="filter-item form-type-select"><select class="msls_languages"><option value="https://developer.nvidia.com/blog/computed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim/" selected>English</option><option value="https://developer.nvidia.com/zh-cn/blog/computed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim/">中文</option></select></div></div> </span> </div> <h1 class="h--large txt-clr--blck mt-2 mb-0">Computed Tomography Organ and Disease Segmentation Using the NVIDIA VISTA-3D NIM Microservice</h1> <div class="post-info"> <div class="post-published-date"> Jul 26, 2024 </div> <div class="post-authors"> By <a href="https://developer.nvidia.com/blog/author/ahmedharouni/" title="Posts by Ahmed Harouni" class="author url fn" rel="author follow noopener" data-wpel-link="internal" target="_blank">Ahmed Harouni</a> and <a href="https://developer.nvidia.com/blog/author/mzephyr/" title="Posts by Michael Zephyr" class="author url fn" rel="author follow noopener" data-wpel-link="internal" target="_blank">Michael Zephyr</a> </div> <div class="card--post-attributes-secondary card--post-attributes-header"> <div class="post--rate secondary--attribute"> <div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_not_liked"><button type="button" aria-label="Like Button" data-ulike-id="85863" data-ulike-nonce="402226ddf3" data-ulike-type="post" data-ulike-template="wpulike-heart" data-ulike-display-likers="" data-ulike-likers-style="popover" class="wp_ulike_btn wp_ulike_put_text wp_post_btn_85863"><span><i class="far fa-thumbs-up"></i></span> </button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+10"></span> </div></div> <span class="js-like-click like-click"> Like </span> </div> <div class="post--comments-count secondary--attribute"> <a href="#entry-content-comments"> <i class="fad fa-comment-alt-lines"></i> Discuss (0) </a> </div> </div> </div> <img width="828" height="466" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/monai-vista3d-nim-featured.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Three CT scan segments on a black background." decoding="async" fetchpriority="high" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/monai-vista3d-nim-featured.jpg 828w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/monai-vista3d-nim-featured-300x169.jpg 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/monai-vista3d-nim-featured-625x352.jpg 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/monai-vista3d-nim-featured-179x101.jpg 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/monai-vista3d-nim-featured-768x432.jpg 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/monai-vista3d-nim-featured-645x363.jpg 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/monai-vista3d-nim-featured-500x281.jpg 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/monai-vista3d-nim-featured-160x90.jpg 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/monai-vista3d-nim-featured-362x204.jpg 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/monai-vista3d-nim-featured-195x110.jpg 195w" sizes="(max-width: 828px) 100vw, 828px" /> </div> </div> </div> </div> <div class="col-lg-3 col-md-3 mt-0 mb-0"></div> <div class="main-content col-lg-9 col-md-9 mt-0"> <div class="entry-meta-social"> <ul class="entry-meta-social-links-list"> <li><a data-wpel-link="external" href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fcomputed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim%2F" class="for-linkedin" target="_blank" rel="follow external noopener">L</a></li> <li><a data-wpel-link="external" href="https://twitter.com/intent/tweet?text=Computed+Tomography+Organ+and+Disease+Segmentation+Using+the+NVIDIA+VISTA-3D+NIM+Microservice+%7C+NVIDIA+Technical+Blog+https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fcomputed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim%2F" class="for-twitter" target="_blank" rel="follow external noopener">T</a></li> <li><a data-wpel-link="external" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fcomputed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim%2F" class="for-facebook" target="_blank" rel="follow external noopener">F</a></li> <li><a data-wpel-link="external" href="https://www.reddit.com/submit?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fcomputed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim%2F&amp;title=Computed+Tomography+Organ+and+Disease+Segmentation+Using+the+NVIDIA+VISTA-3D+NIM+Microservice+%7C+NVIDIA+Technical+Blog" class="for-reddit" target="_blank" rel="follow external noopener">R</a></li> <li><a href="mailto:?subject=I'd like to share a link with you&body=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fcomputed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim%2F" class="for-mail">E</a></li> </ul> </div> <div class="entry-content"> <p>Over 300M computed tomography (CT) scans are performed globally, 85M in the US alone. Radiologists are looking for ways to speed up their workflow and generate accurate reports, so having a foundation model to segment all organs and diseases would be helpful. Ideally, you’d have an optimized way to run this model in production at scale.&nbsp;</p> <p>NVIDIA Research has created a new foundation model to segment full-body CT images and has packaged it into a highly optimized container that can scale in deployment. In this post, we discuss the VISTA-3D foundation model, <a href="https://www.nvidia.com/en-us/ai/" data-wpel-link="internal" target="_blank" rel="follow noopener">NVIDIA NIM</a>, and how to run the model on your data.</p> <h2 id="vista-3d&nbsp;&nbsp;" class="wp-block-heading">VISTA-3D&nbsp;&nbsp;<a href="#vista-3d&nbsp;&nbsp;" class="heading-anchor-link"><i class="fas fa-link"></i></a></h2> <p>Vision foundation models have attracted increasing interest. In the context of medical image analysis, two essential features make these models particularly practical:&nbsp;</p> <ul class="wp-block-list"> <li>Fast and precise inference for common tasks</li> <li>Effective adaptation or zero-shot ability to novel tasks</li> </ul> <p>NVIDIA has been focusing on 3D CT segmentation and recently developed<a href="https://arxiv.org/abs/2406.05285" data-wpel-link="exclude"> VISTA-3D (Versatile Imaging SegmenTation and Annotation</a>). The model is trained systematically on more than 12K volumes encompassing 127 types of human anatomical structures and various lesions (lung nodules, liver tumors, pancreatic tumors, colon tumors, bone lesions, and kidney tumors).&nbsp;</p> <p>It provides accurate out-of-box segmentation as well as state-of-the-art, zero-shot interactive segmentation. The novel model design and training recipe represent a promising step toward developing a versatile medical image foundation model.&nbsp;</p> <p>VISTA-3D is a domain-specialized interactive foundation model that combines semantic segmentation with interactivity, offering high accuracy and adaptability across diverse anatomical areas for medical imaging. It has the following core workflows:&nbsp;</p> <ul class="wp-block-list"> <li><strong>Segment everything:</strong> Enables whole body exploration, crucial for understanding complex diseases affecting multiple organs and for holistic treatment planning.&nbsp;</li> <li><strong>Segment using class:</strong> Provides detailed sectional views based on specific classes, essential for targeted disease analysis or organ mapping, such as tumor identification in critical organs.&nbsp;</li> <li><strong>Segment point prompts:</strong> Enhances segmentation precision through user-directed, click-based selection. This interactive approach accelerates the creation of accurate ground-truth data, essential in medical imaging analysis.&nbsp;</li> </ul> <p>Figure 1 shows a high-level diagram of the VISTA-3D architecture, with an encoder layer followed by two decoder layers in parallel. One decoder is for the automatic segmentation while the other decoder is for the point prompt.&nbsp;</p> <p>Each head takes in corresponding input as class prompts or point clicks by the user to guide the segmentation. Each head also results in its own segmentation results, which are then combined into the final segmentation result using a merging algorithm.&nbsp;</p> <p>For more information about the architecture, see the <a href="https://arxiv.org/abs/2406.05285" data-wpel-link="exclude">VISTA3D: Versatile Imaging SegmenTation and Annotation model for 3D Computed Tomography</a> research paper.</p> <div class="wp-block-image"> <figure class="aligncenter size-full-page-width"><a href="https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/vista-3d-architecture.png" data-wpel-link="internal" target="_blank" rel="follow noopener"><img decoding="async" width="1024" height="351" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/vista-3d-architecture-1024x351.png" alt="Diagram shows that the input image goes through an encoder and then two different decoders, one for automatic segmentation and the other for point segmentation." class="wp-image-85868" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/vista-3d-architecture-1024x351.png 1024w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/vista-3d-architecture-300x103.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/vista-3d-architecture-625x214.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/vista-3d-architecture-179x61.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/vista-3d-architecture-768x263.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/vista-3d-architecture-645x221.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/vista-3d-architecture-500x172.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/vista-3d-architecture-160x55.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/vista-3d-architecture-362x124.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/vista-3d-architecture-321x110.png 321w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/vista-3d-architecture.png 1271w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><em>Figure 1. High-level network architecture for VISTA-3D</em></figcaption></figure></div> <h2 id="vista-3d_nim&nbsp;microservice" class="wp-block-heading">VISTA-3D NIM&nbsp;microservice<a href="#vista-3d_nim&nbsp;microservice" class="heading-anchor-link"><i class="fas fa-link"></i></a></h2> <p>All NVIDIA NIM microservices are hosted on the <a href="https://build.nvidia.com" data-wpel-link="internal" target="_blank" rel="follow noopener">NVIDIA API Catalog</a> for you to test out different microservices and find out about their capabilities.&nbsp;&nbsp;&nbsp;</p> <p>Find VISTA-3D under <strong>Healthcare</strong> and test it out with sample data. View the test dataset in either axial and coronal or sagittal view. VISTA-3D can segment over 100 organs, or you can select specific classes of interest.&nbsp;&nbsp;&nbsp;</p> <h2 id="using_nim_microservices_hosted_by_nvidia&nbsp;&nbsp;" class="wp-block-heading">Using NIM microservices hosted by NVIDIA&nbsp;&nbsp;<a href="#using_nim_microservices_hosted_by_nvidia&nbsp;&nbsp;" class="heading-anchor-link"><i class="fas fa-link"></i></a></h2> <p>You can run VISTA-3D on your data using the NIM microservice hosted by NVIDIA. Sign up to <a href="https://build.nvidia.com/explore/healthcare?signin=true" data-wpel-link="internal" target="_blank" rel="follow noopener">get a personal key</a>. NVIDIA gives users 1000 free credits to try out any of the NIM microservices.&nbsp;</p> <p>Give your personal key a name, and an expiration date. Include <strong>AI Foundation Models and Endpoints</strong> in the services included. You use this key for all API calls. For more information, see <a href="https://docs.nvidia.com/launchpad/ai/base-command-coe/latest/bc-coe-docker-basics-step-02.html#optionally-generate-an-ngc-key" data-wpel-link="internal" target="_blank" rel="follow noopener">Optionally Generate an NGC Key</a>.&nbsp;</p> <p>To check on your credits, log in to the <a href="https://build.nvidia.com" data-wpel-link="internal" target="_blank" rel="follow noopener">NVIDIA API Catalog</a> and check your profile. Your credits are listed at the upper right.</p> <p>To test your first VISTA-3D NIM microservice call, copy the code of your favorite language (shell script, Python, or Node.JS) and use the recently generated <code>API_KEY</code> value to run inference on the same sample that you used on the NVIDIA AI solution page, similar to the following example in Python.&nbsp;&nbsp;</p> <div class="wp-block-syntaxhighlighter-code "><pre class="brush: python; title: ; notranslate" title=""> import requests invoke_url = &quot;https://health.api.nvidia.com/v1/medicalimaging/nvidia/vista-3d&quot; headers = {&quot;Authorization&quot;: &quot;Bearer &lt;place you key here it should start with nvapi-&gt; &quot;,} filename=&quot;example-1&quot; payload = { &quot;image&quot;: f&quot;https://assets.ngc.nvidia.com/products/api-catalog/vista3d/{filename}.nii.gz&quot;, &quot;output&quot;: {&quot;extension&quot;: &quot;.nii.gz&quot;,&quot;dtype&quot;: &quot;uint8&quot;}} session = requests.Session() response = session.post(invoke_url, headers=headers, json=payload) response.raise_for_status() file_name=f&quot;{filename}_seg.nii.gz&quot; with open(file_name, &quot;wb&quot;) as file: file.write(response.content) print(&quot;File downloaded successfully!&quot;) </pre></div> <p>Congratulations, you just ran your first VISTA-3D NIM microservice call on the sample data. This also confirms that your <code>API_KEY</code> value works and you have enough credits, so you are now ready to test with your own data.&nbsp;&nbsp;</p> <p>Each inference call uses one credit and your credits are shared across all NIM microservices.&nbsp;&nbsp;</p> <h2 id="running_vista-3d_with_your_data&nbsp;" class="wp-block-heading">Running VISTA-3D with your data&nbsp;<a href="#running_vista-3d_with_your_data&nbsp;" class="heading-anchor-link"><i class="fas fa-link"></i></a></h2> <p>To see VISTA-3D inference on your own data, you must set up an FTP server to serve your medical images.&nbsp;</p> <p>Unlike LLM models that take a compressible small text payload, medical images are typically large. Instead of sending large images in the API payload, you send the image URL to the FTP server. The VISTA-3D NIM microservice then downloads the images from the FTP server and runs inference before sending back the inference result (Figure 2).&nbsp;&nbsp;</p> <div class="wp-block-image"> <figure class="aligncenter size-full"><img decoding="async" width="904" height="398" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/comparison-llm-and-vista-3d-nims-1.png" alt="Diagram shows that the LLM NIM takes the text directly in the payload, while the VISTA-3D NIM takes the URL to the image so it is downloaded from the HTTP server." class="wp-image-86120" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/comparison-llm-and-vista-3d-nims-1.png 904w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/comparison-llm-and-vista-3d-nims-1-300x132.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/comparison-llm-and-vista-3d-nims-1-625x275.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/comparison-llm-and-vista-3d-nims-1-179x79.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/comparison-llm-and-vista-3d-nims-1-768x338.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/comparison-llm-and-vista-3d-nims-1-645x284.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/comparison-llm-and-vista-3d-nims-1-500x220.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/comparison-llm-and-vista-3d-nims-1-160x70.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/comparison-llm-and-vista-3d-nims-1-362x159.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/comparison-llm-and-vista-3d-nims-1-250x110.png 250w" sizes="(max-width: 904px) 100vw, 904px" /><figcaption class="wp-element-caption"><em>Figure 2. Difference between LLM and VISTA-3D NIM microservice</em></figcaption></figure></div> <h3 id="share_files_on_github&nbsp;" class="wp-block-heading">Share files on GitHub&nbsp;<a href="#share_files_on_github&nbsp;" class="heading-anchor-link"><i class="fas fa-link"></i></a></h3> <p>The simplest and fastest way to share sample data is to use GitHub:</p> <ol class="wp-block-list"> <li>Log into your GitHub account.</li> <li>Create a new project and make sure that it is public.&nbsp;</li> <li>Choose <strong>Upload file</strong> and upload some NIfTI files with .nii or .nii.gz. Make sure that the size of each is &lt;25 MB.&nbsp;&nbsp;</li> <li>Select your NIfTI file, right-click <strong>Raw</strong>, and then choose <strong>Copy link address</strong>. </li> </ol> <p>The resulting URL should look something like the following example:</p> <div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate" title=""> https://github.com/&lt;your_user_name&gt;/Nifti_samples/raw/main/filename.nii.gz </pre></div> <p>You can now change the URL in the earlier code example to point to your file and VISTA-3D downloads it.&nbsp;&nbsp;</p> <div class="wp-block-syntaxhighlighter-code "><pre class="brush: python; title: ; notranslate" title=""> payload = { &quot;image&quot;: f&quot;https://github.com/&lt;your_user_name&gt;/Nifti_samples/raw/main/filename.nii.gz&quot;, &quot;output&quot;: {&quot;extension&quot;: &quot;.nii.gz&quot;,&quot;dtype&quot;: &quot;uint8&quot;}} </pre></div> <h3 id="share_your_sample_data_in_the_cloud&nbsp;&nbsp;" class="wp-block-heading">Share your sample data in the cloud&nbsp;&nbsp;<a href="#share_your_sample_data_in_the_cloud&nbsp;&nbsp;" class="heading-anchor-link"><i class="fas fa-link"></i></a></h3> <p>If you have some data already in the cloud, you can expose a small number of NIfTI images to test VISTA-3D. In that case, start a simple NGINX server or a simple Python HTTP server from your local file system directory. This must be a publicly accessible server or port so that the VISTA-3D microservice hosted by NVIDIA can download the data.&nbsp;&nbsp;</p> <p>First, connect to the server using SSH, move some sample data, and then start a simple Python HTTP file server:</p> <div class="wp-block-syntaxhighlighter-code "><pre class="brush: python; title: ; notranslate" title=""> python -m http.server &lt;port&gt; </pre></div> <p>You should be able to access the files from a browser using <code>htttp://serverIP:port/</code>.&nbsp;&nbsp;</p> <p>Connect to the FTP server created earlier and change the lines to point to your HTTP server.&nbsp;&nbsp;</p> <div class="wp-block-syntaxhighlighter-code "><pre class="brush: python; title: ; notranslate" title=""> filename=&quot;&lt;file_on_http&quot; payload = { &quot;image&quot;: f&quot;http://&lt;your server ip:port /{filename}.nii.gz&quot;, </pre></div> <p>You should see the HTTP file server responding to the NIM request to download the image file and then you will get the inference result.&nbsp;&nbsp;</p> <h2 id="running_nim_microservices_locally&nbsp;&nbsp;" class="wp-block-heading">Running NIM microservices locally&nbsp;&nbsp;<a href="#running_nim_microservices_locally&nbsp;&nbsp;" class="heading-anchor-link"><i class="fas fa-link"></i></a></h2> <p>To get started running NIM microservices locally, <a href="https://www.nvidia.com/en-us/ai/nim-notifyme/" data-wpel-link="internal" target="_blank" rel="follow noopener">apply for NVIDIA NIM access</a>. After you&#8217;ve applied, the NVIDIA team will contact you to schedule an onboarding meeting. You&#8217;ll need an NVAIE license or a trial license, but it&#8217;s important to wait for instructions before applying for a license.&nbsp;</p> <p>After completing these steps and receiving approval, you&#8217;ll gain access to the VISTA-3D NIM microservice Docker container. This enables you to run the microservice on your preferred hardware, whether locally or in the cloud.&nbsp;</p> <p>In the following sections, we show you an example setup using Docker Compose to help you get up and running quickly.</p> <h3 id="prerequisites&nbsp;&nbsp;" class="wp-block-heading">Prerequisites&nbsp;&nbsp;<a href="#prerequisites&nbsp;&nbsp;" class="heading-anchor-link"><i class="fas fa-link"></i></a></h3> <p>You should have the Docker, Docker Compose, and NVIDIA drivers installed. To check, run the following command, which pulls a small image of the latest CUDA release, starts the Docker container, and then checks that you can access the GPU from within the container.&nbsp;&nbsp;</p> <div class="wp-block-syntaxhighlighter-code "><pre class="brush: python; title: ; notranslate" title=""> docker run --rm --gpus all nvidia/cuda: 12.5.0-base-ubuntu20.04 nvidia-smi </pre></div> <p>&nbsp;You should see an output showing the GPUs that you have on your system.&nbsp;</p> <h3 id="docker_compose_file&nbsp;&nbsp;" class="wp-block-heading">Docker Compose file&nbsp;&nbsp;<a href="#docker_compose_file&nbsp;&nbsp;" class="heading-anchor-link"><i class="fas fa-link"></i></a></h3> <p>The Docker Compose code example starts two containers: </p> <ul class="wp-block-list"> <li><code>nim-vista</code> to run inference </li> <li><code>nim-nginx</code> to serve your images</li> </ul> <div class="wp-block-syntaxhighlighter-code "><pre class="brush: python; title: ; notranslate" title=""> # docker-compose.yml version: &quot;3.9&quot; services: nim: container_name: nim-vista image: nvcr.io/nvidia/nim/medical_imaging_vista3d:24.03 ports: - 8008:8008 ############################## nginx: container_name: nim-nginx image: nginx:1.19-alpine-perl volumes: - ./nginx.conf:/etc/nginx/nginx.conf - &lt;local/folder/containing/nifti/files&gt;:/files ports: - 8009:8009 </pre></div> <p>Change the directory to <code>&lt;local/folder/containing/nifti/files&gt;</code>.&nbsp;&nbsp;</p> <h3 id="nginx_basic_configuration&nbsp;&nbsp;" class="wp-block-heading">Nginx basic configuration&nbsp;&nbsp;<a href="#nginx_basic_configuration&nbsp;&nbsp;" class="heading-anchor-link"><i class="fas fa-link"></i></a></h3> <p>In the same folder, create the <code>nginx.conf</code> file:&nbsp;&nbsp;</p> <div class="wp-block-syntaxhighlighter-code "><pre class="brush: python; title: ; notranslate" title=""> worker_processes auto; pid /etc/nginx/.nginx.pid; events { worker_connections 768; } http { server { listen 8009; # internal port root /files; # Static file directory autoindex on; # Enable directory listing location / { try_files $uri $uri/ = 404; } } } </pre></div> <h3 id="run_the_inference_call&nbsp;&nbsp;" class="wp-block-heading">Run the inference call&nbsp;&nbsp;<a href="#run_the_inference_call&nbsp;&nbsp;" class="heading-anchor-link"><i class="fas fa-link"></i></a></h3> <p>To confirm that your setup is correct, run the following curl command:&nbsp;</p> <div class="wp-block-syntaxhighlighter-code "><pre class="brush: python; title: ; notranslate" title=""> curl http://localhost:8008/health/ready </pre></div> <p>This command should return true, indicating that the VISTA-3D NIM microservice is up and running.&nbsp;</p> <p>To confirm that <code>nginx</code> is serving your data correctly, on your browser, check<a href="http://localhost:8009/" data-wpel-link="external" target="_blank" rel="follow external noopener"> http://localhost:8009</a> to see the folders and files that you are sharing.</p> <p>Now you can reuse the same code from earlier to do inference, with the minor change of pointing to <code>nginx</code> for serving your data, instead of pointing to NVIDIA sample data or your sample files on GitHub.&nbsp;</p> <div class="wp-block-syntaxhighlighter-code "><pre class="brush: python; highlight: [3,6,8]; title: ; notranslate" title=""> import requests invoke_url = “http://localhost:8008/vista3d/inference” headers = {} filename=&quot;test_w_nginx&quot; payload = { &quot;image&quot;: f&quot;https://localhost:8809/&lt;file Path as you it shows in nginx webpage&gt;.nii.gz&quot;, &quot;output&quot;: {&quot;extension&quot;: &quot;.nii.gz&quot;,&quot;dtype&quot;: &quot;uint8&quot;}} session = requests.Session() response = session.post(invoke_url, headers=headers, json=payload) response.raise_for_status() file_name=f&quot;{filename}_seg.nii.gz&quot; with open(file_name, &quot;wb&quot;) as file: file.write(response.content) print(&quot;File downloaded successfully!&quot;) </pre></div> <p>The <code>invoke_url</code> value now points to your host and the headers are empty as you don’t need to authenticate using the NGC key.&nbsp;</p> <p>After this runs, you should have the organs segmentation file with all the labels.&nbsp;</p> <h3 id="security_tip&nbsp;&nbsp;" class="wp-block-heading">Security tip&nbsp;&nbsp;<a href="#security_tip&nbsp;&nbsp;" class="heading-anchor-link"><i class="fas fa-link"></i></a></h3> <p>When you get this running, you probably don’t want to have the NGINX port open serving your data to anyone with access to the host.&nbsp;</p> <p>Instead, limit access to VISTA-3D NIM microservice. Edit the <code>docker-compose.yml</code> file and remove the port mapping of <code>nginx</code> by deleting the lines for <code>ports: - 8009:8009</code>.&nbsp;</p> <p>Next, change the infer call to use <code>nim-nginx</code> instead of <code>localhost</code>, which is not accessible anymore.&nbsp;</p> <div class="wp-block-syntaxhighlighter-code "><pre class="brush: python; title: ; notranslate" title=""> &quot;image&quot;:fhttps://nim-nginx:8809/{filename}.nii.gz </pre></div> <p>The internal name <code>nim-nginx</code> is accessible to NIM as Docker compose places all services in the same network.&nbsp;&nbsp;</p> <h2 id="conclusion&nbsp;&nbsp;" class="wp-block-heading">Conclusion&nbsp;&nbsp;<a href="#conclusion&nbsp;&nbsp;" class="heading-anchor-link"><i class="fas fa-link"></i></a></h2> <p>In this post, we introduced the new NVIDIA AI Foundation model, VISTA-3D, which can segment over 100 organs and multiple diseases in a CT image. We also showed you how NVIDIA NIM simplifies using this model.</p> <p>Interested in enhancing your CT image analysis? <a href="https://www.nvidia.com/en-us/ai/nim-notifyme/" data-wpel-link="internal" target="_blank" rel="follow noopener">Apply for access to the VISTA-3D NIM microservice</a>. After being approved, you can run this powerful model on your own hardware, improving your segmentation accuracy and streamlining your workflow.</p> </div> <div class="block--prospero-assets"> <h2 class="h--smaller txt-clr--blck">Related resources</h2> <ul><li>GTC session: <a class='wpel-ignore' target='_blank' href='https://www.nvidia.com/gtc/session-catalog/?tab.catalogallsessionstab=1700692987788001F1cG&search=S62320&ncid=em-even-124008-vt33-23spring#/'>Learn how to Streamline Medical Imaging Annotation and Training workflows with MONAI Cloud APIs</a></li><li>GTC session: <a class='wpel-ignore' target='_blank' href='https://www.nvidia.com/gtc/session-catalog/?tab.catalogallsessionstab=1700692987788001F1cG&search=S62504&ncid=em-even-124008-vt33-23spring#/'>Optimizing Your AI Strategy to Develop and Deploy Novel Deep Learning Models in the Cloud for Medical Image Analysis</a></li><li>NGC Containers: <a class='wpel-ignore' target='_blank' href='https://catalog.ngc.nvidia.com/orgs/nim/teams/deepmind/containers/alphafold2?ncid=em-nurt-245273-vt33'>AlphaFold2</a></li><li>SDK: <a class='wpel-ignore' target='_blank' href='https://build.nvidia.com/nvidia/vista-3d?ncid=em-nurt-245273-vt33'>VISTA-3D NIM</a></li><li>SDK: <a class='wpel-ignore' target='_blank' href='https://build.nvidia.com/nvidia/vista-3d?ncid=em-nurt-245273-vt33'>Embed QA-4 NIM</a></li><li>SDK: <a class='wpel-ignore' target='_blank' href='https://docs.nvidia.com/clara-viz/?ncid=em-nurt-245273-vt33'>Clara Viz</a></li></ul> </div> <div class="card--post-attributes-secondary"> <div class="post--comments-count secondary--attribute"> <a href="#entry-content-comments"> <i class="fad fa-comment-alt-lines"></i> Discuss (0) </a> </div> <div class="post--rate secondary--attribute"> <div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_not_liked"><button type="button" aria-label="Like Button" data-ulike-id="85863" data-ulike-nonce="402226ddf3" data-ulike-type="post" data-ulike-template="wpulike-heart" data-ulike-display-likers="" data-ulike-likers-style="popover" class="wp_ulike_btn wp_ulike_put_text wp_post_btn_85863"><span><i class="far fa-thumbs-up"></i></span> </button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+10"></span> </div></div> <span class="js-like-click like-click"> Like </span> </div> </div> <div class="card--post-attributes-secondary tags"> <div class="caption"> <h2 class="h--smaller txt-clr--blck">Tags</h2> </div> <div class="content-s post-tags--list mt-0"> <a href="https://developer.nvidia.com/blog/category/computer-vision/" data-wpel-link="internal" target="_blank" rel="follow noopener">Computer Vision / Video Analytics</a> | <a href="https://developer.nvidia.com/blog/category/data-center-cloud/" data-wpel-link="internal" target="_blank" rel="follow noopener">Data Center / Cloud</a> | <a href="https://developer.nvidia.com/blog/recent-posts/?industry=Healthcare+%26+Life+Sciences" data-wpel-link="internal" target="_blank" rel="follow noopener">Healthcare & Life Sciences</a> | <a href="https://developer.nvidia.com/blog/recent-posts/?products=NIM" data-wpel-link="internal" target="_blank" rel="follow noopener">NIM</a> | <a href="https://developer.nvidia.com/blog/recent-posts/?learning_levels=Intermediate+Technical" data-wpel-link="internal" target="_blank" rel="follow noopener">Intermediate Technical</a> | <a href="https://developer.nvidia.com/blog/recent-posts/?content_types=Deep+dive" data-wpel-link="internal" target="_blank" rel="follow noopener">Deep dive</a> | <a href="https://developer.nvidia.com/blog/tag/featured/" data-wpel-link="internal" target="_blank" rel="follow noopener">featured</a> | <a href="https://developer.nvidia.com/blog/tag/image-segmentation/" data-wpel-link="internal" target="_blank" rel="follow noopener">Instance / Semantic Segmentation</a> </div> </div> <div class="post-authors-list"> <div class="entry-content-author"> <div class="caption"> <h2 class="h--smaller txt-clr--blck"> About the Authors </h2> </div> <div class="media author-info"> <div class="author-media-left media-left"> <img alt='Avatar photo' src='https://developer-blogs.nvidia.com/wp-content/uploads/2021/06/ahmed-Harouni_headshot-square-131x131.jpg' srcset='https://developer-blogs.nvidia.com/wp-content/uploads/2021/06/ahmed-Harouni_headshot-square-262x262.jpg 2x' class='avatar avatar-131 photo' height='131' width='131' loading='lazy' decoding='async'/> </div> <div class="author-media-body media-body"> <b> About Ahmed Harouni </b> <br/> Ahmed Harouni is a Deep Learning Solutions Architect for medical imaging at NVIDIA. Ahmed received his PhD in Electrical and Computer Engineering from Johns Hopkins University focusing on MR image acquisition and image processing. Recently he has been using deep-learning for image segmentation, registration, disease classification and localization. <div id="author-link"> <a href="https://developer.nvidia.com/blog/author/ahmedharouni/" rel="author follow noopener" data-wpel-link="internal" target="_blank"> View all posts by Ahmed Harouni<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 612"><path d="M305 239c9.4 9.4 9.4 24.6 0 33.9L113 465c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l175-175L79 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L305 239z"/></svg> </a> </div> </div> </div> <div class="media author-info"> <div class="author-media-left media-left"> <img alt='Avatar photo' src='https://developer-blogs.nvidia.com/wp-content/uploads/2021/04/Michael-Zephyr-131x131.jpg' srcset='https://developer-blogs.nvidia.com/wp-content/uploads/2021/04/Michael-Zephyr-262x262.jpg 2x' class='avatar avatar-131 photo' height='131' width='131' loading='lazy' decoding='async'/> </div> <div class="author-media-body media-body"> <b> About Michael Zephyr </b> <br/> Michael Zephyr is a developer evangelist on the NVIDIA Clara team and is responsible for helping design the developer experience for all NVIDIA Clara products. He develops and presents content through blog posts, webinars, and conferences that help developers quickly get started. Michael received his master's in computer science specializing in machine learning and interactive intelligence from Georgia Tech University. <div id="author-link"> <a href="https://developer.nvidia.com/blog/author/mzephyr/" rel="author follow noopener" data-wpel-link="internal" target="_blank"> View all posts by Michael Zephyr<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 612"><path d="M305 239c9.4 9.4 9.4 24.6 0 33.9L113 465c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l175-175L79 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L305 239z"/></svg> </a> </div> </div> </div> </div> </div> <div class="entry-content-comments" id="entry-content-comments"> <div class="container" id="pf-disqus-thread"> <div class="row" id="respond"> <div class="col-md-12 related-posts-comments mb-0"><h2 class="h--smaller txt-clr--blck mb-0">Comments</h2></div> </div> <div class="row"> <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12"> <div class="wpdc-comments-loading" id="wpdc-comments" data-post-id="85863"></div> </div> </div> </div> </div> <div id="main-content-end"></div> </div> <div id="sidebar" class="sidebar col-lg-3 col-md-3 mt-0"> <div class="sticky-top-pre"></div> <div class="sidebar-item not-sticky-top"> <div id="sidebar-content" class="sidebar__inner"> <script> window.is_post_page = true; window.nv_homepage_url = 'https://developer.nvidia.com/blog'; </script> <div class="block--related-posts prspr-related" data-source="nv"> <h2 class="h--smaller txt-clr--blck">Related posts</h2> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="74071" data-post-title="Accelerate AI Workflows for 3D Medical Imaging with NVIDIA MONAI Cloud APIs"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1920" height="1080" src="https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/monai-services-anatomy-head.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/monai-services-anatomy-head.jpg 1920w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/monai-services-anatomy-head-300x169.jpg 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/monai-services-anatomy-head-625x352.jpg 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/monai-services-anatomy-head-179x101.jpg 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/monai-services-anatomy-head-768x432.jpg 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/monai-services-anatomy-head-1536x864.jpg 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/monai-services-anatomy-head-645x363.jpg 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/monai-services-anatomy-head-960x540.jpg 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/monai-services-anatomy-head-500x281.jpg 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/monai-services-anatomy-head-160x90.jpg 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/monai-services-anatomy-head-362x204.jpg 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/monai-services-anatomy-head-196x110.jpg 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/monai-services-anatomy-head-1024x576.jpg 1024w" sizes="(max-width: 1920px) 100vw, 1920px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Accelerate AI Workflows for 3D Medical Imaging with NVIDIA MONAI Cloud APIs </h3> </div> </div> <a href="https://developer.nvidia.com/blog/accelerate-ai-workflows-for-3d-medical-imaging-with-nvidia-monai-cloud-apis/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Accelerate AI Workflows for 3D Medical Imaging with NVIDIA MONAI Cloud APIs</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="66710" data-post-title="Visual Foundation Models for Medical Image Analysis"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1600" height="900" src="https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Image of torso from medical segmentation scan." decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1.jpg 1600w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-300x169.jpg 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-625x352.jpg 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-179x101.jpg 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-768x432.jpg 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-1536x864.jpg 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-645x363.jpg 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-960x540.jpg 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-500x281.jpg 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-160x90.jpg 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-362x204.jpg 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-196x110.jpg 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-1024x576.jpg 1024w" sizes="(max-width: 1600px) 100vw, 1600px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Visual Foundation Models for Medical Image Analysis </h3> </div> </div> <a href="https://developer.nvidia.com/blog/visual-foundation-models-for-medical-image-analysis/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Visual Foundation Models for Medical Image Analysis</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="61986" data-post-title="MONAI Reaches 1 Million Download Milestone Driven by Research Breakthroughs and Clinical Adoption"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1639" height="922" src="https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/MONAI-1M-Download.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/MONAI-1M-Download.png 1639w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/MONAI-1M-Download-300x169.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/MONAI-1M-Download-625x352.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/MONAI-1M-Download-179x101.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/MONAI-1M-Download-768x432.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/MONAI-1M-Download-1536x864.png 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/MONAI-1M-Download-500x281.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/MONAI-1M-Download-160x90.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/MONAI-1M-Download-362x204.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/MONAI-1M-Download-196x110.png 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/MONAI-1M-Download-1024x576.png 1024w" sizes="(max-width: 1639px) 100vw, 1639px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> MONAI Reaches 1 Million Download Milestone Driven by Research Breakthroughs and Clinical Adoption </h3> </div> </div> <a href="https://developer.nvidia.com/blog/monai-reaches-1-million-download-milestone-driven-by-research-breakthroughs-and-clinical-adoption/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">MONAI Reaches 1 Million Download Milestone Driven by Research Breakthroughs and Clinical Adoption</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="49445" data-post-title="Novel Transformer Model Achieves State-of-the-Art Benchmarks in 3D Medical Image Analysis"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1005" height="566" src="https://developer-blogs.nvidia.com/wp-content/uploads/2022/06/Swin.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2022/06/Swin.png 1005w, https://developer-blogs.nvidia.com/wp-content/uploads/2022/06/Swin-300x169.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2022/06/Swin-625x352.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2022/06/Swin-179x101.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2022/06/Swin-768x433.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2022/06/Swin-500x282.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2022/06/Swin-160x90.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2022/06/Swin-362x204.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2022/06/Swin-195x110.png 195w" sizes="(max-width: 1005px) 100vw, 1005px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Novel Transformer Model Achieves State-of-the-Art Benchmarks in 3D Medical Image Analysis </h3> </div> </div> <a href="https://developer.nvidia.com/blog/novel-transformer-model-achieves-state-of-the-art-benchmarks-in-3d-medical-image-analysis/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Novel Transformer Model Achieves State-of-the-Art Benchmarks in 3D Medical Image Analysis</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="14382" data-post-title="Fast AI Assisted Annotation and Transfer Learning Powered by the Clara Train SDK"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1600" height="1529" src="https://developer-blogs.nvidia.com/wp-content/uploads/2019/04/pasted-image-0-28.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2019/04/pasted-image-0-28.png 1600w, https://developer-blogs.nvidia.com/wp-content/uploads/2019/04/pasted-image-0-28-300x287.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2019/04/pasted-image-0-28-768x734.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2019/04/pasted-image-0-28-625x597.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2019/04/pasted-image-0-28-314x300.png 314w, https://developer-blogs.nvidia.com/wp-content/uploads/2019/04/pasted-image-0-28-94x90.png 94w, https://developer-blogs.nvidia.com/wp-content/uploads/2019/04/pasted-image-0-28-32x32.png 32w, https://developer-blogs.nvidia.com/wp-content/uploads/2019/04/pasted-image-0-28-362x346.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2019/04/pasted-image-0-28-115x110.png 115w, https://developer-blogs.nvidia.com/wp-content/uploads/2019/04/pasted-image-0-28-1024x979.png 1024w" sizes="(max-width: 1600px) 100vw, 1600px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Fast AI Assisted Annotation and Transfer Learning Powered by the Clara Train SDK </h3> </div> </div> <a href="https://developer.nvidia.com/blog/annotation-transfer-learning-clara-train/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Fast AI Assisted Annotation and Transfer Learning Powered by the Clara Train SDK</span> </a> </div> </div> </div> <div class="block--related-posts hide" data-source="wp"> <h2 class="h--smaller txt-clr--blck">Related posts</h2> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="90989" data-post-title="Build Multimodal Visual AI Agents Powered by NVIDIA NIM"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1920" height="1080" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/metropolis-and-iva-ngc-featured.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Decorative image." decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/metropolis-and-iva-ngc-featured.jpg 1920w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/metropolis-and-iva-ngc-featured-300x169.jpg 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/metropolis-and-iva-ngc-featured-625x352.jpg 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/metropolis-and-iva-ngc-featured-179x101.jpg 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/metropolis-and-iva-ngc-featured-768x432.jpg 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/metropolis-and-iva-ngc-featured-1536x864.jpg 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/metropolis-and-iva-ngc-featured-645x363.jpg 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/metropolis-and-iva-ngc-featured-960x540.jpg 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/metropolis-and-iva-ngc-featured-500x281.jpg 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/metropolis-and-iva-ngc-featured-160x90.jpg 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/metropolis-and-iva-ngc-featured-362x204.jpg 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/metropolis-and-iva-ngc-featured-196x110.jpg 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/metropolis-and-iva-ngc-featured-1024x576.jpg 1024w" sizes="(max-width: 1920px) 100vw, 1920px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Build Multimodal Visual AI Agents Powered by NVIDIA NIM </h3> </div> </div> <a href="https://developer.nvidia.com/blog/build-multimodal-visual-ai-agents-powered-by-nvidia-nim/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Build Multimodal Visual AI Agents Powered by NVIDIA NIM</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="87263" data-post-title="New Foundational Models and Training Capabilities with NVIDIA TAO 5.5"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="640" height="360" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/3386650_Metropolis_IVA_TAO_5-5_Auto-labeling_v02.gif" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="GIF shows multiple photos and images selected within the photos according to a prompt, such as &quot;person with glasses&quot; or &quot;tallest cat.&quot;" decoding="async" loading="lazy" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> New Foundational Models and Training Capabilities with NVIDIA TAO 5.5 </h3> </div> </div> <a href="https://developer.nvidia.com/blog/new-foundational-models-and-training-capabilities-with-nvidia-tao-5-5/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">New Foundational Models and Training Capabilities with NVIDIA TAO 5.5</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="62089" data-post-title="Access the Latest in Vision AI Model Development Workflows with NVIDIA TAO Toolkit 5.0"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1920" height="1080" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/01/tao-toolkit-5-graphic.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="TAO Toolkit graphic" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/01/tao-toolkit-5-graphic.jpg 1920w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/01/tao-toolkit-5-graphic-300x169.jpg 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/01/tao-toolkit-5-graphic-625x352.jpg 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/01/tao-toolkit-5-graphic-179x101.jpg 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/01/tao-toolkit-5-graphic-768x432.jpg 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/01/tao-toolkit-5-graphic-1536x864.jpg 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/01/tao-toolkit-5-graphic-500x281.jpg 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/01/tao-toolkit-5-graphic-160x90.jpg 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/01/tao-toolkit-5-graphic-362x204.jpg 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/01/tao-toolkit-5-graphic-196x110.jpg 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/01/tao-toolkit-5-graphic-1024x576.jpg 1024w" sizes="(max-width: 1920px) 100vw, 1920px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Access the Latest in Vision AI Model Development Workflows with NVIDIA TAO Toolkit 5.0 </h3> </div> </div> <a href="https://developer.nvidia.com/blog/access-the-latest-in-vision-ai-model-development-workflows-with-nvidia-tao-toolkit-5-0-2/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Access the Latest in Vision AI Model Development Workflows with NVIDIA TAO Toolkit 5.0</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="66710" data-post-title="Visual Foundation Models for Medical Image Analysis"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1600" height="900" src="https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Image of torso from medical segmentation scan." decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1.jpg 1600w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-300x169.jpg 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-625x352.jpg 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-179x101.jpg 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-768x432.jpg 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-1536x864.jpg 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-645x363.jpg 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-960x540.jpg 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-500x281.jpg 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-160x90.jpg 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-362x204.jpg 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-196x110.jpg 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/06/MONAI-3D-Torso-1600x900-1-1024x576.jpg 1024w" sizes="(max-width: 1600px) 100vw, 1600px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Visual Foundation Models for Medical Image Analysis </h3> </div> </div> <a href="https://developer.nvidia.com/blog/visual-foundation-models-for-medical-image-analysis/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Visual Foundation Models for Medical Image Analysis</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="62246" data-post-title="Develop AI-Powered Robots, Smart Vision Systems, and More with NVIDIA Jetson Orin Nano Developer Kit"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1829" height="1029" src="https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/jetson-orin-nano-developer-kit-3d-render-.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="NVIDIA Jetson Orin Nano Developer Kit" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/jetson-orin-nano-developer-kit-3d-render-.png 1829w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/jetson-orin-nano-developer-kit-3d-render--300x169.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/jetson-orin-nano-developer-kit-3d-render--625x352.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/jetson-orin-nano-developer-kit-3d-render--179x101.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/jetson-orin-nano-developer-kit-3d-render--768x432.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/jetson-orin-nano-developer-kit-3d-render--1536x864.png 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/jetson-orin-nano-developer-kit-3d-render--500x281.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/jetson-orin-nano-developer-kit-3d-render--160x90.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/jetson-orin-nano-developer-kit-3d-render--362x204.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/jetson-orin-nano-developer-kit-3d-render--196x110.png 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/03/jetson-orin-nano-developer-kit-3d-render--1024x576.png 1024w" sizes="(max-width: 1829px) 100vw, 1829px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Develop AI-Powered Robots, Smart Vision Systems, and More with NVIDIA Jetson Orin Nano Developer Kit </h3> </div> </div> <a href="https://developer.nvidia.com/blog/develop-ai-powered-robots-smart-vision-systems-and-more-with-nvidia-jetson-orin-nano-developer-kit/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Develop AI-Powered Robots, Smart Vision Systems, and More with NVIDIA Jetson Orin Nano Developer Kit</span> </a> </div> </div> </div> </div> </div> </div> </div> </div> </section> <!--wp code prettify--> <script type="text/javascript"> function $(id) {return !id ? null : document.getElementById(id);} loadPrettifyCss = function () { if(!$('prettify_css')) { css = document.createElement('link'); css.id = 'prettify_css'; css.type = 'text/css'; css.rel = 'stylesheet'; css.href = 'https://developer-blogs.nvidia.com/wp-content/plugins/wp-code-prettify/css/prettify.css'; var headNode = document.getElementsByTagName("head")[0]; headNode.appendChild(css); } else { $('prettify_css').href = 'https://developer-blogs.nvidia.com/wp-content/plugins/wp-code-prettify/css/prettify.css'; } if(!$('prettify_custom')) { css = document.createElement('style'); css.id = 'prettify_custom'; css.type = 'text/css'; css.rel = 'stylesheet'; css.innerHTML = 'pre.prettyprint { max-height: 500px; white-space: pre; word-wrap: normal; overflow: auto; background-color: #f8f8f8;border-radius: 3px; } pre.prettyprint[title]:before { float: right; border: 1px solid #ccc; border-radius: 3px; background: #ddd; padding: 10px; content: attr(title); font: 13px "Trebuchet MS", "Helvetica Neue", Helvetica, Arial, sans-serif; }'; var headNode = document.getElementsByTagName("head")[0]; headNode.appendChild(css); } else { $('prettify_css').innerHTML = 'pre.prettyprint { max-height: 500px; white-space: pre; word-wrap: normal; overflow: auto; background-color: #f8f8f8;border-radius: 3px; } pre.prettyprint[title]:before { float: right; border: 1px solid #ccc; border-radius: 3px; background: #ddd; padding: 10px; content: attr(title); font: 13px "Trebuchet MS", "Helvetica Neue", Helvetica, Arial, sans-serif; }'; } } </script> <script type="text/javascript"> loadPrettifyCss(); </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/wp-code-prettify/js/prettify.js"></script> <script type="text/javascript"> function wpCodePrettifyOnLoad(func){ var wpCodePrettifyOldOnLoad = window.onload; if (typeof window.onload != 'function') { window.onload = func } else { window.onload = function () { wpCodePrettifyOldOnLoad(); func() } } } wpCodePrettifyOnLoad(function(){prettyPrint();}); </script> <!--//wp code prettify--> <footer id="nv-footer"></footer> <script type="text/javascript"> (function() { const defaultLinks = JSON.parse("{\n \"columns\": [],\n \"links\": [\n {\n \"text\": \"Legal Information\",\n \"href\": \"https:\/\/www.nvidia.com\/en-us\/about-nvidia\/legal-info\/\"\n },\n {\n \"text\": \"Terms of Use\",\n \"href\": \"https:\/\/developer.nvidia.com\/legal\/terms\"\n },\n {\n \"text\": \"Privacy Policy\",\n \"href\": \"https:\/\/www.nvidia.com\/en-us\/about-nvidia\/privacy-policy\/\"\n },\n {\n \"text\": \"Cookie Policy\",\n \"href\": \"https:\/\/www.nvidia.com\/en-us\/about-nvidia\/cookie-policy\/\"\n },\n {\n \"text\": \"Contact\",\n \"href\": \"https:\/\/developer.nvidia.com\/contact\"\n }\n ],\n \"news\": {\n \"title\": \"Sign up for NVIDIA News\",\n \"href\": \"https:\/\/developer.nvidia.com\/email-signup\"\n },\n \"social\": {\n \"title\": \"Follow NVIDIA Developer\",\n \"links\": [\n {\n \"text\": \"Facebook\",\n \"href\": \"https:\/\/facebook.com\/nvidiaai\",\n \"provider\": \"facebook\"\n },\n {\n \"text\": \"Instagram\",\n \"href\": \"https:\/\/instagram.com\/nvidiadeveloper\",\n \"provider\": \"instagram\"\n },\n {\n \"text\": \"LinkedIn\",\n \"href\": \"https:\/\/www.linkedin.com\/showcase\/nvidia-ai\",\n \"provider\": \"linkedin\"\n },\n {\n \"text\": \"Twitter\",\n \"href\": \"https:\/\/twitter.com\/nvidiadeveloper\",\n \"provider\": \"twitter\"\n },\n {\n \"text\": \"YouTube\",\n \"href\": \"https:\/\/www.youtube.com\/user\/NVIDIADeveloper\",\n \"provider\": \"youtube\"\n }\n ]\n }\n }\n ") const mountFooterComponent = (locale, response) => { new NVDeveloperFooter({ target: document.getElementById('nv-footer'), props: { locale: locale, menu: response } }) } const handleError = (error, locale, menu) => { console.debug(error) mountFooterComponent(locale, menu) } const initFooter = () => { let menuUrl = 'https://d29g4g2dyqv443.cloudfront.net/menu/en-US/footer.json' let locale = 'en-US'; if (!menuUrl) { handleError('Footer menu URL not defined.', locale, defaultLinks) return } fetch(menuUrl) .then((response) => response.json()) .then((response) => mountFooterComponent(locale, response)) .catch((error) => handleError(error, locale, defaultLinks)) } document.addEventListener('DOMContentLoaded', initFooter); })(); </script> <script type="text/javascript">_satellite.pageBottom();</script> <!-- OneTrust gpc signal detection script start --> <!-- OneTrust Cookies Consent Notice end for nvidia.com --> <script type="text/javascript" src="https://images.nvidia.com/aem-dam/Solutions/ot-js/ot-custom.js"></script> <!-- OneTrust gpc signal detection script end --> <div style="display:none"> <div class="grofile-hash-map-531dba204776960981ef6dfdb47a9313"> </div> <div class="grofile-hash-map-30e5c1751ef1d929b0b851aed710d169"> </div> </div> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shCore.js?ver=3.0.9b" id="syntaxhighlighter-core-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushAS3.js?ver=3.0.9b" id="syntaxhighlighter-brush-as3-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushArduino.js?ver=3.0.9b" id="syntaxhighlighter-brush-arduino-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushBash.js?ver=3.0.9b" id="syntaxhighlighter-brush-bash-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushColdFusion.js?ver=3.0.9b" id="syntaxhighlighter-brush-coldfusion-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushClojure.js?ver=20090602" id="syntaxhighlighter-brush-clojure-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCpp.js?ver=3.0.9b" id="syntaxhighlighter-brush-cpp-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCSharp.js?ver=3.0.9b" id="syntaxhighlighter-brush-csharp-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCss.js?ver=3.0.9b" id="syntaxhighlighter-brush-css-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushDelphi.js?ver=3.0.9b" id="syntaxhighlighter-brush-delphi-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushDiff.js?ver=3.0.9b" id="syntaxhighlighter-brush-diff-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushErlang.js?ver=3.0.9b" id="syntaxhighlighter-brush-erlang-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushFSharp.js?ver=20091003" id="syntaxhighlighter-brush-fsharp-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushGo.js?ver=3.0.9b" id="syntaxhighlighter-brush-go-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushGroovy.js?ver=3.0.9b" id="syntaxhighlighter-brush-groovy-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushHaskell.js?ver=3.0.9b" id="syntaxhighlighter-brush-haskell-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJava.js?ver=3.0.9b" id="syntaxhighlighter-brush-java-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJavaFX.js?ver=3.0.9b" id="syntaxhighlighter-brush-javafx-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJScript.js?ver=3.0.9b" id="syntaxhighlighter-brush-jscript-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushLatex.js?ver=20090613" id="syntaxhighlighter-brush-latex-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushMatlabKey.js?ver=20091209" id="syntaxhighlighter-brush-matlabkey-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushObjC.js?ver=20091207" id="syntaxhighlighter-brush-objc-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPerl.js?ver=3.0.9b" id="syntaxhighlighter-brush-perl-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPhp.js?ver=3.0.9b" id="syntaxhighlighter-brush-php-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPlain.js?ver=3.0.9b" id="syntaxhighlighter-brush-plain-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPowerShell.js?ver=3.0.9b" id="syntaxhighlighter-brush-powershell-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPython.js?ver=3.0.9b" id="syntaxhighlighter-brush-python-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushR.js?ver=20100919" id="syntaxhighlighter-brush-r-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushRuby.js?ver=3.0.9b" id="syntaxhighlighter-brush-ruby-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushScala.js?ver=3.0.9b" id="syntaxhighlighter-brush-scala-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushSql.js?ver=3.0.9b" id="syntaxhighlighter-brush-sql-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushSwift.js?ver=3.0.9b" id="syntaxhighlighter-brush-swift-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushVb.js?ver=3.0.9b" id="syntaxhighlighter-brush-vb-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushXml.js?ver=3.0.9b" id="syntaxhighlighter-brush-xml-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushYaml.js?ver=3.0.9b" id="syntaxhighlighter-brush-yaml-js"></script> <script type='text/javascript'> (function(){ var corecss = document.createElement('link'); var themecss = document.createElement('link'); var corecssurl = "https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css?ver=3.0.9b"; if ( corecss.setAttribute ) { corecss.setAttribute( "rel", "stylesheet" ); corecss.setAttribute( "type", "text/css" ); corecss.setAttribute( "href", corecssurl ); } else { corecss.rel = "stylesheet"; corecss.href = corecssurl; } document.head.appendChild( corecss ); var themecssurl = "https://developer-blogs.nvidia.com/wp-content/plugins/nv-tweaks/css/shThemeNvidia.css?ver=3.0.9b"; if ( themecss.setAttribute ) { themecss.setAttribute( "rel", "stylesheet" ); themecss.setAttribute( "type", "text/css" ); themecss.setAttribute( "href", themecssurl ); } else { themecss.rel = "stylesheet"; themecss.href = themecssurl; } document.head.appendChild( themecss ); })(); SyntaxHighlighter.config.strings.expandSource = '+ expand source'; SyntaxHighlighter.config.strings.help = '?'; SyntaxHighlighter.config.strings.alert = 'SyntaxHighlighter\n\n'; SyntaxHighlighter.config.strings.noBrush = 'Can\'t find brush for: '; SyntaxHighlighter.config.strings.brushNotHtmlScript = 'Brush wasn\'t configured for html-script option: '; SyntaxHighlighter.defaults['gutter'] = false; SyntaxHighlighter.defaults['pad-line-numbers'] = false; SyntaxHighlighter.defaults['toolbar'] = false; SyntaxHighlighter.all(); // Infinite scroll support if ( typeof( jQuery ) !== 'undefined' ) { jQuery( function( $ ) { $( document.body ).on( 'post-load', function() { SyntaxHighlighter.highlight(); } ); } ); } </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script> <script type="text/javascript" id="load_comments_js-js-extra"> /* <![CDATA[ */ var wpdc = {"commentsURL":"https:\/\/developer.nvidia.com\/blog\/wp-json\/wp-discourse\/v1\/discourse-comments"}; /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/wp-discourse/lib/../js/load-comments.js?ver=1732134314" id="load_comments_js-js"></script> <script type="text/javascript" id="wp_ulike-js-extra"> /* <![CDATA[ */ var wp_ulike_params = {"ajax_url":"https:\/\/developer-blogs.nvidia.com\/wp-admin\/admin-ajax.php","notifications":"0"}; var wp_ulike_params = {"ajax_url":"https:\/\/developer.nvidia.com\/blog\/wp-admin\/admin-ajax.php"}; /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/wp-ulike/assets/js/wp-ulike.min.js?ver=4.7.5" id="wp_ulike-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/nv-language-switcher/js/nv-language-switcher.js" id="nv-language-switcher-js"></script> <script type="text/javascript" src="https://secure.gravatar.com/js/gprofiles.js?ver=202447" id="grofiles-cards-js"></script> <script type="text/javascript" id="wpgroho-js-extra"> /* <![CDATA[ */ var WPGroHo = {"my_hash":""}; /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/jetpack/modules/wpgroho.js?ver=13.4.3" id="wpgroho-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/page-links-to/dist/new-tab.js?ver=3.3.5" id="page-links-to-js"></script> <script type="text/javascript" id="sage/main.js-js-extra"> /* <![CDATA[ */ var morePostsAjax = {"network_id":"1","site_url":"https:\/\/developer.nvidia.com\/blog\/wp-admin\/"}; /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/dist/scripts/main_5b99443a.js" id="sage/main.js-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/nv-recommender/js/dist/index.js" id="sage/recommender.js-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-includes/js/dist/vendor/lodash.min.js?ver=4.17.21" id="lodash-js"></script> <script type="text/javascript" id="lodash-js-after"> /* <![CDATA[ */ window.lodash = _.noConflict(); /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/ml-slider/assets/sliders/responsiveslides/responsiveslides.min.js" id="sage/flexslider.js-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/resources/assets/libs/nv-developer-menu/nv-developer-menu.js?ver=1.0.0" id="nv-developer-menu.js-js"></script> <script type="text/javascript" id="stbClient-js-extra"> /* <![CDATA[ */ var stbUserOptions = {"restData":{"root":"https:\/\/developer-blogs.nvidia.com\/wp-json\/","nonce":"ce26fa3e7e"}}; /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/wp-special-textboxes/js/client.js?ver=6.2.1" id="stbClient-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/ml-slider/assets/sliders/flexslider/jquery.flexslider.min.js?ver=3.60.1" id="metaslider-flex-slider-js"></script> <script type="text/javascript" id="metaslider-flex-slider-js-after"> /* <![CDATA[ */ var metaslider_56284 = function($) { $('#metaslider_56284').flexslider({ slideshowSpeed:3000, animation:"fade", controlNav:false, directionNav:false, pauseOnHover:true, direction:"horizontal", reverse:false, keyboard:false, animationSpeed:600, prevText:"&lt;", nextText:"&gt;", smoothHeight:false, fadeFirstSlide:false, slideshow:true }); $(document).trigger('metaslider/initialized', '#metaslider_56284'); }; var timer_metaslider_56284 = function() { var slider = !window.jQuery ? window.setTimeout(timer_metaslider_56284, 100) : !jQuery.isReady ? window.setTimeout(timer_metaslider_56284, 1) : metaslider_56284(window.jQuery); }; timer_metaslider_56284(); /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/ml-slider/assets/metaslider/script.min.js?ver=3.60.1" id="metaslider-script-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/ml-slider/themes/highway/v1.0.0/script.js?ver=1.0.0" id="metaslider_highway_theme_script-js"></script> <script> function b2a(a){var b,c=0,l=0,f="",g=[];if(!a)return a;do{var e=a.charCodeAt(c++);var h=a.charCodeAt(c++);var k=a.charCodeAt(c++);var d=e<<16|h<<8|k;e=63&d>>18;h=63&d>>12;k=63&d>>6;d&=63;g[l++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(e)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(h)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(k)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(d)}while(c< a.length);return f=g.join(""),b=a.length%3,(b?f.slice(0,b-3):f)+"===".slice(b||3)}function a2b(a){var b,c,l,f={},g=0,e=0,h="",k=String.fromCharCode,d=a.length;for(b=0;64>b;b++)f["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(b)]=b;for(c=0;d>c;c++)for(b=f[a.charAt(c)],g=(g<<6)+b,e+=6;8<=e;)((l=255&g>>>(e-=8))||d-2>c)&&(h+=k(l));return h}b64e=function(a){return btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,function(b,a){return String.fromCharCode("0x"+a)}))}; b64d=function(a){return decodeURIComponent(atob(a).split("").map(function(a){return"%"+("00"+a.charCodeAt(0).toString(16)).slice(-2)}).join(""))}; /* <![CDATA[ */ ai_front = {"insertion_before":"BEFORE","insertion_after":"AFTER","insertion_prepend":"PREPEND CONTENT","insertion_append":"APPEND CONTENT","insertion_replace_content":"REPLACE CONTENT","insertion_replace_element":"REPLACE ELEMENT","visible":"VISIBLE","hidden":"HIDDEN","fallback":"FALLBACK","automatically_placed":"Automatically placed by AdSense Auto ads code","cancel":"Cancel","use":"Use","add":"Add","parent":"Parent","cancel_element_selection":"Cancel element selection","select_parent_element":"Select parent element","css_selector":"CSS selector","use_current_selector":"Use current selector","element":"ELEMENT","path":"PATH","selector":"SELECTOR"}; /* ]]> */ var ai_cookie_js=!0,ai_block_class_def="code-block"; /* JavaScript Cookie v2.2.0 https://github.com/js-cookie/js-cookie Copyright 2006, 2015 Klaus Hartl & Fagner Brack Released under the MIT license */ "undefined"!==typeof ai_cookie_js&&(function(a){if("function"===typeof define&&define.amd){define(a);var c=!0}"object"===typeof exports&&(module.exports=a(),c=!0);if(!c){var d=window.Cookies,b=window.Cookies=a();b.noConflict=function(){window.Cookies=d;return b}}}(function(){function a(){for(var d=0,b={};d<arguments.length;d++){var f=arguments[d],e;for(e in f)b[e]=f[e]}return b}function c(d){function b(){}function f(h,k,g){if("undefined"!==typeof document){g=a({path:"/",sameSite:"Lax"},b.defaults, g);"number"===typeof g.expires&&(g.expires=new Date(1*new Date+864E5*g.expires));g.expires=g.expires?g.expires.toUTCString():"";try{var l=JSON.stringify(k);/^[\{\[]/.test(l)&&(k=l)}catch(p){}k=d.write?d.write(k,h):encodeURIComponent(String(k)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent);h=encodeURIComponent(String(h)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);l="";for(var n in g)g[n]&&(l+="; "+n,!0!==g[n]&&(l+="="+ g[n].split(";")[0]));return document.cookie=h+"="+k+l}}function e(h,k){if("undefined"!==typeof document){for(var g={},l=document.cookie?document.cookie.split("; "):[],n=0;n<l.length;n++){var p=l[n].split("="),m=p.slice(1).join("=");k||'"'!==m.charAt(0)||(m=m.slice(1,-1));try{var q=p[0].replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent);m=(d.read||d)(m,q)||m.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent);if(k)try{m=JSON.parse(m)}catch(r){}g[q]=m;if(h===q)break}catch(r){}}return h?g[h]:g}}b.set=f;b.get= function(h){return e(h,!1)};b.getJSON=function(h){return e(h,!0)};b.remove=function(h,k){f(h,"",a(k,{expires:-1}))};b.defaults={};b.withConverter=c;return b}return c(function(){})}),AiCookies=Cookies.noConflict(),ai_check_block=function(a){if(null==a)return!0;var c=AiCookies.getJSON("aiBLOCKS");ai_debug_cookie_status="";null==c&&(c={});"undefined"!==typeof ai_delay_showing_pageviews&&(c.hasOwnProperty(a)||(c[a]={}),c[a].hasOwnProperty("d")||(c[a].d=ai_delay_showing_pageviews));if(c.hasOwnProperty(a)){for(var d in c[a]){if("x"== d){var b="",f=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in f.dataset&&(b=f.dataset.aiHash);f="";c[a].hasOwnProperty("h")&&(f=c[a].h);var e=new Date;e=c[a][d]-Math.round(e.getTime()/1E3);if(0<e&&f==b)return ai_debug_cookie_status=a="closed for "+e+" s = "+Math.round(1E4*e/3600/24)/1E4+" days",!1;ai_set_cookie(a,"x","");c[a].hasOwnProperty("i")||c[a].hasOwnProperty("c")||ai_set_cookie(a,"h","")}else if("d"==d){if(0!=c[a][d])return ai_debug_cookie_status=a="delayed for "+c[a][d]+ " pageviews",!1}else if("i"==d){b="";f=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in f.dataset&&(b=f.dataset.aiHash);f="";c[a].hasOwnProperty("h")&&(f=c[a].h);if(0==c[a][d]&&f==b)return ai_debug_cookie_status=a="max impressions reached",!1;if(0>c[a][d]&&f==b){e=new Date;e=-c[a][d]-Math.round(e.getTime()/1E3);if(0<e)return ai_debug_cookie_status=a="max imp. reached ("+Math.round(1E4*e/24/3600)/1E4+" days = "+e+" s)",!1;ai_set_cookie(a,"i","");c[a].hasOwnProperty("c")||c[a].hasOwnProperty("x")|| ai_set_cookie(a,"h","")}}if("ipt"==d&&0==c[a][d]&&(e=new Date,b=Math.round(e.getTime()/1E3),e=c[a].it-b,0<e))return ai_debug_cookie_status=a="max imp. per time reached ("+Math.round(1E4*e/24/3600)/1E4+" days = "+e+" s)",!1;if("c"==d){b="";f=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in f.dataset&&(b=f.dataset.aiHash);f="";c[a].hasOwnProperty("h")&&(f=c[a].h);if(0==c[a][d]&&f==b)return ai_debug_cookie_status=a="max clicks reached",!1;if(0>c[a][d]&&f==b){e=new Date;e=-c[a][d]- Math.round(e.getTime()/1E3);if(0<e)return ai_debug_cookie_status=a="max clicks reached ("+Math.round(1E4*e/24/3600)/1E4+" days = "+e+" s)",!1;ai_set_cookie(a,"c","");c[a].hasOwnProperty("i")||c[a].hasOwnProperty("x")||ai_set_cookie(a,"h","")}}if("cpt"==d&&0==c[a][d]&&(e=new Date,b=Math.round(e.getTime()/1E3),e=c[a].ct-b,0<e))return ai_debug_cookie_status=a="max clicks per time reached ("+Math.round(1E4*e/24/3600)/1E4+" days = "+e+" s)",!1}if(c.hasOwnProperty("G")&&c.G.hasOwnProperty("cpt")&&0==c.G.cpt&& (e=new Date,b=Math.round(e.getTime()/1E3),e=c.G.ct-b,0<e))return ai_debug_cookie_status=a="max global clicks per time reached ("+Math.round(1E4*e/24/3600)/1E4+" days = "+e+" s)",!1}ai_debug_cookie_status="OK";return!0},ai_check_and_insert_block=function(a,c){if(null==a)return!0;var d=document.getElementsByClassName(c);if(d.length){d=d[0];var b=d.closest("."+ai_block_class_def),f=ai_check_block(a);!f&&0!=parseInt(d.getAttribute("limits-fallback"))&&d.hasAttribute("data-fallback-code")&&(d.setAttribute("data-code", d.getAttribute("data-fallback-code")),null!=b&&b.hasAttribute("data-ai")&&d.hasAttribute("fallback-tracking")&&d.hasAttribute("fallback_level")&&b.setAttribute("data-ai-"+d.getAttribute("fallback_level"),d.getAttribute("fallback-tracking")),f=!0);d.removeAttribute("data-selector");if(f)ai_insert_code(d),b&&(f=b.querySelectorAll(".ai-debug-block"),f.length&&(b.classList.remove("ai-list-block"),b.classList.remove("ai-list-block-ip"),b.classList.remove("ai-list-block-filter"),b.style.visibility="",b.classList.contains("ai-remove-position")&& (b.style.position="")));else{f=d.closest("div[data-ai]");if(null!=f&&"undefined"!=typeof f.getAttribute("data-ai")){var e=JSON.parse(b64d(f.getAttribute("data-ai")));"undefined"!==typeof e&&e.constructor===Array&&(e[1]="",f.setAttribute("data-ai",b64e(JSON.stringify(e))))}b&&(f=b.querySelectorAll(".ai-debug-block"),f.length&&(b.classList.remove("ai-list-block"),b.classList.remove("ai-list-block-ip"),b.classList.remove("ai-list-block-filter"),b.style.visibility="",b.classList.contains("ai-remove-position")&& (b.style.position="")))}d.classList.remove(c)}d=document.querySelectorAll("."+c+"-dbg");b=0;for(f=d.length;b<f;b++)e=d[b],e.querySelector(".ai-status").textContent=ai_debug_cookie_status,e.querySelector(".ai-cookie-data").textContent=ai_get_cookie_text(a),e.classList.remove(c+"-dbg")},ai_load_cookie=function(){var a=AiCookies.getJSON("aiBLOCKS");null==a&&(a={});return a},ai_set_cookie=function(a,c,d){var b=ai_load_cookie();if(""===d){if(b.hasOwnProperty(a)){delete b[a][c];a:{c=b[a];for(f in c)if(c.hasOwnProperty(f)){var f= !1;break a}f=!0}f&&delete b[a]}}else b.hasOwnProperty(a)||(b[a]={}),b[a][c]=d;0===Object.keys(b).length&&b.constructor===Object?AiCookies.remove("aiBLOCKS"):AiCookies.set("aiBLOCKS",b,{expires:365,path:"/"});return b},ai_get_cookie_text=function(a){var c=AiCookies.getJSON("aiBLOCKS");null==c&&(c={});var d="";c.hasOwnProperty("G")&&(d="G["+JSON.stringify(c.G).replace(/"/g,"").replace("{","").replace("}","")+"] ");var b="";c.hasOwnProperty(a)&&(b=JSON.stringify(c[a]).replace(/"/g,"").replace("{","").replace("}", ""));return d+b}); var ai_insertion_js=!0,ai_block_class_def="code-block"; if("undefined"!=typeof ai_insertion_js){ai_insert=function(a,h,l){if(-1!=h.indexOf(":eq("))if(window.jQuery&&window.jQuery.fn)var n=jQuery(h);else{console.error("AI INSERT USING jQuery QUERIES:",h,"- jQuery not found");return}else n=document.querySelectorAll(h);for(var u=0,y=n.length;u<y;u++){var d=n[u];selector_string=d.hasAttribute("id")?"#"+d.getAttribute("id"):d.hasAttribute("class")?"."+d.getAttribute("class").replace(RegExp(" ","g"),"."):"";var w=document.createElement("div");w.innerHTML=l; var m=w.getElementsByClassName("ai-selector-counter")[0];null!=m&&(m.innerText=u+1);m=w.getElementsByClassName("ai-debug-name ai-main")[0];if(null!=m){var r=a.toUpperCase();"undefined"!=typeof ai_front&&("before"==a?r=ai_front.insertion_before:"after"==a?r=ai_front.insertion_after:"prepend"==a?r=ai_front.insertion_prepend:"append"==a?r=ai_front.insertion_append:"replace-content"==a?r=ai_front.insertion_replace_content:"replace-element"==a&&(r=ai_front.insertion_replace_element));-1==selector_string.indexOf(".ai-viewports")&& (m.innerText=r+" "+h+" ("+d.tagName.toLowerCase()+selector_string+")")}m=document.createRange();try{var v=m.createContextualFragment(w.innerHTML)}catch(t){}"before"==a?d.parentNode.insertBefore(v,d):"after"==a?d.parentNode.insertBefore(v,d.nextSibling):"prepend"==a?d.insertBefore(v,d.firstChild):"append"==a?d.insertBefore(v,null):"replace-content"==a?(d.innerHTML="",d.insertBefore(v,null)):"replace-element"==a&&(d.parentNode.insertBefore(v,d),d.parentNode.removeChild(d));z()}};ai_insert_code=function(a){function h(m, r){return null==m?!1:m.classList?m.classList.contains(r):-1<(" "+m.className+" ").indexOf(" "+r+" ")}function l(m,r){null!=m&&(m.classList?m.classList.add(r):m.className+=" "+r)}function n(m,r){null!=m&&(m.classList?m.classList.remove(r):m.className=m.className.replace(new RegExp("(^|\\b)"+r.split(" ").join("|")+"(\\b|$)","gi")," "))}if("undefined"!=typeof a){var u=!1;if(h(a,"no-visibility-check")||a.offsetWidth||a.offsetHeight||a.getClientRects().length){u=a.getAttribute("data-code");var y=a.getAttribute("data-insertion-position"), d=a.getAttribute("data-selector");if(null!=u)if(null!=y&&null!=d){if(-1!=d.indexOf(":eq(")?window.jQuery&&window.jQuery.fn&&jQuery(d).length:document.querySelectorAll(d).length)ai_insert(y,d,b64d(u)),n(a,"ai-viewports")}else{y=document.createRange();try{var w=y.createContextualFragment(b64d(u))}catch(m){}a.parentNode.insertBefore(w,a.nextSibling);n(a,"ai-viewports")}u=!0}else w=a.previousElementSibling,h(w,"ai-debug-bar")&&h(w,"ai-debug-script")&&(n(w,"ai-debug-script"),l(w,"ai-debug-viewport-invisible")), n(a,"ai-viewports");return u}};ai_insert_list_code=function(a){var h=document.getElementsByClassName(a)[0];if("undefined"!=typeof h){var l=ai_insert_code(h),n=h.closest("div."+ai_block_class_def);if(n){l||n.removeAttribute("data-ai");var u=n.querySelectorAll(".ai-debug-block");n&&u.length&&(n.classList.remove("ai-list-block"),n.classList.remove("ai-list-block-ip"),n.classList.remove("ai-list-block-filter"),n.style.visibility="",n.classList.contains("ai-remove-position")&&(n.style.position=""))}h.classList.remove(a); l&&z()}};ai_insert_viewport_code=function(a){var h=document.getElementsByClassName(a)[0];if("undefined"!=typeof h){var l=ai_insert_code(h);h.classList.remove(a);l&&(a=h.closest("div."+ai_block_class_def),null!=a&&(l=h.getAttribute("style"),null!=l&&a.setAttribute("style",a.getAttribute("style")+" "+l)));setTimeout(function(){h.removeAttribute("style")},2);z()}};ai_insert_adsense_fallback_codes=function(a){a.style.display="none";var h=a.closest(".ai-fallback-adsense"),l=h.nextElementSibling;l.getAttribute("data-code")? ai_insert_code(l)&&z():l.style.display="block";h.classList.contains("ai-empty-code")&&null!=a.closest("."+ai_block_class_def)&&(a=a.closest("."+ai_block_class_def).getElementsByClassName("code-block-label"),0!=a.length&&(a[0].style.display="none"))};ai_insert_code_by_class=function(a){var h=document.getElementsByClassName(a)[0];"undefined"!=typeof h&&(ai_insert_code(h),h.classList.remove(a))};ai_insert_client_code=function(a,h){var l=document.getElementsByClassName(a)[0];if("undefined"!=typeof l){var n= l.getAttribute("data-code");null!=n&&ai_check_block()&&(l.setAttribute("data-code",n.substring(Math.floor(h/19))),ai_insert_code_by_class(a),l.remove())}};ai_process_elements_active=!1;function z(){ai_process_elements_active||setTimeout(function(){ai_process_elements_active=!1;"function"==typeof ai_process_rotations&&ai_process_rotations();"function"==typeof ai_process_lists&&ai_process_lists();"function"==typeof ai_process_ip_addresses&&ai_process_ip_addresses();"function"==typeof ai_process_filter_hooks&& ai_process_filter_hooks();"function"==typeof ai_adb_process_blocks&&ai_adb_process_blocks();"function"==typeof ai_process_impressions&&1==ai_tracking_finished&&ai_process_impressions();"function"==typeof ai_install_click_trackers&&1==ai_tracking_finished&&ai_install_click_trackers();"function"==typeof ai_install_close_buttons&&ai_install_close_buttons(document);"function"==typeof ai_process_wait_for_interaction&&ai_process_wait_for_interaction();"function"==typeof ai_process_delayed_blocks&&ai_process_delayed_blocks()}, 5);ai_process_elements_active=!0}const B=document.querySelector("body");(new MutationObserver(function(a,h){for(const l of a)"attributes"===l.type&&"data-ad-status"==l.attributeName&&"unfilled"==l.target.dataset.adStatus&&l.target.closest(".ai-fallback-adsense")&&ai_insert_adsense_fallback_codes(l.target)})).observe(B,{attributes:!0,childList:!1,subtree:!0});var Arrive=function(a,h,l){function n(t,c,e){d.addMethod(c,e,t.unbindEvent);d.addMethod(c,e,t.unbindEventWithSelectorOrCallback);d.addMethod(c, e,t.unbindEventWithSelectorAndCallback)}function u(t){t.arrive=r.bindEvent;n(r,t,"unbindArrive");t.leave=v.bindEvent;n(v,t,"unbindLeave")}if(a.MutationObserver&&"undefined"!==typeof HTMLElement){var y=0,d=function(){var t=HTMLElement.prototype.matches||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector;return{matchesSelector:function(c,e){return c instanceof HTMLElement&&t.call(c,e)},addMethod:function(c,e,f){var b=c[e];c[e]= function(){if(f.length==arguments.length)return f.apply(this,arguments);if("function"==typeof b)return b.apply(this,arguments)}},callCallbacks:function(c,e){e&&e.options.onceOnly&&1==e.firedElems.length&&(c=[c[0]]);for(var f=0,b;b=c[f];f++)b&&b.callback&&b.callback.call(b.elem,b.elem);e&&e.options.onceOnly&&1==e.firedElems.length&&e.me.unbindEventWithSelectorAndCallback.call(e.target,e.selector,e.callback)},checkChildNodesRecursively:function(c,e,f,b){for(var g=0,k;k=c[g];g++)f(k,e,b)&&b.push({callback:e.callback, elem:k}),0<k.childNodes.length&&d.checkChildNodesRecursively(k.childNodes,e,f,b)},mergeArrays:function(c,e){var f={},b;for(b in c)c.hasOwnProperty(b)&&(f[b]=c[b]);for(b in e)e.hasOwnProperty(b)&&(f[b]=e[b]);return f},toElementsArray:function(c){"undefined"===typeof c||"number"===typeof c.length&&c!==a||(c=[c]);return c}}}(),w=function(){var t=function(){this._eventsBucket=[];this._beforeRemoving=this._beforeAdding=null};t.prototype.addEvent=function(c,e,f,b){c={target:c,selector:e,options:f,callback:b, firedElems:[]};this._beforeAdding&&this._beforeAdding(c);this._eventsBucket.push(c);return c};t.prototype.removeEvent=function(c){for(var e=this._eventsBucket.length-1,f;f=this._eventsBucket[e];e--)c(f)&&(this._beforeRemoving&&this._beforeRemoving(f),(f=this._eventsBucket.splice(e,1))&&f.length&&(f[0].callback=null))};t.prototype.beforeAdding=function(c){this._beforeAdding=c};t.prototype.beforeRemoving=function(c){this._beforeRemoving=c};return t}(),m=function(t,c){var e=new w,f=this,b={fireOnAttributesModification:!1}; e.beforeAdding(function(g){var k=g.target;if(k===a.document||k===a)k=document.getElementsByTagName("html")[0];var p=new MutationObserver(function(x){c.call(this,x,g)});var q=t(g.options);p.observe(k,q);g.observer=p;g.me=f});e.beforeRemoving(function(g){g.observer.disconnect()});this.bindEvent=function(g,k,p){k=d.mergeArrays(b,k);for(var q=d.toElementsArray(this),x=0;x<q.length;x++)e.addEvent(q[x],g,k,p)};this.unbindEvent=function(){var g=d.toElementsArray(this);e.removeEvent(function(k){for(var p= 0;p<g.length;p++)if(this===l||k.target===g[p])return!0;return!1})};this.unbindEventWithSelectorOrCallback=function(g){var k=d.toElementsArray(this);e.removeEvent("function"===typeof g?function(p){for(var q=0;q<k.length;q++)if((this===l||p.target===k[q])&&p.callback===g)return!0;return!1}:function(p){for(var q=0;q<k.length;q++)if((this===l||p.target===k[q])&&p.selector===g)return!0;return!1})};this.unbindEventWithSelectorAndCallback=function(g,k){var p=d.toElementsArray(this);e.removeEvent(function(q){for(var x= 0;x<p.length;x++)if((this===l||q.target===p[x])&&q.selector===g&&q.callback===k)return!0;return!1})};return this},r=new function(){function t(f,b,g){return d.matchesSelector(f,b.selector)&&(f._id===l&&(f._id=y++),-1==b.firedElems.indexOf(f._id))?(b.firedElems.push(f._id),!0):!1}var c={fireOnAttributesModification:!1,onceOnly:!1,existing:!1};r=new m(function(f){var b={attributes:!1,childList:!0,subtree:!0};f.fireOnAttributesModification&&(b.attributes=!0);return b},function(f,b){f.forEach(function(g){var k= g.addedNodes,p=g.target,q=[];null!==k&&0<k.length?d.checkChildNodesRecursively(k,b,t,q):"attributes"===g.type&&t(p,b,q)&&q.push({callback:b.callback,elem:p});d.callCallbacks(q,b)})});var e=r.bindEvent;r.bindEvent=function(f,b,g){"undefined"===typeof g?(g=b,b=c):b=d.mergeArrays(c,b);var k=d.toElementsArray(this);if(b.existing){for(var p=[],q=0;q<k.length;q++)for(var x=k[q].querySelectorAll(f),A=0;A<x.length;A++)p.push({callback:g,elem:x[A]});if(b.onceOnly&&p.length)return g.call(p[0].elem,p[0].elem); setTimeout(d.callCallbacks,1,p)}e.call(this,f,b,g)};return r},v=new function(){function t(f,b){return d.matchesSelector(f,b.selector)}var c={};v=new m(function(){return{childList:!0,subtree:!0}},function(f,b){f.forEach(function(g){g=g.removedNodes;var k=[];null!==g&&0<g.length&&d.checkChildNodesRecursively(g,b,t,k);d.callCallbacks(k,b)})});var e=v.bindEvent;v.bindEvent=function(f,b,g){"undefined"===typeof g?(g=b,b=c):b=d.mergeArrays(c,b);e.call(this,f,b,g)};return v};h&&u(h.fn);u(HTMLElement.prototype); u(NodeList.prototype);u(HTMLCollection.prototype);u(HTMLDocument.prototype);u(Window.prototype);h={};n(r,h,"unbindAllArrive");n(v,h,"unbindAllLeave");return h}}(window,"undefined"===typeof jQuery?null:jQuery,void 0)}; var ai_rotation_triggers=[],ai_block_class_def="code-block"; if("undefined"!=typeof ai_rotation_triggers){ai_process_rotation=function(b){var d="number"==typeof b.length;window.jQuery&&window.jQuery.fn&&b instanceof jQuery&&(b=d?Array.prototype.slice.call(b):b[0]);if(d){var e=!1;b.forEach((c,h)=>{if(c.classList.contains("ai-unprocessed")||c.classList.contains("ai-timer"))e=!0});if(!e)return;b.forEach((c,h)=>{c.classList.remove("ai-unprocessed");c.classList.remove("ai-timer")})}else{if(!b.classList.contains("ai-unprocessed")&&!b.classList.contains("ai-timer"))return; b.classList.remove("ai-unprocessed");b.classList.remove("ai-timer")}var a=!1;if(d?b[0].hasAttribute("data-info"):b.hasAttribute("data-info")){var f="div.ai-rotate.ai-"+(d?JSON.parse(atob(b[0].dataset.info)):JSON.parse(atob(b.dataset.info)))[0];ai_rotation_triggers.includes(f)&&(ai_rotation_triggers.splice(ai_rotation_triggers.indexOf(f),1),a=!0)}if(d)for(d=0;d<b.length;d++)0==d?ai_process_single_rotation(b[d],!0):ai_process_single_rotation(b[d],!1);else ai_process_single_rotation(b,!a)};ai_process_single_rotation= function(b,d){var e=[];Array.from(b.children).forEach((g,p)=>{g.matches(".ai-rotate-option")&&e.push(g)});if(0!=e.length){e.forEach((g,p)=>{g.style.display="none"});if(b.hasAttribute("data-next")){k=parseInt(b.getAttribute("data-next"));var a=e[k];if(a.hasAttribute("data-code")){var f=document.createRange(),c=!0;try{var h=f.createContextualFragment(b64d(a.dataset.code))}catch(g){c=!1}c&&(a=h)}0!=a.querySelectorAll("span[data-ai-groups]").length&&0!=document.querySelectorAll(".ai-rotation-groups").length&& setTimeout(function(){B()},5)}else if(e[0].hasAttribute("data-group")){var k=-1,u=[];document.querySelectorAll("span[data-ai-groups]").forEach((g,p)=>{(g.offsetWidth||g.offsetHeight||g.getClientRects().length)&&u.push(g)});1<=u.length&&(timed_groups=[],groups=[],u.forEach(function(g,p){active_groups=JSON.parse(b64d(g.dataset.aiGroups));var r=!1;g=g.closest(".ai-rotate");null!=g&&g.classList.contains("ai-timed-rotation")&&(r=!0);active_groups.forEach(function(t,v){groups.push(t);r&&timed_groups.push(t)})}), groups.forEach(function(g,p){-1==k&&e.forEach((r,t)=>{var v=b64d(r.dataset.group);option_group_items=v.split(",");option_group_items.forEach(function(C,E){-1==k&&C.trim()==g&&(k=t,timed_groups.includes(v)&&b.classList.add("ai-timed-rotation"))})})}))}else if(b.hasAttribute("data-shares"))for(f=JSON.parse(atob(b.dataset.shares)),a=Math.round(100*Math.random()),c=0;c<f.length&&(k=c,0>f[c]||!(a<=f[c]));c++);else f=b.classList.contains("ai-unique"),a=new Date,f?("number"!=typeof ai_rotation_seed&&(ai_rotation_seed= (Math.floor(1E3*Math.random())+a.getMilliseconds())%e.length),f=ai_rotation_seed,f>e.length&&(f%=e.length),a=parseInt(b.dataset.counter),a<=e.length?(k=parseInt(f+a-1),k>=e.length&&(k-=e.length)):k=e.length):(k=Math.floor(Math.random()*e.length),a.getMilliseconds()%2&&(k=e.length-k-1));if(b.classList.contains("ai-rotation-scheduling"))for(k=-1,f=0;f<e.length;f++)if(a=e[f],a.hasAttribute("data-scheduling")){c=b64d(a.dataset.scheduling);a=!0;0==c.indexOf("^")&&(a=!1,c=c.substring(1));var q=c.split("="), m=-1!=c.indexOf("%")?q[0].split("%"):[q[0]];c=m[0].trim().toLowerCase();m="undefined"!=typeof m[1]?m[1].trim():0;q=q[1].replace(" ","");var n=(new Date).getTime();n=new Date(n);var l=0;switch(c){case "s":l=n.getSeconds();break;case "i":l=n.getMinutes();break;case "h":l=n.getHours();break;case "d":l=n.getDate();break;case "m":l=n.getMonth();break;case "y":l=n.getFullYear();break;case "w":l=n.getDay(),l=0==l?6:l-1}c=0!=m?l%m:l;m=q.split(",");q=!a;for(n=0;n<m.length;n++)if(l=m[n],-1!=l.indexOf("-")){if(l= l.split("-"),c>=l[0]&&c<=l[1]){q=a;break}}else if(c==l){q=a;break}if(q){k=f;break}}if(!(0>k||k>=e.length)){a=e[k];var z="",w=b.classList.contains("ai-timed-rotation");e.forEach((g,p)=>{g.hasAttribute("data-time")&&(w=!0)});if(a.hasAttribute("data-time")){f=atob(a.dataset.time);if(0==f&&1<e.length){c=k;do{c++;c>=e.length&&(c=0);m=e[c];if(!m.hasAttribute("data-time")){k=c;a=e[k];f=0;break}m=atob(m.dataset.time)}while(0==m&&c!=k);0!=f&&(k=c,a=e[k],f=atob(a.dataset.time))}if(0<f&&(c=k+1,c>=e.length&& (c=0),b.hasAttribute("data-info"))){m=JSON.parse(atob(b.dataset.info))[0];b.setAttribute("data-next",c);var x="div.ai-rotate.ai-"+m;ai_rotation_triggers.includes(x)&&(d=!1);d&&(ai_rotation_triggers.push(x),setTimeout(function(){var g=document.querySelectorAll(x);g.forEach((p,r)=>{p.classList.add("ai-timer")});ai_process_rotation(g)},1E3*f));z=" ("+f+" s)"}}else a.hasAttribute("data-group")||e.forEach((g,p)=>{p!=k&&g.remove()});a.style.display="";a.style.visibility="";a.style.position="";a.style.width= "";a.style.height="";a.style.top="";a.style.left="";a.classList.remove("ai-rotate-hidden");a.classList.remove("ai-rotate-hidden-2");b.style.position="";if(a.hasAttribute("data-code")){e.forEach((g,p)=>{g.innerText=""});d=b64d(a.dataset.code);f=document.createRange();c=!0;try{h=f.createContextualFragment(d)}catch(g){c=!1}a.append(h);D()}f=parseInt(a.dataset.index);var y=b64d(a.dataset.name);d=b.closest(".ai-debug-block");if(null!=d){h=d.querySelectorAll("kbd.ai-option-name");d=d.querySelectorAll(".ai-debug-block"); if(0!=d.length){var A=[];d.forEach((g,p)=>{g.querySelectorAll("kbd.ai-option-name").forEach((r,t)=>{A.push(r)})});h=Array.from(h);h=h.slice(0,h.length-A.length)}0!=h.length&&(separator=h[0].hasAttribute("data-separator")?h[0].dataset.separator:"",h.forEach((g,p)=>{g.innerText=separator+y+z}))}d=!1;a=b.closest(".ai-adb-show");null!=a&&a.hasAttribute("data-ai-tracking")&&(h=JSON.parse(b64d(a.getAttribute("data-ai-tracking"))),"undefined"!==typeof h&&h.constructor===Array&&(h[1]=f,h[3]=y,a.setAttribute("data-ai-tracking", b64e(JSON.stringify(h))),a.classList.add("ai-track"),w&&ai_tracking_finished&&a.classList.add("ai-no-pageview"),d=!0));d||(d=b.closest("div[data-ai]"),null!=d&&d.hasAttribute("data-ai")&&(h=JSON.parse(b64d(d.getAttribute("data-ai"))),"undefined"!==typeof h&&h.constructor===Array&&(h[1]=f,h[3]=y,d.setAttribute("data-ai",b64e(JSON.stringify(h))),d.classList.add("ai-track"),w&&ai_tracking_finished&&d.classList.add("ai-no-pageview"))))}}};ai_process_rotations=function(){document.querySelectorAll("div.ai-rotate").forEach((b, d)=>{ai_process_rotation(b)})};function B(){document.querySelectorAll("div.ai-rotate.ai-rotation-groups").forEach((b,d)=>{b.classList.add("ai-timer");ai_process_rotation(b)})}ai_process_rotations_in_element=function(b){null!=b&&b.querySelectorAll("div.ai-rotate").forEach((d,e)=>{ai_process_rotation(d)})};(function(b){"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?b():document.addEventListener("DOMContentLoaded",b)})(function(){setTimeout(function(){ai_process_rotations()}, 10)});ai_process_elements_active=!1;function D(){ai_process_elements_active||setTimeout(function(){ai_process_elements_active=!1;"function"==typeof ai_process_rotations&&ai_process_rotations();"function"==typeof ai_process_lists&&ai_process_lists();"function"==typeof ai_process_ip_addresses&&ai_process_ip_addresses();"function"==typeof ai_process_filter_hooks&&ai_process_filter_hooks();"function"==typeof ai_adb_process_blocks&&ai_adb_process_blocks();"function"==typeof ai_process_impressions&&1== ai_tracking_finished&&ai_process_impressions();"function"==typeof ai_install_click_trackers&&1==ai_tracking_finished&&ai_install_click_trackers();"function"==typeof ai_install_close_buttons&&ai_install_close_buttons(document)},5);ai_process_elements_active=!0}}; ;!function(a,b){a(function(){"use strict";function a(a,b){return null!=a&&null!=b&&a.toLowerCase()===b.toLowerCase()}function c(a,b){var c,d,e=a.length;if(!e||!b)return!1;for(c=b.toLowerCase(),d=0;d<e;++d)if(c===a[d].toLowerCase())return!0;return!1}function d(a){for(var b in a)i.call(a,b)&&(a[b]=new RegExp(a[b],"i"))}function e(a){return(a||"").substr(0,500)}function f(a,b){this.ua=e(a),this._cache={},this.maxPhoneWidth=b||600}var g={};g.mobileDetectRules={phones:{iPhone:"\\biPhone\\b|\\biPod\\b",BlackBerry:"BlackBerry|\\bBB10\\b|rim[0-9]+|\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\b-[0-9]+",Pixel:"; \\bPixel\\b",HTC:"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel",Nexus:"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 5X|Nexus 6",Dell:"Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b",Motorola:"Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b|XT1068|XT1092|XT1052",Samsung:"\\bSamsung\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F|SM-G610F|SM-G981B|SM-G892A|SM-A530F",LG:"\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710",Sony:"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533|SOV34|601SO|F8332",Asus:"Asus.*Galaxy|PadFone.*Mobile",Xiaomi:"^(?!.*\\bx11\\b).*xiaomi.*$|POCOPHONE F1|MI 8|Redmi Note 9S|Redmi Note 5A Prime|N2G47H|M2001J2G|M2001J2I|M1805E10A|M2004J11G|M1902F1G|M2002J9G|M2004J19G|M2003J6A1G",NokiaLumia:"Lumia [0-9]{3,4}",Micromax:"Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b",Palm:"PalmSource|Palm",Vertu:"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature",Pantech:"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790",Fly:"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250",Wiko:"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM",iMobile:"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)",SimValley:"\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b",Wolfgang:"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q",Alcatel:"Alcatel",Nintendo:"Nintendo (3DS|Switch)",Amoi:"Amoi",INQ:"INQ",OnePlus:"ONEPLUS",GenericPhone:"Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"},tablets:{iPad:"iPad|iPad.*Mobile",NexusTablet:"Android.*Nexus[\\s]+(7|9|10)",GoogleTablet:"Android.*Pixel C",SamsungTablet:"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V|SM-P610|SM-T290|SM-T515|SM-T590|SM-T595|SM-T725|SM-T817P|SM-P585N0|SM-T395|SM-T295|SM-T865|SM-P610N|SM-P615|SM-T970|SM-T380|SM-T5950|SM-T905|SM-T231|SM-T500|SM-T860",Kindle:"Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\b|Android.*Silk/[0-9.]+ like Chrome/[0-9.]+ (?!Mobile)",SurfaceTablet:"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)",HPTablet:"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10",AsusTablet:"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\bP027\\b|\\bP024\\b|\\bP00C\\b",BlackBerryTablet:"PlayBook|RIM Tablet",HTCtablet:"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410",MotorolaTablet:"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617",NookTablet:"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2",AcerTablet:"Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20\\b|\\bA3-A30|A3-A40",ToshibaTablet:"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO",LGTablet:"\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b",FujitsuTablet:"Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b",PrestigioTablet:"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002",LenovoTablet:"Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X|TB-X704F|TB-X104F|TB3-X70F|TB-X705F|TB-8504F|TB3-X70L|TB3-710F|TB-X704L",DellTablet:"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7",YarvikTablet:"Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b",MedionTablet:"Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB",ArnovaTablet:"97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2",IntensoTablet:"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004",IRUTablet:"M702pro",MegafonTablet:"MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b",EbodaTablet:"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)",AllViewTablet:"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)",ArchosTablet:"\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b",AinolTablet:"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark",NokiaLumiaTablet:"Lumia 2520",SonyTablet:"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712",PhilipsTablet:"\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b",CubeTablet:"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT",CobyTablet:"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010",MIDTablet:"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10",MSITablet:"MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b",SMiTTablet:"Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)",RockChipTablet:"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A",FlyTablet:"IQ310|Fly Vision",bqTablet:"Android.*(bq)?.*\\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\\b|Maxwell.*Lite|Maxwell.*Plus",HuaweiTablet:"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19",NecTablet:"\\bN-06D|\\bN-08D",PantechTablet:"Pantech.*P4100",BronchoTablet:"Broncho.*(N701|N708|N802|a710)",VersusTablet:"TOUCHPAD.*[78910]|\\bTOUCHTAB\\b",ZyncTablet:"z1000|Z99 2G|z930|z990|z909|Z919|z900",PositivoTablet:"TB07STA|TB10STA|TB07FTA|TB10FTA",NabiTablet:"Android.*\\bNabi",KoboTablet:"Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build",DanewTablet:"DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b",TexetTablet:"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE",PlaystationTablet:"Playstation.*(Portable|Vita)",TrekstorTablet:"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab",PyleAudioTablet:"\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b",AdvanTablet:"Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ",DanyTechTablet:"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1",GalapadTablet:"Android [0-9.]+; [a-z-]+; \\bG1\\b",MicromaxTablet:"Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b",KarbonnTablet:"Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b",AllFineTablet:"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide",PROSCANTablet:"\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b",YONESTablet:"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026",ChangJiaTablet:"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503",GUTablet:"TX-A1301|TX-M9002|Q702|kf026",PointOfViewTablet:"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10",OvermaxTablet:"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027",HCLTablet:"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync",DPSTablet:"DPS Dream 9|DPS Dual 7",VistureTablet:"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10",CrestaTablet:"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989",MediatekTablet:"\\bMT8125|MT8389|MT8135|MT8377\\b",ConcordeTablet:"Concorde([ ]+)?Tab|ConCorde ReadMan",GoCleverTablet:"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042",ModecomTablet:"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003",VoninoTablet:"\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b",ECSTablet:"V07OT2|TM105A|S10OT1|TR10CS1",StorexTablet:"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab",VodafoneTablet:"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400",EssentielBTablet:"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2",RossMoorTablet:"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711",iMobileTablet:"i-mobile i-note",TolinoTablet:"tolino tab [0-9.]+|tolino shine",AudioSonicTablet:"\\bC-22Q|T7-QC|T-17B|T-17P\\b",AMPETablet:"Android.* A78 ",SkkTablet:"Android.* (SKYPAD|PHOENIX|CYCLOPS)",TecnoTablet:"TECNO P9|TECNO DP8D",JXDTablet:"Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b",iJoyTablet:"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)",FX2Tablet:"FX2 PAD7|FX2 PAD10",XoroTablet:"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151",ViewsonicTablet:"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a",VerizonTablet:"QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1",OdysTablet:"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10",CaptivaTablet:"CAPTIVA PAD",IconbitTablet:"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S",TeclastTablet:"T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi",OndaTablet:"\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+|V10 \\b4G\\b",JaytechTablet:"TPC-PA762",BlaupunktTablet:"Endeavour 800NG|Endeavour 1010",DigmaTablet:"\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b",EvolioTablet:"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b",LavaTablet:"QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b",AocTablet:"MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712",MpmanTablet:"MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010",CelkonTablet:"CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b",WolderTablet:"miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b",MediacomTablet:"M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA",MiTablet:"\\bMI PAD\\b|\\bHM NOTE 1W\\b",NibiruTablet:"Nibiru M1|Nibiru Jupiter One",NexoTablet:"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI",LeaderTablet:"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100",UbislateTablet:"UbiSlate[\\s]?7C",PocketBookTablet:"Pocketbook",KocasoTablet:"\\b(TB-1207)\\b",HisenseTablet:"\\b(F5281|E2371)\\b",Hudl:"Hudl HT7S3|Hudl 2",TelstraTablet:"T-Hub2",GenericTablet:"Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bTP750\\b|\\bQTAQZ3\\b|WVT101|TM1088|KT107"},oss:{AndroidOS:"Android",BlackBerryOS:"blackberry|\\bBB10\\b|rim tablet os",PalmOS:"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino",SymbianOS:"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b",WindowsMobileOS:"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;",WindowsPhoneOS:"Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;",iOS:"\\biPhone.*Mobile|\\biPod|\\biPad|AppleCoreMedia",iPadOS:"CPU OS 13",SailfishOS:"Sailfish",MeeGoOS:"MeeGo",MaemoOS:"Maemo",JavaOS:"J2ME/|\\bMIDP\\b|\\bCLDC\\b",webOS:"webOS|hpwOS",badaOS:"\\bBada\\b",BREWOS:"BREW"},uas:{Chrome:"\\bCrMo\\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?",Dolfin:"\\bDolfin\\b",Opera:"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+$|Coast/[0-9.]+",Skyfire:"Skyfire",Edge:"\\bEdgiOS\\b|Mobile Safari/[.0-9]* Edge",IE:"IEMobile|MSIEMobile",Firefox:"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS",Bolt:"bolt",TeaShark:"teashark",Blazer:"Blazer",Safari:"Version((?!\\bEdgiOS\\b).)*Mobile.*Safari|Safari.*Mobile|MobileSafari",WeChat:"\\bMicroMessenger\\b",UCBrowser:"UC.*Browser|UCWEB",baiduboxapp:"baiduboxapp",baidubrowser:"baidubrowser",DiigoBrowser:"DiigoBrowser",Mercury:"\\bMercury\\b",ObigoBrowser:"Obigo",NetFront:"NF-Browser",GenericBrowser:"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger",PaleMoon:"Android.*PaleMoon|Mobile.*PaleMoon"},props:{Mobile:"Mobile/[VER]",Build:"Build/[VER]",Version:"Version/[VER]",VendorID:"VendorID/[VER]",iPad:"iPad.*CPU[a-z ]+[VER]",iPhone:"iPhone.*CPU[a-z ]+[VER]",iPod:"iPod.*CPU[a-z ]+[VER]",Kindle:"Kindle/[VER]",Chrome:["Chrome/[VER]","CriOS/[VER]","CrMo/[VER]"],Coast:["Coast/[VER]"],Dolfin:"Dolfin/[VER]",Firefox:["Firefox/[VER]","FxiOS/[VER]"],Fennec:"Fennec/[VER]",Edge:"Edge/[VER]",IE:["IEMobile/[VER];","IEMobile [VER]","MSIE [VER];","Trident/[0-9.]+;.*rv:[VER]"],NetFront:"NetFront/[VER]",NokiaBrowser:"NokiaBrowser/[VER]",Opera:[" OPR/[VER]","Opera Mini/[VER]","Version/[VER]"],"Opera Mini":"Opera Mini/[VER]","Opera Mobi":"Version/[VER]",UCBrowser:["UCWEB[VER]","UC.*Browser/[VER]"],MQQBrowser:"MQQBrowser/[VER]",MicroMessenger:"MicroMessenger/[VER]",baiduboxapp:"baiduboxapp/[VER]",baidubrowser:"baidubrowser/[VER]",SamsungBrowser:"SamsungBrowser/[VER]",Iron:"Iron/[VER]",Safari:["Version/[VER]","Safari/[VER]"],Skyfire:"Skyfire/[VER]",Tizen:"Tizen/[VER]",Webkit:"webkit[ /][VER]",PaleMoon:"PaleMoon/[VER]",SailfishBrowser:"SailfishBrowser/[VER]",Gecko:"Gecko/[VER]",Trident:"Trident/[VER]",Presto:"Presto/[VER]",Goanna:"Goanna/[VER]",iOS:" \\bi?OS\\b [VER][ ;]{1}",Android:"Android [VER]",Sailfish:"Sailfish [VER]",BlackBerry:["BlackBerry[\\w]+/[VER]","BlackBerry.*Version/[VER]","Version/[VER]"],BREW:"BREW [VER]",Java:"Java/[VER]","Windows Phone OS":["Windows Phone OS [VER]","Windows Phone [VER]"],"Windows Phone":"Windows Phone [VER]","Windows CE":"Windows CE/[VER]","Windows NT":"Windows NT [VER]",Symbian:["SymbianOS/[VER]","Symbian/[VER]"],webOS:["webOS/[VER]","hpwOS/[VER];"]},utils:{Bot:"Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp|AspiegelBot",MobileBot:"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2",DesktopMode:"WPDesktop",TV:"SonyDTV|HbbTV",WebKit:"(webkit)[ /]([\\w.]+)",Console:"\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\\b",Watch:"SM-V700"}},g.detectMobileBrowsers={fullPattern:/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i, shortPattern:/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,tabletPattern:/android|ipad|playbook|silk/i};var h,i=Object.prototype.hasOwnProperty;return g.FALLBACK_PHONE="UnknownPhone",g.FALLBACK_TABLET="UnknownTablet",g.FALLBACK_MOBILE="UnknownMobile",h="isArray"in Array?Array.isArray:function(a){return"[object Array]"===Object.prototype.toString.call(a)},function(){var a,b,c,e,f,j,k=g.mobileDetectRules;for(a in k.props)if(i.call(k.props,a)){for(b=k.props[a],h(b)||(b=[b]),f=b.length,e=0;e<f;++e)c=b[e],j=c.indexOf("[VER]"),j>=0&&(c=c.substring(0,j)+"([\\w._\\+]+)"+c.substring(j+5)),b[e]=new RegExp(c,"i");k.props[a]=b}d(k.oss),d(k.phones),d(k.tablets),d(k.uas),d(k.utils),k.oss0={WindowsPhoneOS:k.oss.WindowsPhoneOS,WindowsMobileOS:k.oss.WindowsMobileOS}}(),g.findMatch=function(a,b){for(var c in a)if(i.call(a,c)&&a[c].test(b))return c;return null},g.findMatches=function(a,b){var c=[];for(var d in a)i.call(a,d)&&a[d].test(b)&&c.push(d);return c},g.getVersionStr=function(a,b){var c,d,e,f,h=g.mobileDetectRules.props;if(i.call(h,a))for(c=h[a],e=c.length,d=0;d<e;++d)if(f=c[d].exec(b),null!==f)return f[1];return null},g.getVersion=function(a,b){var c=g.getVersionStr(a,b);return c?g.prepareVersionNo(c):NaN},g.prepareVersionNo=function(a){var b;return b=a.split(/[a-z._ \/\-]/i),1===b.length&&(a=b[0]),b.length>1&&(a=b[0]+".",b.shift(),a+=b.join("")),Number(a)},g.isMobileFallback=function(a){return g.detectMobileBrowsers.fullPattern.test(a)||g.detectMobileBrowsers.shortPattern.test(a.substr(0,4))},g.isTabletFallback=function(a){return g.detectMobileBrowsers.tabletPattern.test(a)},g.prepareDetectionCache=function(a,c,d){if(a.mobile===b){var e,h,i;return(h=g.findMatch(g.mobileDetectRules.tablets,c))?(a.mobile=a.tablet=h,void(a.phone=null)):(e=g.findMatch(g.mobileDetectRules.phones,c))?(a.mobile=a.phone=e,void(a.tablet=null)):void(g.isMobileFallback(c)?(i=f.isPhoneSized(d),i===b?(a.mobile=g.FALLBACK_MOBILE,a.tablet=a.phone=null):i?(a.mobile=a.phone=g.FALLBACK_PHONE,a.tablet=null):(a.mobile=a.tablet=g.FALLBACK_TABLET,a.phone=null)):g.isTabletFallback(c)?(a.mobile=a.tablet=g.FALLBACK_TABLET,a.phone=null):a.mobile=a.tablet=a.phone=null)}},g.mobileGrade=function(a){var b=null!==a.mobile();return a.os("iOS")&&a.version("iPad")>=4.3||a.os("iOS")&&a.version("iPhone")>=3.1||a.os("iOS")&&a.version("iPod")>=3.1||a.version("Android")>2.1&&a.is("Webkit")||a.version("Windows Phone OS")>=7||a.is("BlackBerry")&&a.version("BlackBerry")>=6||a.match("Playbook.*Tablet")||a.version("webOS")>=1.4&&a.match("Palm|Pre|Pixi")||a.match("hp.*TouchPad")||a.is("Firefox")&&a.version("Firefox")>=12||a.is("Chrome")&&a.is("AndroidOS")&&a.version("Android")>=4||a.is("Skyfire")&&a.version("Skyfire")>=4.1&&a.is("AndroidOS")&&a.version("Android")>=2.3||a.is("Opera")&&a.version("Opera Mobi")>11&&a.is("AndroidOS")||a.is("MeeGoOS")||a.is("Tizen")||a.is("Dolfin")&&a.version("Bada")>=2||(a.is("UC Browser")||a.is("Dolfin"))&&a.version("Android")>=2.3||a.match("Kindle Fire")||a.is("Kindle")&&a.version("Kindle")>=3||a.is("AndroidOS")&&a.is("NookTablet")||a.version("Chrome")>=11&&!b||a.version("Safari")>=5&&!b||a.version("Firefox")>=4&&!b||a.version("MSIE")>=7&&!b||a.version("Opera")>=10&&!b?"A":a.os("iOS")&&a.version("iPad")<4.3||a.os("iOS")&&a.version("iPhone")<3.1||a.os("iOS")&&a.version("iPod")<3.1||a.is("Blackberry")&&a.version("BlackBerry")>=5&&a.version("BlackBerry")<6||a.version("Opera Mini")>=5&&a.version("Opera Mini")<=6.5&&(a.version("Android")>=2.3||a.is("iOS"))||a.match("NokiaN8|NokiaC7|N97.*Series60|Symbian/3")||a.version("Opera Mobi")>=11&&a.is("SymbianOS")?"B":(a.version("BlackBerry")<5||a.match("MSIEMobile|Windows CE.*Mobile")||a.version("Windows Mobile")<=5.2,"C")},g.detectOS=function(a){return g.findMatch(g.mobileDetectRules.oss0,a)||g.findMatch(g.mobileDetectRules.oss,a)},g.getDeviceSmallerSide=function(){return window.screen.width<window.screen.height?window.screen.width:window.screen.height},f.prototype={constructor:f,mobile:function(){return g.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.mobile},phone:function(){return g.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.phone},tablet:function(){return g.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.tablet},userAgent:function(){return this._cache.userAgent===b&&(this._cache.userAgent=g.findMatch(g.mobileDetectRules.uas,this.ua)),this._cache.userAgent},userAgents:function(){return this._cache.userAgents===b&&(this._cache.userAgents=g.findMatches(g.mobileDetectRules.uas,this.ua)),this._cache.userAgents},os:function(){return this._cache.os===b&&(this._cache.os=g.detectOS(this.ua)),this._cache.os},version:function(a){return g.getVersion(a,this.ua)},versionStr:function(a){return g.getVersionStr(a,this.ua)},is:function(b){return c(this.userAgents(),b)||a(b,this.os())||a(b,this.phone())||a(b,this.tablet())||c(g.findMatches(g.mobileDetectRules.utils,this.ua),b)},match:function(a){return a instanceof RegExp||(a=new RegExp(a,"i")),a.test(this.ua)},isPhoneSized:function(a){return f.isPhoneSized(a||this.maxPhoneWidth)},mobileGrade:function(){return this._cache.grade===b&&(this._cache.grade=g.mobileGrade(this)),this._cache.grade}},"undefined"!=typeof window&&window.screen?f.isPhoneSized=function(a){return a<0?b:g.getDeviceSmallerSide()<=a}:f.isPhoneSized=function(){},f._impl=g,f.version="1.4.5 2021-03-13",f})}(function(a){if("undefined"!=typeof module&&module.exports)return function(a){module.exports=a()};if("function"==typeof define&&define.amd)return define;if("undefined"!=typeof window)return function(a){window.MobileDetect=a()};throw new Error("unknown environment")}());var ai_lists=!0,ai_block_class_def="code-block"; if("undefined"!=typeof ai_lists){function X(b,e){for(var p=[];b=b.previousElementSibling;)("undefined"==typeof e||b.matches(e))&&p.push(b);return p}function fa(b,e){for(var p=[];b=b.nextElementSibling;)("undefined"==typeof e||b.matches(e))&&p.push(b);return p}var host_regexp=RegExp(":\\/\\/(.[^/:]+)","i");function ha(b){b=b.match(host_regexp);return null!=b&&1<b.length&&"string"===typeof b[1]&&0<b[1].length?b[1].toLowerCase():null}function Q(b){return b.includes(":")?(b=b.split(":"),1E3*(3600*parseInt(b[0])+ 60*parseInt(b[1])+parseInt(b[2]))):null}function Y(b){try{var e=Date.parse(b);isNaN(e)&&(e=null)}catch(p){e=null}if(null==e&&b.includes(" ")){b=b.split(" ");try{e=Date.parse(b[0]),e+=Q(b[1]),isNaN(e)&&(e=null)}catch(p){e=null}}return e}function Z(){null==document.querySelector("#ai-iab-tcf-bar")&&null==document.querySelector(".ai-list-manual")||"function"!=typeof __tcfapi||"function"!=typeof ai_load_blocks||"undefined"!=typeof ai_iab_tcf_callback_installed||(__tcfapi("addEventListener",2,function(b, e){e&&"useractioncomplete"===b.eventStatus&&(ai_tcData=b,ai_load_blocks(),b=document.querySelector("#ai-iab-tcf-status"),null!=b&&(b.textContent="IAB TCF 2.0 DATA LOADED"),b=document.querySelector("#ai-iab-tcf-bar"),null!=b&&(b.classList.remove("status-error"),b.classList.add("status-ok")))}),ai_iab_tcf_callback_installed=!0)}ai_process_lists=function(b){function e(a,d,k){if(0==a.length){if("!@!"==k)return!0;d!=k&&("true"==k.toLowerCase()?k=!0:"false"==k.toLowerCase()&&(k=!1));return d==k}if("object"!= typeof d&&"array"!=typeof d)return!1;var l=a[0];a=a.slice(1);if("*"==l)for(let [,n]of Object.entries(d)){if(e(a,n,k))return!0}else if(l in d)return e(a,d[l],k);return!1}function p(a,d,k){if("object"!=typeof a||-1==d.indexOf("["))return!1;d=d.replace(/]| /gi,"").split("[");return e(d,a,k)}function z(){if("function"==typeof __tcfapi){var a=document.querySelector("#ai-iab-tcf-status"),d=document.querySelector("#ai-iab-tcf-bar");null!=a&&(a.textContent="IAB TCF 2.0 DETECTED");__tcfapi("getTCData",2,function(k, l){l?(null!=d&&d.classList.add("status-ok"),"tcloaded"==k.eventStatus||"useractioncomplete"==k.eventStatus)?(ai_tcData=k,k.gdprApplies?null!=a&&(a.textContent="IAB TCF 2.0 DATA LOADED"):null!=a&&(a.textContent="IAB TCF 2.0 GDPR DOES NOT APPLY"),null!=d&&(d.classList.remove("status-error"),d.classList.add("status-ok")),setTimeout(function(){ai_process_lists()},10)):"cmpuishown"==k.eventStatus&&(ai_cmpuishown=!0,null!=a&&(a.textContent="IAB TCF 2.0 CMP UI SHOWN"),null!=d&&(d.classList.remove("status-error"), d.classList.add("status-ok"))):(null!=a&&(a.textContent="IAB TCF 2.0 __tcfapi getTCData failed"),null!=d&&(d.classList.remove("status-ok"),d.classList.add("status-error")))})}}function C(a){"function"==typeof __tcfapi?(ai_tcfapi_found=!0,"undefined"==typeof ai_iab_tcf_callback_installed&&Z(),"undefined"==typeof ai_tcData_requested&&(ai_tcData_requested=!0,z(),cookies_need_tcData=!0)):a&&("undefined"==typeof ai_tcfapi_found&&(ai_tcfapi_found=!1,setTimeout(function(){ai_process_lists()},10)),a=document.querySelector("#ai-iab-tcf-status"), null!=a&&(a.textContent="IAB TCF 2.0 MISSING: __tcfapi function not found"),a=document.querySelector("#ai-iab-tcf-bar"),null!=a&&(a.classList.remove("status-ok"),a.classList.add("status-error")))}if(null==b)b=document.querySelectorAll("div.ai-list-data, meta.ai-list-data");else{window.jQuery&&window.jQuery.fn&&b instanceof jQuery&&(b=Array.prototype.slice.call(b));var x=[];b.forEach((a,d)=>{a.matches(".ai-list-data")?x.push(a):(a=a.querySelectorAll(".ai-list-data"),a.length&&a.forEach((k,l)=>{x.push(k)}))}); b=x}if(b.length){b.forEach((a,d)=>{a.classList.remove("ai-list-data")});var L=ia(window.location.search);if(null!=L.referrer)var A=L.referrer;else A=document.referrer,""!=A&&(A=ha(A));var R=window.navigator.userAgent,S=R.toLowerCase(),aa=navigator.language,M=aa.toLowerCase();if("undefined"!==typeof MobileDetect)var ba=new MobileDetect(R);b.forEach((a,d)=>{var k=document.cookie.split(";");k.forEach(function(f,h){k[h]=f.trim()});d=a.closest("div."+ai_block_class_def);var l=!0;if(a.hasAttribute("referer-list")){var n= a.getAttribute("referer-list");n=b64d(n).split(",");var v=a.getAttribute("referer-list-type"),E=!1;n.every((f,h)=>{f=f.trim();if(""==f)return!0;if("*"==f.charAt(0))if("*"==f.charAt(f.length-1)){if(f=f.substr(1,f.length-2),-1!=A.indexOf(f))return E=!0,!1}else{if(f=f.substr(1),A.substr(-f.length)==f)return E=!0,!1}else if("*"==f.charAt(f.length-1)){if(f=f.substr(0,f.length-1),0==A.indexOf(f))return E=!0,!1}else if("#"==f){if(""==A)return E=!0,!1}else if(f==A)return E=!0,!1;return!0});var r=E;switch(v){case "B":r&& (l=!1);break;case "W":r||(l=!1)}}if(l&&a.hasAttribute("client-list")&&"undefined"!==typeof ba)switch(n=a.getAttribute("client-list"),n=b64d(n).split(","),v=a.getAttribute("client-list-type"),r=!1,n.every((f,h)=>{if(""==f.trim())return!0;f.split("&&").every((c,t)=>{t=!0;var w=!1;for(c=c.trim();"!!"==c.substring(0,2);)t=!t,c=c.substring(2);"language:"==c.substring(0,9)&&(w=!0,c=c.substring(9).toLowerCase());var q=!1;w?"*"==c.charAt(0)?"*"==c.charAt(c.length-1)?(c=c.substr(1,c.length-2).toLowerCase(), -1!=M.indexOf(c)&&(q=!0)):(c=c.substr(1).toLowerCase(),M.substr(-c.length)==c&&(q=!0)):"*"==c.charAt(c.length-1)?(c=c.substr(0,c.length-1).toLowerCase(),0==M.indexOf(c)&&(q=!0)):c==M&&(q=!0):"*"==c.charAt(0)?"*"==c.charAt(c.length-1)?(c=c.substr(1,c.length-2).toLowerCase(),-1!=S.indexOf(c)&&(q=!0)):(c=c.substr(1).toLowerCase(),S.substr(-c.length)==c&&(q=!0)):"*"==c.charAt(c.length-1)?(c=c.substr(0,c.length-1).toLowerCase(),0==S.indexOf(c)&&(q=!0)):ba.is(c)&&(q=!0);return(r=q?t:!t)?!0:!1});return r? !1:!0}),v){case "B":r&&(l=!1);break;case "W":r||(l=!1)}var N=n=!1;for(v=1;2>=v;v++)if(l){switch(v){case 1:var g=a.getAttribute("cookie-list");break;case 2:g=a.getAttribute("parameter-list")}if(null!=g){g=b64d(g);switch(v){case 1:var y=a.getAttribute("cookie-list-type");break;case 2:y=a.getAttribute("parameter-list-type")}g=g.replace("tcf-gdpr","tcf-v2[gdprApplies]=true");g=g.replace("tcf-no-gdpr","tcf-v2[gdprApplies]=false");g=g.replace("tcf-google","tcf-v2[vendor][consents][755]=true && tcf-v2[purpose][consents][1]=true"); g=g.replace("tcf-no-google","!!tcf-v2[vendor][consents][755]");g=g.replace("tcf-media.net","tcf-v2[vendor][consents][142]=true && tcf-v2[purpose][consents][1]=true");g=g.replace("tcf-no-media.net","!!tcf-v2[vendor][consents][142]");g=g.replace("tcf-amazon","tcf-v2[vendor][consents][793]=true && tcf-v2[purpose][consents][1]=true");g=g.replace("tcf-no-amazon","!!tcf-v2[vendor][consents][793]");g=g.replace("tcf-ezoic","tcf-v2[vendor][consents][347]=true && tcf-v2[purpose][consents][1]=true");g=g.replace("tcf-no-ezoic", "!!tcf-v2[vendor][consents][347]");var F=g.split(","),ca=[];k.forEach(function(f){f=f.split("=");try{var h=JSON.parse(decodeURIComponent(f[1]))}catch(c){h=decodeURIComponent(f[1])}ca[f[0]]=h});r=!1;var I=a;F.every((f,h)=>{f.split("&&").every((c,t)=>{t=!0;for(c=c.trim();"!!"==c.substring(0,2);)t=!t,c=c.substring(2);var w=c,q="!@!",T="tcf-v2"==w&&"!@!"==q,B=-1!=c.indexOf("["),J=0==c.indexOf("tcf-v2")||0==c.indexOf("euconsent-v2");J=J&&(B||T);-1!=c.indexOf("=")&&(q=c.split("="),w=q[0],q=q[1],B=-1!=w.indexOf("["), J=(J=0==w.indexOf("tcf-v2")||0==w.indexOf("euconsent-v2"))&&(B||T));if(J)document.querySelector("#ai-iab-tcf-status"),B=document.querySelector("#ai-iab-tcf-bar"),null!=B&&(B.style.display="block"),T&&"boolean"==typeof ai_tcfapi_found?r=ai_tcfapi_found?t:!t:"object"==typeof ai_tcData?(null!=B&&B.classList.add("status-ok"),w=w.replace(/]| /gi,"").split("["),w.shift(),r=(w=e(w,ai_tcData,q))?t:!t):"undefined"==typeof ai_tcfapi_found&&(I.classList.add("ai-list-data"),N=!0,"function"==typeof __tcfapi?C(!1): "undefined"==typeof ai_tcData_retrying&&(ai_tcData_retrying=!0,setTimeout(function(){"function"==typeof __tcfapi?C(!1):setTimeout(function(){"function"==typeof __tcfapi?C(!1):setTimeout(function(){C(!0)},3E3)},1E3)},600)));else if(B)r=(w=p(ca,w,q))?t:!t;else{var U=!1;"!@!"==q?k.every(function(ja){return ja.split("=")[0]==c?(U=!0,!1):!0}):U=-1!=k.indexOf(c);r=U?t:!t}return r?!0:!1});return r?!1:!0});r&&(N=!1,I.classList.remove("ai-list-data"));switch(y){case "B":r&&(l=!1);break;case "W":r||(l=!1)}}}a.classList.contains("ai-list-manual")&& (l?(I.classList.remove("ai-list-data"),I.classList.remove("ai-list-manual")):(n=!0,I.classList.add("ai-list-data")));(l||!n&&!N)&&a.hasAttribute("data-debug-info")&&(g=document.querySelector("."+a.dataset.debugInfo),null!=g&&(g=g.parentElement,null!=g&&g.classList.contains("ai-debug-info")&&g.remove()));y=X(a,".ai-debug-bar.ai-debug-lists");var ka=""==A?"#":A;0!=y.length&&y.forEach((f,h)=>{h=f.querySelector(".ai-debug-name.ai-list-info");null!=h&&(h.textContent=ka,h.title=R+"\n"+aa);h=f.querySelector(".ai-debug-name.ai-list-status"); null!=h&&(h.textContent=l?ai_front.visible:ai_front.hidden)});g=!1;if(l&&a.hasAttribute("scheduling-start")&&a.hasAttribute("scheduling-end")&&a.hasAttribute("scheduling-days")){var u=a.getAttribute("scheduling-start");v=a.getAttribute("scheduling-end");y=a.getAttribute("scheduling-days");g=!0;u=b64d(u);F=b64d(v);var V=parseInt(a.getAttribute("scheduling-fallback")),O=parseInt(a.getAttribute("gmt"));if(u.includes("-")||F.includes("-"))P=Y(u)+O,K=Y(F)+O;else var P=Q(u),K=Q(F);P??=0;K??=0;var W=b64d(y).split(","); y=a.getAttribute("scheduling-type");var D=(new Date).getTime()+O;v=new Date(D);var G=v.getDay();0==G?G=6:G--;u.includes("-")||F.includes("-")||(u=(new Date(v.getFullYear(),v.getMonth(),v.getDate())).getTime()+O,D-=u,0>D&&(D+=864E5));scheduling_start_date_ok=D>=P;scheduling_end_date_ok=0==K||D<K;u=scheduling_start_date_ok&&scheduling_end_date_ok&&W.includes(G.toString());switch(y){case "B":u=!u}u||(l=!1);var la=v.toISOString().split(".")[0].replace("T"," ");y=X(a,".ai-debug-bar.ai-debug-scheduling"); 0!=y.length&&y.forEach((f,h)=>{h=f.querySelector(".ai-debug-name.ai-scheduling-info");null!=h&&(h.textContent=la+" "+G+" current_time: "+Math.floor(D.toString()/1E3)+" start_date:"+Math.floor(P/1E3).toString()+"=>"+scheduling_start_date_ok.toString()+" end_date:"+Math.floor(K/1E3).toString()+"=>"+scheduling_end_date_ok.toString()+" days:"+W.toString()+"=>"+W.includes(G.toString()).toString());h=f.querySelector(".ai-debug-name.ai-scheduling-status");null!=h&&(h.textContent=l?ai_front.visible:ai_front.hidden); l||0==V||(f.classList.remove("ai-debug-scheduling"),f.classList.add("ai-debug-fallback"),h=f.querySelector(".ai-debug-name.ai-scheduling-status"),null!=h&&(h.textContent=ai_front.fallback+" = "+V))})}if(n||!l&&N)return!0;a.style.visibility="";a.style.position="";a.style.width="";a.style.height="";a.style.zIndex="";if(l){if(null!=d&&(d.style.visibility="",d.classList.contains("ai-remove-position")&&(d.style.position="")),a.hasAttribute("data-code")){n=b64d(a.dataset.code);u=document.createRange(); g=!0;try{H=u.createContextualFragment(n)}catch(f){g=!1}g&&(null!=a.closest("head")?(a.parentNode.insertBefore(H,a.nextSibling),a.remove()):a.append(H));da(a)}}else if(g&&!u&&0!=V){null!=d&&(d.style.visibility="",d.classList.contains("ai-remove-position")&&d.css({position:""}));n=fa(a,".ai-fallback");0!=n.length&&n.forEach((f,h)=>{f.classList.remove("ai-fallback")});if(a.hasAttribute("data-fallback-code")){n=b64d(a.dataset.fallbackCode);u=document.createRange();g=!0;try{var H=u.createContextualFragment(n)}catch(f){g= !1}g&&a.append(H);da(a)}else a.style.display="none",null!=d&&null==d.querySelector(".ai-debug-block")&&d.hasAttribute("style")&&-1==d.getAttribute("style").indexOf("height:")&&(d.style.display="none");null!=d&&d.hasAttribute("data-ai")&&(d.getAttribute("data-ai"),a.hasAttribute("fallback-tracking")&&(H=a.getAttribute("fallback-tracking"),d.setAttribute("data-ai-"+a.getAttribute("fallback_level"),H)))}else a.style.display="none",null!=d&&(d.removeAttribute("data-ai"),d.classList.remove("ai-track"), null!=d.querySelector(".ai-debug-block")?(d.style.visibility="",d.classList.remove("ai-close"),d.classList.contains("ai-remove-position")&&(d.style.position="")):d.hasAttribute("style")&&-1==d.getAttribute("style").indexOf("height:")&&(d.style.display="none"));a.setAttribute("data-code","");a.setAttribute("data-fallback-code","");null!=d&&d.classList.remove("ai-list-block")})}};function ea(b){b=`; ${document.cookie}`.split(`; ${b}=`);if(2===b.length)return b.pop().split(";").shift()}function ma(b, e,p){ea(b)&&(document.cookie=b+"="+(e?";path="+e:"")+(p?";domain="+p:"")+";expires=Thu, 01 Jan 1970 00:00:01 GMT")}function m(b){ea(b)&&(ma(b,"/",window.location.hostname),document.cookie=b+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;")}(function(b){"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?b():document.addEventListener("DOMContentLoaded",b)})(function(){setTimeout(function(){ai_process_lists();setTimeout(function(){Z();if("function"== typeof ai_load_blocks){document.addEventListener("cmplzEnableScripts",e);document.addEventListener("cmplz_event_marketing",e);function e(p){"cmplzEnableScripts"!=p.type&&"all"!==p.consentLevel||ai_load_blocks()}}},50);var b=document.querySelector(".ai-debug-page-type");null!=b&&b.addEventListener("dblclick",e=>{e=document.querySelector("#ai-iab-tcf-status");null!=e&&(e.textContent="CONSENT COOKIES");e=document.querySelector("#ai-iab-tcf-bar");null!=e&&(e.style.display="block")});b=document.querySelector("#ai-iab-tcf-bar"); null!=b&&b.addEventListener("click",e=>{m("euconsent-v2");m("__lxG__consent__v2");m("__lxG__consent__v2_daisybit");m("__lxG__consent__v2_gdaisybit");m("CookieLawInfoConsent");m("cookielawinfo-checkbox-advertisement");m("cookielawinfo-checkbox-analytics");m("cookielawinfo-checkbox-necessary");m("complianz_policy_id");m("complianz_consent_status");m("cmplz_marketing");m("cmplz_consent_status");m("cmplz_preferences");m("cmplz_statistics-anonymous");m("cmplz_choice");m("cmplz_banner-status");m("cmplz_functional"); m("cmplz_policy_id");m("cmplz_statistics");m("moove_gdpr_popup");m("real_cookie_banner-blog:1-tcf");m("real_cookie_banner-blog:1");e=document.querySelector("#ai-iab-tcf-status");null!=e&&(e.textContent="CONSENT COOKIES DELETED")})},5)});function da(b){setTimeout(function(){"function"==typeof ai_process_rotations_in_element&&ai_process_rotations_in_element(b);"function"==typeof ai_process_lists&&ai_process_lists();"function"==typeof ai_process_ip_addresses&&ai_process_ip_addresses();"function"==typeof ai_process_filter_hooks&& ai_process_filter_hooks();"function"==typeof ai_adb_process_blocks&&ai_adb_process_blocks(b);"function"==typeof ai_process_impressions&&1==ai_tracking_finished&&ai_process_impressions();"function"==typeof ai_install_click_trackers&&1==ai_tracking_finished&&ai_install_click_trackers();"function"==typeof ai_install_close_buttons&&ai_install_close_buttons(document)},5)}function ia(b){var e=b?b.split("?")[1]:window.location.search.slice(1);b={};if(e){e=e.split("#")[0];e=e.split("&");for(var p=0;p<e.length;p++){var z= e[p].split("="),C=void 0,x=z[0].replace(/\[\d*\]/,function(L){C=L.slice(1,-1);return""});z="undefined"===typeof z[1]?"":z[1];x=x.toLowerCase();z=z.toLowerCase();b[x]?("string"===typeof b[x]&&(b[x]=[b[x]]),"undefined"===typeof C?b[x].push(z):b[x][C]=z):b[x]=z}}return b}}; ai_run_106993616198 = function(){ ai_document_write=document.write;document.write=function(a){"interactive"==document.readyState?(console.error("document.write called after page load: ",a),"undefined"!=typeof ai_js_errors&&ai_js_errors.push(["document.write called after page load",a,0])):ai_document_write.call(document,a)}; ai_insert ('before', '#nv-footer', b64d ('PGRpdiBjbGFzcz0nY29kZS1ibG9jayBjb2RlLWJsb2NrLTEnIHN0eWxlPSdtYXJnaW46IDhweCAwOyBjbGVhcjogYm90aDsnPgo8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOiAjZWZlZmVmIDAlIDAlIG5vLXJlcGVhdCBwYWRkaW5nLWJveDttYXJnaW4tdG9wOiAtOHB4O21hcmdpbi1ib3R0b206IC04cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjYztib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjOyI+PGRpdiBzdHlsZT0ibWF4LXdpZHRoOjEzNjBweDttYXJnaW46YXV0bzsiPjxkaXYgaWQ9Im1ldGFzbGlkZXItaWQtNTYyODQiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAwIGF1dG87IiBjbGFzcz0ibWwtc2xpZGVyLTMtNjAtMSBtZXRhc2xpZGVyIG1ldGFzbGlkZXItZmxleCBtZXRhc2xpZGVyLTU2Mjg0IG1sLXNsaWRlciBtcy10aGVtZS1oaWdod2F5IG5hdi1oaWRkZW4iIHJvbGU9InJlZ2lvbiIgYXJpYS1yb2xlZGVzY3JpcHRpb249IlNsaWRlc2hvdyIgYXJpYS1sYWJlbD0iYm90dG9tIGJhbm5lciI+CiAgICA8ZGl2IGlkPSJtZXRhc2xpZGVyX2NvbnRhaW5lcl81NjI4NCI+CiAgICAgICAgPGRpdiBpZD0ibWV0YXNsaWRlcl81NjI4NCIgY2xhc3M9ImZsZXhzbGlkZXIiPgogICAgICAgICAgICA8dWwgYXJpYS1saXZlPSJwb2xpdGUiIGNsYXNzPSJzbGlkZXMiPgogICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEwMCU7IiBjbGFzcz0ic2xpZGUtOTE2MTUgbXMtaW1hZ2UiIGFyaWEtcm9sZWRlc2NyaXB0aW9uPSJzbGlkZSIgYXJpYS1sYWJlbD0ic2xpZGUtOTE2MTUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm52aWRpYS5jb20vZW4tdXMvb24tZGVtYW5kL3NlYXJjaC8/ZmFjZXQuZXZlbnRfbmFtZSU1QiU1RD1BSSUyMFN1bW1pdCUyMEluZGlhJmFtcDtmYWNldC5taW1ldHlwZSU1QiU1RD1ldmVudCUyMHNlc3Npb24mYW1wO2hlYWRlclRleHQ9QWxsJTIwU2Vzc2lvbnMmYW1wO2xheW91dD1saXN0JmFtcDtwYWdlPTEmYW1wO3E9LSZhbXA7c29ydD1yZWxldmFuY2UmYW1wO3NvcnREaXI9ZGVzYyIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgd2lkdGg9IjI3MjAiIGhlaWdodD0iMzYwIiBzcmM9Imh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjQvMTEvYWktc3VtbWl0LTI0LWluZGlhLXdlYi1rZXlub3RlLWpoaC10ZWNoLWJsb2ctMTM2MHgxODAtcjQuanBnIiBjbGFzcz0ic2xpZGVyLTU2Mjg0IHNsaWRlLTkxNjE1IiBhbHQ9IiIgcmVsPSIiIHRpdGxlPSJhaS1zdW1taXQtMjQtaW5kaWEtd2ViLWtleW5vdGUtamhoLXRlY2gtYmxvZy0xMzYweDE4MC1yNCIgZGVjb2Rpbmc9ImFzeW5jIiBsb2FkaW5nPSJsYXp5IiBzcmNzZXQ9Imh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjQvMTEvYWktc3VtbWl0LTI0LWluZGlhLXdlYi1rZXlub3RlLWpoaC10ZWNoLWJsb2ctMTM2MHgxODAtcjQuanBnIDI3MjB3LCBodHRwczovL2RldmVsb3Blci1ibG9ncy5udmlkaWEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI0LzExL2FpLXN1bW1pdC0yNC1pbmRpYS13ZWIta2V5bm90ZS1qaGgtdGVjaC1ibG9nLTEzNjB4MTgwLXI0LTMwMHg0MC5qcGcgMzAwdywgaHR0cHM6Ly9kZXZlbG9wZXItYmxvZ3MubnZpZGlhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNC8xMS9haS1zdW1taXQtMjQtaW5kaWEtd2ViLWtleW5vdGUtamhoLXRlY2gtYmxvZy0xMzYweDE4MC1yNC02MjV4ODMuanBnIDYyNXcsIGh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjQvMTEvYWktc3VtbWl0LTI0LWluZGlhLXdlYi1rZXlub3RlLWpoaC10ZWNoLWJsb2ctMTM2MHgxODAtcjQtMTc5eDI0LmpwZyAxNzl3LCBodHRwczovL2RldmVsb3Blci1ibG9ncy5udmlkaWEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI0LzExL2FpLXN1bW1pdC0yNC1pbmRpYS13ZWIta2V5bm90ZS1qaGgtdGVjaC1ibG9nLTEzNjB4MTgwLXI0LTc2OHgxMDIuanBnIDc2OHcsIGh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjQvMTEvYWktc3VtbWl0LTI0LWluZGlhLXdlYi1rZXlub3RlLWpoaC10ZWNoLWJsb2ctMTM2MHgxODAtcjQtMTUzNngyMDMuanBnIDE1MzZ3LCBodHRwczovL2RldmVsb3Blci1ibG9ncy5udmlkaWEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI0LzExL2FpLXN1bW1pdC0yNC1pbmRpYS13ZWIta2V5bm90ZS1qaGgtdGVjaC1ibG9nLTEzNjB4MTgwLXI0LTIwNDh4MjcxLmpwZyAyMDQ4dywgaHR0cHM6Ly9kZXZlbG9wZXItYmxvZ3MubnZpZGlhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNC8xMS9haS1zdW1taXQtMjQtaW5kaWEtd2ViLWtleW5vdGUtamhoLXRlY2gtYmxvZy0xMzYweDE4MC1yNC02NDV4ODUuanBnIDY0NXcsIGh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjQvMTEvYWktc3VtbWl0LTI0LWluZGlhLXdlYi1rZXlub3RlLWpoaC10ZWNoLWJsb2ctMTM2MHgxODAtcjQtNTAweDY2LmpwZyA1MDB3LCBodHRwczovL2RldmVsb3Blci1ibG9ncy5udmlkaWEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI0LzExL2FpLXN1bW1pdC0yNC1pbmRpYS13ZWIta2V5bm90ZS1qaGgtdGVjaC1ibG9nLTEzNjB4MTgwLXI0LTE2MHgyMS5qcGcgMTYwdywgaHR0cHM6Ly9kZXZlbG9wZXItYmxvZ3MubnZpZGlhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNC8xMS9haS1zdW1taXQtMjQtaW5kaWEtd2ViLWtleW5vdGUtamhoLXRlY2gtYmxvZy0xMzYweDE4MC1yNC0zNjJ4NDguanBnIDM2MncsIGh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjQvMTEvYWktc3VtbWl0LTI0LWluZGlhLXdlYi1rZXlub3RlLWpoaC10ZWNoLWJsb2ctMTM2MHgxODAtcjQtODMxeDExMC5qcGcgODMxdywgaHR0cHM6Ly9kZXZlbG9wZXItYmxvZ3MubnZpZGlhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNC8xMS9haS1zdW1taXQtMjQtaW5kaWEtd2ViLWtleW5vdGUtamhoLXRlY2gtYmxvZy0xMzYweDE4MC1yNC0xMDI0eDEzNi5qcGcgMTAyNHciIHNpemVzPSIobWF4LXdpZHRoOiAyNzIwcHgpIDEwMHZ3LCAyNzIwcHgiIC8+PC9hPjwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICA8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Cg==')); }; if (document.readyState === 'complete' || (document.readyState !== 'loading' && !document.documentElement.doScroll)) ai_run_106993616198 (); else document.addEventListener ('DOMContentLoaded', ai_run_106993616198); ai_js_code = true; </script> <div class="sticky-share-buttons"> <ul class="entry-meta-social-links-list"> <li><a data-wpel-link="external" href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fcomputed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim%2F" class="for-linkedin" target="_blank" rel="follow external noopener">L</a></li> <li><a data-wpel-link="external" href="https://twitter.com/intent/tweet?text=Computed+Tomography+Organ+and+Disease+Segmentation+Using+the+NVIDIA+VISTA-3D+NIM+Microservice+%7C+NVIDIA+Technical+Blog+https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fcomputed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim%2F" class="for-twitter" target="_blank" rel="follow external noopener">T</a></li> <li><a data-wpel-link="external" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fcomputed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim%2F" class="for-facebook" target="_blank" rel="follow external noopener">F</a></li> <li><a data-wpel-link="external" href="https://www.reddit.com/submit?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fcomputed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim%2F&amp;title=Computed+Tomography+Organ+and+Disease+Segmentation+Using+the+NVIDIA+VISTA-3D+NIM+Microservice+%7C+NVIDIA+Technical+Blog" class="for-reddit" target="_blank" rel="follow external noopener">R</a></li> <li><a href="mailto:?subject=I'd like to share a link with you&body=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fcomputed-tomography-organ-and-disease-segmentation-using-the-nvidia-vista-3d-nim%2F" class="for-mail">E</a></li> </ul> </div> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"NRJS-2b0defbeb07862260b2","applicationID":"745178505","transactionName":"Z10BbBRRW0QCAExfWF4XIlsSWVpZTApWUlJI","queueTime":0,"applicationTime":1643,"atts":"SxoCGlxLSEo=","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10