Editor.prototype.absoluteCssFonts=function(u){var D=null;if(null!=u){var K=u.split("url(");if(0<K.length){D=[K[0]];u=window.location.pathname;var T=null!=u?u.lastIndexOf("/"):-1;0<=T&&(u=u.substring(0,T+1));T=document.getElementsByTagName("base");var N=null;null!=T&&0<T.length&&(N=T[0].getAttribute("href"));for(var Q=1;Q<K.length;Q++)if(T=K[Q].indexOf(")"),0<T){var R=Editor.trimCssUrl(K[Q].substring(0,T));this.graph.isRelativeUrl(R)&&(R=null!=N?N+R:window.location.protocol+"//"+window.location.hostname+
("/"==R.charAt(0)?"":u)+R);D.push('url("'+R+'"'+K[Q].substring(T))}else D.push(K[Q])}else D=[u]}return null!=D?D.join(""):null};Editor.prototype.mapFontUrl=function(u,D,K){/^https?:\/\//.test(D)&&!this.isCorsEnabledForUrl(D)&&(D=PROXY_URL+"?url="+encodeURIComponent(D));K(u,D)};Editor.prototype.embedCssFonts=function(u,D){var K=u.split("url("),T=0;null==this.cachedFonts&&(this.cachedFonts={});var N=mxUtils.bind(this,function(){if(0==T){for(var ba=[K[0]],ea=1;ea<K.length;ea++){var Z=K[ea].indexOf(")");
The software does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.