From 0433369fd2d60f4c24fc03cd8f91235b34e1f8d6 Mon Sep 17 00:00:00 2001
From: Gaudenz Alder <gaudenz@jgraph.com>
Date: Mon, 15 Jul 2019 13:38:39 +0200
Subject: [PATCH] 10.9.7 release

---
 ChangeLog                                     |   5 +
 VERSION                                       |   2 +-
 etc/mxgraph/mxClient.js                       |  29 +-
 src/main/webapp/cache.manifest                |   2 +-
 src/main/webapp/js/app.min.js                 | 564 +++++++++---------
 src/main/webapp/js/diagramly/App.js           | 427 ++++++-------
 src/main/webapp/js/diagramly/Dialogs.js       |  22 +-
 src/main/webapp/js/mxgraph/Graph.js           |   6 +-
 src/main/webapp/js/viewer.min.js              |  61 +-
 src/main/webapp/templates/cloud/aws_1.png     | Bin 0 -> 6335 bytes
 src/main/webapp/templates/cloud/aws_1.xml     |   1 +
 src/main/webapp/templates/cloud/aws_10.png    | Bin 0 -> 4686 bytes
 src/main/webapp/templates/cloud/aws_10.xml    |   1 +
 src/main/webapp/templates/cloud/aws_2.png     | Bin 0 -> 5582 bytes
 src/main/webapp/templates/cloud/aws_2.xml     |   1 +
 src/main/webapp/templates/cloud/aws_3.png     | Bin 0 -> 3353 bytes
 src/main/webapp/templates/cloud/aws_3.xml     |   1 +
 src/main/webapp/templates/cloud/aws_3d.png    | Bin 0 -> 3298 bytes
 src/main/webapp/templates/cloud/aws_3d.xml    |   2 +
 src/main/webapp/templates/cloud/aws_4.png     | Bin 0 -> 4046 bytes
 src/main/webapp/templates/cloud/aws_4.xml     |   1 +
 src/main/webapp/templates/cloud/aws_5.png     | Bin 0 -> 4641 bytes
 src/main/webapp/templates/cloud/aws_5.xml     |   1 +
 src/main/webapp/templates/cloud/aws_6.png     | Bin 0 -> 4940 bytes
 src/main/webapp/templates/cloud/aws_6.xml     |   1 +
 src/main/webapp/templates/cloud/aws_7.png     | Bin 0 -> 3357 bytes
 src/main/webapp/templates/cloud/aws_7.xml     |   1 +
 src/main/webapp/templates/cloud/aws_8.png     | Bin 0 -> 4999 bytes
 src/main/webapp/templates/cloud/aws_8.xml     |   1 +
 src/main/webapp/templates/cloud/aws_9.png     | Bin 0 -> 4473 bytes
 src/main/webapp/templates/cloud/aws_9.xml     |   1 +
 src/main/webapp/templates/cloud/azure_1.png   | Bin 0 -> 2683 bytes
 src/main/webapp/templates/cloud/azure_1.xml   |   2 +
 src/main/webapp/templates/cloud/azure_2.png   | Bin 0 -> 5316 bytes
 src/main/webapp/templates/cloud/azure_2.xml   |   1 +
 src/main/webapp/templates/cloud/azure_3.png   | Bin 0 -> 4811 bytes
 src/main/webapp/templates/cloud/azure_3.xml   |   1 +
 src/main/webapp/templates/cloud/azure_4.png   | Bin 0 -> 4723 bytes
 src/main/webapp/templates/cloud/azure_4.xml   |   1 +
 src/main/webapp/templates/cloud/azure_5.png   | Bin 0 -> 4510 bytes
 src/main/webapp/templates/cloud/azure_5.xml   |   1 +
 src/main/webapp/templates/cloud/azure_6.png   | Bin 0 -> 2666 bytes
 src/main/webapp/templates/cloud/azure_6.xml   |   1 +
 src/main/webapp/templates/cloud/azure_7.png   | Bin 0 -> 2565 bytes
 src/main/webapp/templates/cloud/azure_7.xml   |   1 +
 src/main/webapp/templates/cloud/azure_8.png   | Bin 0 -> 4007 bytes
 src/main/webapp/templates/cloud/azure_8.xml   |   1 +
 src/main/webapp/templates/cloud/azure_9.png   | Bin 0 -> 1991 bytes
 src/main/webapp/templates/cloud/azure_9.xml   |   1 +
 .../gcp_backup_and_archive_api_hosting.png    | Bin 0 -> 3689 bytes
 .../gcp_backup_and_archive_api_hosting.xml    |   1 +
 .../gcp_big_data_complex_event_processing.png | Bin 0 -> 5541 bytes
 .../gcp_big_data_complex_event_processing.xml |   1 +
 ...est_continuous_delivery_with_spinnaker.png | Bin 0 -> 4388 bytes
 ...est_continuous_delivery_with_spinnaker.xml |   1 +
 ...p_digital_marketing_dmp_data_warehouse.png | Bin 0 -> 4212 bytes
 ...p_digital_marketing_dmp_data_warehouse.xml |   1 +
 ...ncial_services_monte_carlo_simulations.png | Bin 0 -> 3955 bytes
 ...ncial_services_monte_carlo_simulations.xml |   1 +
 .../cloud/gcp_gaming_backend_database.png     | Bin 0 -> 3112 bytes
 .../cloud/gcp_gaming_backend_database.xml     |   1 +
 ...general_app_engine_and_cloud_endpoints.png | Bin 0 -> 2925 bytes
 ...general_app_engine_and_cloud_endpoints.xml |   1 +
 ...ternet_of_things_mqtt_to_pubsub_broker.png | Bin 0 -> 3786 bytes
 ...ternet_of_things_mqtt_to_pubsub_broker.xml |   1 +
 ...fesciences_genomics_secondary_analysis.png | Bin 0 -> 4032 bytes
 ...fesciences_genomics_secondary_analysis.xml |   1 +
 .../cloud/gcp_media_hybrid_rendering.png      | Bin 0 -> 2941 bytes
 .../cloud/gcp_media_hybrid_rendering.xml      |   1 +
 ..._retail_beacons_and_targeted_marketing.png | Bin 0 -> 3997 bytes
 ..._retail_beacons_and_targeted_marketing.xml |   1 +
 .../cloud/gcp_websites_content_hosting.png    | Bin 0 -> 2716 bytes
 .../cloud/gcp_websites_content_hosting.xml    |   1 +
 .../cloud/ibm_bda_reference_architecture.png  | Bin 0 -> 4639 bytes
 .../cloud/ibm_bda_reference_architecture.xml  |   1 +
 .../webapp/templates/cloud/ibm_blockchain.png | Bin 0 -> 13303 bytes
 .../webapp/templates/cloud/ibm_blockchain.xml |   1 +
 .../cloud/ibm_cognitive_conversation.png      | Bin 0 -> 4438 bytes
 .../cloud/ibm_cognitive_conversation.xml      |   1 +
 .../cloud/ibm_cognitive_discovery.png         | Bin 0 -> 5148 bytes
 .../cloud/ibm_cognitive_discovery.xml         |   1 +
 .../templates/cloud/ibm_iot_architecture.png  | Bin 0 -> 4909 bytes
 .../templates/cloud/ibm_iot_architecture.xml  |   1 +
 .../templates/cloud/ibm_microservices.png     | Bin 0 -> 4968 bytes
 .../templates/cloud/ibm_microservices.xml     |   1 +
 .../templates/cloud/ibm_private_cloud.png     | Bin 0 -> 4850 bytes
 .../templates/cloud/ibm_private_cloud.xml     |   1 +
 .../cloud/ibm_vcenter_server_platform.png     | Bin 0 -> 3812 bytes
 .../cloud/ibm_vcenter_server_platform.xml     |   1 +
 .../templates/cloud/ibm_vpc_architecture.png  | Bin 0 -> 5044 bytes
 .../templates/cloud/ibm_vpc_architecture.xml  |   1 +
 src/main/webapp/templates/index.xml           | 113 ++--
 92 files changed, 668 insertions(+), 606 deletions(-)
 create mode 100644 src/main/webapp/templates/cloud/aws_1.png
 create mode 100644 src/main/webapp/templates/cloud/aws_1.xml
 create mode 100644 src/main/webapp/templates/cloud/aws_10.png
 create mode 100644 src/main/webapp/templates/cloud/aws_10.xml
 create mode 100644 src/main/webapp/templates/cloud/aws_2.png
 create mode 100644 src/main/webapp/templates/cloud/aws_2.xml
 create mode 100644 src/main/webapp/templates/cloud/aws_3.png
 create mode 100644 src/main/webapp/templates/cloud/aws_3.xml
 create mode 100644 src/main/webapp/templates/cloud/aws_3d.png
 create mode 100644 src/main/webapp/templates/cloud/aws_3d.xml
 create mode 100644 src/main/webapp/templates/cloud/aws_4.png
 create mode 100644 src/main/webapp/templates/cloud/aws_4.xml
 create mode 100644 src/main/webapp/templates/cloud/aws_5.png
 create mode 100644 src/main/webapp/templates/cloud/aws_5.xml
 create mode 100644 src/main/webapp/templates/cloud/aws_6.png
 create mode 100644 src/main/webapp/templates/cloud/aws_6.xml
 create mode 100644 src/main/webapp/templates/cloud/aws_7.png
 create mode 100644 src/main/webapp/templates/cloud/aws_7.xml
 create mode 100644 src/main/webapp/templates/cloud/aws_8.png
 create mode 100644 src/main/webapp/templates/cloud/aws_8.xml
 create mode 100644 src/main/webapp/templates/cloud/aws_9.png
 create mode 100644 src/main/webapp/templates/cloud/aws_9.xml
 create mode 100644 src/main/webapp/templates/cloud/azure_1.png
 create mode 100644 src/main/webapp/templates/cloud/azure_1.xml
 create mode 100644 src/main/webapp/templates/cloud/azure_2.png
 create mode 100644 src/main/webapp/templates/cloud/azure_2.xml
 create mode 100644 src/main/webapp/templates/cloud/azure_3.png
 create mode 100644 src/main/webapp/templates/cloud/azure_3.xml
 create mode 100644 src/main/webapp/templates/cloud/azure_4.png
 create mode 100644 src/main/webapp/templates/cloud/azure_4.xml
 create mode 100644 src/main/webapp/templates/cloud/azure_5.png
 create mode 100644 src/main/webapp/templates/cloud/azure_5.xml
 create mode 100644 src/main/webapp/templates/cloud/azure_6.png
 create mode 100644 src/main/webapp/templates/cloud/azure_6.xml
 create mode 100644 src/main/webapp/templates/cloud/azure_7.png
 create mode 100644 src/main/webapp/templates/cloud/azure_7.xml
 create mode 100644 src/main/webapp/templates/cloud/azure_8.png
 create mode 100644 src/main/webapp/templates/cloud/azure_8.xml
 create mode 100644 src/main/webapp/templates/cloud/azure_9.png
 create mode 100644 src/main/webapp/templates/cloud/azure_9.xml
 create mode 100644 src/main/webapp/templates/cloud/gcp_backup_and_archive_api_hosting.png
 create mode 100644 src/main/webapp/templates/cloud/gcp_backup_and_archive_api_hosting.xml
 create mode 100644 src/main/webapp/templates/cloud/gcp_big_data_complex_event_processing.png
 create mode 100644 src/main/webapp/templates/cloud/gcp_big_data_complex_event_processing.xml
 create mode 100644 src/main/webapp/templates/cloud/gcp_dev_test_continuous_delivery_with_spinnaker.png
 create mode 100644 src/main/webapp/templates/cloud/gcp_dev_test_continuous_delivery_with_spinnaker.xml
 create mode 100644 src/main/webapp/templates/cloud/gcp_digital_marketing_dmp_data_warehouse.png
 create mode 100644 src/main/webapp/templates/cloud/gcp_digital_marketing_dmp_data_warehouse.xml
 create mode 100644 src/main/webapp/templates/cloud/gcp_financial_services_monte_carlo_simulations.png
 create mode 100644 src/main/webapp/templates/cloud/gcp_financial_services_monte_carlo_simulations.xml
 create mode 100644 src/main/webapp/templates/cloud/gcp_gaming_backend_database.png
 create mode 100644 src/main/webapp/templates/cloud/gcp_gaming_backend_database.xml
 create mode 100644 src/main/webapp/templates/cloud/gcp_general_app_engine_and_cloud_endpoints.png
 create mode 100644 src/main/webapp/templates/cloud/gcp_general_app_engine_and_cloud_endpoints.xml
 create mode 100644 src/main/webapp/templates/cloud/gcp_internet_of_things_mqtt_to_pubsub_broker.png
 create mode 100644 src/main/webapp/templates/cloud/gcp_internet_of_things_mqtt_to_pubsub_broker.xml
 create mode 100644 src/main/webapp/templates/cloud/gcp_lifesciences_genomics_secondary_analysis.png
 create mode 100644 src/main/webapp/templates/cloud/gcp_lifesciences_genomics_secondary_analysis.xml
 create mode 100644 src/main/webapp/templates/cloud/gcp_media_hybrid_rendering.png
 create mode 100644 src/main/webapp/templates/cloud/gcp_media_hybrid_rendering.xml
 create mode 100644 src/main/webapp/templates/cloud/gcp_retail_beacons_and_targeted_marketing.png
 create mode 100644 src/main/webapp/templates/cloud/gcp_retail_beacons_and_targeted_marketing.xml
 create mode 100644 src/main/webapp/templates/cloud/gcp_websites_content_hosting.png
 create mode 100644 src/main/webapp/templates/cloud/gcp_websites_content_hosting.xml
 create mode 100644 src/main/webapp/templates/cloud/ibm_bda_reference_architecture.png
 create mode 100644 src/main/webapp/templates/cloud/ibm_bda_reference_architecture.xml
 create mode 100644 src/main/webapp/templates/cloud/ibm_blockchain.png
 create mode 100644 src/main/webapp/templates/cloud/ibm_blockchain.xml
 create mode 100644 src/main/webapp/templates/cloud/ibm_cognitive_conversation.png
 create mode 100644 src/main/webapp/templates/cloud/ibm_cognitive_conversation.xml
 create mode 100644 src/main/webapp/templates/cloud/ibm_cognitive_discovery.png
 create mode 100644 src/main/webapp/templates/cloud/ibm_cognitive_discovery.xml
 create mode 100644 src/main/webapp/templates/cloud/ibm_iot_architecture.png
 create mode 100644 src/main/webapp/templates/cloud/ibm_iot_architecture.xml
 create mode 100644 src/main/webapp/templates/cloud/ibm_microservices.png
 create mode 100644 src/main/webapp/templates/cloud/ibm_microservices.xml
 create mode 100644 src/main/webapp/templates/cloud/ibm_private_cloud.png
 create mode 100644 src/main/webapp/templates/cloud/ibm_private_cloud.xml
 create mode 100644 src/main/webapp/templates/cloud/ibm_vcenter_server_platform.png
 create mode 100644 src/main/webapp/templates/cloud/ibm_vcenter_server_platform.xml
 create mode 100644 src/main/webapp/templates/cloud/ibm_vpc_architecture.png
 create mode 100644 src/main/webapp/templates/cloud/ibm_vpc_architecture.xml

diff --git a/ChangeLog b/ChangeLog
index 80e7a41a4..4721844f6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+15-JUL-2019: 10.9.7
+
+- Adds validation for label border and background colors
+- Uses mxGraph 4.0.2
+
 12-JUL-2019: 10.9.6
 
 - Adds local files, Google Drive in Office Add-in
diff --git a/VERSION b/VERSION
index 9e7c47cfe..68742bab8 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-10.9.6
\ No newline at end of file
+10.9.7
\ No newline at end of file
diff --git a/etc/mxgraph/mxClient.js b/etc/mxgraph/mxClient.js
index a8216d66d..847e10f4e 100644
--- a/etc/mxgraph/mxClient.js
+++ b/etc/mxgraph/mxClient.js
@@ -324,9 +324,9 @@ mxSvgCanvas2D.prototype.convertHtml=function(a){if(this.useDomParser){var b=(new
 b.documentElement.appendChild(c);var d=document.createElement("div");d.innerHTML=a;for(a=d.firstChild;null!=a;)d=a.nextSibling,c.appendChild(b.adoptNode(a)),a=d;return c.innerHTML}b=document.createElement("textarea");b.innerHTML=a.replace(/&amp;/g,"&amp;amp;").replace(/&#60;/g,"&amp;lt;").replace(/&#62;/g,"&amp;gt;").replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;");a=b.value.replace(/&/g,"&amp;").replace(/&amp;lt;/g,"&lt;").replace(/&amp;gt;/g,"&gt;").replace(/&amp;amp;/g,
 "&amp;").replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />").replace(/(<img[^>]+)>/gm,"$1 />")}return a};
 mxSvgCanvas2D.prototype.createDiv=function(a,b,c,d,e,f){c=this.state;d="display:inline-block;font-size:"+c.fontSize+'px;font-family:"'+c.fontFamily+'";color:'+c.fontColor+";line-height:"+(mxConstants.ABSOLUTE_LINE_HEIGHT?c.fontSize*mxConstants.LINE_HEIGHT+"px":mxConstants.LINE_HEIGHT*this.lineHeightCorrection)+";"+d;(c.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d+="font-weight:bold;");(c.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d+="font-style:italic;");(c.fontStyle&
-mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d+="text-decoration:underline;");d=b==mxConstants.ALIGN_CENTER?d+"text-align:center;":b==mxConstants.ALIGN_RIGHT?d+"text-align:right;":d+"text-align:left;";b="";null!=c.fontBackgroundColor&&(b+="background-color:"+c.fontBackgroundColor+";");null!=c.fontBorderColor&&(b+="border:1px solid "+c.fontBorderColor+";");mxUtils.isNode(a)||(a=this.convertHtml(a),"fill"!=e&&"width"!=e?(null!=f&&(b+="white-space:"+f+";"),a='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;'+
-b+'">'+a+"</div>"):d+=b);if(!mxClient.IS_IE&&document.createElementNS)return e=document.createElementNS("http://www.w3.org/1999/xhtml","div"),e.setAttribute("style",d),mxUtils.isNode(a)?this.root.ownerDocument!=document?e.appendChild(a.cloneNode(!0)):e.appendChild(a):e.innerHTML=a,e;mxUtils.isNode(a)&&this.root.ownerDocument!=document&&(a=a.outerHTML);return mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+d+'">'+a+"</div>").documentElement};
-mxSvgCanvas2D.prototype.invalidateCachedOffsetSize=function(a){delete a.firstChild.mxCachedOffsetWidth;delete a.firstChild.mxCachedFinalOffsetWidth;delete a.firstChild.mxCachedFinalOffsetHeight};
+mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d+="text-decoration:underline;");d=b==mxConstants.ALIGN_CENTER?d+"text-align:center;":b==mxConstants.ALIGN_RIGHT?d+"text-align:right;":d+"text-align:left;";b="";null!=c.fontBackgroundColor&&(b+="background-color:"+mxUtils.htmlEntities(c.fontBackgroundColor)+";");null!=c.fontBorderColor&&(b+="border:1px solid "+mxUtils.htmlEntities(c.fontBorderColor)+";");mxUtils.isNode(a)||(a=this.convertHtml(a),"fill"!=e&&"width"!=e?(null!=f&&(b+="white-space:"+
+f+";"),a='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;'+b+'">'+a+"</div>"):d+=b);if(!mxClient.IS_IE&&document.createElementNS)return e=document.createElementNS("http://www.w3.org/1999/xhtml","div"),e.setAttribute("style",d),mxUtils.isNode(a)?this.root.ownerDocument!=document?e.appendChild(a.cloneNode(!0)):e.appendChild(a):e.innerHTML=a,e;mxUtils.isNode(a)&&this.root.ownerDocument!=document&&(a=a.outerHTML);return mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+
+d+'">'+a+"</div>").documentElement};mxSvgCanvas2D.prototype.invalidateCachedOffsetSize=function(a){delete a.firstChild.mxCachedOffsetWidth;delete a.firstChild.mxCachedFinalOffsetWidth;delete a.firstChild.mxCachedFinalOffsetHeight};
 mxSvgCanvas2D.prototype.updateText=function(a,b,c,d,e,f,g,k,l,m,n){if(null!=n&&null!=n.firstChild&&null!=n.firstChild.firstChild&&null!=n.firstChild.firstChild.firstChild){n=n.firstChild;var p=n.firstChild,q=p.firstChild;m=null!=m?m:0;var r=this.state;a+=r.dx;b+=r.dy;l?(q.style.maxHeight=Math.round(d)+"px",q.style.maxWidth=Math.round(c)+"px"):"fill"==k?(q.style.width=Math.round(c+1)+"px",q.style.height=Math.round(d+1)+"px"):"width"==k&&(q.style.width=Math.round(c+1)+"px",0<d&&(q.style.maxHeight=Math.round(d)+
 "px"));g&&0<c&&(q.style.width=Math.round(c+1)+"px");var t,u=q;null!=u.firstChild&&"DIV"==u.firstChild.nodeName&&(u=u.firstChild);var x=null!=n.mxCachedOffsetWidth?n.mxCachedOffsetWidth:u.offsetWidth;t=x+0;g&&"fill"!=k&&(l&&(t=Math.min(t,c)),q.style.width=Math.round(t+1)+"px");t=null!=n.mxCachedFinalOffsetWidth?n.mxCachedFinalOffsetWidth:u.offsetWidth;g=null!=n.mxCachedFinalOffsetHeight?n.mxCachedFinalOffsetHeight:u.offsetHeight;this.cacheOffsetSize&&(n.mxCachedOffsetWidth=x,n.mxCachedFinalOffsetWidth=
 t,n.mxCachedFinalOffsetHeight=g);t+=0;g-=2;l&&(g=Math.min(g,d),t=Math.min(t,c));"width"==k?d=g:"fill"!=k&&(c=t,d=g);g=l=0;e==mxConstants.ALIGN_CENTER?l-=c/2:e==mxConstants.ALIGN_RIGHT&&(l-=c);a+=l;f==mxConstants.ALIGN_MIDDLE?g-=d/2:f==mxConstants.ALIGN_BOTTOM&&(g-=d);"fill"!=k&&mxClient.IS_FF&&mxClient.IS_WIN&&(g-=2);b+=g;e=1!=r.scale?"scale("+r.scale+")":"";0!=r.rotation&&this.rotateHtml?(e+="rotate("+r.rotation+","+c/2+","+d/2+")",b=this.rotatePoint((a+c/2)*r.scale,(b+d/2)*r.scale,r.rotation,r.rotationCx,
@@ -366,9 +366,9 @@ mxVmlCanvas2D.prototype.quadTo=function(a,b,c,d){var e=this.state,f=(this.lastX+
 mxVmlCanvas2D.prototype.createRect=function(a,b,c,d,e){var f=this.state;a=this.createVmlElement(a);a.style.position="absolute";a.style.left=this.format((b+f.dx)*f.scale)+"px";a.style.top=this.format((c+f.dy)*f.scale)+"px";a.style.width=this.format(d*f.scale)+"px";a.style.height=this.format(e*f.scale)+"px";return a};mxVmlCanvas2D.prototype.rect=function(a,b,c,d){this.node=this.createRect("rect",a,b,c,d)};
 mxVmlCanvas2D.prototype.roundrect=function(a,b,c,d,e,f){this.node=this.createRect("roundrect",a,b,c,d);this.node.setAttribute("arcsize",Math.max(100*e/c,100*f/d)+"%")};mxVmlCanvas2D.prototype.ellipse=function(a,b,c,d){this.node=this.createRect("oval",a,b,c,d)};
 mxVmlCanvas2D.prototype.image=function(a,b,c,d,e,f,g,k){f?(a=this.createRect("rect",a,b,c,d),a.stroked="false",b=this.createVmlElement("fill"),b.aspect=f?"atmost":"ignore",b.rotate="true",b.type="frame",b.src=e,a.appendChild(b)):(a=this.createRect("image",a,b,c,d),a.src=e);g&&k?a.style.rotation="180":g?a.style.flip="x":k&&(a.style.flip="y");if(1>this.state.alpha||1>this.state.fillAlpha)a.style.filter+="alpha(opacity="+this.state.alpha*this.state.fillAlpha*100+")";this.root.appendChild(a)};
-mxVmlCanvas2D.prototype.createDiv=function(a,b,c,d){c=this.createElement("div");var e=this.state,f="";null!=e.fontBackgroundColor&&(f+="background-color:"+e.fontBackgroundColor+";");null!=e.fontBorderColor&&(f+="border:1px solid "+e.fontBorderColor+";");mxUtils.isNode(a)?c.appendChild(a):"fill"!=d&&"width"!=d?(d=this.createElement("div"),d.style.cssText=f,d.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",d.style.zoom="1",d.style.textDecoration="inherit",d.innerHTML=a,c.appendChild(d)):(c.style.cssText=
-f,c.innerHTML=a);a=c.style;a.fontSize=e.fontSize/this.vmlScale+"px";a.fontFamily=e.fontFamily;a.color=e.fontColor;a.verticalAlign="top";a.textAlign=b||"left";a.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?e.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale+"px":mxConstants.LINE_HEIGHT;(e.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a.fontWeight="bold");(e.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a.fontStyle="italic");(e.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&
-(a.textDecoration="underline");return c};
+mxVmlCanvas2D.prototype.createDiv=function(a,b,c,d){c=this.createElement("div");var e=this.state,f="";null!=e.fontBackgroundColor&&(f+="background-color:"+mxUtils.htmlEntities(e.fontBackgroundColor)+";");null!=e.fontBorderColor&&(f+="border:1px solid "+mxUtils.htmlEntities(e.fontBorderColor)+";");mxUtils.isNode(a)?c.appendChild(a):"fill"!=d&&"width"!=d?(d=this.createElement("div"),d.style.cssText=f,d.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",d.style.zoom="1",d.style.textDecoration=
+"inherit",d.innerHTML=a,c.appendChild(d)):(c.style.cssText=f,c.innerHTML=a);a=c.style;a.fontSize=e.fontSize/this.vmlScale+"px";a.fontFamily=e.fontFamily;a.color=e.fontColor;a.verticalAlign="top";a.textAlign=b||"left";a.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?e.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale+"px":mxConstants.LINE_HEIGHT;(e.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a.fontWeight="bold");(e.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a.fontStyle="italic");
+(e.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a.textDecoration="underline");return c};
 mxVmlCanvas2D.prototype.text=function(a,b,c,d,e,f,g,k,l,m,n,p,q){if(this.textEnabled&&null!=e){var r=this.state;if("html"==l){null!=r.rotation&&(b=this.rotatePoint(a,b,r.rotation,r.rotationCx,r.rotationCy),a=b.x,b=b.y);8!=document.documentMode||mxClient.IS_EM?(a*=r.scale,b*=r.scale):(a+=r.dx,b+=r.dy,"fill"!=m&&g==mxConstants.ALIGN_TOP&&--b);l=8!=document.documentMode||mxClient.IS_EM?this.createElement("div"):this.createVmlElement("group");l.style.position="absolute";l.style.display="inline";l.style.left=
 this.format(a)+"px";l.style.top=this.format(b)+"px";l.style.zoom=r.scale;var t=this.createElement("div");t.style.position="relative";t.style.display="inline";var u=mxUtils.getAlignmentAsPoint(f,g),x=u.x,u=u.y;e=this.createDiv(e,f,g,m);f=this.createElement("div");null!=q&&e.setAttribute("dir",q);if(k&&0<c){if(n||(e.style.width=Math.round(c)+"px"),e.style.wordWrap=mxConstants.WORD_WRAP,e.style.whiteSpace="normal","break-word"==e.style.wordWrap){var y=e;null!=y.firstChild&&"DIV"==y.firstChild.nodeName&&
 (y.firstChild.style.width="100%")}}else e.style.whiteSpace="nowrap";p=r.rotation+(p||0);this.rotateHtml&&0!=p?(f.style.display="inline",f.style.zoom="1",f.appendChild(e),8!=document.documentMode||mxClient.IS_EM||"DIV"==this.root.nodeName?l.appendChild(f):(t.appendChild(f),l.appendChild(t))):8!=document.documentMode||mxClient.IS_EM?(e.style.display="inline",l.appendChild(e)):(t.appendChild(e),l.appendChild(t));"DIV"!=this.root.nodeName?(q=this.createVmlElement("rect"),q.stroked="false",q.filled="false",
@@ -511,8 +511,8 @@ this.textWidthPadding;this.clipped&&(f=Math.min(f,this.bounds.height));l=this.bo
 "px");var g=g*d,l=l*d,m=this.getTextRotation()*(Math.PI/180);e=parseFloat(parseFloat(Math.cos(m)).toFixed(8));f=parseFloat(parseFloat(Math.sin(-m)).toFixed(8));m%=2*Math.PI;0>m&&(m+=2*Math.PI);m%=Math.PI;m>Math.PI/2&&(m=Math.PI-m);var k=Math.cos(m),n=Math.sin(-m),b=l*-(b+.5),p=g*-(c+.5);0!=m&&(c="progid:DXImageTransform.Microsoft.Matrix(M11="+e+", M12="+f+", M21="+-f+", M22="+e+", sizingMethod='auto expand')",a.filter=null!=a.filter&&0<a.filter.length?a.filter+(" "+c):c);c=0;"fill"!=this.overflow&&
 mxClient.IS_QUIRKS&&(c=this.valign==mxConstants.ALIGN_TOP?c-1:this.valign==mxConstants.ALIGN_BOTTOM?c+2:c+1);a.zoom=d;a.left=Math.round(this.bounds.x+((l-l*k+g*n)/2-e*b-f*p)-l/2)+"px";a.top=Math.round(this.bounds.y+((g-g*k+l*n)/2+f*b-e*p)-g/2+c)+"px"};
 mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var a=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(a=mxUtils.htmlEntities(a,!1));var a=mxUtils.replaceTrailingNewlines(a,"<div><br></div>"),a=this.replaceLinefeeds?a.replace(/\n/g,"<br/>"):a,b=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,c=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if("fill"==this.overflow||
-"width"==this.overflow)null!=b&&(this.node.style.backgroundColor=b),null!=c&&(this.node.style.border="1px solid "+c);else{var d="";null!=b&&(d+="background-color:"+b+";");null!=c&&(d+="border:1px solid "+c+";");a='<div style="zoom:1;'+d+"display:inline-block;_display:inline;text-decoration:inherit;padding-bottom:1px;padding-right:1px;line-height:"+(mxConstants.ABSOLUTE_LINE_HEIGHT?this.size*mxConstants.LINE_HEIGHT+"px":mxConstants.LINE_HEIGHT)+'">'+a+"</div>"}this.node.innerHTML=a;a=this.node.getElementsByTagName("div");
-0<a.length&&(b=this.textDirection,b==mxConstants.TEXT_DIRECTION_AUTO&&this.dialect!=mxConstants.DIALECT_STRICTHTML&&(b=this.getAutoDirection()),b==mxConstants.TEXT_DIRECTION_LTR||b==mxConstants.TEXT_DIRECTION_RTL?a[a.length-1].setAttribute("dir",b):a[a.length-1].removeAttribute("dir"))}};
+"width"==this.overflow)null!=b&&(this.node.style.backgroundColor=b),null!=c&&(this.node.style.border="1px solid "+c);else{var d="";null!=b&&(d+="background-color:"+mxUtils.htmlEntities(b)+";");null!=c&&(d+="border:1px solid "+mxUtils.htmlEntities(c)+";");a='<div style="zoom:1;'+d+"display:inline-block;_display:inline;text-decoration:inherit;padding-bottom:1px;padding-right:1px;line-height:"+(mxConstants.ABSOLUTE_LINE_HEIGHT?this.size*mxConstants.LINE_HEIGHT+"px":mxConstants.LINE_HEIGHT)+'">'+a+"</div>"}this.node.innerHTML=
+a;a=this.node.getElementsByTagName("div");0<a.length&&(b=this.textDirection,b==mxConstants.TEXT_DIRECTION_AUTO&&this.dialect!=mxConstants.DIALECT_STRICTHTML&&(b=this.getAutoDirection()),b==mxConstants.TEXT_DIRECTION_LTR||b==mxConstants.TEXT_DIRECTION_RTL?a[a.length-1].setAttribute("dir",b):a[a.length-1].removeAttribute("dir"))}};
 mxText.prototype.updateFont=function(a){a=a.style;a.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?this.size*mxConstants.LINE_HEIGHT+"px":mxConstants.LINE_HEIGHT;a.fontSize=this.size+"px";a.fontFamily='"'+this.family+'"';a.verticalAlign="top";a.color=this.color;a.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"";a.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"";a.textDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?
 "underline":"";a.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"};
 mxText.prototype.updateSize=function(a,b){var c=Math.max(0,Math.round(this.bounds.width/this.scale)),d=Math.max(0,Math.round(this.bounds.height/this.scale)),e=a.style;this.clipped?(e.overflow="hidden",mxClient.IS_QUIRKS?e.width=c+"px":(e.maxHeight=d+"px",e.maxWidth=c+"px")):"fill"==this.overflow?(e.width=c+1+"px",e.height=d+1+"px",e.overflow="hidden"):"width"==this.overflow&&(e.width=c+1+"px",e.maxHeight=d+1+"px",e.overflow="hidden");if(this.wrap&&0<c){if(e.wordWrap=mxConstants.WORD_WRAP,e.whiteSpace=
@@ -1367,9 +1367,10 @@ g)),b,c,d)}};mxCellStatePreview.prototype.addEdges=function(a){for(var b=this.gr
 mxConnectionConstraint.prototype.dx=null;mxConnectionConstraint.prototype.dy=null;
 function mxGraphHandler(a){this.graph=a;this.graph.addMouseListener(this);this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape();this.updateHint()});this.graph.addListener(mxEvent.PAN,this.panHandler);this.escapeHandler=mxUtils.bind(this,function(a,c){this.reset()});this.graph.addListener(mxEvent.ESCAPE,this.escapeHandler);this.refreshHandler=mxUtils.bind(this,function(a,c){if(null!=this.first)try{this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),
 this.updatePreviewShape()}catch(d){this.reset()}});this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler)}mxGraphHandler.prototype.graph=null;mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50;mxGraphHandler.prototype.enabled=!0;mxGraphHandler.prototype.highlightEnabled=!0;mxGraphHandler.prototype.cloneEnabled=!0;mxGraphHandler.prototype.moveEnabled=!0;mxGraphHandler.prototype.guidesEnabled=!1;mxGraphHandler.prototype.guide=null;mxGraphHandler.prototype.currentDx=null;
-mxGraphHandler.prototype.currentDy=null;mxGraphHandler.prototype.updateCursor=!0;mxGraphHandler.prototype.selectEnabled=!0;mxGraphHandler.prototype.removeCellsFromParent=!0;mxGraphHandler.prototype.connectOnDrop=!1;mxGraphHandler.prototype.scrollOnMove=!0;mxGraphHandler.prototype.minimumSize=6;mxGraphHandler.prototype.previewColor="black";mxGraphHandler.prototype.htmlPreview=!1;mxGraphHandler.prototype.shape=null;mxGraphHandler.prototype.scaleGrid=!1;mxGraphHandler.prototype.rotationEnabled=!0;
-mxGraphHandler.prototype.isEnabled=function(){return this.enabled};mxGraphHandler.prototype.setEnabled=function(a){this.enabled=a};mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled};mxGraphHandler.prototype.setCloneEnabled=function(a){this.cloneEnabled=a};mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled};mxGraphHandler.prototype.setMoveEnabled=function(a){this.moveEnabled=a};mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled};
-mxGraphHandler.prototype.setSelectEnabled=function(a){this.selectEnabled=a};mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent};mxGraphHandler.prototype.setRemoveCellsFromParent=function(a){this.removeCellsFromParent=a};mxGraphHandler.prototype.getInitialCellForEvent=function(a){return a.getCell()};mxGraphHandler.prototype.isDelayedSelection=function(a,b){return this.graph.isCellSelected(a)};mxGraphHandler.prototype.consumeMouseEvent=function(a,b){b.consume()};
+mxGraphHandler.prototype.currentDy=null;mxGraphHandler.prototype.updateCursor=!0;mxGraphHandler.prototype.selectEnabled=!0;mxGraphHandler.prototype.removeCellsFromParent=!0;mxGraphHandler.prototype.removeEmptyParents=!1;mxGraphHandler.prototype.connectOnDrop=!1;mxGraphHandler.prototype.scrollOnMove=!0;mxGraphHandler.prototype.minimumSize=6;mxGraphHandler.prototype.previewColor="black";mxGraphHandler.prototype.htmlPreview=!1;mxGraphHandler.prototype.shape=null;mxGraphHandler.prototype.scaleGrid=!1;
+mxGraphHandler.prototype.rotationEnabled=!0;mxGraphHandler.prototype.isEnabled=function(){return this.enabled};mxGraphHandler.prototype.setEnabled=function(a){this.enabled=a};mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled};mxGraphHandler.prototype.setCloneEnabled=function(a){this.cloneEnabled=a};mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled};mxGraphHandler.prototype.setMoveEnabled=function(a){this.moveEnabled=a};
+mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled};mxGraphHandler.prototype.setSelectEnabled=function(a){this.selectEnabled=a};mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent};mxGraphHandler.prototype.setRemoveCellsFromParent=function(a){this.removeCellsFromParent=a};mxGraphHandler.prototype.getInitialCellForEvent=function(a){return a.getCell()};mxGraphHandler.prototype.isDelayedSelection=function(a,b){return this.graph.isCellSelected(a)};
+mxGraphHandler.prototype.consumeMouseEvent=function(a,b){b.consume()};
 mxGraphHandler.prototype.mouseDown=function(a,b){if(!b.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&null!=b.getState()&&!mxEvent.isMultiTouchEvent(b.getEvent())){var c=this.getInitialCellForEvent(b);this.delayedSelection=this.isDelayedSelection(c,b);this.cell=null;this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(c,b.getEvent());if(this.isMoveEnabled()){var d=this.graph.model,e=d.getGeometry(c);this.graph.isCellMovable(c)&&(!d.isEdge(c)||1<this.graph.getSelectionCount()||
 null!=e.points&&0<e.points.length||null==d.getTerminal(c,!0)||null==d.getTerminal(c,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(b.getEvent())&&this.graph.isCellsCloneable())?this.start(c,b.getX(),b.getY()):this.delayedSelection&&(this.cell=c);this.cellWasClicked=!0;this.consumeMouseEvent(mxEvent.MOUSE_DOWN,b)}}};
 mxGraphHandler.prototype.getGuideStates=function(){var a=this.graph.getDefaultParent(),b=this.graph.getModel(),c=mxUtils.bind(this,function(a){return null!=this.graph.view.getState(a)&&b.isVertex(a)&&null!=b.getGeometry(a)&&!b.getGeometry(a).relative});return this.graph.view.getCellStates(b.filterDescendants(c,a))};mxGraphHandler.prototype.getCells=function(a){return!this.delayedSelection&&this.graph.isCellMovable(a)?[a]:this.graph.getMovableCells(this.graph.getSelectionCells())};
@@ -1389,8 +1390,10 @@ mxGraphHandler.prototype.mouseUp=function(a,b){if(!b.isConsumed()){var c=this.gr
 e),e=this.roundLength(this.currentDy/e),g=this.target;c.isSplitEnabled()&&c.isSplitTarget(g,this.cells,b.getEvent())?c.splitEdge(g,this.cells,null,f,e):this.moveCells(this.cells,f,e,d,this.target,b.getEvent())}}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(b)}this.cellWasClicked&&this.consumeMouseEvent(mxEvent.MOUSE_UP,b);this.reset()};
 mxGraphHandler.prototype.selectDelayed=function(a){this.graph.isCellSelected(this.cell)&&this.graph.popupMenuHandler.isPopupTrigger(a)||this.graph.selectCellForEvent(this.cell,a.getEvent())};mxGraphHandler.prototype.reset=function(){this.destroyShapes();this.removeHint();this.delayedSelection=this.cellWasClicked=!1;this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null};
 mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,b,c){if(this.graph.getModel().isVertex(a)&&(a=this.graph.getView().getState(a),null!=a)){c=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(c),mxEvent.getClientY(c));var d=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);if(0!=d){b=Math.cos(-d);var d=Math.sin(-d),e=new mxPoint(a.getCenterX(),a.getCenterY());c=mxUtils.getRotatedPoint(c,b,d,e)}return!mxUtils.contains(a,c.x,c.y)}return!1};
-mxGraphHandler.prototype.moveCells=function(a,b,c,d,e,f){d&&(a=this.graph.getCloneableCells(a));null==e&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),a,f)&&(e=this.graph.getDefaultParent());d=d&&!this.graph.isCellLocked(e||this.graph.getDefaultParent());a=this.graph.moveCells(a,b-this.graph.panDx/this.graph.view.scale,c-this.graph.panDy/this.graph.view.scale,d,e,f);this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(a[0]);
-d&&this.graph.setSelectionCells(a)};mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null);null!=this.guide&&(this.guide.destroy(),this.guide=null);null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)};
+mxGraphHandler.prototype.moveCells=function(a,b,c,d,e,f){d&&(a=this.graph.getCloneableCells(a));var g=this.graph.getModel().getParent(this.cell);null==e&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(g,a,f)&&(e=this.graph.getDefaultParent());d=d&&!this.graph.isCellLocked(e||this.graph.getDefaultParent());this.graph.getModel().beginUpdate();try{g=[];if(!d&&null!=e&&this.removeEmptyParents){for(var k=new mxDictionary,l=0;l<a.length;l++)k.put(a[l],!0);for(l=0;l<a.length;l++){var m=
+this.graph.model.getParent(a[l]);null==m||k.get(m)||(k.put(m,!0),g.push(m))}}a=this.graph.moveCells(a,b-this.graph.panDx/this.graph.view.scale,c-this.graph.panDy/this.graph.view.scale,d,e,f);b=[];for(l=0;l<g.length;l++)this.shouldRemoveParent(g[l])&&b.push(g[l]);this.graph.removeCells(b,!1)}finally{this.graph.getModel().endUpdate()}d&&this.graph.setSelectionCells(a);this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(a[0])};
+mxGraphHandler.prototype.shouldRemoveParent=function(a){var b=this.graph.view.getState(a);console.log("state",b,this.graph.model.getChildCount(b.cell));return null!=b&&(this.graph.model.isEdge(b.cell)||this.graph.model.isVertex(b.cell))&&this.graph.isCellDeletable(b.cell)&&0==this.graph.model.getChildCount(b.cell)?(a=mxUtils.getValue(b.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),b=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE),a==mxConstants.NONE&&b==mxConstants.NONE):
+!1};mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null);null!=this.guide&&(this.guide.destroy(),this.guide=null);null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)};
 mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this);this.graph.removeListener(this.panHandler);null!=this.escapeHandler&&(this.graph.removeListener(this.escapeHandler),this.escapeHandler=null);null!=this.refreshHandler&&(this.graph.getModel().removeListener(this.refreshHandler),this.refreshHandler=null);this.destroyShapes();this.removeHint()};
 function mxPanningHandler(a){null!=a&&(this.graph=a,this.graph.addMouseListener(this),this.forcePanningHandler=mxUtils.bind(this,function(a,c){var b=c.getProperty("eventName"),e=c.getProperty("event");b==mxEvent.MOUSE_DOWN&&this.isForcePanningEvent(e)&&(this.start(e),this.active=!0,this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",e)),e.consume())}),this.graph.addListener(mxEvent.FIRE_MOUSE_EVENT,this.forcePanningHandler),this.gestureHandler=mxUtils.bind(this,function(a,c){if(this.isPinchEnabled()){var b=
 c.getProperty("event");mxEvent.isConsumed(b)||"gesturestart"!=b.type?"gestureend"==b.type&&null!=this.initialScale&&(this.initialScale=null):(this.initialScale=this.graph.view.scale,this.active||null==this.mouseDownEvent||(this.start(this.mouseDownEvent),this.mouseDownEvent=null));if(null!=this.initialScale){var e=Math.round(this.initialScale*b.scale*100)/100;null!=this.minScale&&(e=Math.max(this.minScale,e));null!=this.maxScale&&(e=Math.min(this.maxScale,e));this.graph.view.scale!=e&&(this.graph.zoomTo(e),
diff --git a/src/main/webapp/cache.manifest b/src/main/webapp/cache.manifest
index cae6792f8..558eb619d 100644
--- a/src/main/webapp/cache.manifest
+++ b/src/main/webapp/cache.manifest
@@ -1,7 +1,7 @@
 CACHE MANIFEST
 
 # THIS FILE WAS GENERATED. DO NOT MODIFY!
-# 07/12/2019 05:22 PM
+# 07/15/2019 01:26 PM
 
 app.html
 index.html?offline=1
diff --git a/src/main/webapp/js/app.min.js b/src/main/webapp/js/app.min.js
index 37c347efa..fe27e982a 100644
--- a/src/main/webapp/js/app.min.js
+++ b/src/main/webapp/js/app.min.js
@@ -467,9 +467,9 @@ mxSvgCanvas2D.prototype.convertHtml=function(a){if(this.useDomParser){var b=(new
 b.documentElement.appendChild(c);var d=document.createElement("div");d.innerHTML=a;for(a=d.firstChild;null!=a;)d=a.nextSibling,c.appendChild(b.adoptNode(a)),a=d;return c.innerHTML}b=document.createElement("textarea");b.innerHTML=a.replace(/&amp;/g,"&amp;amp;").replace(/&#60;/g,"&amp;lt;").replace(/&#62;/g,"&amp;gt;").replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;");a=b.value.replace(/&/g,"&amp;").replace(/&amp;lt;/g,"&lt;").replace(/&amp;gt;/g,"&gt;").replace(/&amp;amp;/g,
 "&amp;").replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />").replace(/(<img[^>]+)>/gm,"$1 />")}return a};
 mxSvgCanvas2D.prototype.createDiv=function(a,b,c,d,e,f){c=this.state;d="display:inline-block;font-size:"+c.fontSize+'px;font-family:"'+c.fontFamily+'";color:'+c.fontColor+";line-height:"+(mxConstants.ABSOLUTE_LINE_HEIGHT?c.fontSize*mxConstants.LINE_HEIGHT+"px":mxConstants.LINE_HEIGHT*this.lineHeightCorrection)+";"+d;(c.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d+="font-weight:bold;");(c.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d+="font-style:italic;");(c.fontStyle&
-mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d+="text-decoration:underline;");d=b==mxConstants.ALIGN_CENTER?d+"text-align:center;":b==mxConstants.ALIGN_RIGHT?d+"text-align:right;":d+"text-align:left;";b="";null!=c.fontBackgroundColor&&(b+="background-color:"+c.fontBackgroundColor+";");null!=c.fontBorderColor&&(b+="border:1px solid "+c.fontBorderColor+";");mxUtils.isNode(a)||(a=this.convertHtml(a),"fill"!=e&&"width"!=e?(null!=f&&(b+="white-space:"+f+";"),a='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;'+
-b+'">'+a+"</div>"):d+=b);if(!mxClient.IS_IE&&document.createElementNS)return e=document.createElementNS("http://www.w3.org/1999/xhtml","div"),e.setAttribute("style",d),mxUtils.isNode(a)?this.root.ownerDocument!=document?e.appendChild(a.cloneNode(!0)):e.appendChild(a):e.innerHTML=a,e;mxUtils.isNode(a)&&this.root.ownerDocument!=document&&(a=a.outerHTML);return mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+d+'">'+a+"</div>").documentElement};
-mxSvgCanvas2D.prototype.invalidateCachedOffsetSize=function(a){delete a.firstChild.mxCachedOffsetWidth;delete a.firstChild.mxCachedFinalOffsetWidth;delete a.firstChild.mxCachedFinalOffsetHeight};
+mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d+="text-decoration:underline;");d=b==mxConstants.ALIGN_CENTER?d+"text-align:center;":b==mxConstants.ALIGN_RIGHT?d+"text-align:right;":d+"text-align:left;";b="";null!=c.fontBackgroundColor&&(b+="background-color:"+mxUtils.htmlEntities(c.fontBackgroundColor)+";");null!=c.fontBorderColor&&(b+="border:1px solid "+mxUtils.htmlEntities(c.fontBorderColor)+";");mxUtils.isNode(a)||(a=this.convertHtml(a),"fill"!=e&&"width"!=e?(null!=f&&(b+="white-space:"+
+f+";"),a='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;'+b+'">'+a+"</div>"):d+=b);if(!mxClient.IS_IE&&document.createElementNS)return e=document.createElementNS("http://www.w3.org/1999/xhtml","div"),e.setAttribute("style",d),mxUtils.isNode(a)?this.root.ownerDocument!=document?e.appendChild(a.cloneNode(!0)):e.appendChild(a):e.innerHTML=a,e;mxUtils.isNode(a)&&this.root.ownerDocument!=document&&(a=a.outerHTML);return mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+
+d+'">'+a+"</div>").documentElement};mxSvgCanvas2D.prototype.invalidateCachedOffsetSize=function(a){delete a.firstChild.mxCachedOffsetWidth;delete a.firstChild.mxCachedFinalOffsetWidth;delete a.firstChild.mxCachedFinalOffsetHeight};
 mxSvgCanvas2D.prototype.updateText=function(a,b,c,d,e,f,g,k,l,m,n){if(null!=n&&null!=n.firstChild&&null!=n.firstChild.firstChild&&null!=n.firstChild.firstChild.firstChild){n=n.firstChild;var p=n.firstChild,q=p.firstChild;m=null!=m?m:0;var r=this.state;a+=r.dx;b+=r.dy;l?(q.style.maxHeight=Math.round(d)+"px",q.style.maxWidth=Math.round(c)+"px"):"fill"==k?(q.style.width=Math.round(c+1)+"px",q.style.height=Math.round(d+1)+"px"):"width"==k&&(q.style.width=Math.round(c+1)+"px",0<d&&(q.style.maxHeight=Math.round(d)+
 "px"));g&&0<c&&(q.style.width=Math.round(c+1)+"px");var t,u=q;null!=u.firstChild&&"DIV"==u.firstChild.nodeName&&(u=u.firstChild);var x=null!=n.mxCachedOffsetWidth?n.mxCachedOffsetWidth:u.offsetWidth;t=x+0;g&&"fill"!=k&&(l&&(t=Math.min(t,c)),q.style.width=Math.round(t+1)+"px");t=null!=n.mxCachedFinalOffsetWidth?n.mxCachedFinalOffsetWidth:u.offsetWidth;g=null!=n.mxCachedFinalOffsetHeight?n.mxCachedFinalOffsetHeight:u.offsetHeight;this.cacheOffsetSize&&(n.mxCachedOffsetWidth=x,n.mxCachedFinalOffsetWidth=
 t,n.mxCachedFinalOffsetHeight=g);t+=0;g-=2;l&&(g=Math.min(g,d),t=Math.min(t,c));"width"==k?d=g:"fill"!=k&&(c=t,d=g);g=l=0;e==mxConstants.ALIGN_CENTER?l-=c/2:e==mxConstants.ALIGN_RIGHT&&(l-=c);a+=l;f==mxConstants.ALIGN_MIDDLE?g-=d/2:f==mxConstants.ALIGN_BOTTOM&&(g-=d);"fill"!=k&&mxClient.IS_FF&&mxClient.IS_WIN&&(g-=2);b+=g;e=1!=r.scale?"scale("+r.scale+")":"";0!=r.rotation&&this.rotateHtml?(e+="rotate("+r.rotation+","+c/2+","+d/2+")",b=this.rotatePoint((a+c/2)*r.scale,(b+d/2)*r.scale,r.rotation,r.rotationCx,
@@ -509,9 +509,9 @@ mxVmlCanvas2D.prototype.quadTo=function(a,b,c,d){var e=this.state,f=(this.lastX+
 mxVmlCanvas2D.prototype.createRect=function(a,b,c,d,e){var f=this.state;a=this.createVmlElement(a);a.style.position="absolute";a.style.left=this.format((b+f.dx)*f.scale)+"px";a.style.top=this.format((c+f.dy)*f.scale)+"px";a.style.width=this.format(d*f.scale)+"px";a.style.height=this.format(e*f.scale)+"px";return a};mxVmlCanvas2D.prototype.rect=function(a,b,c,d){this.node=this.createRect("rect",a,b,c,d)};
 mxVmlCanvas2D.prototype.roundrect=function(a,b,c,d,e,f){this.node=this.createRect("roundrect",a,b,c,d);this.node.setAttribute("arcsize",Math.max(100*e/c,100*f/d)+"%")};mxVmlCanvas2D.prototype.ellipse=function(a,b,c,d){this.node=this.createRect("oval",a,b,c,d)};
 mxVmlCanvas2D.prototype.image=function(a,b,c,d,e,f,g,k){f?(a=this.createRect("rect",a,b,c,d),a.stroked="false",b=this.createVmlElement("fill"),b.aspect=f?"atmost":"ignore",b.rotate="true",b.type="frame",b.src=e,a.appendChild(b)):(a=this.createRect("image",a,b,c,d),a.src=e);g&&k?a.style.rotation="180":g?a.style.flip="x":k&&(a.style.flip="y");if(1>this.state.alpha||1>this.state.fillAlpha)a.style.filter+="alpha(opacity="+this.state.alpha*this.state.fillAlpha*100+")";this.root.appendChild(a)};
-mxVmlCanvas2D.prototype.createDiv=function(a,b,c,d){c=this.createElement("div");var e=this.state,f="";null!=e.fontBackgroundColor&&(f+="background-color:"+e.fontBackgroundColor+";");null!=e.fontBorderColor&&(f+="border:1px solid "+e.fontBorderColor+";");mxUtils.isNode(a)?c.appendChild(a):"fill"!=d&&"width"!=d?(d=this.createElement("div"),d.style.cssText=f,d.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",d.style.zoom="1",d.style.textDecoration="inherit",d.innerHTML=a,c.appendChild(d)):(c.style.cssText=
-f,c.innerHTML=a);a=c.style;a.fontSize=e.fontSize/this.vmlScale+"px";a.fontFamily=e.fontFamily;a.color=e.fontColor;a.verticalAlign="top";a.textAlign=b||"left";a.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?e.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale+"px":mxConstants.LINE_HEIGHT;(e.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a.fontWeight="bold");(e.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a.fontStyle="italic");(e.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&
-(a.textDecoration="underline");return c};
+mxVmlCanvas2D.prototype.createDiv=function(a,b,c,d){c=this.createElement("div");var e=this.state,f="";null!=e.fontBackgroundColor&&(f+="background-color:"+mxUtils.htmlEntities(e.fontBackgroundColor)+";");null!=e.fontBorderColor&&(f+="border:1px solid "+mxUtils.htmlEntities(e.fontBorderColor)+";");mxUtils.isNode(a)?c.appendChild(a):"fill"!=d&&"width"!=d?(d=this.createElement("div"),d.style.cssText=f,d.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",d.style.zoom="1",d.style.textDecoration=
+"inherit",d.innerHTML=a,c.appendChild(d)):(c.style.cssText=f,c.innerHTML=a);a=c.style;a.fontSize=e.fontSize/this.vmlScale+"px";a.fontFamily=e.fontFamily;a.color=e.fontColor;a.verticalAlign="top";a.textAlign=b||"left";a.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?e.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale+"px":mxConstants.LINE_HEIGHT;(e.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a.fontWeight="bold");(e.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a.fontStyle="italic");
+(e.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a.textDecoration="underline");return c};
 mxVmlCanvas2D.prototype.text=function(a,b,c,d,e,f,g,k,l,m,n,p,q){if(this.textEnabled&&null!=e){var r=this.state;if("html"==l){null!=r.rotation&&(b=this.rotatePoint(a,b,r.rotation,r.rotationCx,r.rotationCy),a=b.x,b=b.y);8!=document.documentMode||mxClient.IS_EM?(a*=r.scale,b*=r.scale):(a+=r.dx,b+=r.dy,"fill"!=m&&g==mxConstants.ALIGN_TOP&&--b);l=8!=document.documentMode||mxClient.IS_EM?this.createElement("div"):this.createVmlElement("group");l.style.position="absolute";l.style.display="inline";l.style.left=
 this.format(a)+"px";l.style.top=this.format(b)+"px";l.style.zoom=r.scale;var t=this.createElement("div");t.style.position="relative";t.style.display="inline";var u=mxUtils.getAlignmentAsPoint(f,g),x=u.x,u=u.y;e=this.createDiv(e,f,g,m);f=this.createElement("div");null!=q&&e.setAttribute("dir",q);if(k&&0<c){if(n||(e.style.width=Math.round(c)+"px"),e.style.wordWrap=mxConstants.WORD_WRAP,e.style.whiteSpace="normal","break-word"==e.style.wordWrap){var y=e;null!=y.firstChild&&"DIV"==y.firstChild.nodeName&&
 (y.firstChild.style.width="100%")}}else e.style.whiteSpace="nowrap";p=r.rotation+(p||0);this.rotateHtml&&0!=p?(f.style.display="inline",f.style.zoom="1",f.appendChild(e),8!=document.documentMode||mxClient.IS_EM||"DIV"==this.root.nodeName?l.appendChild(f):(t.appendChild(f),l.appendChild(t))):8!=document.documentMode||mxClient.IS_EM?(e.style.display="inline",l.appendChild(e)):(t.appendChild(e),l.appendChild(t));"DIV"!=this.root.nodeName?(q=this.createVmlElement("rect"),q.stroked="false",q.filled="false",
@@ -654,8 +654,8 @@ this.textWidthPadding;this.clipped&&(f=Math.min(f,this.bounds.height));l=this.bo
 "px");var g=g*d,l=l*d,m=this.getTextRotation()*(Math.PI/180);e=parseFloat(parseFloat(Math.cos(m)).toFixed(8));f=parseFloat(parseFloat(Math.sin(-m)).toFixed(8));m%=2*Math.PI;0>m&&(m+=2*Math.PI);m%=Math.PI;m>Math.PI/2&&(m=Math.PI-m);var k=Math.cos(m),n=Math.sin(-m),b=l*-(b+.5),p=g*-(c+.5);0!=m&&(c="progid:DXImageTransform.Microsoft.Matrix(M11="+e+", M12="+f+", M21="+-f+", M22="+e+", sizingMethod='auto expand')",a.filter=null!=a.filter&&0<a.filter.length?a.filter+(" "+c):c);c=0;"fill"!=this.overflow&&
 mxClient.IS_QUIRKS&&(c=this.valign==mxConstants.ALIGN_TOP?c-1:this.valign==mxConstants.ALIGN_BOTTOM?c+2:c+1);a.zoom=d;a.left=Math.round(this.bounds.x+((l-l*k+g*n)/2-e*b-f*p)-l/2)+"px";a.top=Math.round(this.bounds.y+((g-g*k+l*n)/2+f*b-e*p)-g/2+c)+"px"};
 mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var a=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(a=mxUtils.htmlEntities(a,!1));var a=mxUtils.replaceTrailingNewlines(a,"<div><br></div>"),a=this.replaceLinefeeds?a.replace(/\n/g,"<br/>"):a,b=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,c=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if("fill"==this.overflow||
-"width"==this.overflow)null!=b&&(this.node.style.backgroundColor=b),null!=c&&(this.node.style.border="1px solid "+c);else{var d="";null!=b&&(d+="background-color:"+b+";");null!=c&&(d+="border:1px solid "+c+";");a='<div style="zoom:1;'+d+"display:inline-block;_display:inline;text-decoration:inherit;padding-bottom:1px;padding-right:1px;line-height:"+(mxConstants.ABSOLUTE_LINE_HEIGHT?this.size*mxConstants.LINE_HEIGHT+"px":mxConstants.LINE_HEIGHT)+'">'+a+"</div>"}this.node.innerHTML=a;a=this.node.getElementsByTagName("div");
-0<a.length&&(b=this.textDirection,b==mxConstants.TEXT_DIRECTION_AUTO&&this.dialect!=mxConstants.DIALECT_STRICTHTML&&(b=this.getAutoDirection()),b==mxConstants.TEXT_DIRECTION_LTR||b==mxConstants.TEXT_DIRECTION_RTL?a[a.length-1].setAttribute("dir",b):a[a.length-1].removeAttribute("dir"))}};
+"width"==this.overflow)null!=b&&(this.node.style.backgroundColor=b),null!=c&&(this.node.style.border="1px solid "+c);else{var d="";null!=b&&(d+="background-color:"+mxUtils.htmlEntities(b)+";");null!=c&&(d+="border:1px solid "+mxUtils.htmlEntities(c)+";");a='<div style="zoom:1;'+d+"display:inline-block;_display:inline;text-decoration:inherit;padding-bottom:1px;padding-right:1px;line-height:"+(mxConstants.ABSOLUTE_LINE_HEIGHT?this.size*mxConstants.LINE_HEIGHT+"px":mxConstants.LINE_HEIGHT)+'">'+a+"</div>"}this.node.innerHTML=
+a;a=this.node.getElementsByTagName("div");0<a.length&&(b=this.textDirection,b==mxConstants.TEXT_DIRECTION_AUTO&&this.dialect!=mxConstants.DIALECT_STRICTHTML&&(b=this.getAutoDirection()),b==mxConstants.TEXT_DIRECTION_LTR||b==mxConstants.TEXT_DIRECTION_RTL?a[a.length-1].setAttribute("dir",b):a[a.length-1].removeAttribute("dir"))}};
 mxText.prototype.updateFont=function(a){a=a.style;a.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?this.size*mxConstants.LINE_HEIGHT+"px":mxConstants.LINE_HEIGHT;a.fontSize=this.size+"px";a.fontFamily='"'+this.family+'"';a.verticalAlign="top";a.color=this.color;a.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"";a.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"";a.textDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?
 "underline":"";a.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"};
 mxText.prototype.updateSize=function(a,b){var c=Math.max(0,Math.round(this.bounds.width/this.scale)),d=Math.max(0,Math.round(this.bounds.height/this.scale)),e=a.style;this.clipped?(e.overflow="hidden",mxClient.IS_QUIRKS?e.width=c+"px":(e.maxHeight=d+"px",e.maxWidth=c+"px")):"fill"==this.overflow?(e.width=c+1+"px",e.height=d+1+"px",e.overflow="hidden"):"width"==this.overflow&&(e.width=c+1+"px",e.maxHeight=d+1+"px",e.overflow="hidden");if(this.wrap&&0<c){if(e.wordWrap=mxConstants.WORD_WRAP,e.whiteSpace=
@@ -1510,9 +1510,10 @@ g)),b,c,d)}};mxCellStatePreview.prototype.addEdges=function(a){for(var b=this.gr
 mxConnectionConstraint.prototype.dx=null;mxConnectionConstraint.prototype.dy=null;
 function mxGraphHandler(a){this.graph=a;this.graph.addMouseListener(this);this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape();this.updateHint()});this.graph.addListener(mxEvent.PAN,this.panHandler);this.escapeHandler=mxUtils.bind(this,function(a,c){this.reset()});this.graph.addListener(mxEvent.ESCAPE,this.escapeHandler);this.refreshHandler=mxUtils.bind(this,function(a,c){if(null!=this.first)try{this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),
 this.updatePreviewShape()}catch(d){this.reset()}});this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler)}mxGraphHandler.prototype.graph=null;mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50;mxGraphHandler.prototype.enabled=!0;mxGraphHandler.prototype.highlightEnabled=!0;mxGraphHandler.prototype.cloneEnabled=!0;mxGraphHandler.prototype.moveEnabled=!0;mxGraphHandler.prototype.guidesEnabled=!1;mxGraphHandler.prototype.guide=null;mxGraphHandler.prototype.currentDx=null;
-mxGraphHandler.prototype.currentDy=null;mxGraphHandler.prototype.updateCursor=!0;mxGraphHandler.prototype.selectEnabled=!0;mxGraphHandler.prototype.removeCellsFromParent=!0;mxGraphHandler.prototype.connectOnDrop=!1;mxGraphHandler.prototype.scrollOnMove=!0;mxGraphHandler.prototype.minimumSize=6;mxGraphHandler.prototype.previewColor="black";mxGraphHandler.prototype.htmlPreview=!1;mxGraphHandler.prototype.shape=null;mxGraphHandler.prototype.scaleGrid=!1;mxGraphHandler.prototype.rotationEnabled=!0;
-mxGraphHandler.prototype.isEnabled=function(){return this.enabled};mxGraphHandler.prototype.setEnabled=function(a){this.enabled=a};mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled};mxGraphHandler.prototype.setCloneEnabled=function(a){this.cloneEnabled=a};mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled};mxGraphHandler.prototype.setMoveEnabled=function(a){this.moveEnabled=a};mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled};
-mxGraphHandler.prototype.setSelectEnabled=function(a){this.selectEnabled=a};mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent};mxGraphHandler.prototype.setRemoveCellsFromParent=function(a){this.removeCellsFromParent=a};mxGraphHandler.prototype.getInitialCellForEvent=function(a){return a.getCell()};mxGraphHandler.prototype.isDelayedSelection=function(a,b){return this.graph.isCellSelected(a)};mxGraphHandler.prototype.consumeMouseEvent=function(a,b){b.consume()};
+mxGraphHandler.prototype.currentDy=null;mxGraphHandler.prototype.updateCursor=!0;mxGraphHandler.prototype.selectEnabled=!0;mxGraphHandler.prototype.removeCellsFromParent=!0;mxGraphHandler.prototype.removeEmptyParents=!1;mxGraphHandler.prototype.connectOnDrop=!1;mxGraphHandler.prototype.scrollOnMove=!0;mxGraphHandler.prototype.minimumSize=6;mxGraphHandler.prototype.previewColor="black";mxGraphHandler.prototype.htmlPreview=!1;mxGraphHandler.prototype.shape=null;mxGraphHandler.prototype.scaleGrid=!1;
+mxGraphHandler.prototype.rotationEnabled=!0;mxGraphHandler.prototype.isEnabled=function(){return this.enabled};mxGraphHandler.prototype.setEnabled=function(a){this.enabled=a};mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled};mxGraphHandler.prototype.setCloneEnabled=function(a){this.cloneEnabled=a};mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled};mxGraphHandler.prototype.setMoveEnabled=function(a){this.moveEnabled=a};
+mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled};mxGraphHandler.prototype.setSelectEnabled=function(a){this.selectEnabled=a};mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent};mxGraphHandler.prototype.setRemoveCellsFromParent=function(a){this.removeCellsFromParent=a};mxGraphHandler.prototype.getInitialCellForEvent=function(a){return a.getCell()};mxGraphHandler.prototype.isDelayedSelection=function(a,b){return this.graph.isCellSelected(a)};
+mxGraphHandler.prototype.consumeMouseEvent=function(a,b){b.consume()};
 mxGraphHandler.prototype.mouseDown=function(a,b){if(!b.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&null!=b.getState()&&!mxEvent.isMultiTouchEvent(b.getEvent())){var c=this.getInitialCellForEvent(b);this.delayedSelection=this.isDelayedSelection(c,b);this.cell=null;this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(c,b.getEvent());if(this.isMoveEnabled()){var d=this.graph.model,e=d.getGeometry(c);this.graph.isCellMovable(c)&&(!d.isEdge(c)||1<this.graph.getSelectionCount()||
 null!=e.points&&0<e.points.length||null==d.getTerminal(c,!0)||null==d.getTerminal(c,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(b.getEvent())&&this.graph.isCellsCloneable())?this.start(c,b.getX(),b.getY()):this.delayedSelection&&(this.cell=c);this.cellWasClicked=!0;this.consumeMouseEvent(mxEvent.MOUSE_DOWN,b)}}};
 mxGraphHandler.prototype.getGuideStates=function(){var a=this.graph.getDefaultParent(),b=this.graph.getModel(),c=mxUtils.bind(this,function(a){return null!=this.graph.view.getState(a)&&b.isVertex(a)&&null!=b.getGeometry(a)&&!b.getGeometry(a).relative});return this.graph.view.getCellStates(b.filterDescendants(c,a))};mxGraphHandler.prototype.getCells=function(a){return!this.delayedSelection&&this.graph.isCellMovable(a)?[a]:this.graph.getMovableCells(this.graph.getSelectionCells())};
@@ -1532,8 +1533,10 @@ mxGraphHandler.prototype.mouseUp=function(a,b){if(!b.isConsumed()){var c=this.gr
 e),e=this.roundLength(this.currentDy/e),g=this.target;c.isSplitEnabled()&&c.isSplitTarget(g,this.cells,b.getEvent())?c.splitEdge(g,this.cells,null,f,e):this.moveCells(this.cells,f,e,d,this.target,b.getEvent())}}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(b)}this.cellWasClicked&&this.consumeMouseEvent(mxEvent.MOUSE_UP,b);this.reset()};
 mxGraphHandler.prototype.selectDelayed=function(a){this.graph.isCellSelected(this.cell)&&this.graph.popupMenuHandler.isPopupTrigger(a)||this.graph.selectCellForEvent(this.cell,a.getEvent())};mxGraphHandler.prototype.reset=function(){this.destroyShapes();this.removeHint();this.delayedSelection=this.cellWasClicked=!1;this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null};
 mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,b,c){if(this.graph.getModel().isVertex(a)&&(a=this.graph.getView().getState(a),null!=a)){c=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(c),mxEvent.getClientY(c));var d=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);if(0!=d){b=Math.cos(-d);var d=Math.sin(-d),e=new mxPoint(a.getCenterX(),a.getCenterY());c=mxUtils.getRotatedPoint(c,b,d,e)}return!mxUtils.contains(a,c.x,c.y)}return!1};
-mxGraphHandler.prototype.moveCells=function(a,b,c,d,e,f){d&&(a=this.graph.getCloneableCells(a));null==e&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),a,f)&&(e=this.graph.getDefaultParent());d=d&&!this.graph.isCellLocked(e||this.graph.getDefaultParent());a=this.graph.moveCells(a,b-this.graph.panDx/this.graph.view.scale,c-this.graph.panDy/this.graph.view.scale,d,e,f);this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(a[0]);
-d&&this.graph.setSelectionCells(a)};mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null);null!=this.guide&&(this.guide.destroy(),this.guide=null);null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)};
+mxGraphHandler.prototype.moveCells=function(a,b,c,d,e,f){d&&(a=this.graph.getCloneableCells(a));var g=this.graph.getModel().getParent(this.cell);null==e&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(g,a,f)&&(e=this.graph.getDefaultParent());d=d&&!this.graph.isCellLocked(e||this.graph.getDefaultParent());this.graph.getModel().beginUpdate();try{g=[];if(!d&&null!=e&&this.removeEmptyParents){for(var k=new mxDictionary,l=0;l<a.length;l++)k.put(a[l],!0);for(l=0;l<a.length;l++){var m=
+this.graph.model.getParent(a[l]);null==m||k.get(m)||(k.put(m,!0),g.push(m))}}a=this.graph.moveCells(a,b-this.graph.panDx/this.graph.view.scale,c-this.graph.panDy/this.graph.view.scale,d,e,f);b=[];for(l=0;l<g.length;l++)this.shouldRemoveParent(g[l])&&b.push(g[l]);this.graph.removeCells(b,!1)}finally{this.graph.getModel().endUpdate()}d&&this.graph.setSelectionCells(a);this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(a[0])};
+mxGraphHandler.prototype.shouldRemoveParent=function(a){var b=this.graph.view.getState(a);console.log("state",b,this.graph.model.getChildCount(b.cell));return null!=b&&(this.graph.model.isEdge(b.cell)||this.graph.model.isVertex(b.cell))&&this.graph.isCellDeletable(b.cell)&&0==this.graph.model.getChildCount(b.cell)?(a=mxUtils.getValue(b.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),b=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE),a==mxConstants.NONE&&b==mxConstants.NONE):
+!1};mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null);null!=this.guide&&(this.guide.destroy(),this.guide=null);null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)};
 mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this);this.graph.removeListener(this.panHandler);null!=this.escapeHandler&&(this.graph.removeListener(this.escapeHandler),this.escapeHandler=null);null!=this.refreshHandler&&(this.graph.getModel().removeListener(this.refreshHandler),this.refreshHandler=null);this.destroyShapes();this.removeHint()};
 function mxPanningHandler(a){null!=a&&(this.graph=a,this.graph.addMouseListener(this),this.forcePanningHandler=mxUtils.bind(this,function(a,c){var b=c.getProperty("eventName"),e=c.getProperty("event");b==mxEvent.MOUSE_DOWN&&this.isForcePanningEvent(e)&&(this.start(e),this.active=!0,this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",e)),e.consume())}),this.graph.addListener(mxEvent.FIRE_MOUSE_EVENT,this.forcePanningHandler),this.gestureHandler=mxUtils.bind(this,function(a,c){if(this.isPinchEnabled()){var b=
 c.getProperty("event");mxEvent.isConsumed(b)||"gesturestart"!=b.type?"gestureend"==b.type&&null!=this.initialScale&&(this.initialScale=null):(this.initialScale=this.graph.view.scale,this.active||null==this.mouseDownEvent||(this.start(this.mouseDownEvent),this.mouseDownEvent=null));if(null!=this.initialScale){var e=Math.round(this.initialScale*b.scale*100)/100;null!=this.minScale&&(e=Math.max(this.minScale,e));null!=this.maxScale&&(e=Math.min(this.maxScale,e));this.graph.view.scale!=e&&(this.graph.zoomTo(e),
@@ -2464,7 +2467,7 @@ mxUtils.bind(this,function(a,b){if(!mxEvent.isMultiTouchEvent(b)){var c=b.getPro
 function(a,b){return b&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var D=this.updateMouseEvent;this.updateMouseEvent=function(a){a=D.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=
 null);return a}}this.currentTranslate=new mxPoint(0,0)};Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.lineJumpsEnabled=!0;Graph.defaultJumpSize=6;
 Graph.createSvgImage=function(a,c,d){d=unescape(encodeURIComponent('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+c+'px" version="1.1">'+d+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(d):Base64.encode(d,!0)),a,c)};
-Graph.zapGremlins=function(a){for(var c=[],d=0;d<a.length;d++){var b=a.charCodeAt(d);(32<=b||9==b||10==b||13==b)&&65535!=b&&c.push(a.charAt(d))}return c.join("")};Graph.stringToBytes=function(a){for(var c=Array(a.length),d=0;d<a.length;d++)c[d]=a.charCodeAt(d);return c};Graph.bytesToString=function(a){for(var c=Array(a.length),d=0;d<a.length;d++)c[d]=String.fromCharCode(a[d]);return c.join("")};Graph.compressNode=function(a){return Graph.compress(Graph.zapGremlins(mxUtils.getXml(a)))};
+Graph.zapGremlins=function(a){for(var c=[],d=0;d<a.length;d++){var b=a.charCodeAt(d);(32<=b||9==b||10==b||13==b)&&65535!=b&&65534!=b&&c.push(a.charAt(d))}return c.join("")};Graph.stringToBytes=function(a){for(var c=Array(a.length),d=0;d<a.length;d++)c[d]=a.charCodeAt(d);return c};Graph.bytesToString=function(a){for(var c=Array(a.length),d=0;d<a.length;d++)c[d]=String.fromCharCode(a[d]);return c.join("")};Graph.compressNode=function(a){return Graph.compress(Graph.zapGremlins(mxUtils.getXml(a)))};
 Graph.compress=function(a,c){if(null==a||0==a.length||"undefined"===typeof pako)return a;var d=Graph.bytesToString(c?pako.deflate(encodeURIComponent(a)):pako.deflateRaw(encodeURIComponent(a)));return window.btoa?btoa(d):Base64.encode(d,!0)};Graph.decompress=function(a,c){if(null==a||0==a.length||"undefined"===typeof pako)return a;var d=window.atob?atob(a):Base64.decode(a,!0);return Graph.zapGremlins(decodeURIComponent(Graph.bytesToString(c?pako.inflate(d):pako.inflateRaw(d))))};
 mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null;Graph.prototype.linkPolicy="frame"==urlParams.target?"blank":urlParams.target||"auto";Graph.prototype.linkTarget="frame"==urlParams.target?"_self":"_blank";Graph.prototype.linkRelation="nofollow noopener noreferrer";Graph.prototype.defaultScrollbars=!mxClient.IS_IOS;Graph.prototype.defaultPageVisible=!0;Graph.prototype.lightbox=!1;Graph.prototype.defaultPageBackgroundColor="#ffffff";
 Graph.prototype.defaultPageBorderColor="#ffffff";Graph.prototype.scrollTileSize=new mxRectangle(0,0,400,400);Graph.prototype.transparentBackground=!0;Graph.prototype.selectParentAfterDelete=!1;Graph.prototype.defaultEdgeLength=80;Graph.prototype.edgeMode=!1;Graph.prototype.connectionArrowsEnabled=!0;Graph.prototype.placeholderPattern=RegExp("%(date{.*}|[^%^{^}]+)%","g");Graph.prototype.absoluteUrlPattern=/^(?:[a-z]+:)?\/\//i;Graph.prototype.defaultThemeName="default";
@@ -2576,21 +2579,21 @@ f.documentElement&&mxStencilRegistry.parseStencilSet(f.documentElement,c,e)}};mx
 mxStencilRegistry.parseStencilSet=function(a,c,d){if("stencils"==a.nodeName)for(var b=a.firstChild;null!=b;)"shapes"==b.nodeName&&mxStencilRegistry.parseStencilSet(b,c,d),b=b.nextSibling;else{d=null!=d?d:!0;var b=a.firstChild,f="";a=a.getAttribute("name");for(null!=a&&(f=a+".");null!=b;){if(b.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=b.getAttribute("name"),null!=a)){var f=f.toLowerCase(),e=a.replace(/ /g,"_");d&&mxStencilRegistry.addStencil(f+e.toLowerCase(),new mxStencil(b));if(null!=c){var h=b.getAttribute("w"),
 g=b.getAttribute("h"),h=null==h?80:parseInt(h,10),g=null==g?80:parseInt(g,10);c(f,e,a,h,g)}}b=b.nextSibling}}};
 "undefined"!=typeof mxVertexHandler&&function(){function a(){var a=document.createElement("div");a.className="geHint";a.style.whiteSpace="nowrap";a.style.position="absolute";return a}mxConstants.HANDLE_FILLCOLOR="#29b6f2";mxConstants.HANDLE_STROKECOLOR="#0088cf";mxConstants.VERTEX_SELECTION_COLOR="#00a8ff";mxConstants.OUTLINE_COLOR="#00a8ff";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.EDGE_SELECTION_COLOR=
-"#00a8ff";mxConstants.DEFAULT_VALID_COLOR="#00a8ff";mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff";mxConstants.GUIDE_COLOR="#0088cf";mxConstants.HIGHLIGHT_OPACITY=30;mxConstants.HIGHLIGHT_SIZE=5;mxEdgeHandler.prototype.snapToTerminals=!0;mxGraphHandler.prototype.guidesEnabled=!0;mxRubberband.prototype.fadeOut=!0;mxGuide.prototype.isEnabledForEvent=function(a){return!mxEvent.isAltDown(a)};var c=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(a){return mxEvent.isControlDown(a)||
-c.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var a=new mxEllipse(null,this.highlightColor,this.highlightColor,0);a.opacity=mxConstants.HIGHLIGHT_OPACITY;return a};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=function(a){a=this.graph.createCurrentEdgeStyle();a=this.graph.createEdge(null,null,null,null,null,a);a=new mxCellState(this.graph.view,a,this.graph.getCellStyle(a));
-for(var b in this.graph.currentEdgeStyle)a.style[b]=this.graph.currentEdgeStyle[b];return a};var d=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var a=d.apply(this,arguments);a.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];return a};mxConnectionHandler.prototype.updatePreview=function(a){};var b=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=b.apply(this,arguments),c=a.getCell;
-a.getCell=mxUtils.bind(this,function(a){var b=c.apply(this,arguments);this.error=null;return b});return a};mxConnectionHandler.prototype.isCellEnabled=function(a){return!this.graph.isCellLocked(a)};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=function(){var a="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";";null!=this.currentEdgeStyle.shape&&
-(a+="shape="+this.currentEdgeStyle.shape+";");null!=this.currentEdgeStyle.curved&&(a+="curved="+this.currentEdgeStyle.curved+";");null!=this.currentEdgeStyle.rounded&&(a+="rounded="+this.currentEdgeStyle.rounded+";");null!=this.currentEdgeStyle.comic&&(a+="comic="+this.currentEdgeStyle.comic+";");null!=this.currentEdgeStyle.jumpStyle&&(a+="jumpStyle="+this.currentEdgeStyle.jumpStyle+";");null!=this.currentEdgeStyle.jumpSize&&(a+="jumpSize="+this.currentEdgeStyle.jumpSize+";");null!=this.currentEdgeStyle.orthogonalLoop?
-a+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&(a+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?a+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(a+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=this.currentEdgeStyle.elbow&&(a+="elbow="+this.currentEdgeStyle.elbow+
-";");return a=null!=this.currentEdgeStyle.html?a+("html="+this.currentEdgeStyle.html+";"):a+"html=1;"};Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var a=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())};Graph.prototype.importGraphModel=function(a,b,c,d){b=null!=b?
-b:0;c=null!=c?c:0;var e=new mxCodec(a.ownerDocument),g=new mxGraphModel;e.decode(a,g);a=[];e=g.getChildren(this.cloneCell(g.root,this.isCloneInvalidEdges()));if(null!=e){e=e.slice();this.model.beginUpdate();try{if(1!=e.length||this.isCellLocked(this.getDefaultParent()))for(g=0;g<e.length;g++)a=a.concat(this.model.getChildren(this.moveCells([e[g]],b,c,!1,this.model.getRoot())[0]));else a=this.moveCells(g.getChildren(e[0]),b,c,!1,this.getDefaultParent());if(d){this.isGridEnabled()&&(b=this.snap(b),
-c=this.snap(c));var f=this.getBoundingBoxFromGeometry(a,!0);null!=f&&this.moveCells(a,b-f.x,c-f.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var c=mxUtils.getValue(a.style,"points",null);if(null!=c){var d=[];try{for(var e=JSON.parse(c),c=0;c<e.length;c++){var g=e[c];d.push(new mxConnectionConstraint(new mxPoint(g[0],g[1]),2<g.length?"0"!=g[2]:!0,null,3<g.length?g[3]:0,4<g.length?g[4]:0))}}catch(V){}return d}if(null!=a.shape&&null!=
-a.shape.bounds){g=a.shape.direction;e=a.shape.bounds;c=a.shape.scale;d=e.width/c;e=e.height/c;if(g==mxConstants.DIRECTION_NORTH||g==mxConstants.DIRECTION_SOUTH)g=d,d=e,e=g;c=a.shape.getConstraints(a.style,d,e);if(null!=c)return c;if(null!=a.shape.stencil&&null!=a.shape.stencil.constraints)return a.shape.stencil.constraints;if(null!=a.shape.constraints)return a.shape.constraints}}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);
-null!=b&&(b=mxUtils.getValue(b,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a]))}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),c=0,d=0;d<b;d++){var e=this.model.getChildAt(a,d);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(a)};Graph.prototype.isValidDropTarget=function(a){var b=
-this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(b,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(b,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(b&&null!=a&&null!=
-this.layoutManager){var c=this.model.getParent(a);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a){var b=this.getModel(),c=[];b.beginUpdate();try{for(var d=0;d<a.length;d++){var e=
-a[d];if(b.isEdge(e)){var g=b.getTerminal(e,!0),f=b.getTerminal(e,!1);b.setTerminal(e,f,!0);b.setTerminal(e,g,!1);var h=b.getGeometry(e);if(null!=h){h=h.clone();null!=h.points&&h.points.reverse();var k=h.getTerminalPoint(!0),l=h.getTerminalPoint(!1);h.setTerminalPoint(k,!1);h.setTerminalPoint(l,!0);b.setGeometry(e,h);var m=this.view.getState(e),B=this.view.getState(g),p=this.view.getState(f);if(null!=m){var n=null!=B?this.getConnectionConstraint(m,B,!0):null,t=null!=p?this.getConnectionConstraint(m,
-p,!1):null;this.setConnectionConstraint(e,g,!0,t);this.setConnectionConstraint(e,f,!1,n)}c.push(e)}}else if(b.isVertex(e)&&(h=this.getCellGeometry(e),null!=h)){h=h.clone();h.x+=h.width/2-h.height/2;h.y+=h.height/2-h.width/2;var u=h.width;h.width=h.height;h.height=u;b.setGeometry(e,h);var r=this.view.getState(e);if(null!=r){var q=r.style[mxConstants.STYLE_DIRECTION]||"east";"east"==q?q="south":"south"==q?q="west":"west"==q?q="north":"north"==q&&(q="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,
+"#00a8ff";mxConstants.DEFAULT_VALID_COLOR="#00a8ff";mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff";mxConstants.GUIDE_COLOR="#0088cf";mxConstants.HIGHLIGHT_OPACITY=30;mxConstants.HIGHLIGHT_SIZE=5;mxEdgeHandler.prototype.snapToTerminals=!0;mxGraphHandler.prototype.guidesEnabled=!0;mxGraphHandler.prototype.removeEmptyParents=!0;mxRubberband.prototype.fadeOut=!0;mxGuide.prototype.isEnabledForEvent=function(a){return!mxEvent.isAltDown(a)};var c=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=
+function(a){return mxEvent.isControlDown(a)||c.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var a=new mxEllipse(null,this.highlightColor,this.highlightColor,0);a.opacity=mxConstants.HIGHLIGHT_OPACITY;return a};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=function(a){a=this.graph.createCurrentEdgeStyle();a=this.graph.createEdge(null,null,null,null,null,a);a=new mxCellState(this.graph.view,
+a,this.graph.getCellStyle(a));for(var b in this.graph.currentEdgeStyle)a.style[b]=this.graph.currentEdgeStyle[b];return a};var d=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var a=d.apply(this,arguments);a.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];return a};mxConnectionHandler.prototype.updatePreview=function(a){};var b=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=
+b.apply(this,arguments),c=a.getCell;a.getCell=mxUtils.bind(this,function(a){var b=c.apply(this,arguments);this.error=null;return b});return a};mxConnectionHandler.prototype.isCellEnabled=function(a){return!this.graph.isCellLocked(a)};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=function(){var a="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";";
+null!=this.currentEdgeStyle.shape&&(a+="shape="+this.currentEdgeStyle.shape+";");null!=this.currentEdgeStyle.curved&&(a+="curved="+this.currentEdgeStyle.curved+";");null!=this.currentEdgeStyle.rounded&&(a+="rounded="+this.currentEdgeStyle.rounded+";");null!=this.currentEdgeStyle.comic&&(a+="comic="+this.currentEdgeStyle.comic+";");null!=this.currentEdgeStyle.jumpStyle&&(a+="jumpStyle="+this.currentEdgeStyle.jumpStyle+";");null!=this.currentEdgeStyle.jumpSize&&(a+="jumpSize="+this.currentEdgeStyle.jumpSize+
+";");null!=this.currentEdgeStyle.orthogonalLoop?a+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&(a+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?a+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(a+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=
+this.currentEdgeStyle.elbow&&(a+="elbow="+this.currentEdgeStyle.elbow+";");return a=null!=this.currentEdgeStyle.html?a+("html="+this.currentEdgeStyle.html+";"):a+"html=1;"};Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var a=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())};
+Graph.prototype.importGraphModel=function(a,b,c,d){b=null!=b?b:0;c=null!=c?c:0;var e=new mxCodec(a.ownerDocument),g=new mxGraphModel;e.decode(a,g);a=[];e=g.getChildren(this.cloneCell(g.root,this.isCloneInvalidEdges()));if(null!=e){e=e.slice();this.model.beginUpdate();try{if(1!=e.length||this.isCellLocked(this.getDefaultParent()))for(g=0;g<e.length;g++)a=a.concat(this.model.getChildren(this.moveCells([e[g]],b,c,!1,this.model.getRoot())[0]));else a=this.moveCells(g.getChildren(e[0]),b,c,!1,this.getDefaultParent());
+if(d){this.isGridEnabled()&&(b=this.snap(b),c=this.snap(c));var f=this.getBoundingBoxFromGeometry(a,!0);null!=f&&this.moveCells(a,b-f.x,c-f.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,b){if(null!=a){var c=mxUtils.getValue(a.style,"points",null);if(null!=c){var d=[];try{for(var e=JSON.parse(c),c=0;c<e.length;c++){var g=e[c];d.push(new mxConnectionConstraint(new mxPoint(g[0],g[1]),2<g.length?"0"!=g[2]:!0,null,3<g.length?g[3]:0,4<g.length?g[4]:
+0))}}catch(V){}return d}if(null!=a.shape&&null!=a.shape.bounds){g=a.shape.direction;e=a.shape.bounds;c=a.shape.scale;d=e.width/c;e=e.height/c;if(g==mxConstants.DIRECTION_NORTH||g==mxConstants.DIRECTION_SOUTH)g=d,d=e,e=g;c=a.shape.getConstraints(a.style,d,e);if(null!=c)return c;if(null!=a.shape.stencil&&null!=a.shape.stencil.constraints)return a.shape.stencil.constraints;if(null!=a.shape.constraints)return a.shape.constraints}}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var b=this.view.getState(a),
+b=null!=b?b.style:this.getCellStyle(a);null!=b&&(b=mxUtils.getValue(b,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,b,[a]))}};Graph.prototype.isValidRoot=function(a){for(var b=this.model.getChildCount(a),c=0,d=0;d<b;d++){var e=this.model.getChildAt(a,d);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||c++)}return 0<c||this.isContainer(a)};
+Graph.prototype.isValidDropTarget=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(b,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(b,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var b=mxGraph.prototype.isExtendParentsOnAdd.apply(this,
+arguments);if(b&&null!=a&&null!=this.layoutManager){var c=this.model.getParent(a);null!=c&&(c=this.layoutManager.getLayout(c),null!=c&&c.constructor==mxStackLayout&&(b=!1))}return b};Graph.prototype.getPreferredSizeForCell=function(a){var b=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=b&&(b.width+=10,b.height+=4,this.gridEnabled&&(b.width=this.snap(b.width),b.height=this.snap(b.height)));return b};Graph.prototype.turnShapes=function(a){var b=this.getModel(),c=[];b.beginUpdate();
+try{for(var d=0;d<a.length;d++){var e=a[d];if(b.isEdge(e)){var g=b.getTerminal(e,!0),f=b.getTerminal(e,!1);b.setTerminal(e,f,!0);b.setTerminal(e,g,!1);var h=b.getGeometry(e);if(null!=h){h=h.clone();null!=h.points&&h.points.reverse();var k=h.getTerminalPoint(!0),l=h.getTerminalPoint(!1);h.setTerminalPoint(k,!1);h.setTerminalPoint(l,!0);b.setGeometry(e,h);var m=this.view.getState(e),B=this.view.getState(g),p=this.view.getState(f);if(null!=m){var n=null!=B?this.getConnectionConstraint(m,B,!0):null,t=
+null!=p?this.getConnectionConstraint(m,p,!1):null;this.setConnectionConstraint(e,g,!0,t);this.setConnectionConstraint(e,f,!1,n)}c.push(e)}}else if(b.isVertex(e)&&(h=this.getCellGeometry(e),null!=h)){h=h.clone();h.x+=h.width/2-h.height/2;h.y+=h.height/2-h.width/2;var u=h.width;h.width=h.height;h.height=u;b.setGeometry(e,h);var r=this.view.getState(e);if(null!=r){var q=r.style[mxConstants.STYLE_DIRECTION]||"east";"east"==q?q="south":"south"==q?q="west":"west"==q?q="north":"north"==q&&(q="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,
 q,[e])}c.push(e)}}}finally{b.endUpdate()}return c};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var b=this.model.getDescendants(a.cell);if(0<b.length)for(var c=
 0;c<b.length;c++){var d=this.view.getState(b[c]);null!=d&&null!=d.shape&&null!=d.shape.stencil&&this.stencilHasPlaceholders(d.shape.stencil)?this.removeStateForCell(b[c]):this.isReplacePlaceholders(b[c])&&this.view.invalidate(b[c],!1,!1)}}};Graph.prototype.replaceElement=function(a,b){for(var c=a.ownerDocument.createElement(null!=b?b:"span"),d=Array.prototype.slice.call(a.attributes);attr=d.pop();)c.setAttribute(attr.nodeName,attr.nodeValue);c.innerHTML=a.innerHTML;a.parentNode.replaceChild(c,a)};
 Graph.prototype.processElements=function(a,b){for(var c=a.getElementsByTagName("*"),d=0;d<c.length;d++)b(c[d])};Graph.prototype.updateLabelElements=function(a,b,c){a=null!=a?a:this.getSelectionCells();for(var d=document.createElement("div"),e=0;e<a.length;e++)if(this.isHtmlLabel(a[e])){var g=this.convertValueToString(a[e]);if(null!=g&&0<g.length){d.innerHTML=g;for(var f=d.getElementsByTagName(null!=c?c:"*"),h=0;h<f.length;h++)b(f[h]);d.innerHTML!=g&&this.cellLabelChanged(a[e],d.innerHTML)}}};Graph.prototype.cellLabelChanged=
@@ -8007,8 +8010,8 @@ RemoteLibrary.prototype.saveAs=function(a,c,b){};RemoteLibrary.prototype.updateF
 var StorageDialog=function(a,c,b){function d(d,p,g,e,u,k){function t(){mxEvent.addListener(x,"click",null!=k?k:function(){g!=App.MODE_GOOGLE||a.isDriveDomain()?g==App.MODE_GOOGLE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(g,q.checked);c()})):g==App.MODE_ONEDRIVE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.oneDrive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(g,q.checked);
 c()})):(a.setMode(g,q.checked),c()):window.location.hostname=DriveClient.prototype.newAppHostname})}var x=document.createElement("a");x.style.overflow="hidden";x.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";x.className="geBaseButton";x.style.boxSizing="border-box";x.style.fontSize="11px";x.style.position="relative";x.style.margin="4px";x.style.padding="8px 10px 12px 10px";x.style.width="88px";x.style.height="100px";x.style.whiteSpace="nowrap";x.setAttribute("title",p);mxClient.IS_QUIRKS&&
 (x.style.cssFloat="left",x.style.zoom="1");var z=document.createElement("div");z.style.textOverflow="ellipsis";z.style.overflow="hidden";if(null!=d){var v=document.createElement("img");v.setAttribute("src",d);v.setAttribute("border","0");v.setAttribute("align","absmiddle");v.style.width="60px";v.style.height="60px";v.style.paddingBottom="6px";x.appendChild(v)}else z.style.paddingTop="5px",z.style.whiteSpace="normal",mxClient.IS_IOS?(x.style.padding="0px 10px 20px 10px",x.style.top="6px"):mxClient.IS_FF&&
-(z.style.paddingTop="0px",z.style.marginTop="-2px");x.appendChild(z);mxUtils.write(z,p);if(null!=u)for(d=0;d<u.length;d++)mxUtils.br(z),mxUtils.write(z,u[d]);if(null!=e&&null==a[e]){v.style.visibility="hidden";mxUtils.setOpacity(z,10);var B=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});B.spin(x);var y=window.setTimeout(function(){null==a[e]&&(B.stop(),x.style.display="none")},3E4);a.addListener("clientLoaded",
-mxUtils.bind(this,function(b,c){null!=a[e]&&c.getProperty("client")==a[e]&&(window.clearTimeout(y),mxUtils.setOpacity(z,100),v.style.visibility="",B.stop(),t(),"drive"==e&&null!=l.parentNode&&l.parentNode.removeChild(l))}))}else t();n.appendChild(x);++f>=b&&(mxUtils.br(n),f=0)}b=null!=b?b:2;var e=document.createElement("div");e.style.textAlign="center";e.style.whiteSpace="nowrap";e.style.paddingTop="0px";e.style.paddingBottom="20px";var g=a.addLanguageMenu(e,!0);null!=g&&(g.style.bottom=parseInt("28px")-
+(z.style.paddingTop="0px",z.style.marginTop="-2px");x.appendChild(z);mxUtils.write(z,p);if(null!=u)for(d=0;d<u.length;d++)mxUtils.br(z),mxUtils.write(z,u[d]);if(null!=e&&null==a[e]){v.style.visibility="hidden";mxUtils.setOpacity(z,10);var B=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});B.spin(x);var m=window.setTimeout(function(){null==a[e]&&(B.stop(),x.style.display="none")},3E4);a.addListener("clientLoaded",
+mxUtils.bind(this,function(b,c){null!=a[e]&&c.getProperty("client")==a[e]&&(window.clearTimeout(m),mxUtils.setOpacity(z,100),v.style.visibility="",B.stop(),t(),"drive"==e&&null!=l.parentNode&&l.parentNode.removeChild(l))}))}else t();n.appendChild(x);++f>=b&&(mxUtils.br(n),f=0)}b=null!=b?b:2;var e=document.createElement("div");e.style.textAlign="center";e.style.whiteSpace="nowrap";e.style.paddingTop="0px";e.style.paddingBottom="20px";var g=a.addLanguageMenu(e,!0);null!=g&&(g.style.bottom=parseInt("28px")-
 3+"px");if(!a.isOffline()&&1<a.getServiceCount()){g=document.createElement("a");g.setAttribute("href","https://about.draw.io/support/");g.setAttribute("title",mxResources.get("help"));g.setAttribute("target","_blank");g.style.position="absolute";g.style.textDecoration="none";g.style.cursor="pointer";g.style.fontSize="12px";g.style.bottom="28px";g.style.left="26px";g.style.color="gray";var k=document.createElement("img");mxUtils.setOpacity(k,50);k.style.height="16px";k.style.width="16px";k.setAttribute("border",
 "0");k.setAttribute("valign","bottom");k.setAttribute("src",Editor.helpImage);k.style.marginRight="2px";g.appendChild(k);mxUtils.write(g,mxResources.get("help"));e.appendChild(g)}var m=document.createElement("div");m.style.position="absolute";m.style.cursor="pointer";m.style.fontSize="12px";m.style.bottom="28px";m.style.color="gray";mxUtils.write(m,mxResources.get("decideLater"));a.isOfflineApp()?m.style.right="20px":(mxUtils.setPrefixedStyle(m.style,"transform","translate(-50%,0)"),m.style.left=
 "50%");this.init=function(){if(mxClient.IS_QUIRKS||8==document.documentMode)m.style.marginLeft=-Math.round(m.clientWidth/2)+"px"};e.appendChild(m);mxEvent.addListener(m,"click",function(){a.hideDialog();var b=Editor.useLocalStorage;a.createFile(a.defaultFilename,null,null,null,null,null,null,!0);Editor.useLocalStorage=b});var n=document.createElement("div");mxClient.IS_QUIRKS&&(n.style.whiteSpace="nowrap",n.style.cssFloat="left");n.style.border="1px solid #d3d3d3";n.style.borderWidth="1px 0px 1px 0px";
@@ -8038,7 +8041,7 @@ encodeURIComponent(m.value);a.openLink(b)}catch(p){a.handleError({message:p.mess
 c.length&&(f=mxUtils.button("",function(){try{var b="https://twitter.com/intent/tweet?text="+encodeURIComponent("Check out the diagram I made using @drawio")+"&url="+encodeURIComponent(m.value);a.openLink(b)}catch(p){a.handleError({message:p.message||mxResources.get("drawingTooLarge")})}}),q=document.createElement("img"),q.setAttribute("src",Editor.tweetImage),q.setAttribute("width","18"),q.setAttribute("height","18"),q.setAttribute("border","0"),q.style.marginBottom="5px",f.appendChild(q),f.setAttribute("title",
 mxResources.get("twitter")+" ("+a.formatFileSize(7168)+" max)"),f.style.verticalAlign="bottom",f.style.paddingTop="4px",f.style.minWidth="46px",f.className="geBtn",g.appendChild(f))}q=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});g.appendChild(q);f=mxUtils.button(mxResources.get("copy"),function(){m.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select():document.execCommand("selectAll",!1,null);document.execCommand("copy");a.alert(mxResources.get("copiedToClipboard"))});
 5E5>c.length?mxClient.IS_SF||null!=document.documentMode?q.className="geBtn gePrimaryBtn":(g.appendChild(f),f.className="geBtn gePrimaryBtn",q.className="geBtn"):(g.appendChild(n),q.className="geBtn",n.className="geBtn gePrimaryBtn");d.appendChild(g);this.container=d};EmbedDialog.showPreviewOption=!0;
-var GoogleSitesDialog=function(a,c){function b(){var a=null!=x&&null!=x.getTitle()?x.getTitle():this.defaultFilename;if(B.checked&&""!=p.value){var b="https://www.draw.io/gadget.xml?type=4&diagram="+encodeURIComponent(mxUtils.htmlEntities(p.value));null!=a&&(b+="&title="+encodeURIComponent(a));0<D.length&&(b+="&s="+D);""!=u.value&&"0"!=u.value&&(b+="&border="+u.value);""!=l.value&&(b+="&height="+l.value);b+="&pan="+(v.checked?"1":"0");b+="&zoom="+(t.checked?"1":"0");b+="&fit="+(z.checked?"1":"0");
+var GoogleSitesDialog=function(a,c){function b(){var a=null!=x&&null!=x.getTitle()?x.getTitle():this.defaultFilename;if(B.checked&&""!=p.value){var b="https://www.draw.io/gadget.xml?type=4&diagram="+encodeURIComponent(mxUtils.htmlEntities(p.value));null!=a&&(b+="&title="+encodeURIComponent(a));0<F.length&&(b+="&s="+F);""!=u.value&&"0"!=u.value&&(b+="&border="+u.value);""!=l.value&&(b+="&height="+l.value);b+="&pan="+(v.checked?"1":"0");b+="&zoom="+(t.checked?"1":"0");b+="&fit="+(z.checked?"1":"0");
 b+="&resize="+(C.checked?"1":"0");b+="&x0="+Number(f.value);b+="&y0="+n;e.mathEnabled&&(b+="&math=1");y.checked?b+="&edit=_blank":A.checked&&(b+="&edit="+encodeURIComponent(mxUtils.htmlEntities(window.location.href)));q.value=b}else x.constructor==DriveFile||x.constructor==DropboxFile?(b="https://www.draw.io/gadget.xml?embed=0&diagram=",""!=p.value?b+=encodeURIComponent(mxUtils.htmlEntities(p.value))+"&type=3":(b+=x.getHash().substring(1),b=x.constructor==DropboxFile?b+"&type=2":b+"&type=1"),null!=
 a&&(b+="&title="+encodeURIComponent(a)),""!=l.value&&(a=parseInt(l.value)+parseInt(f.value),b+="&height="+a),q.value=b):q.value=""}var d=document.createElement("div"),e=a.editor.graph,g=e.getGraphBounds(),k=e.view.scale,m=Math.floor(g.x/k-e.view.translate.x),n=Math.floor(g.y/k-e.view.translate.y);mxUtils.write(d,mxResources.get("googleGadget")+":");mxUtils.br(d);var q=document.createElement("input");q.setAttribute("type","text");q.style.marginBottom="8px";q.style.marginTop="2px";q.style.width="410px";
 d.appendChild(q);mxUtils.br(d);this.init=function(){q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null)};mxUtils.write(d,mxResources.get("top")+":");var f=document.createElement("input");f.setAttribute("type","text");f.setAttribute("size","4");f.style.marginRight="16px";f.style.marginLeft="4px";f.value=m;d.appendChild(f);mxUtils.write(d,mxResources.get("height")+":");var l=document.createElement("input");l.setAttribute("type",
@@ -8046,7 +8049,7 @@ d.appendChild(q);mxUtils.br(d);this.init=function(){q.focus();mxClient.IS_GC||mx
 d.appendChild(p);mxUtils.br(d);mxUtils.write(d,mxResources.get("borderWidth")+":");var u=document.createElement("input");u.setAttribute("type","text");u.setAttribute("size","3");u.style.marginBottom="8px";u.style.marginLeft="4px";u.value="0";d.appendChild(u);mxUtils.br(d);var v=document.createElement("input");v.setAttribute("type","checkbox");v.setAttribute("checked","checked");v.defaultChecked=!0;v.style.marginLeft="16px";d.appendChild(v);mxUtils.write(d,mxResources.get("pan")+" ");var t=document.createElement("input");
 t.setAttribute("type","checkbox");t.setAttribute("checked","checked");t.defaultChecked=!0;t.style.marginLeft="8px";d.appendChild(t);mxUtils.write(d,mxResources.get("zoom")+" ");var A=document.createElement("input");A.setAttribute("type","checkbox");A.style.marginLeft="8px";A.setAttribute("title",window.location.href);d.appendChild(A);mxUtils.write(d,mxResources.get("edit")+" ");var y=document.createElement("input");y.setAttribute("type","checkbox");y.style.marginLeft="8px";d.appendChild(y);mxUtils.write(d,
 mxResources.get("asNew")+" ");mxUtils.br(d);var C=document.createElement("input");C.setAttribute("type","checkbox");C.setAttribute("checked","checked");C.defaultChecked=!0;C.style.marginLeft="16px";d.appendChild(C);mxUtils.write(d,mxResources.get("resize")+" ");var z=document.createElement("input");z.setAttribute("type","checkbox");z.style.marginLeft="8px";d.appendChild(z);mxUtils.write(d,mxResources.get("fit")+" ");var B=document.createElement("input");B.setAttribute("type","checkbox");B.style.marginLeft=
-"8px";d.appendChild(B);mxUtils.write(d,mxResources.get("embed")+" ");var D=a.getBasenames().join(";"),x=a.getCurrentFile();mxEvent.addListener(v,"change",b);mxEvent.addListener(t,"change",b);mxEvent.addListener(C,"change",b);mxEvent.addListener(z,"change",b);mxEvent.addListener(A,"change",b);mxEvent.addListener(y,"change",b);mxEvent.addListener(B,"change",b);mxEvent.addListener(l,"change",b);mxEvent.addListener(f,"change",b);mxEvent.addListener(u,"change",b);mxEvent.addListener(p,"change",b);b();
+"8px";d.appendChild(B);mxUtils.write(d,mxResources.get("embed")+" ");var F=a.getBasenames().join(";"),x=a.getCurrentFile();mxEvent.addListener(v,"change",b);mxEvent.addListener(t,"change",b);mxEvent.addListener(C,"change",b);mxEvent.addListener(z,"change",b);mxEvent.addListener(A,"change",b);mxEvent.addListener(y,"change",b);mxEvent.addListener(B,"change",b);mxEvent.addListener(l,"change",b);mxEvent.addListener(f,"change",b);mxEvent.addListener(u,"change",b);mxEvent.addListener(p,"change",b);b();
 mxEvent.addListener(q,"click",function(){q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null)});g=document.createElement("div");g.style.paddingTop="12px";g.style.textAlign="right";k=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});k.className="geBtn gePrimaryBtn";g.appendChild(k);d.appendChild(g);this.container=d},CreateGraphDialog=function(a,c,b){var d=document.createElement("div");d.style.textAlign=
 "right";this.init=function(){var c=document.createElement("div");c.style.position="relative";c.style.border="1px solid gray";c.style.width="100%";c.style.height="360px";c.style.overflow="hidden";c.style.marginBottom="16px";mxEvent.disableContextMenu(c);d.appendChild(c);var g=new Graph(c);g.setCellsCloneable(!0);g.setPanning(!0);g.setAllowDanglingEdges(!1);g.connectionHandler.select=!1;g.view.setTranslate(20,20);g.border=20;g.panningHandler.useLeftButtonForPanning=!0;var k="curved=1;";g.cellRenderer.installCellOverlayListeners=
 function(a,b,c){mxCellRenderer.prototype.installCellOverlayListeners.apply(this,arguments);mxEvent.addListener(c.node,mxClient.IS_POINTER?"pointerdown":"mousedown",function(c){b.fireEvent(new mxEventObject("pointerdown","event",c,"state",a))});!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&mxEvent.addListener(c.node,"touchstart",function(c){b.fireEvent(new mxEventObject("pointerdown","event",c,"state",a))})};g.getAllConnectionConstraints=function(){return null};g.connectionHandler.marker.highlight.keepOnTop=
@@ -8077,7 +8080,7 @@ mxUtils.trim(e.substring(12)),"("==e.charAt(e.length-1)&&(e=e.substring(0,e.last
 e=d.getGraphBounds(),d.setSelectionCells(d.importCells(k,Math.ceil(Math.max(0,e.x/f.scale-f.translate.x)+4*d.gridSize),Math.ceil(Math.max(0,(e.y+e.height)/f.scale-f.translate.y)+4*d.gridSize))),d.scrollCellToVisible(d.getSelectionCell()))}else if("list"==c){if(0<f.length){d=a.editor.graph;q=null;k=[];for(x=u=0;x<f.length;x++)";"!=f[x].charAt(0)&&(0==f[x].length?q=null:null==q?(q=new mxCell(f[x],new mxGeometry(u,0,160,30),"swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;"),
 q.vertex=!0,k.push(q),e=d.getPreferredSizeForCell(q),null!=e&&q.geometry.width<e.width+10&&(q.geometry.width=e.width+10),u+=q.geometry.width+40):"--"==f[x]?(e=new mxCell("",new mxGeometry(0,0,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;"),e.vertex=!0,q.geometry.height+=e.geometry.height,q.insert(e)):0<f[x].length&&(m=new mxCell(f[x],new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),
 m.vertex=!0,e=d.getPreferredSizeForCell(m),null!=e&&m.geometry.width<e.width&&(m.geometry.width=e.width),q.geometry.width=Math.max(q.geometry.width,m.geometry.width),q.geometry.height+=m.geometry.height,q.insert(m)));if(0<k.length){d.getModel().beginUpdate();try{k=d.importCells(k,g.x,g.y);e=[];for(x=0;x<k.length;x++)e.push(k[x]),e=e.concat(k[x].children);d.fireEvent(new mxEventObject("cellsInserted","cells",e))}finally{d.getModel().endUpdate()}d.setSelectionCells(k);d.scrollCellToVisible(d.getSelectionCell())}}}else{for(var q=
-function(a){var b=E[a];null==b&&(b=new mxCell(a,new mxGeometry(0,0,80,30),"whiteSpace=wrap;html=1;"),b.vertex=!0,E[a]=b,k.push(b));return b},E={},k=[],x=0;x<f.length;x++)if(";"!=f[x].charAt(0)){var I=f[x].split("->");if(2<=I.length){var n=q(I[0]),J=q(I[I.length-1]),I=new mxCell(2<I.length?I[1]:"",new mxGeometry);I.edge=!0;n.insertEdge(I,!0);J.insertEdge(I,!1);k.push(I)}}if(0<k.length){f=document.createElement("div");f.style.visibility="hidden";document.body.appendChild(f);d=new Graph(f);d.getModel().beginUpdate();
+function(a){var b=D[a];null==b&&(b=new mxCell(a,new mxGeometry(0,0,80,30),"whiteSpace=wrap;html=1;"),b.vertex=!0,D[a]=b,k.push(b));return b},D={},k=[],x=0;x<f.length;x++)if(";"!=f[x].charAt(0)){var H=f[x].split("->");if(2<=H.length){var n=q(H[0]),J=q(H[H.length-1]),H=new mxCell(2<H.length?H[1]:"",new mxGeometry);H.edge=!0;n.insertEdge(H,!0);J.insertEdge(H,!1);k.push(H)}}if(0<k.length){f=document.createElement("div");f.style.visibility="hidden";document.body.appendChild(f);d=new Graph(f);d.getModel().beginUpdate();
 try{k=d.importCells(k);for(x=0;x<k.length;x++)d.getModel().isVertex(k[x])&&(e=d.getPreferredSizeForCell(k[x]),k[x].geometry.width=Math.max(k[x].geometry.width,e.width),k[x].geometry.height=Math.max(k[x].geometry.height,e.height));u=new mxFastOrganicLayout(d);u.disableEdgeStyle=!1;u.forceConstant=120;u.execute(d.getDefaultParent());m=new mxParallelEdgeLayout(d);m.spacing=20;m.execute(d.getDefaultParent())}finally{d.getModel().endUpdate()}d.clearCellOverlays();e=[];a.editor.graph.getModel().beginUpdate();
 try{e=a.editor.graph.importCells(d.getModel().getChildren(d.getDefaultParent()),g.x,g.y),a.editor.graph.fireEvent(new mxEventObject("cellsInserted","cells",e))}finally{a.editor.graph.getModel().endUpdate()}a.editor.graph.setSelectionCells(e);a.editor.graph.scrollCellToVisible(a.editor.graph.getSelectionCell());d.destroy();f.parentNode.removeChild(f)}}}function e(){return"list"==m.value?"Person\n-name: String\n-birthDate: Date\n--\n+getName(): String\n+setName(String): void\n+isBirthday(): boolean\n\nAddress\n-street: String\n-city: String\n-state: String":
 "table"==m.value?"CREATE TABLE Suppliers\n(\nsupplier_id int NOT NULL PRIMARY KEY,\nsupplier_name char(50) NOT NULL,\ncontact_name char(50),\n);\nCREATE TABLE Customers\n(\ncustomer_id int NOT NULL PRIMARY KEY,\ncustomer_name char(50) NOT NULL,\naddress char(50),\ncity char(50),\nstate char(25),\nzip_code char(10)\n);\n":"plantUmlPng"==m.value?"@startuml\nskinparam backgroundcolor transparent\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: another authentication Response\n@enduml":
@@ -8086,35 +8089,35 @@ try{e=a.editor.graph.importCells(d.getModel().getChildren(d.getDefaultParent()),
 n=document.createElement("option");n.setAttribute("value","diagram");mxUtils.write(n,mxResources.get("diagram"));"plantUml"!=b&&m.appendChild(n);n=document.createElement("option");n.setAttribute("value","plantUmlSvg");mxUtils.write(n,mxResources.get("plantUml")+" ("+mxResources.get("formatSvg")+")");"plantUml"==b&&n.setAttribute("selected","selected");var q=document.createElement("option");q.setAttribute("value","plantUmlPng");mxUtils.write(q,mxResources.get("plantUml")+" ("+mxResources.get("formatPng")+
 ")");var f=document.createElement("option");f.setAttribute("value","plantUmlTxt");mxUtils.write(f,mxResources.get("plantUml")+" ("+mxResources.get("text")+")");EditorUi.enablePlantUml&&Graph.fileSupport&&!a.isOffline()&&"plantUml"==b&&(m.appendChild(n),m.appendChild(q),m.appendChild(f));var l=e();k.value=l;c.appendChild(k);this.init=function(){k.focus()};Graph.fileSupport&&(k.addEventListener("dragover",function(a){a.stopPropagation();a.preventDefault()},!1),k.addEventListener("drop",function(a){a.stopPropagation();
 a.preventDefault();if(0<a.dataTransfer.files.length){a=a.dataTransfer.files[0];var b=new FileReader;b.onload=function(a){k.value=a.target.result};b.readAsText(a)}},!1));c.appendChild(m);mxEvent.addListener(m,"change",function(){var a=e();if(0==k.value.length||k.value==l)l=a,k.value=l});b=mxUtils.button(mxResources.get("close"),function(){k.value==l?a.hideDialog():a.confirm(mxResources.get("areYouSure"),function(){a.hideDialog()})});b.className="geBtn";a.editor.cancelFirst&&c.appendChild(b);n=mxUtils.button(mxResources.get("insert"),
-function(){a.hideDialog();d(k.value,m.value)});c.appendChild(n);n.className="geBtn gePrimaryBtn";a.editor.cancelFirst||c.appendChild(b);this.container=c},NewDialog=function(a,c,b,d,e,g,k,m,n,q,f,l,p,u,v,t,A){function y(){var a=!0;if(null!=V)for(;I<V.length&&(a||0!=mxUtils.mod(I,30));)a=V[I++],B(a.url,a.libs,a.title,a.tooltip?a.tooltip:a.title,a.select,a.imgUrl,a.info,a.onClick,a.preview,a.noImg),a=!1}function C(){if(Z)b||a.hideDialog(),u(Z,ca,E.value);else if(d)b||a.hideDialog(),d(ha,E.value);else{var c=
-E.value;null!=c&&0<c.length&&a.pickFolder(a.mode,function(b){a.createFile(c,ha,null!=aa&&0<aa.length?aa:null,null,function(){a.hideDialog()},null,b)},a.mode!=App.MODE_GOOGLE||null==a.stateArg||null==a.stateArg.folderId)}}function z(a,b,c,f,d){null!=U&&(U.style.backgroundColor="transparent",U.style.border="1px solid transparent");F.removeAttribute("disabled");ha=b;aa=c;U=a;Z=f;ca=d;U.style.backgroundColor=m;U.style.border=n}function B(b,c,f,d,l,p,g,e,x,t){var u=document.createElement("div");u.className=
-"geTemplate";u.style.height=fa+"px";u.style.width=R+"px";null!=d&&0<d.length&&u.setAttribute("title",d);if(null!=p)u.style.backgroundImage="url("+p+")",u.style.backgroundSize="contain",u.style.backgroundPosition="center center",u.style.backgroundRepeat="no-repeat",mxEvent.addListener(u,"click",function(a){z(u,null,null,b,g)}),mxEvent.addListener(u,"dblclick",function(a){C()});else if(!t&&null!=b&&0<b.length){f=x||TEMPLATE_PATH+"/"+b.substring(0,b.length-4)+".png";u.style.backgroundImage="url("+f+
-")";u.style.backgroundPosition="center center";u.style.backgroundRepeat="no-repeat";var k=!1;mxEvent.addListener(u,"click",function(f){F.setAttribute("disabled","disabled");u.style.backgroundColor="transparent";u.style.border="1px solid transparent";f=b;f=/^https?:\/\//.test(f)&&!a.editor.isCorsEnabledForUrl(f)?PROXY_URL+"?url="+encodeURIComponent(f):TEMPLATE_PATH+"/"+f;J.spin(P);mxUtils.get(f,mxUtils.bind(this,function(a){J.stop();200<=a.getStatus()&&299>=a.getStatus()&&(z(u,a.getText(),c),k&&C())}))});
-mxEvent.addListener(u,"dblclick",function(a){k=!0})}else u.innerHTML='<table width="100%" height="100%" style="line-height:1em;word-break: break-all;"><tr><td align="center" valign="middle">'+mxResources.get(f,null,f)+"</td></tr></table>",l&&z(u),null!=e?mxEvent.addListener(u,"click",e):(mxEvent.addListener(u,"click",function(a){z(u,null,null,b,g)}),mxEvent.addListener(u,"dblclick",function(a){C()}));P.appendChild(u)}function D(){X&&(X=!1,mxEvent.addListener(P,"scroll",function(a){P.scrollTop+P.clientHeight>=
-P.scrollHeight&&(y(),mxEvent.consume(a))}));var a=null;if(0<Q){var b=document.createElement("div");b.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(b,mxResources.get("custom"));W.appendChild(b);for(var c in ea){var f=document.createElement("div"),b=c,d=ea[c];18<b.length&&(b=b.substring(0,18)+"&hellip;");f.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;";
-f.setAttribute("title",b+" ("+d.length+")");mxUtils.write(f,f.getAttribute("title"));null!=q&&(f.style.padding=q);W.appendChild(f);(function(b,c){mxEvent.addListener(f,"click",function(){a!=c&&(a.style.backgroundColor="",a=c,a.style.backgroundColor=k,P.scrollTop=0,P.innerHTML="",I=0,V=ea[b],K=null,y())})})(c,f)}b=document.createElement("div");b.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(b,"draw.io");W.appendChild(b)}for(c in N)f=document.createElement("div"),
-b=mxResources.get(c),d=N[c],null==b&&(b=c.substring(0,1).toUpperCase()+c.substring(1)),18<b.length&&(b=b.substring(0,18)+"&hellip;"),f.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;",f.setAttribute("title",b+" ("+d.length+")"),mxUtils.write(f,f.getAttribute("title")),null!=q&&(f.style.padding=q),W.appendChild(f),null==a&&0<d.length&&(a=f,a.style.backgroundColor=k,V=d),function(b,c){mxEvent.addListener(f,"click",
-function(){a!=c&&(a.style.backgroundColor="",a=c,a.style.backgroundColor=k,P.scrollTop=0,P.innerHTML="",I=0,V=N[b],K=null,y())})}(c,f);y()}b=null!=b?b:!0;e=null!=e?e:!1;k=null!=k?k:"#ebf2f9";m=null!=m?m:"#e6eff8";n=null!=n?n:"1px solid #ccd9ea";f=null!=f?f:EditorUi.templateFile;var x=document.createElement("div");x.style.height="100%";var G=document.createElement("div");G.style.whiteSpace="nowrap";G.style.height="46px";b&&x.appendChild(G);var H=document.createElement("img");H.setAttribute("border",
-"0");H.setAttribute("align","absmiddle");H.style.width="40px";H.style.height="40px";H.style.marginRight="10px";H.style.paddingBottom="4px";H.src=a.mode==App.MODE_GOOGLE?IMAGE_PATH+"/google-drive-logo.svg":a.mode==App.MODE_DROPBOX?IMAGE_PATH+"/dropbox-logo.svg":a.mode==App.MODE_ONEDRIVE?IMAGE_PATH+"/onedrive-logo.svg":a.mode==App.MODE_GITHUB?IMAGE_PATH+"/github-logo.svg":a.mode==App.MODE_TRELLO?IMAGE_PATH+"/trello-logo.svg":a.mode==App.MODE_BROWSER?IMAGE_PATH+"/osa_database.png":IMAGE_PATH+"/osa_drive-harddisk.png";
-!c&&b&&G.appendChild(H);b&&mxUtils.write(G,(null==a.mode||a.mode==App.MODE_GOOGLE||a.mode==App.MODE_BROWSER?mxResources.get("diagramName"):mxResources.get("filename"))+":");H=".drawio";a.mode==App.MODE_GOOGLE&&null!=a.drive?H=a.drive.extension:a.mode==App.MODE_DROPBOX&&null!=a.dropbox?H=a.dropbox.extension:a.mode==App.MODE_ONEDRIVE&&null!=a.oneDrive?H=a.oneDrive.extension:a.mode==App.MODE_GITHUB&&null!=a.gitHub?H=a.gitHub.extension:a.mode==App.MODE_TRELLO&&null!=a.trello&&(H=a.trello.extension);var E=
-document.createElement("input");E.setAttribute("value",a.defaultFilename+H);E.style.marginLeft="10px";E.style.width=c?"220px":"430px";this.init=function(){b&&(E.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?E.select():document.execCommand("selectAll",!1,null))};b&&(G.appendChild(E),null!=a.editor.fileExtensions&&(H=FilenameDialog.createTypeHint(a,E,a.editor.fileExtensions),H.style.marginTop="12px",G.appendChild(H)));var G=!1,I=0,J=new Spinner({lines:12,length:10,
-width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9}),F=mxUtils.button(t||mxResources.get("create"),function(){F.setAttribute("disabled","disabled");C();F.removeAttribute("disabled")});F.className="geBtn gePrimaryBtn";if(l||p){var M=[],K=null,S=null,L=null,T=function(a){F.setAttribute("disabled","disabled");for(var b=0;b<M.length;b++)M[b].className=b==a?"geBtn gePrimaryBtn":"geBtn"},G=!0;t=document.createElement("div");t.style.whiteSpace="nowrap";t.style.height=
-"30px";x.appendChild(t);H=mxUtils.button(mxResources.get("Templates",null,"Templates"),function(){W.style.display="";P.style.left="160px";T(0);P.scrollTop=0;P.innerHTML="";I=0;K!=V&&(V=K,N=S,Q=L,W.innerHTML="",D(),K=null)});M.push(H);t.appendChild(H);var Y=function(a){W.style.display="none";P.style.left="30px";T(a?-1:1);null==K&&(K=V);P.scrollTop=0;P.innerHTML="";J.spin(P);var b=function(a,b,c){I=0;J.stop();V=a;c=c||{};var f=0,d;for(d in c)f+=c[d].length;if(b)P.innerHTML=b;else if(0==a.length&&0==
-f)P.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found"));else if(P.innerHTML="",0<f){W.style.display="";P.style.left="160px";W.innerHTML="";Q=0;N={"draw.io":a};for(d in c)N[d]=c[d];D()}else y()};a?p(da.value,b):l(b)};l&&(H=mxUtils.button(mxResources.get("Recent",null,"Recent"),function(){Y()}),t.appendChild(H),M.push(H));if(p){H=document.createElement("span");H.style.marginLeft="10px";H.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+":");t.appendChild(H);
-var da=document.createElement("input");da.style.marginRight="10px";da.style.marginLeft="10px";da.style.width="220px";mxEvent.addListener(da,"keypress",function(a){13==a.keyCode&&Y(!0)});t.appendChild(da);H=mxUtils.button(mxResources.get("search"),function(){Y(!0)});H.className="geBtn";t.appendChild(H)}T(0)}var aa=null,ha=null,U=null,Z=null,ca=null,P=document.createElement("div");P.style.border="1px solid #d3d3d3";P.style.position="absolute";P.style.left="160px";P.style.right="34px";G=(b?72:40)+(G?
-30:0);P.style.top=G+"px";P.style.bottom="68px";P.style.margin="6px 0 0 -1px";P.style.padding="6px";P.style.overflow="auto";var W=document.createElement("div");W.style.cssText="position:absolute;left:30px;width:128px;top:"+G+"px;bottom:68px;margin-top:6px;overflow:auto;border:1px solid #d3d3d3;";var fa=140,R=140,N={},ea={},Q=0,X=!0;N.basic=[{title:"blankDiagram",select:!0}];var V=N.basic;if(!c){var ja=function(){mxUtils.get(ba,function(a){if(!O){O=!0;for(a=a.getXml().documentElement.firstChild;null!=
-a;){if("undefined"!==typeof a.getAttribute){var b=a.getAttribute("url");if(null!=b){var c=a.getAttribute("section");null==c&&(c=b.indexOf("/"),c=b.substring(0,c));b=N[c];null==b&&(b=[],N[c]=b);b.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),preview:a.getAttribute("preview")})}}a=a.nextSibling}J.stop();D()}})};x.appendChild(W);x.appendChild(P);var O=!1,ba=f;/^https?:\/\//.test(ba)&&!a.editor.isCorsEnabledForUrl(ba)&&(ba=PROXY_URL+
-"?url="+encodeURIComponent(ba));J.spin(P);null!=A?A(function(a,b){ea=a;L=Q=b;ja()},ja):ja();S=N}mxEvent.addListener(E,"keypress",function(b){a.dialog.container.firstChild==x&&13==b.keyCode&&C()});f=document.createElement("div");f.style.marginTop=c?"4px":"16px";f.style.textAlign="right";f.style.position="absolute";f.style.left="40px";f.style.bottom="24px";f.style.right="40px";c||a.isOffline()||!b||null!=d||e||(A=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://support.draw.io/display/DO/Creating+and+Opening+Files")}),
-A.className="geBtn",f.appendChild(A));A=mxUtils.button(mxResources.get("cancel"),function(){null!=g&&g();a.hideDialog(!0)});A.className="geBtn";!a.editor.cancelFirst||e&&null==g||f.appendChild(A);c||"1"==urlParams.embed||e||(c=mxUtils.button(mxResources.get("fromTemplateUrl"),function(){var b=new FilenameDialog(a,"",mxResources.get("create"),function(b){null!=b&&0<b.length&&(b=a.getUrl(window.location.pathname+"?mode="+a.mode+"&title="+encodeURIComponent(E.value)+"&create="+encodeURIComponent(b)),
+function(){a.hideDialog();d(k.value,m.value)});c.appendChild(n);n.className="geBtn gePrimaryBtn";a.editor.cancelFirst||c.appendChild(b);this.container=c},NewDialog=function(a,c,b,d,e,g,k,m,n,q,f,l,p,u,v,t,A){function y(){var a=!0;if(null!=fa)for(;H<fa.length&&(a||0!=mxUtils.mod(H,30));)a=fa[H++],B(a.url,a.libs,a.title,a.tooltip?a.tooltip:a.title,a.select,a.imgUrl,a.info,a.onClick,a.preview,a.noImg,a.clibs),a=!1}function C(){if(aa)b||a.hideDialog(),u(aa,ja,D.value);else if(d)b||a.hideDialog(),d(U,
+D.value);else{var c=D.value;null!=c&&0<c.length&&a.pickFolder(a.mode,function(b){a.createFile(c,U,null!=ba&&0<ba.length?ba:null,null,function(){a.hideDialog()},null,b,null,null!=ha&&0<ha.length?ha:null)},a.mode!=App.MODE_GOOGLE||null==a.stateArg||null==a.stateArg.folderId)}}function z(a,b,c,f,d,l){null!=Y&&(Y.style.backgroundColor="transparent",Y.style.border="1px solid transparent");E.removeAttribute("disabled");U=b;ba=c;ha=l;Y=a;aa=f;ja=d;Y.style.backgroundColor=m;Y.style.border=n}function B(b,
+c,f,d,l,p,g,e,x,t,u){var k=document.createElement("div");k.className="geTemplate";k.style.height=R+"px";k.style.width=P+"px";null!=d&&0<d.length&&k.setAttribute("title",d);if(null!=p)k.style.backgroundImage="url("+p+")",k.style.backgroundSize="contain",k.style.backgroundPosition="center center",k.style.backgroundRepeat="no-repeat",mxEvent.addListener(k,"click",function(a){z(k,null,null,b,g,u)}),mxEvent.addListener(k,"dblclick",function(a){C()});else if(!t&&null!=b&&0<b.length){f=x||TEMPLATE_PATH+
+"/"+b.substring(0,b.length-4)+".png";k.style.backgroundImage="url("+f+")";k.style.backgroundPosition="center center";k.style.backgroundRepeat="no-repeat";var v=!1;mxEvent.addListener(k,"click",function(f){E.setAttribute("disabled","disabled");k.style.backgroundColor="transparent";k.style.border="1px solid transparent";f=b;f=/^https?:\/\//.test(f)&&!a.editor.isCorsEnabledForUrl(f)?PROXY_URL+"?url="+encodeURIComponent(f):TEMPLATE_PATH+"/"+f;J.spin(O);mxUtils.get(f,mxUtils.bind(this,function(a){J.stop();
+200<=a.getStatus()&&299>=a.getStatus()&&(z(k,a.getText(),c,null,null,u),v&&C())}))});mxEvent.addListener(k,"dblclick",function(a){v=!0})}else k.innerHTML='<table width="100%" height="100%" style="line-height:1em;word-break: break-all;"><tr><td align="center" valign="middle">'+mxResources.get(f,null,f)+"</td></tr></table>",l&&z(k),null!=e?mxEvent.addListener(k,"click",e):(mxEvent.addListener(k,"click",function(a){z(k,null,null,b,g)}),mxEvent.addListener(k,"dblclick",function(a){C()}));O.appendChild(k)}
+function F(){ca&&(ca=!1,mxEvent.addListener(O,"scroll",function(a){O.scrollTop+O.clientHeight>=O.scrollHeight&&(y(),mxEvent.consume(a))}));var a=null;if(0<V){var b=document.createElement("div");b.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(b,mxResources.get("custom"));W.appendChild(b);for(var c in Q){var f=document.createElement("div"),b=c,d=Q[c];18<b.length&&(b=b.substring(0,18)+"&hellip;");f.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;";
+f.setAttribute("title",b+" ("+d.length+")");mxUtils.write(f,f.getAttribute("title"));null!=q&&(f.style.padding=q);W.appendChild(f);(function(b,c){mxEvent.addListener(f,"click",function(){a!=c&&(a.style.backgroundColor="",a=c,a.style.backgroundColor=k,O.scrollTop=0,O.innerHTML="",H=0,fa=Q[b],K=null,y())})})(c,f)}b=document.createElement("div");b.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(b,"draw.io");W.appendChild(b)}for(c in X)f=document.createElement("div"),
+b=mxResources.get(c),d=X[c],null==b&&(b=c.substring(0,1).toUpperCase()+c.substring(1)),18<b.length&&(b=b.substring(0,18)+"&hellip;"),f.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;",f.setAttribute("title",b+" ("+d.length+")"),mxUtils.write(f,f.getAttribute("title")),null!=q&&(f.style.padding=q),W.appendChild(f),null==a&&0<d.length&&(a=f,a.style.backgroundColor=k,fa=d),function(b,c){mxEvent.addListener(f,"click",
+function(){a!=c&&(a.style.backgroundColor="",a=c,a.style.backgroundColor=k,O.scrollTop=0,O.innerHTML="",H=0,fa=X[b],K=null,y())})}(c,f);y()}b=null!=b?b:!0;e=null!=e?e:!1;k=null!=k?k:"#ebf2f9";m=null!=m?m:"#e6eff8";n=null!=n?n:"1px solid #ccd9ea";f=null!=f?f:EditorUi.templateFile;var x=document.createElement("div");x.style.height="100%";var I=document.createElement("div");I.style.whiteSpace="nowrap";I.style.height="46px";b&&x.appendChild(I);var G=document.createElement("img");G.setAttribute("border",
+"0");G.setAttribute("align","absmiddle");G.style.width="40px";G.style.height="40px";G.style.marginRight="10px";G.style.paddingBottom="4px";G.src=a.mode==App.MODE_GOOGLE?IMAGE_PATH+"/google-drive-logo.svg":a.mode==App.MODE_DROPBOX?IMAGE_PATH+"/dropbox-logo.svg":a.mode==App.MODE_ONEDRIVE?IMAGE_PATH+"/onedrive-logo.svg":a.mode==App.MODE_GITHUB?IMAGE_PATH+"/github-logo.svg":a.mode==App.MODE_TRELLO?IMAGE_PATH+"/trello-logo.svg":a.mode==App.MODE_BROWSER?IMAGE_PATH+"/osa_database.png":IMAGE_PATH+"/osa_drive-harddisk.png";
+!c&&b&&I.appendChild(G);b&&mxUtils.write(I,(null==a.mode||a.mode==App.MODE_GOOGLE||a.mode==App.MODE_BROWSER?mxResources.get("diagramName"):mxResources.get("filename"))+":");G=".drawio";a.mode==App.MODE_GOOGLE&&null!=a.drive?G=a.drive.extension:a.mode==App.MODE_DROPBOX&&null!=a.dropbox?G=a.dropbox.extension:a.mode==App.MODE_ONEDRIVE&&null!=a.oneDrive?G=a.oneDrive.extension:a.mode==App.MODE_GITHUB&&null!=a.gitHub?G=a.gitHub.extension:a.mode==App.MODE_TRELLO&&null!=a.trello&&(G=a.trello.extension);var D=
+document.createElement("input");D.setAttribute("value",a.defaultFilename+G);D.style.marginLeft="10px";D.style.width=c?"220px":"430px";this.init=function(){b&&(D.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?D.select():document.execCommand("selectAll",!1,null))};b&&(I.appendChild(D),null!=a.editor.fileExtensions&&(G=FilenameDialog.createTypeHint(a,D,a.editor.fileExtensions),G.style.marginTop="12px",I.appendChild(G)));var I=!1,H=0,J=new Spinner({lines:12,length:10,
+width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9}),E=mxUtils.button(t||mxResources.get("create"),function(){E.setAttribute("disabled","disabled");C();E.removeAttribute("disabled")});E.className="geBtn gePrimaryBtn";if(l||p){var M=[],K=null,S=null,L=null,T=function(a){E.setAttribute("disabled","disabled");for(var b=0;b<M.length;b++)M[b].className=b==a?"geBtn gePrimaryBtn":"geBtn"},I=!0;t=document.createElement("div");t.style.whiteSpace="nowrap";t.style.height=
+"30px";x.appendChild(t);G=mxUtils.button(mxResources.get("Templates",null,"Templates"),function(){W.style.display="";O.style.left="160px";T(0);O.scrollTop=0;O.innerHTML="";H=0;K!=fa&&(fa=K,X=S,V=L,W.innerHTML="",F(),K=null)});M.push(G);t.appendChild(G);var Z=function(a){W.style.display="none";O.style.left="30px";T(a?-1:1);null==K&&(K=fa);O.scrollTop=0;O.innerHTML="";J.spin(O);var b=function(a,b,c){H=0;J.stop();fa=a;c=c||{};var f=0,d;for(d in c)f+=c[d].length;if(b)O.innerHTML=b;else if(0==a.length&&
+0==f)O.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found"));else if(O.innerHTML="",0<f){W.style.display="";O.style.left="160px";W.innerHTML="";V=0;X={"draw.io":a};for(d in c)X[d]=c[d];F()}else y()};a?p(ea.value,b):l(b)};l&&(G=mxUtils.button(mxResources.get("Recent",null,"Recent"),function(){Z()}),t.appendChild(G),M.push(G));if(p){G=document.createElement("span");G.style.marginLeft="10px";G.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+":");t.appendChild(G);
+var ea=document.createElement("input");ea.style.marginRight="10px";ea.style.marginLeft="10px";ea.style.width="220px";mxEvent.addListener(ea,"keypress",function(a){13==a.keyCode&&Z(!0)});t.appendChild(ea);G=mxUtils.button(mxResources.get("search"),function(){Z(!0)});G.className="geBtn";t.appendChild(G)}T(0)}var ba=null,ha=null,U=null,Y=null,aa=null,ja=null,O=document.createElement("div");O.style.border="1px solid #d3d3d3";O.style.position="absolute";O.style.left="160px";O.style.right="34px";I=(b?72:
+40)+(I?30:0);O.style.top=I+"px";O.style.bottom="68px";O.style.margin="6px 0 0 -1px";O.style.padding="6px";O.style.overflow="auto";var W=document.createElement("div");W.style.cssText="position:absolute;left:30px;width:128px;top:"+I+"px;bottom:68px;margin-top:6px;overflow:auto;border:1px solid #d3d3d3;";var R=140,P=140,X={},Q={},V=0,ca=!0;X.basic=[{title:"blankDiagram",select:!0}];var fa=X.basic;if(!c){var N=function(){mxUtils.get(da,function(a){if(!ga){ga=!0;for(a=a.getXml().documentElement.firstChild;null!=
+a;){if("undefined"!==typeof a.getAttribute){var b=a.getAttribute("url");if(null!=b){var c=a.getAttribute("section");null==c&&(c=b.indexOf("/"),c=b.substring(0,c));b=X[c];null==b&&(b=[],X[c]=b);b.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),preview:a.getAttribute("preview"),clibs:a.getAttribute("clibs")})}}a=a.nextSibling}J.stop();F()}})};x.appendChild(W);x.appendChild(O);var ga=!1,da=f;/^https?:\/\//.test(da)&&!a.editor.isCorsEnabledForUrl(da)&&
+(da=PROXY_URL+"?url="+encodeURIComponent(da));J.spin(O);null!=A?A(function(a,b){Q=a;L=V=b;N()},N):N();S=X}mxEvent.addListener(D,"keypress",function(b){a.dialog.container.firstChild==x&&13==b.keyCode&&C()});f=document.createElement("div");f.style.marginTop=c?"4px":"16px";f.style.textAlign="right";f.style.position="absolute";f.style.left="40px";f.style.bottom="24px";f.style.right="40px";c||a.isOffline()||!b||null!=d||e||(A=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://support.draw.io/display/DO/Creating+and+Opening+Files")}),
+A.className="geBtn",f.appendChild(A));A=mxUtils.button(mxResources.get("cancel"),function(){null!=g&&g();a.hideDialog(!0)});A.className="geBtn";!a.editor.cancelFirst||e&&null==g||f.appendChild(A);c||"1"==urlParams.embed||e||(c=mxUtils.button(mxResources.get("fromTemplateUrl"),function(){var b=new FilenameDialog(a,"",mxResources.get("create"),function(b){null!=b&&0<b.length&&(b=a.getUrl(window.location.pathname+"?mode="+a.mode+"&title="+encodeURIComponent(D.value)+"&create="+encodeURIComponent(b)),
 null==a.getCurrentFile()?window.location.href=b:window.openWindow(b))},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()}),c.className="geBtn",f.appendChild(c));Graph.fileSupport&&v&&(v=mxUtils.button(mxResources.get("import"),function(){if(null==a.newDlgFileInputElt){var b=document.createElement("input");b.setAttribute("multiple","multiple");b.setAttribute("type","file");mxEvent.addListener(b,"change",function(c){a.openFiles(b.files,!0);b.value=""});b.style.display="none";document.body.appendChild(b);
-a.newDlgFileInputElt=b}a.newDlgFileInputElt.click()}),v.className="geBtn",f.appendChild(v));f.appendChild(F);a.editor.cancelFirst||null!=d||e&&null==g||f.appendChild(A);x.appendChild(f);this.container=x},CreateDialog=function(a,c,b,d,e,g,k,m,n,q,f,l,p,u,v,t){function A(b,f,d,p){function g(){mxEvent.addListener(e,"click",function(){var b=d;if(k){var f=z.value,l=f.lastIndexOf(".");if(0>c.lastIndexOf(".")&&0>l){var b=null!=b?b:x.value,p="";b==App.MODE_GOOGLE?p=a.drive.extension:b==App.MODE_GITHUB?p=
-a.gitHub.extension:b==App.MODE_TRELLO?p=a.trello.extension:b==App.MODE_DROPBOX?p=a.dropbox.extension:b==App.MODE_ONEDRIVE?p=a.oneDrive.extension:b==App.MODE_DEVICE&&(p=".drawio");0<=l&&(f=f.substring(0,l));z.value=f+p}}y(d)})}var e=document.createElement("a");e.style.overflow="hidden";var u=document.createElement("img");u.src=b;u.setAttribute("border","0");u.setAttribute("align","absmiddle");u.style.width="60px";u.style.height="60px";u.style.paddingBottom="6px";e.style.display=mxClient.IS_QUIRKS?
-"inline":"inline-block";e.className="geBaseButton";e.style.position="relative";e.style.margin="4px";e.style.padding="8px 8px 10px 8px";e.style.whiteSpace="nowrap";e.appendChild(u);mxClient.IS_QUIRKS&&(e.style.cssFloat="left",e.style.zoom="1");e.style.color="gray";e.style.fontSize="11px";var t=document.createElement("div");e.appendChild(t);mxUtils.write(t,f);if(null!=p&&null==a[p]){u.style.visibility="hidden";mxUtils.setOpacity(t,10);var v=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,
-color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});v.spin(e);var m=window.setTimeout(function(){null==a[p]&&(v.stop(),e.style.display="none")},3E4);a.addListener("clientLoaded",mxUtils.bind(this,function(){null!=a[p]&&(window.clearTimeout(m),mxUtils.setOpacity(t,100),u.style.visibility="",v.stop(),g())}))}else g();B.appendChild(e);++D==l&&(mxUtils.br(B),D=0)}function y(c){var f=z.value;if(null==c||null!=f&&0<f.length)a.hideDialog(),b(f,c)}k=null!=k?k:!0;m=null!=m?m:!0;l=null!=
+a.newDlgFileInputElt=b}a.newDlgFileInputElt.click()}),v.className="geBtn",f.appendChild(v));f.appendChild(E);a.editor.cancelFirst||null!=d||e&&null==g||f.appendChild(A);x.appendChild(f);this.container=x},CreateDialog=function(a,c,b,d,e,g,k,m,n,q,f,l,p,u,v,t){function A(b,f,d,p){function g(){mxEvent.addListener(e,"click",function(){var b=d;if(k){var f=z.value,l=f.lastIndexOf(".");if(0>c.lastIndexOf(".")&&0>l){var b=null!=b?b:x.value,p="";b==App.MODE_GOOGLE?p=a.drive.extension:b==App.MODE_GITHUB?p=
+a.gitHub.extension:b==App.MODE_TRELLO?p=a.trello.extension:b==App.MODE_DROPBOX?p=a.dropbox.extension:b==App.MODE_ONEDRIVE?p=a.oneDrive.extension:b==App.MODE_DEVICE&&(p=".drawio");0<=l&&(f=f.substring(0,l));z.value=f+p}}y(d)})}var e=document.createElement("a");e.style.overflow="hidden";var t=document.createElement("img");t.src=b;t.setAttribute("border","0");t.setAttribute("align","absmiddle");t.style.width="60px";t.style.height="60px";t.style.paddingBottom="6px";e.style.display=mxClient.IS_QUIRKS?
+"inline":"inline-block";e.className="geBaseButton";e.style.position="relative";e.style.margin="4px";e.style.padding="8px 8px 10px 8px";e.style.whiteSpace="nowrap";e.appendChild(t);mxClient.IS_QUIRKS&&(e.style.cssFloat="left",e.style.zoom="1");e.style.color="gray";e.style.fontSize="11px";var u=document.createElement("div");e.appendChild(u);mxUtils.write(u,f);if(null!=p&&null==a[p]){t.style.visibility="hidden";mxUtils.setOpacity(u,10);var v=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,
+color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});v.spin(e);var m=window.setTimeout(function(){null==a[p]&&(v.stop(),e.style.display="none")},3E4);a.addListener("clientLoaded",mxUtils.bind(this,function(){null!=a[p]&&(window.clearTimeout(m),mxUtils.setOpacity(u,100),t.style.visibility="",v.stop(),g())}))}else g();B.appendChild(e);++F==l&&(mxUtils.br(B),F=0)}function y(c){var f=z.value;if(null==c||null!=f&&0<f.length)a.hideDialog(),b(f,c)}k=null!=k?k:!0;m=null!=m?m:!0;l=null!=
 l?l:4;g=document.createElement("div");g.style.whiteSpace="nowrap";null==d&&a.addLanguageMenu(g);var C=document.createElement("h2");mxUtils.write(C,e||mxResources.get("create"));C.style.marginTop="0px";C.style.marginBottom="24px";g.appendChild(C);mxUtils.write(g,mxResources.get("filename")+":");var z=document.createElement("input");z.setAttribute("value",c);z.style.width="280px";z.style.marginLeft="10px";z.style.marginBottom="20px";z.style.maxWidth="70%";this.init=function(){z.focus();mxClient.IS_GC||
 mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?z.select():document.execCommand("selectAll",!1,null)};g.appendChild(z);null!=t&&g.appendChild(FilenameDialog.createTypeHint(a,z,t));null!=p&&null!=u&&"image/"==u.substring(0,6)&&(z.style.width="160px",e=null,"image/svg+xml"==u&&mxClient.IS_SVG?(e=document.createElement("div"),e.innerHTML=mxUtils.trim(p),p=e.getElementsByTagName("svg")[0],u=parseInt(p.getAttribute("width")),v=parseInt(p.getAttribute("height")),p.setAttribute("viewBox","0 0 "+
 u+" "+v),p.setAttribute("width","120px"),p.setAttribute("height","80px")):(e=document.createElement("img"),e.setAttribute("src","data:"+u+(v?";base64,":";utf8,")+p)),e.style.position="absolute",e.style.top="70px",e.style.right="100px",e.style.maxWidth="120px",e.style.maxHeight="80px",mxUtils.setPrefixedStyle(e.style,"transform","translate(50%,-50%)"),g.appendChild(e),n&&Editor.popupsAllowed&&(e.style.cursor="pointer",mxEvent.addListener(e,"click",function(){y("_blank")})));mxUtils.br(g);var B=document.createElement("div");
-B.style.textAlign="center";var D=0;B.style.marginTop="6px";g.appendChild(B);var x=document.createElement("select");x.style.marginLeft="10px";a.isOfflineApp()||a.isOffline()||("function"===typeof window.DriveClient&&(p=document.createElement("option"),p.setAttribute("value",App.MODE_GOOGLE),mxUtils.write(p,mxResources.get("googleDrive")),x.appendChild(p),A(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive")),"function"===typeof window.OneDriveClient&&(p=document.createElement("option"),
+B.style.textAlign="center";var F=0;B.style.marginTop="6px";g.appendChild(B);var x=document.createElement("select");x.style.marginLeft="10px";a.isOfflineApp()||a.isOffline()||("function"===typeof window.DriveClient&&(p=document.createElement("option"),p.setAttribute("value",App.MODE_GOOGLE),mxUtils.write(p,mxResources.get("googleDrive")),x.appendChild(p),A(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive")),"function"===typeof window.OneDriveClient&&(p=document.createElement("option"),
 p.setAttribute("value",App.MODE_ONEDRIVE),mxUtils.write(p,mxResources.get("oneDrive")),x.appendChild(p),a.mode==App.MODE_ONEDRIVE&&p.setAttribute("selected","selected"),A(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive")),"function"===typeof window.DropboxClient&&(p=document.createElement("option"),p.setAttribute("value",App.MODE_DROPBOX),mxUtils.write(p,mxResources.get("dropbox")),x.appendChild(p),a.mode==App.MODE_DROPBOX&&p.setAttribute("selected","selected"),
 A(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),App.MODE_DROPBOX,"dropbox")),null!=a.gitHub&&(p=document.createElement("option"),p.setAttribute("value",App.MODE_GITHUB),mxUtils.write(p,mxResources.get("github")),x.appendChild(p),A(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub")),"function"===typeof window.TrelloClient&&(p=document.createElement("option"),p.setAttribute("value",App.MODE_TRELLO),mxUtils.write(p,mxResources.get("trello")),x.appendChild(p),
 A(IMAGE_PATH+"/trello-logo.svg",mxResources.get("trello"),App.MODE_TRELLO,"trello")));Editor.useLocalStorage&&"device"!=urlParams.storage&&null==a.getCurrentFile()||(p=document.createElement("option"),p.setAttribute("value",App.MODE_DEVICE),mxUtils.write(p,mxResources.get("device")),x.appendChild(p),a.mode!=App.MODE_DEVICE&&m||p.setAttribute("selected","selected"),f&&A(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE));m&&isLocalStorage&&"0"!=urlParams.browser&&(m=document.createElement("option"),
@@ -8161,22 +8164,22 @@ var RevisionDialog=function(a,c,b){var d=document.createElement("div"),e=documen
 "376px";k.style.overflow="hidden";mxEvent.disableContextMenu(k);d.appendChild(k);var m=new Graph(k);m.setTooltips(!1);m.setEnabled(!1);m.setPanning(!0);m.panningHandler.ignoreCell=!0;m.panningHandler.useLeftButtonForPanning=!0;m.minFitScale=null;m.maxFitScale=null;m.centerZoom=!0;var n=0,q=null,f=0,l=m.getGlobalVariable;m.getGlobalVariable=function(a){return"page"==a&&null!=q&&null!=q[f]?q[f].getAttribute("name"):"pagenumber"==a?f+1:l.apply(this,arguments)};m.getLinkForCell=function(){return null};
 Editor.MathJaxRender&&m.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,c){a.editor.graph.mathEnabled&&Editor.MathJaxRender(m.container)}));var p=new Spinner({lines:11,length:15,width:6,radius:10,corners:1,rotate:0,direction:1,color:"#000",speed:1.4,trail:60,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9,top:"50%",left:"50%"}),u=a.getCurrentFile(),v=null,t=null,A=null,y=null,C=mxUtils.button("",function(){null!=A&&m.zoomIn()});C.className="geSprite geSprite-zoomin";C.setAttribute("title",
 mxResources.get("zoomIn"));C.style.outline="none";C.style.border="none";C.style.margin="2px";C.setAttribute("disabled","disabled");mxUtils.setOpacity(C,20);var z=mxUtils.button("",function(){null!=A&&m.zoomOut()});z.className="geSprite geSprite-zoomout";z.setAttribute("title",mxResources.get("zoomOut"));z.style.outline="none";z.style.border="none";z.style.margin="2px";z.setAttribute("disabled","disabled");mxUtils.setOpacity(z,20);var B=mxUtils.button("",function(){null!=A&&(m.maxFitScale=8,m.fit(8),
-m.center())});B.className="geSprite geSprite-fit";B.setAttribute("title",mxResources.get("fit"));B.style.outline="none";B.style.border="none";B.style.margin="2px";B.setAttribute("disabled","disabled");mxUtils.setOpacity(B,20);var D=mxUtils.button("",function(){null!=A&&(m.zoomActual(),m.center())});D.className="geSprite geSprite-actualsize";D.setAttribute("title",mxResources.get("actualSize"));D.style.outline="none";D.style.border="none";D.style.margin="2px";D.setAttribute("disabled","disabled");
-mxUtils.setOpacity(D,20);var x=document.createElement("div");x.style.position="absolute";x.style.textAlign="right";x.style.color="gray";x.style.marginTop="10px";x.style.backgroundColor="transparent";x.style.top="440px";x.style.right="32px";x.style.maxWidth="380px";x.style.cursor="default";var G=mxUtils.button(mxResources.get("download"),function(){if(null!=A){var b=mxUtils.getXml(A.documentElement),c=a.getBaseFilename()+".drawio";a.isLocalFileSave()?a.saveLocalFile(b,c,"text/xml"):(b="undefined"===
-typeof pako?"&xml="+encodeURIComponent(b):"&data="+encodeURIComponent(Graph.compress(b)),(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(c)+"&format=xml"+b)).simulate(document,"_blank"))}});G.className="geBtn";G.setAttribute("disabled","disabled");var H=mxUtils.button(mxResources.get("restore"),function(){null!=A&&null!=y&&a.confirm(mxResources.get("areYouSure"),function(){null!=b?b(y):a.spinner.spin(document.body,mxResources.get("restoring"))&&u.save(!0,function(b){a.spinner.stop();a.replaceFileData(y);
-a.hideDialog()},function(b){a.spinner.stop();a.editor.setStatus("");a.handleError(b,null!=b?mxResources.get("errorSavingFile"):null)})})});H.className="geBtn";H.setAttribute("disabled","disabled");var E=document.createElement("select");E.setAttribute("disabled","disabled");E.style.maxWidth="80px";E.style.position="relative";E.style.top="-2px";E.style.verticalAlign="bottom";E.style.marginRight="6px";E.style.display="none";var I=null;mxEvent.addListener(E,"change",function(a){null!=I&&(I(a),mxEvent.consume(a))});
-var J=mxUtils.button(mxResources.get("edit"),function(){null!=A&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(A.documentElement)),a.openLink(a.getUrl(),null,!0))});J.className="geBtn";J.setAttribute("disabled","disabled");null!=b&&(J.style.display="none");var F=mxUtils.button(mxResources.get("show"),function(){null!=t&&a.openLink(t.getUrl(E.selectedIndex))});F.className="geBtn gePrimaryBtn";F.setAttribute("disabled","disabled");null!=b&&(F.style.display=
-"none",H.className="geBtn gePrimaryBtn");e=document.createElement("div");e.style.position="absolute";e.style.top="482px";e.style.width="640px";e.style.textAlign="right";var M=document.createElement("div");M.className="geToolbarContainer";M.style.backgroundColor="transparent";M.style.padding="2px";M.style.border="none";M.style.left="199px";M.style.top="442px";var K=null;if(null!=c&&0<c.length){k.style.cursor="move";var S=document.createElement("table");S.style.border="1px solid lightGray";S.style.borderCollapse=
-"collapse";S.style.borderSpacing="0px";S.style.width="100%";var L=document.createElement("tbody"),T=(new Date).toDateString();null!=a.currentPage&&null!=a.pages&&(n=mxUtils.indexOf(a.pages,a.currentPage));for(var Y=c.length-1;0<=Y;Y--){var da=function(b){var d=new Date(b.modifiedDate),l=null;if(0<=d.getTime()){var e=function(c){p.stop();var e=mxUtils.parseXml(c),g=a.editor.extractGraphModel(e.documentElement,!0);if(null!=g){var t=function(a){null!=a&&(a=v(mxUtils.parseXml(Graph.decompress(mxUtils.getTextContent(a))).documentElement));
-return a},v=function(a){var b=a.getAttribute("background");if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";k.style.backgroundColor=b;(new mxCodec(a.ownerDocument)).decode(a,m.getModel());m.maxFitScale=1;m.fit(8);m.center();return a};E.style.display="none";E.innerHTML="";A=e;y=c;q=parseSelectFunction=null;f=0;if("mxfile"==g.nodeName){e=g.getElementsByTagName("diagram");q=[];for(c=0;c<e.length;c++)q.push(e[c]);f=Math.min(n,q.length-1);0<q.length&&t(q[f]);if(1<q.length)for(E.removeAttribute("disabled"),
-E.style.display="",c=0;c<q.length;c++)e=document.createElement("option"),mxUtils.write(e,q[c].getAttribute("name")||mxResources.get("pageWithNumber",[c+1])),e.setAttribute("value",c),c==f&&e.setAttribute("selected","selected"),E.appendChild(e);I=function(){try{var b=parseInt(E.value);t(q[b]);f=n=b}catch(Q){E.value=n,a.handleError(Q)}}}else v(g);c=b.lastModifyingUserName;null!=c&&20<c.length&&(c=c.substring(0,20)+"...");x.innerHTML="";mxUtils.write(x,(null!=c?c+" ":"")+d.toLocaleDateString()+" "+d.toLocaleTimeString());
-x.setAttribute("title",l.getAttribute("title"));C.removeAttribute("disabled");z.removeAttribute("disabled");B.removeAttribute("disabled");D.removeAttribute("disabled");null!=u&&u.isRestricted()||(a.editor.graph.isEnabled()&&H.removeAttribute("disabled"),G.removeAttribute("disabled"),F.removeAttribute("disabled"),J.removeAttribute("disabled"));mxUtils.setOpacity(C,60);mxUtils.setOpacity(z,60);mxUtils.setOpacity(B,60);mxUtils.setOpacity(D,60)}else E.style.display="none",E.innerHTML="",x.innerHTML="",
+m.center())});B.className="geSprite geSprite-fit";B.setAttribute("title",mxResources.get("fit"));B.style.outline="none";B.style.border="none";B.style.margin="2px";B.setAttribute("disabled","disabled");mxUtils.setOpacity(B,20);var F=mxUtils.button("",function(){null!=A&&(m.zoomActual(),m.center())});F.className="geSprite geSprite-actualsize";F.setAttribute("title",mxResources.get("actualSize"));F.style.outline="none";F.style.border="none";F.style.margin="2px";F.setAttribute("disabled","disabled");
+mxUtils.setOpacity(F,20);var x=document.createElement("div");x.style.position="absolute";x.style.textAlign="right";x.style.color="gray";x.style.marginTop="10px";x.style.backgroundColor="transparent";x.style.top="440px";x.style.right="32px";x.style.maxWidth="380px";x.style.cursor="default";var I=mxUtils.button(mxResources.get("download"),function(){if(null!=A){var b=mxUtils.getXml(A.documentElement),c=a.getBaseFilename()+".drawio";a.isLocalFileSave()?a.saveLocalFile(b,c,"text/xml"):(b="undefined"===
+typeof pako?"&xml="+encodeURIComponent(b):"&data="+encodeURIComponent(Graph.compress(b)),(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(c)+"&format=xml"+b)).simulate(document,"_blank"))}});I.className="geBtn";I.setAttribute("disabled","disabled");var G=mxUtils.button(mxResources.get("restore"),function(){null!=A&&null!=y&&a.confirm(mxResources.get("areYouSure"),function(){null!=b?b(y):a.spinner.spin(document.body,mxResources.get("restoring"))&&u.save(!0,function(b){a.spinner.stop();a.replaceFileData(y);
+a.hideDialog()},function(b){a.spinner.stop();a.editor.setStatus("");a.handleError(b,null!=b?mxResources.get("errorSavingFile"):null)})})});G.className="geBtn";G.setAttribute("disabled","disabled");var D=document.createElement("select");D.setAttribute("disabled","disabled");D.style.maxWidth="80px";D.style.position="relative";D.style.top="-2px";D.style.verticalAlign="bottom";D.style.marginRight="6px";D.style.display="none";var H=null;mxEvent.addListener(D,"change",function(a){null!=H&&(H(a),mxEvent.consume(a))});
+var J=mxUtils.button(mxResources.get("edit"),function(){null!=A&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(A.documentElement)),a.openLink(a.getUrl(),null,!0))});J.className="geBtn";J.setAttribute("disabled","disabled");null!=b&&(J.style.display="none");var E=mxUtils.button(mxResources.get("show"),function(){null!=t&&a.openLink(t.getUrl(D.selectedIndex))});E.className="geBtn gePrimaryBtn";E.setAttribute("disabled","disabled");null!=b&&(E.style.display=
+"none",G.className="geBtn gePrimaryBtn");e=document.createElement("div");e.style.position="absolute";e.style.top="482px";e.style.width="640px";e.style.textAlign="right";var M=document.createElement("div");M.className="geToolbarContainer";M.style.backgroundColor="transparent";M.style.padding="2px";M.style.border="none";M.style.left="199px";M.style.top="442px";var K=null;if(null!=c&&0<c.length){k.style.cursor="move";var S=document.createElement("table");S.style.border="1px solid lightGray";S.style.borderCollapse=
+"collapse";S.style.borderSpacing="0px";S.style.width="100%";var L=document.createElement("tbody"),T=(new Date).toDateString();null!=a.currentPage&&null!=a.pages&&(n=mxUtils.indexOf(a.pages,a.currentPage));for(var Z=c.length-1;0<=Z;Z--){var ea=function(b){var d=new Date(b.modifiedDate),l=null;if(0<=d.getTime()){var e=function(c){p.stop();var e=mxUtils.parseXml(c),g=a.editor.extractGraphModel(e.documentElement,!0);if(null!=g){var t=function(a){null!=a&&(a=v(mxUtils.parseXml(Graph.decompress(mxUtils.getTextContent(a))).documentElement));
+return a},v=function(a){var b=a.getAttribute("background");if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";k.style.backgroundColor=b;(new mxCodec(a.ownerDocument)).decode(a,m.getModel());m.maxFitScale=1;m.fit(8);m.center();return a};D.style.display="none";D.innerHTML="";A=e;y=c;q=parseSelectFunction=null;f=0;if("mxfile"==g.nodeName){e=g.getElementsByTagName("diagram");q=[];for(c=0;c<e.length;c++)q.push(e[c]);f=Math.min(n,q.length-1);0<q.length&&t(q[f]);if(1<q.length)for(D.removeAttribute("disabled"),
+D.style.display="",c=0;c<q.length;c++)e=document.createElement("option"),mxUtils.write(e,q[c].getAttribute("name")||mxResources.get("pageWithNumber",[c+1])),e.setAttribute("value",c),c==f&&e.setAttribute("selected","selected"),D.appendChild(e);H=function(){try{var b=parseInt(D.value);t(q[b]);f=n=b}catch(Q){D.value=n,a.handleError(Q)}}}else v(g);c=b.lastModifyingUserName;null!=c&&20<c.length&&(c=c.substring(0,20)+"...");x.innerHTML="";mxUtils.write(x,(null!=c?c+" ":"")+d.toLocaleDateString()+" "+d.toLocaleTimeString());
+x.setAttribute("title",l.getAttribute("title"));C.removeAttribute("disabled");z.removeAttribute("disabled");B.removeAttribute("disabled");F.removeAttribute("disabled");null!=u&&u.isRestricted()||(a.editor.graph.isEnabled()&&G.removeAttribute("disabled"),I.removeAttribute("disabled"),E.removeAttribute("disabled"),J.removeAttribute("disabled"));mxUtils.setOpacity(C,60);mxUtils.setOpacity(z,60);mxUtils.setOpacity(B,60);mxUtils.setOpacity(F,60)}else D.style.display="none",D.innerHTML="",x.innerHTML="",
 mxUtils.write(x,mxResources.get("errorLoadingFile"))},l=document.createElement("tr");l.style.borderBottom="1px solid lightGray";l.style.fontSize="12px";l.style.cursor="pointer";var g=document.createElement("td");g.style.padding="6px";g.style.whiteSpace="nowrap";b==c[c.length-1]?mxUtils.write(g,mxResources.get("current")):d.toDateString()===T?mxUtils.write(g,d.toLocaleTimeString()):mxUtils.write(g,d.toLocaleDateString()+" "+d.toLocaleTimeString());l.appendChild(g);l.setAttribute("title",d.toLocaleDateString()+
-" "+d.toLocaleTimeString()+(null!=b.fileSize?" "+a.formatFileSize(parseInt(b.fileSize)):"")+(null!=b.lastModifyingUserName?" "+b.lastModifyingUserName:""));mxEvent.addListener(l,"click",function(a){t!=b&&(p.stop(),null!=v&&(v.style.backgroundColor=""),t=b,v=l,v.style.backgroundColor="#ebf2f9",y=A=null,x.removeAttribute("title"),x.innerHTML=mxUtils.htmlEntities(mxResources.get("loading")+"..."),k.style.backgroundColor="#ffffff",m.getModel().clear(),H.setAttribute("disabled","disabled"),G.setAttribute("disabled",
-"disabled"),C.setAttribute("disabled","disabled"),z.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"),B.setAttribute("disabled","disabled"),J.setAttribute("disabled","disabled"),F.setAttribute("disabled","disabled"),E.setAttribute("disabled","disabled"),mxUtils.setOpacity(C,20),mxUtils.setOpacity(z,20),mxUtils.setOpacity(B,20),mxUtils.setOpacity(D,20),p.spin(k),b.getXml(function(a){if(t==b)try{e(a)}catch(fa){x.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+": "+fa.message)}},
-function(a){p.stop();E.style.display="none";E.innerHTML="";x.innerHTML="";mxUtils.write(x,mxResources.get("errorLoadingFile"))}),mxEvent.consume(a))});mxEvent.addListener(l,"dblclick",function(a){F.click();window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty();mxEvent.consume(a)},!1);L.appendChild(l)}return l}(c[Y]);null!=da&&Y==c.length-1&&(K=da)}S.appendChild(L);g.appendChild(S)}else null==u||null==a.drive&&u.constructor==window.DriveFile||null==
-a.dropbox&&u.constructor==window.DropboxFile?(k.style.display="none",M.style.display="none",mxUtils.write(g,mxResources.get("notAvailable"))):(k.style.display="none",M.style.display="none",mxUtils.write(g,mxResources.get("noRevisions")));this.init=function(){null!=K&&K.click()};g=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});g.className="geBtn";M.appendChild(E);M.appendChild(C);M.appendChild(z);M.appendChild(D);M.appendChild(B);a.editor.cancelFirst?(e.appendChild(g),e.appendChild(G),
-e.appendChild(J),e.appendChild(H),e.appendChild(F)):(e.appendChild(G),e.appendChild(J),e.appendChild(H),e.appendChild(F),e.appendChild(g));d.appendChild(e);d.appendChild(M);d.appendChild(x);this.container=d},DraftDialog=function(a,c,b,d,e,g,k,m){var n=document.createElement("div"),q=document.createElement("div");q.style.marginTop="0px";q.style.whiteSpace="nowrap";q.style.overflow="auto";mxUtils.write(q,c);n.appendChild(q);var f=document.createElement("div");f.style.position="absolute";f.style.border=
+" "+d.toLocaleTimeString()+(null!=b.fileSize?" "+a.formatFileSize(parseInt(b.fileSize)):"")+(null!=b.lastModifyingUserName?" "+b.lastModifyingUserName:""));mxEvent.addListener(l,"click",function(a){t!=b&&(p.stop(),null!=v&&(v.style.backgroundColor=""),t=b,v=l,v.style.backgroundColor="#ebf2f9",y=A=null,x.removeAttribute("title"),x.innerHTML=mxUtils.htmlEntities(mxResources.get("loading")+"..."),k.style.backgroundColor="#ffffff",m.getModel().clear(),G.setAttribute("disabled","disabled"),I.setAttribute("disabled",
+"disabled"),C.setAttribute("disabled","disabled"),z.setAttribute("disabled","disabled"),F.setAttribute("disabled","disabled"),B.setAttribute("disabled","disabled"),J.setAttribute("disabled","disabled"),E.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"),mxUtils.setOpacity(C,20),mxUtils.setOpacity(z,20),mxUtils.setOpacity(B,20),mxUtils.setOpacity(F,20),p.spin(k),b.getXml(function(a){if(t==b)try{e(a)}catch(W){x.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+": "+W.message)}},
+function(a){p.stop();D.style.display="none";D.innerHTML="";x.innerHTML="";mxUtils.write(x,mxResources.get("errorLoadingFile"))}),mxEvent.consume(a))});mxEvent.addListener(l,"dblclick",function(a){E.click();window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty();mxEvent.consume(a)},!1);L.appendChild(l)}return l}(c[Z]);null!=ea&&Z==c.length-1&&(K=ea)}S.appendChild(L);g.appendChild(S)}else null==u||null==a.drive&&u.constructor==window.DriveFile||null==
+a.dropbox&&u.constructor==window.DropboxFile?(k.style.display="none",M.style.display="none",mxUtils.write(g,mxResources.get("notAvailable"))):(k.style.display="none",M.style.display="none",mxUtils.write(g,mxResources.get("noRevisions")));this.init=function(){null!=K&&K.click()};g=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});g.className="geBtn";M.appendChild(D);M.appendChild(C);M.appendChild(z);M.appendChild(F);M.appendChild(B);a.editor.cancelFirst?(e.appendChild(g),e.appendChild(I),
+e.appendChild(J),e.appendChild(G),e.appendChild(E)):(e.appendChild(I),e.appendChild(J),e.appendChild(G),e.appendChild(E),e.appendChild(g));d.appendChild(e);d.appendChild(M);d.appendChild(x);this.container=d},DraftDialog=function(a,c,b,d,e,g,k,m){var n=document.createElement("div"),q=document.createElement("div");q.style.marginTop="0px";q.style.whiteSpace="nowrap";q.style.overflow="auto";mxUtils.write(q,c);n.appendChild(q);var f=document.createElement("div");f.style.position="absolute";f.style.border=
 "1px solid lightGray";f.style.marginTop="10px";f.style.width="640px";f.style.top="46px";f.style.bottom="74px";f.style.overflow="hidden";mxEvent.disableContextMenu(f);n.appendChild(f);var l=new Graph(f);l.setEnabled(!1);l.setPanning(!0);l.panningHandler.ignoreCell=!0;l.panningHandler.useLeftButtonForPanning=!0;l.minFitScale=null;l.maxFitScale=null;l.centerZoom=!0;c=mxUtils.parseXml(b);var p=a.editor.extractGraphModel(c.documentElement,!0),u=0,v=null,t=l.getGlobalVariable;l.getGlobalVariable=function(a){return"page"==
 a&&null!=v&&null!=v[u]?v[u].getAttribute("name"):"pagenumber"==a?u+1:t.apply(this,arguments)};l.getLinkForCell=function(){return null};c=mxUtils.button("",function(){l.zoomIn()});c.className="geSprite geSprite-zoomin";c.setAttribute("title",mxResources.get("zoomIn"));c.style.outline="none";c.style.border="none";c.style.margin="2px";mxUtils.setOpacity(c,60);b=mxUtils.button("",function(){l.zoomOut()});b.className="geSprite geSprite-zoomout";b.setAttribute("title",mxResources.get("zoomOut"));b.style.outline=
 "none";b.style.border="none";b.style.margin="2px";mxUtils.setOpacity(b,60);q=mxUtils.button("",function(){l.maxFitScale=8;l.fit(8);l.center()});q.className="geSprite geSprite-fit";q.setAttribute("title",mxResources.get("fit"));q.style.outline="none";q.style.border="none";q.style.margin="2px";mxUtils.setOpacity(q,60);var A=mxUtils.button("",function(){l.zoomActual();l.center()});A.className="geSprite geSprite-actualsize";A.setAttribute("title",mxResources.get("actualSize"));A.style.outline="none";
@@ -8234,24 +8237,24 @@ mxConstants.STYLE_ROTATION,0):"";q.appendChild(y);m.appendChild(n);m.appendChild
 0<mxUtils.trim(p.value).length&&(e.y=Number(p.value)),0<mxUtils.trim(u.value).length&&(null==e.offset&&(e.offset=new mxPoint),e.offset.x=Number(u.value)),0<mxUtils.trim(v.value).length&&(null==e.offset&&(e.offset=new mxPoint),e.offset.y=Number(v.value))),b.isCellResizable(c[d])&&(0<mxUtils.trim(t.value).length&&(e.width=Number(t.value)),0<mxUtils.trim(A.value).length&&(e.height=Number(A.value))),b.getModel().setGeometry(c[d],e));0<mxUtils.trim(y.value).length&&b.setCellStyles(mxConstants.STYLE_ROTATION,
 Number(y.value),[c[d]])}}finally{b.getModel().endUpdate()}});C.className="geBtn gePrimaryBtn";mxEvent.addListener(e,"keypress",function(a){13==a.keyCode&&C.click()});g=document.createElement("div");g.style.marginTop="20px";g.style.textAlign="right";a.editor.cancelFirst?(g.appendChild(d),g.appendChild(C)):(g.appendChild(C),g.appendChild(d));e.appendChild(g);this.container=e},LibraryDialog=function(a,c,b,d,e,g){function k(a){for(a=document.elementFromPoint(a.clientX,a.clientY);null!=a&&a.parentNode!=
 u;)a=a.parentNode;var b=null;if(null!=a)for(var c=u.firstChild,b=0;null!=c&&c!=a;)c=c.nextSibling,b++;return b}function m(b,c,d,l,p,e,g,x,n){try{if(a.spinner.stop(),null==c||"image/"==c.substring(0,6))if(null==b&&null!=g||null==t[b]){var y=function(){K.innerHTML="";K.style.cursor="pointer";K.style.whiteSpace="nowrap";K.style.textOverflow="ellipsis";mxUtils.write(K,null!=J.title&&0<J.title.length?J.title:mxResources.get("untitled"));K.style.color=null==J.title||0==J.title.length?"#d0d0d0":""};u.style.backgroundImage=
-"";v.style.display="none";var G=p,q=e;if(p>a.maxImageSize||e>a.maxImageSize){var F=Math.min(1,Math.min(a.maxImageSize/Math.max(1,p)),a.maxImageSize/Math.max(1,e));p*=F;e*=F}G>q?(q=Math.round(100*q/G),G=100):(G=Math.round(100*G/q),q=100);var D=document.createElement("div");D.setAttribute("draggable","true");D.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";D.style.position="relative";D.style.cursor="move";mxUtils.setPrefixedStyle(D.style,"transition","transform .1s ease-in-out");if(null!=
-b){var I=document.createElement("img");I.setAttribute("src",z.convert(b));I.style.width=G+"px";I.style.height=q+"px";I.style.margin="10px";I.style.paddingBottom=Math.floor((100-q)/2)+"px";I.style.paddingLeft=Math.floor((100-G)/2)+"px";D.appendChild(I)}else if(null!=g){var H=a.stringToCells(Graph.decompress(g.xml));0<H.length&&(a.sidebar.createThumb(H,100,100,D,null,!0,!1),D.firstChild.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",D.firstChild.style.cursor="")}var E=document.createElement("img");
-E.setAttribute("src",Editor.closeImage);E.setAttribute("border","0");E.setAttribute("title",mxResources.get("delete"));E.setAttribute("align","top");E.style.paddingTop="4px";E.style.position="absolute";E.style.marginLeft="-12px";E.style.zIndex="1";E.style.cursor="pointer";mxEvent.addListener(E,"dragstart",function(a){mxEvent.consume(a)});(function(a,b,c){mxEvent.addListener(E,"click",function(d){t[b]=null;for(var l=0;l<f.length;l++)if(null!=f[l].data&&f[l].data==b||null!=f[l].xml&&null!=c&&f[l].xml==
-c.xml){f.splice(l,1);break}D.parentNode.removeChild(a);0==f.length&&(u.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",v.style.display="");mxEvent.consume(d)});mxEvent.addListener(E,"dblclick",function(a){mxEvent.consume(a)})})(D,b,g);D.appendChild(E);D.style.marginBottom="30px";var K=document.createElement("div");K.style.position="absolute";K.style.boxSizing="border-box";K.style.bottom="-18px";K.style.left="10px";K.style.right="10px";K.style.backgroundColor="#ffffff";K.style.overflow=
-"hidden";K.style.textAlign="center";var J=null;null!=b?(J={data:b,w:p,h:e,title:n},null!=x&&(J.aspect=x),t[b]=I,f.push(J)):null!=g&&(g.aspect="fixed",f.push(g),J=g);mxEvent.addListener(K,"keydown",function(a){13==a.keyCode&&null!=C&&(C(),C=null,mxEvent.consume(a))});y();D.appendChild(K);mxEvent.addListener(K,"mousedown",function(a){"true"!=K.getAttribute("contentEditable")&&mxEvent.consume(a)});H=function(b){if(mxClient.IS_IOS||mxClient.IS_QUIRKS||mxClient.IS_FF||!(null==document.documentMode||9<
+"";v.style.display="none";var I=p,E=e;if(p>a.maxImageSize||e>a.maxImageSize){var q=Math.min(1,Math.min(a.maxImageSize/Math.max(1,p)),a.maxImageSize/Math.max(1,e));p*=q;e*=q}I>E?(E=Math.round(100*E/I),I=100):(I=Math.round(100*I/E),E=100);var F=document.createElement("div");F.setAttribute("draggable","true");F.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";F.style.position="relative";F.style.cursor="move";mxUtils.setPrefixedStyle(F.style,"transition","transform .1s ease-in-out");if(null!=
+b){var H=document.createElement("img");H.setAttribute("src",z.convert(b));H.style.width=I+"px";H.style.height=E+"px";H.style.margin="10px";H.style.paddingBottom=Math.floor((100-E)/2)+"px";H.style.paddingLeft=Math.floor((100-I)/2)+"px";F.appendChild(H)}else if(null!=g){var G=a.stringToCells(Graph.decompress(g.xml));0<G.length&&(a.sidebar.createThumb(G,100,100,F,null,!0,!1),F.firstChild.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",F.firstChild.style.cursor="")}var D=document.createElement("img");
+D.setAttribute("src",Editor.closeImage);D.setAttribute("border","0");D.setAttribute("title",mxResources.get("delete"));D.setAttribute("align","top");D.style.paddingTop="4px";D.style.position="absolute";D.style.marginLeft="-12px";D.style.zIndex="1";D.style.cursor="pointer";mxEvent.addListener(D,"dragstart",function(a){mxEvent.consume(a)});(function(a,b,c){mxEvent.addListener(D,"click",function(d){t[b]=null;for(var l=0;l<f.length;l++)if(null!=f[l].data&&f[l].data==b||null!=f[l].xml&&null!=c&&f[l].xml==
+c.xml){f.splice(l,1);break}F.parentNode.removeChild(a);0==f.length&&(u.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",v.style.display="");mxEvent.consume(d)});mxEvent.addListener(D,"dblclick",function(a){mxEvent.consume(a)})})(F,b,g);F.appendChild(D);F.style.marginBottom="30px";var K=document.createElement("div");K.style.position="absolute";K.style.boxSizing="border-box";K.style.bottom="-18px";K.style.left="10px";K.style.right="10px";K.style.backgroundColor="#ffffff";K.style.overflow=
+"hidden";K.style.textAlign="center";var J=null;null!=b?(J={data:b,w:p,h:e,title:n},null!=x&&(J.aspect=x),t[b]=H,f.push(J)):null!=g&&(g.aspect="fixed",f.push(g),J=g);mxEvent.addListener(K,"keydown",function(a){13==a.keyCode&&null!=C&&(C(),C=null,mxEvent.consume(a))});y();F.appendChild(K);mxEvent.addListener(K,"mousedown",function(a){"true"!=K.getAttribute("contentEditable")&&mxEvent.consume(a)});G=function(b){if(mxClient.IS_IOS||mxClient.IS_QUIRKS||mxClient.IS_FF||!(null==document.documentMode||9<
 document.documentMode)){var c=new FilenameDialog(a,J.title||"",mxResources.get("ok"),function(a){null!=a&&(J.title=a,y())},mxResources.get("enterValue"));a.showDialog(c.container,300,80,!0,!0);c.init();mxEvent.consume(b)}else if("true"!=K.getAttribute("contentEditable")){null!=C&&(C(),C=null);if(null==J.title||0==J.title.length)K.innerHTML="";K.style.textOverflow="";K.style.whiteSpace="";K.style.cursor="text";K.style.color="";K.setAttribute("contentEditable","true");K.focus();document.execCommand("selectAll",
-!1,null);C=function(){K.removeAttribute("contentEditable");K.style.cursor="pointer";J.title=K.innerHTML;y()};mxEvent.consume(b)}};mxEvent.addListener(K,"click",H);mxEvent.addListener(D,"dblclick",H);u.appendChild(D);mxEvent.addListener(D,"dragstart",function(a){null==b&&null!=g&&(E.style.visibility="hidden",K.style.visibility="hidden");mxClient.IS_FF&&null!=g.xml&&a.dataTransfer.setData("Text",g.xml);A=k(a);mxClient.IS_GC&&(D.style.opacity="0.9");window.setTimeout(function(){mxUtils.setPrefixedStyle(D.style,
-"transform","scale(0.5,0.5)");mxUtils.setOpacity(D,30);E.style.visibility="";K.style.visibility=""},0)});mxEvent.addListener(D,"dragend",function(a){"hidden"==E.style.visibility&&(E.style.visibility="",K.style.visibility="");A=null;mxUtils.setOpacity(D,100);mxUtils.setPrefixedStyle(D.style,"transform",null)})}else B||(B=!0,a.handleError({message:mxResources.get("fileExists")}));else{p=!1;try{if(G=mxUtils.parseXml(b),"mxlibrary"==G.documentElement.nodeName){q=JSON.parse(mxUtils.getTextContent(G.documentElement));
-if(null!=q&&0<q.length)for(var M=0;M<q.length;M++)null!=q[M].xml?m(null,null,0,0,0,0,q[M]):m(q[M].data,null,0,0,q[M].w,q[M].h,null,"fixed",q[M].title);p=!0}else if("mxfile"==G.documentElement.nodeName){for(var S=G.documentElement.getElementsByTagName("diagram"),M=0;M<S.length;M++){var q=mxUtils.getTextContent(S[M]),H=a.stringToCells(Graph.decompress(q)),R=a.editor.graph.getBoundingBoxFromGeometry(H);m(null,null,0,0,0,0,{xml:q,w:R.width,h:R.height})}p=!0}}catch(N){}p||(a.spinner.stop(),a.handleError({message:mxResources.get("errorLoadingFile")}))}}catch(N){}return null}
-function n(a){a.dataTransfer.dropEffect=null!=A?"move":"copy";a.stopPropagation();a.preventDefault()}function q(b){b.stopPropagation();b.preventDefault();B=!1;y=k(b);if(null!=A)null!=y&&y<u.children.length?(f.splice(y>A?y-1:y,0,f.splice(A,1)[0]),u.insertBefore(u.children[A],u.children[y])):(f.push(f.splice(A,1)[0]),u.appendChild(u.children[A]));else if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxImageSize,D(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var c=
+!1,null);C=function(){K.removeAttribute("contentEditable");K.style.cursor="pointer";J.title=K.innerHTML;y()};mxEvent.consume(b)}};mxEvent.addListener(K,"click",G);mxEvent.addListener(F,"dblclick",G);u.appendChild(F);mxEvent.addListener(F,"dragstart",function(a){null==b&&null!=g&&(D.style.visibility="hidden",K.style.visibility="hidden");mxClient.IS_FF&&null!=g.xml&&a.dataTransfer.setData("Text",g.xml);A=k(a);mxClient.IS_GC&&(F.style.opacity="0.9");window.setTimeout(function(){mxUtils.setPrefixedStyle(F.style,
+"transform","scale(0.5,0.5)");mxUtils.setOpacity(F,30);D.style.visibility="";K.style.visibility=""},0)});mxEvent.addListener(F,"dragend",function(a){"hidden"==D.style.visibility&&(D.style.visibility="",K.style.visibility="");A=null;mxUtils.setOpacity(F,100);mxUtils.setPrefixedStyle(F.style,"transform",null)})}else B||(B=!0,a.handleError({message:mxResources.get("fileExists")}));else{p=!1;try{if(I=mxUtils.parseXml(b),"mxlibrary"==I.documentElement.nodeName){E=JSON.parse(mxUtils.getTextContent(I.documentElement));
+if(null!=E&&0<E.length)for(var M=0;M<E.length;M++)null!=E[M].xml?m(null,null,0,0,0,0,E[M]):m(E[M].data,null,0,0,E[M].w,E[M].h,null,"fixed",E[M].title);p=!0}else if("mxfile"==I.documentElement.nodeName){for(var S=I.documentElement.getElementsByTagName("diagram"),M=0;M<S.length;M++){var E=mxUtils.getTextContent(S[M]),G=a.stringToCells(Graph.decompress(E)),R=a.editor.graph.getBoundingBoxFromGeometry(G);m(null,null,0,0,0,0,{xml:E,w:R.width,h:R.height})}p=!0}}catch(P){}p||(a.spinner.stop(),a.handleError({message:mxResources.get("errorLoadingFile")}))}}catch(P){}return null}
+function n(a){a.dataTransfer.dropEffect=null!=A?"move":"copy";a.stopPropagation();a.preventDefault()}function q(b){b.stopPropagation();b.preventDefault();B=!1;y=k(b);if(null!=A)null!=y&&y<u.children.length?(f.splice(y>A?y-1:y,0,f.splice(A,1)[0]),u.insertBefore(u.children[A],u.children[y])):(f.push(f.splice(A,1)[0]),u.appendChild(u.children[A]));else if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxImageSize,F(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var c=
 decodeURIComponent(b.dataTransfer.getData("text/uri-list"));(/(\.jpg)($|\?)/i.test(c)||/(\.png)($|\?)/i.test(c)||/(\.gif)($|\?)/i.test(c)||/(\.svg)($|\?)/i.test(c))&&a.loadImage(c,function(a){m(c,null,0,0,a.width,a.height);u.scrollTop=u.scrollHeight})}b.stopPropagation();b.preventDefault()}var f=[];b=document.createElement("div");b.style.height="100%";var l=document.createElement("div");l.style.whiteSpace="nowrap";l.style.height="40px";b.appendChild(l);mxUtils.write(l,mxResources.get("filename")+
 ":");null==c&&(c=a.defaultLibraryName+".xml");var p=document.createElement("input");p.setAttribute("value",c);p.style.marginRight="20px";p.style.marginLeft="10px";p.style.width="500px";null==e||e.isRenamable()||p.setAttribute("disabled","true");this.init=function(){if(null==e||e.isRenamable())p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?p.select():document.execCommand("selectAll",!1,null)};l.appendChild(p);var u=document.createElement("div");u.style.borderWidth=
 "1px 0px 1px 0px";u.style.borderColor="#d3d3d3";u.style.borderStyle="solid";u.style.marginTop="6px";u.style.overflow="auto";u.style.height="340px";u.style.backgroundPosition="center center";u.style.backgroundRepeat="no-repeat";0==f.length&&Graph.fileSupport&&(u.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')");var v=document.createElement("div");v.style.position="absolute";v.style.width="640px";v.style.top="260px";v.style.textAlign="center";v.style.fontSize="22px";v.style.color="#a0c3ff";
 mxUtils.write(v,mxResources.get("dragImagesHere"));b.appendChild(v);var t={},A=null,y=null,C=null;c=function(a){"true"!=mxEvent.getSource(a).getAttribute("contentEditable")&&null!=C&&(C(),C=null,mxEvent.consume(a))};mxEvent.addListener(u,"mousedown",c);mxEvent.addListener(u,"pointerdown",c);mxEvent.addListener(u,"touchstart",c);var z=new mxUrlConverter,B=!1;if(null!=d)for(c=0;c<d.length;c++)l=d[c],m(l.data,null,0,0,l.w,l.h,l,l.aspect,l.title);mxEvent.addListener(u,"dragleave",function(a){v.style.cursor=
-"";for(var b=mxEvent.getSource(a);null!=b;){if(b==u||b==v){a.stopPropagation();a.preventDefault();break}b=b.parentNode}});var D=function(b){return function(c,f,d,l,p,e,g,x,t){null!=t&&(/(\.vsdx)($|\?)/i.test(t.name)||/(\.vssx)($|\?)/i.test(t.name))?a.importVisio(t,mxUtils.bind(this,function(a){m(a,f,d,l,p,e,g,"fixed",mxEvent.isAltDown(b)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," "))})):null!=t&&!a.isOffline()&&(new XMLHttpRequest).upload&&a.isRemoteFileFormat(c,t.name)?a.parseFile(t,mxUtils.bind(this,
+"";for(var b=mxEvent.getSource(a);null!=b;){if(b==u||b==v){a.stopPropagation();a.preventDefault();break}b=b.parentNode}});var F=function(b){return function(c,f,d,l,p,e,g,x,k){null!=k&&(/(\.vsdx)($|\?)/i.test(k.name)||/(\.vssx)($|\?)/i.test(k.name))?a.importVisio(k,mxUtils.bind(this,function(a){m(a,f,d,l,p,e,g,"fixed",mxEvent.isAltDown(b)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," "))})):null!=k&&!a.isOffline()&&(new XMLHttpRequest).upload&&a.isRemoteFileFormat(c,k.name)?a.parseFile(k,mxUtils.bind(this,
 function(c){4==c.readyState&&(a.spinner.stop(),200<=c.status&&299>=c.status&&(m(c.responseText,f,d,l,p,e,g,"fixed",mxEvent.isAltDown(b)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," ")),u.scrollTop=u.scrollHeight))})):(m(c,f,d,l,p,e,g,"fixed",mxEvent.isAltDown(b)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," ")),u.scrollTop=u.scrollHeight)}};mxEvent.addListener(u,"dragover",n);mxEvent.addListener(u,"drop",q);mxEvent.addListener(v,"dragover",n);mxEvent.addListener(v,"drop",q);b.appendChild(u);
 d=document.createElement("div");d.style.textAlign="right";d.style.marginTop="20px";c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(!0)});c.setAttribute("id","btnCancel");c.className="geBtn";a.editor.cancelFirst&&d.appendChild(c);l=mxUtils.button(mxResources.get("export"),function(){var b=a.createLibraryDataFromImages(f),c=p.value;/(\.xml)$/i.test(c)||(c+=".xml");a.isLocalFileSave()?a.saveLocalFile(b,c,"text/xml",null,null,!0):(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(c)+
-"&format=xml&xml="+encodeURIComponent(b))).simulate(document,"_blank")});l.setAttribute("id","btnDownload");l.className="geBtn";d.appendChild(l);if(Graph.fileSupport){if(null==a.libDlgFileInputElt){var x=document.createElement("input");x.setAttribute("multiple","multiple");x.setAttribute("type","file");mxEvent.addListener(x,"change",function(b){B=!1;a.importFiles(x.files,0,0,a.maxImageSize,function(a,c,f,d,l,p,e,g,t){null!=x.files&&(D(b)(a,c,f,d,l,p,e,g,t),x.type="",x.type="file",x.value="")});u.scrollTop=
+"&format=xml&xml="+encodeURIComponent(b))).simulate(document,"_blank")});l.setAttribute("id","btnDownload");l.className="geBtn";d.appendChild(l);if(Graph.fileSupport){if(null==a.libDlgFileInputElt){var x=document.createElement("input");x.setAttribute("multiple","multiple");x.setAttribute("type","file");mxEvent.addListener(x,"change",function(b){B=!1;a.importFiles(x.files,0,0,a.maxImageSize,function(a,c,f,d,l,p,e,g,k){null!=x.files&&(F(b)(a,c,f,d,l,p,e,g,k),x.type="",x.type="file",x.value="")});u.scrollTop=
 u.scrollHeight});x.style.display="none";document.body.appendChild(x);a.libDlgFileInputElt=x}l=mxUtils.button(mxResources.get("import"),function(){null!=C&&(C(),C=null);a.libDlgFileInputElt.click()});l.setAttribute("id","btnAddImage");l.className="geBtn";d.appendChild(l)}l=mxUtils.button(mxResources.get("addImageUrl"),function(){null!=C&&(C(),C=null);a.showImageDialog(mxResources.get("addImageUrl"),"",function(a,b,c){B=!1;if(null!=a){if("data:image/"==a.substring(0,11)){var f=a.indexOf(",");0<f&&(a=
 a.substring(0,f)+";base64,"+a.substring(f+1))}m(a,null,0,0,b,c);u.scrollTop=u.scrollHeight}})});l.setAttribute("id","btnAddImageUrl");l.className="geBtn";d.appendChild(l);this.saveBtnClickHandler=function(b,c,f,d){a.saveLibrary(b,c,f,d)};l=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(){null!=C&&(C(),C=null);this.saveBtnClickHandler(p.value,f,e,g)}));l.setAttribute("id","btnSave");l.className="geBtn gePrimaryBtn";d.appendChild(l);a.editor.cancelFirst||d.appendChild(c);b.appendChild(d);
 this.container=b},EditShapeDialog=function(a,c,b,d,e){d=null!=d?d:300;e=null!=e?e:120;var g,k,m=document.createElement("table"),n=document.createElement("tbody");m.style.cellPadding="4px";g=document.createElement("tr");k=document.createElement("td");k.setAttribute("colspan","2");k.style.fontSize="10pt";mxUtils.write(k,b);g.appendChild(k);n.appendChild(g);g=document.createElement("tr");k=document.createElement("td");var q=document.createElement("textarea");q.style.outline="none";q.style.resize="none";
@@ -8266,27 +8269,27 @@ mxResources.get("showAll",null,"+ Show all")+'</div></div></div><div class="geTe
 mxResources.get("allDiagrams",null,"All diagrams")+'</span></div><div class="geTempDlgSpacer"> </div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall geTempDlgRadioBtnActive" data-id="tilesBtn"><img src="/images/tiles-sel.svg" class="geTempDlgTilesBtnImg"></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall" data-id="listBtn"><img src="/images/list.svg" class="geTempDlgListBtnImg"></div></div></div><div class="geTempDlgDiagramsTiles"></div></div></div><br style="clear:both;"/><div class="geTempDlgFooter"><span class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramHint">&#x1F6C8; '+
 mxResources.get("linkToDiagramHint",null,"Add a link to this diagram. The diagram can only be edited from the page that owns it.")+'</span><button class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramBtn">'+mxResources.get("linkToDiagram",null,"Link to Diagram")+'</button><div class="geTempDlgCreateBtn">'+mxResources.get("create",null,"Create")+'</div><div class="geTempDlgCancelBtn">'+mxResources.get("cancel",null,"Cancel")+"</div></div>",c=document.createElement("div");c.innerHTML=a;c.className="geTemplateDlg";
 var a=window.innerWidth,b=window.innerHeight,d=987,e=712;.9*a<d&&(d=Math.max(.9*a,600),c.style.width=d+"px");.9*b<e&&(e=Math.max(.9*b,300),c.style.height=e+"px");this.width=d;this.height=e;this.container=c};
-TemplatesDialog.prototype.init=function(a,c,b,d,e,g,k,m,n,q){function f(){null!=H&&(H.style.fontWeight="normal",H.style.textDecoration="none",H=null)}function l(a,b,c,f,d,l,p){if(-1<a.className.indexOf("geTempDlgRadioBtnActive"))return!1;a.className+=" geTempDlgRadioBtnActive";D.querySelector(".geTempDlgRadioBtn[data-id="+f+"]").className="geTempDlgRadioBtn "+(p?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");D.querySelector("."+b).src="/images/"+c+"-sel.svg";D.querySelector("."+d).src="/images/"+
-l+".svg";return!0}function p(a){function b(a){aa.removeChild(f);D.removeChild(c);aa.scrollTop=l}a=a.prevImgUrl||a.imgUrl||TEMPLATE_PATH+"/"+a.url.substring(0,a.url.length-4)+".png";var c=document.createElement("div");c.className="geTempDlgDialogMask";D.appendChild(c);var f=document.createElement("div");f.className="geTempDlgDiagramPreviewBox";var d=document.createElement("img");d.src=a;f.appendChild(d);a=document.createElement("img");a.src="/images/close.png";a.className="geTempDlgPreviewCloseBtn";
-a.setAttribute("title",mxResources.get("close"));f.appendChild(a);var l=aa.scrollTop;mxEvent.addListener(a,"click",b);mxEvent.addListener(c,"click",b);aa.appendChild(f);aa.scrollTop=0;f.style.lineHeight=f.clientHeight+"px"}function u(a,b,c){if(null!=E){for(var f=E.className.split(" "),d=0;d<f.length;d++)if(-1<f[d].indexOf("Active")){f.splice(d,1);break}E.className=f.join(" ")}null!=a?(E=a,E.className+=" "+b,I=c,ca.className="geTempDlgCreateBtn"):(I=E=null,ca.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled")}
-function v(b){if(null!=I){var f=I;I=null;ca.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled geTempDlgCreateBtnBusy";f.isExternal?(1==b?q(f.url,f,"nameInput.value"):n(f.url,f,"nameInput.value"),a.hideDialog(!0)):mxUtils.get(TEMPLATE_PATH+"/"+f.url,mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()&&(c(b.getText(),"nameInput.value"),a.hideDialog(!0))}))}}function t(a){a=a?"":"none";for(var b=D.querySelectorAll(".geTempDlgLinkToDiagram"),c=0;c<b.length;c++)b[c].style.display=
-a}function A(a,b,c){function f(){ca.innerHTML=b?mxUtils.htmlEntities(mxResources.get("create")):mxUtils.htmlEntities(mxResources.get("copy"));t(!b)}T.innerHTML="";u();K=a;var d=null;if(c){d=document.createElement("table");d.className="geTempDlgDiagramsListGrid";var l=document.createElement("tr"),e=document.createElement("th");e.style.width="50%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram",null,"Diagram"));l.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML=
+TemplatesDialog.prototype.init=function(a,c,b,d,e,g,k,m,n,q){function f(){null!=G&&(G.style.fontWeight="normal",G.style.textDecoration="none",G=null)}function l(a,b,c,f,d,l,p){if(-1<a.className.indexOf("geTempDlgRadioBtnActive"))return!1;a.className+=" geTempDlgRadioBtnActive";F.querySelector(".geTempDlgRadioBtn[data-id="+f+"]").className="geTempDlgRadioBtn "+(p?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");F.querySelector("."+b).src="/images/"+c+"-sel.svg";F.querySelector("."+d).src="/images/"+
+l+".svg";return!0}function p(a){function b(a){ba.removeChild(f);F.removeChild(c);ba.scrollTop=l}a=a.prevImgUrl||a.imgUrl||TEMPLATE_PATH+"/"+a.url.substring(0,a.url.length-4)+".png";var c=document.createElement("div");c.className="geTempDlgDialogMask";F.appendChild(c);var f=document.createElement("div");f.className="geTempDlgDiagramPreviewBox";var d=document.createElement("img");d.src=a;f.appendChild(d);a=document.createElement("img");a.src="/images/close.png";a.className="geTempDlgPreviewCloseBtn";
+a.setAttribute("title",mxResources.get("close"));f.appendChild(a);var l=ba.scrollTop;mxEvent.addListener(a,"click",b);mxEvent.addListener(c,"click",b);ba.appendChild(f);ba.scrollTop=0;f.style.lineHeight=f.clientHeight+"px"}function u(a,b,c){if(null!=D){for(var f=D.className.split(" "),d=0;d<f.length;d++)if(-1<f[d].indexOf("Active")){f.splice(d,1);break}D.className=f.join(" ")}null!=a?(D=a,D.className+=" "+b,H=c,aa.className="geTempDlgCreateBtn"):(H=D=null,aa.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled")}
+function v(b){if(null!=H){var f=H;H=null;aa.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled geTempDlgCreateBtnBusy";f.isExternal?(1==b?q(f.url,f,"nameInput.value"):n(f.url,f,"nameInput.value"),a.hideDialog(!0)):mxUtils.get(TEMPLATE_PATH+"/"+f.url,mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()&&(c(b.getText(),"nameInput.value"),a.hideDialog(!0))}))}}function t(a){a=a?"":"none";for(var b=F.querySelectorAll(".geTempDlgLinkToDiagram"),c=0;c<b.length;c++)b[c].style.display=
+a}function A(a,b,c){function f(){aa.innerHTML=b?mxUtils.htmlEntities(mxResources.get("create")):mxUtils.htmlEntities(mxResources.get("copy"));t(!b)}T.innerHTML="";u();K=a;var d=null;if(c){d=document.createElement("table");d.className="geTempDlgDiagramsListGrid";var l=document.createElement("tr"),e=document.createElement("th");e.style.width="50%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram",null,"Diagram"));l.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML=
 mxUtils.htmlEntities(mxResources.get("changedBy",null,"Changed By"));l.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn",null,"Last modified on"));l.appendChild(e);d.appendChild(l);T.appendChild(d)}for(l=0;l<a.length;l++){a[l].isExternal=!b;var g=a[l].url,e=mxUtils.htmlEntities(a[l].title),x=a[l].tooltip||a[l].title,k=a[l].imgUrl,z=mxUtils.htmlEntities(a[l].changedBy||""),m=mxUtils.htmlEntities(a[l].lastModifiedOn||
 "");k||(k=TEMPLATE_PATH+"/"+g.substring(0,g.length-4)+".png");g=c?50:15;null!=e&&e.length>g&&(e=e.substring(0,g)+"&hellip;");if(c){var B=document.createElement("tr"),k=document.createElement("td"),n=document.createElement("img");n.src="/images/icon-search.svg";n.className="geTempDlgDiagramListPreviewBtn";n.setAttribute("title",mxResources.get("preview"));k.appendChild(n);x=document.createElement("span");x.className="geTempDlgDiagramTitle";x.innerHTML=e;k.appendChild(x);B.appendChild(k);k=document.createElement("td");
-k.innerHTML=z;B.appendChild(k);k=document.createElement("td");k.innerHTML=m;B.appendChild(k);d.appendChild(B);null==E&&(f(),u(B,"geTempDlgDiagramsListGridActive",a[l]));(function(a,b){mxEvent.addListener(B,"click",function(){E!=b&&(f(),u(b,"geTempDlgDiagramsListGridActive",a))});mxEvent.addListener(B,"dblclick",v);mxEvent.addListener(n,"click",function(){p(a)})})(a[l],B)}else{var y=document.createElement("div");y.className="geTempDlgDiagramTile";y.setAttribute("title",x);null==E&&(f(),u(y,"geTempDlgDiagramTileActive",
-a[l]));z=document.createElement("div");z.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var q=document.createElement("img");q.style.display="none";(function(a,b){q.onload=function(){b.className="geTempDlgDiagramTileImg";a.style.display=""};q.onerror=function(){b.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(q,z);q.src=k;z.appendChild(q);y.appendChild(z);z=document.createElement("div");z.className="geTempDlgDiagramTileLbl";z.innerHTML=null!=e?e:"";y.appendChild(z);
-n=document.createElement("img");n.src="/images/icon-search.svg";n.className="geTempDlgDiagramPreviewBtn";n.setAttribute("title",mxResources.get("preview"));y.appendChild(n);(function(a,b){mxEvent.addListener(y,"click",function(){E!=b&&(f(),u(b,"geTempDlgDiagramTileActive",a))});mxEvent.addListener(y,"dblclick",v);mxEvent.addListener(n,"click",function(){p(a)})})(a[l],y);T.appendChild(y)}}}function y(a,b){Z.innerHTML="";u();for(var c=!b&&5<a.length?5:a.length,f=0;f<c;f++){var d=a[f];d.isCategory=!0;
-var l=document.createElement("div"),p=mxResources.get(d.title);null==p&&(p=d.title.substring(0,1).toUpperCase()+d.title.substring(1));l.className="geTempDlgNewDiagramCatItem";l.setAttribute("title",p);p=mxUtils.htmlEntities(p);15<p.length&&(p=p.substring(0,15)+"&hellip;");null==E&&(ca.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),t(),u(l,"geTempDlgNewDiagramCatItemActive",d));var e=document.createElement("div");e.className="geTempDlgNewDiagramCatItemImg";var g=document.createElement("img");
-g.src=NEW_DIAGRAM_CATS_PATH+"/"+d.img;e.appendChild(g);l.appendChild(e);e=document.createElement("div");e.className="geTempDlgNewDiagramCatItemLbl";e.innerHTML=p;l.appendChild(e);Z.appendChild(l);(function(a,b){mxEvent.addListener(l,"click",function(){E!=b&&(ca.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),t(),u(b,"geTempDlgNewDiagramCatItemActive",a))});mxEvent.addListener(l,"dblclick",v)})(d,l)}L.style.display=5>a.length?"none":""}function C(a){var b=D.querySelector(".geTemplatesList"),
-c;for(c in a){var f=document.createElement("div"),d=mxResources.get(c),l=a[c];null==d&&(d=c.substring(0,1).toUpperCase()+c.substring(1));f.className="geTemplateCatLink";f.setAttribute("title",d+" ("+l.length+")");d=mxUtils.htmlEntities(d);15<d.length&&(d=d.substring(0,15)+"&hellip;");f.innerHTML=d+" ("+l.length+")";b.appendChild(f);(function(b,c,d){mxEvent.addListener(f,"click",function(){H!=d&&(null!=H?(H.style.fontWeight="normal",H.style.textDecoration="none"):(U.style.display="none",ha.style.minHeight=
-"100%"),H=d,H.style.fontWeight="bold",H.style.textDecoration="underline",aa.scrollTop=0,x&&(G=!0),Y.innerHTML=c,da.style.display="none",A(a[b],!0))})})(c,d,f)}}function z(a){k&&(aa.scrollTop=0,T.innerHTML="",P.spin(T),G=!1,x=!0,Y.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag",null,"Recent Diagrams")),S=null,k(Q,a?null:g))}function B(a){f();aa.scrollTop=0;T.innerHTML="";P.spin(T);G=!1;x=!0;X=null;Y.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults",null,"Search Results"))+
-' "'+mxUtils.htmlEntities(a)+'"';m(a,Q,F?null:g);S=a}d=null!=d?d:TEMPLATE_PATH+"/index.xml";e=null!=e?e:NEW_DIAGRAM_CATS_PATH+"/index.xml";var D=this.container,x=!1,G=!1,H=null,E=null,I=null,J=!1,F=!0,M=!1,K=[],S,L=D.querySelector(".geTempDlgShowAllBtn"),T=D.querySelector(".geTempDlgDiagramsTiles"),Y=D.querySelector(".geTempDlgDiagramsListTitle"),da=D.querySelector(".geTempDlgDiagramsListBtns"),aa=D.querySelector(".geTempDlgContent"),ha=D.querySelector(".geTempDlgDiagramsList"),U=D.querySelector(".geTempDlgNewDiagramCat"),
-Z=D.querySelector(".geTempDlgNewDiagramCatList"),ca=D.querySelector(".geTempDlgCreateBtn"),P=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"50px",zIndex:2E9});mxEvent.addListener(D.querySelector(".geTempDlgNewDiagramlbl"),"click",function(){f();U.style.display="";ha.style.minHeight="calc(100% - 280px)";z(F)});mxEvent.addListener(D.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){l(this,"geTempDlgAllDiagramsBtnImg",
-"all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(F=!0,null==S?z(F):B(S))});mxEvent.addListener(D.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){l(this,"geTempDlgMyDiagramsBtnImg","my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(F=!1,null==S?z(F):B(S))});mxEvent.addListener(D.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){l(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg",
-"tiles",!1)&&(M=!0,A(K,!1,M))});mxEvent.addListener(D.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){l(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(M=!1,A(K,!1,M))});mxEvent.addListener(L,"click",function(){J?(U.style.height="280px",Z.style.height="190px",L.innerHTML=mxUtils.htmlEntities(mxResources.get("showAll",null,"+ Show all")),y(N)):(U.style.height="440px",Z.style.height="355px",L.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess",
-null,"- Show less")),y(N,!0));J=!J});var W=!1,fa=!1,R={},N=[],ea=1;mxUtils.get(d,function(a){if(!W){W=!0;for(a=a.getXml().documentElement.firstChild;null!=a;){if("undefined"!==typeof a.getAttribute){var b=a.getAttribute("url");if(null!=b){var c=b.indexOf("/"),b=b.substring(0,c),c=R[b];null==c&&(ea++,c=[],R[b]=c);c.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),imgUrl:a.getAttribute("imgUrl")})}}a=a.nextSibling}C(R)}});mxUtils.get(e,
-function(a){if(!fa){fa=!0;for(a=a.getXml().documentElement.firstChild;null!=a;)"undefined"!==typeof a.getAttribute&&null!=a.getAttribute("title")&&N.push({img:a.getAttribute("img"),libs:a.getAttribute("libs"),title:a.getAttribute("title")}),a=a.nextSibling;y(N)}});var Q=function(a,b){da.style.display="";P.stop();x=!1;G?G=!1:b?T.innerHTML=b:0==a.length?T.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):A(a,!1,M)};z(F);var X=null;m&&mxEvent.addListener(D.querySelector(".geTempDlgSearchBox"),
-"keyup",function(a){var b=this;null!=X&&clearTimeout(X);13==a.keyCode?B(b.value):X=setTimeout(function(){B(b.value)},500)});mxEvent.addListener(ca,"click",v);mxEvent.addListener(D.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(a){v(!0)});mxEvent.addListener(D.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=b&&b();a.hideDialog(!0)})};
+k.innerHTML=z;B.appendChild(k);k=document.createElement("td");k.innerHTML=m;B.appendChild(k);d.appendChild(B);null==D&&(f(),u(B,"geTempDlgDiagramsListGridActive",a[l]));(function(a,b){mxEvent.addListener(B,"click",function(){D!=b&&(f(),u(b,"geTempDlgDiagramsListGridActive",a))});mxEvent.addListener(B,"dblclick",v);mxEvent.addListener(n,"click",function(){p(a)})})(a[l],B)}else{var y=document.createElement("div");y.className="geTempDlgDiagramTile";y.setAttribute("title",x);null==D&&(f(),u(y,"geTempDlgDiagramTileActive",
+a[l]));z=document.createElement("div");z.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var A=document.createElement("img");A.style.display="none";(function(a,b){A.onload=function(){b.className="geTempDlgDiagramTileImg";a.style.display=""};A.onerror=function(){b.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(A,z);A.src=k;z.appendChild(A);y.appendChild(z);z=document.createElement("div");z.className="geTempDlgDiagramTileLbl";z.innerHTML=null!=e?e:"";y.appendChild(z);
+n=document.createElement("img");n.src="/images/icon-search.svg";n.className="geTempDlgDiagramPreviewBtn";n.setAttribute("title",mxResources.get("preview"));y.appendChild(n);(function(a,b){mxEvent.addListener(y,"click",function(){D!=b&&(f(),u(b,"geTempDlgDiagramTileActive",a))});mxEvent.addListener(y,"dblclick",v);mxEvent.addListener(n,"click",function(){p(a)})})(a[l],y);T.appendChild(y)}}}function y(a,b){Y.innerHTML="";u();for(var c=!b&&5<a.length?5:a.length,f=0;f<c;f++){var d=a[f];d.isCategory=!0;
+var l=document.createElement("div"),p=mxResources.get(d.title);null==p&&(p=d.title.substring(0,1).toUpperCase()+d.title.substring(1));l.className="geTempDlgNewDiagramCatItem";l.setAttribute("title",p);p=mxUtils.htmlEntities(p);15<p.length&&(p=p.substring(0,15)+"&hellip;");null==D&&(aa.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),t(),u(l,"geTempDlgNewDiagramCatItemActive",d));var e=document.createElement("div");e.className="geTempDlgNewDiagramCatItemImg";var g=document.createElement("img");
+g.src=NEW_DIAGRAM_CATS_PATH+"/"+d.img;e.appendChild(g);l.appendChild(e);e=document.createElement("div");e.className="geTempDlgNewDiagramCatItemLbl";e.innerHTML=p;l.appendChild(e);Y.appendChild(l);(function(a,b){mxEvent.addListener(l,"click",function(){D!=b&&(aa.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),t(),u(b,"geTempDlgNewDiagramCatItemActive",a))});mxEvent.addListener(l,"dblclick",v)})(d,l)}L.style.display=5>a.length?"none":""}function C(a){var b=F.querySelector(".geTemplatesList"),
+c;for(c in a){var f=document.createElement("div"),d=mxResources.get(c),l=a[c];null==d&&(d=c.substring(0,1).toUpperCase()+c.substring(1));f.className="geTemplateCatLink";f.setAttribute("title",d+" ("+l.length+")");d=mxUtils.htmlEntities(d);15<d.length&&(d=d.substring(0,15)+"&hellip;");f.innerHTML=d+" ("+l.length+")";b.appendChild(f);(function(b,c,d){mxEvent.addListener(f,"click",function(){G!=d&&(null!=G?(G.style.fontWeight="normal",G.style.textDecoration="none"):(U.style.display="none",ha.style.minHeight=
+"100%"),G=d,G.style.fontWeight="bold",G.style.textDecoration="underline",ba.scrollTop=0,x&&(I=!0),Z.innerHTML=c,ea.style.display="none",A(a[b],!0))})})(c,d,f)}}function z(a){k&&(ba.scrollTop=0,T.innerHTML="",ja.spin(T),I=!1,x=!0,Z.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag",null,"Recent Diagrams")),S=null,k(Q,a?null:g))}function B(a){f();ba.scrollTop=0;T.innerHTML="";ja.spin(T);I=!1;x=!0;V=null;Z.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults",null,"Search Results"))+
+' "'+mxUtils.htmlEntities(a)+'"';m(a,Q,E?null:g);S=a}d=null!=d?d:TEMPLATE_PATH+"/index.xml";e=null!=e?e:NEW_DIAGRAM_CATS_PATH+"/index.xml";var F=this.container,x=!1,I=!1,G=null,D=null,H=null,J=!1,E=!0,M=!1,K=[],S,L=F.querySelector(".geTempDlgShowAllBtn"),T=F.querySelector(".geTempDlgDiagramsTiles"),Z=F.querySelector(".geTempDlgDiagramsListTitle"),ea=F.querySelector(".geTempDlgDiagramsListBtns"),ba=F.querySelector(".geTempDlgContent"),ha=F.querySelector(".geTempDlgDiagramsList"),U=F.querySelector(".geTempDlgNewDiagramCat"),
+Y=F.querySelector(".geTempDlgNewDiagramCatList"),aa=F.querySelector(".geTempDlgCreateBtn"),ja=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"50px",zIndex:2E9});mxEvent.addListener(F.querySelector(".geTempDlgNewDiagramlbl"),"click",function(){f();U.style.display="";ha.style.minHeight="calc(100% - 280px)";z(E)});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){l(this,"geTempDlgAllDiagramsBtnImg",
+"all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(E=!0,null==S?z(E):B(S))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){l(this,"geTempDlgMyDiagramsBtnImg","my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(E=!1,null==S?z(E):B(S))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){l(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg",
+"tiles",!1)&&(M=!0,A(K,!1,M))});mxEvent.addListener(F.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){l(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(M=!1,A(K,!1,M))});mxEvent.addListener(L,"click",function(){J?(U.style.height="280px",Y.style.height="190px",L.innerHTML=mxUtils.htmlEntities(mxResources.get("showAll",null,"+ Show all")),y(P)):(U.style.height="440px",Y.style.height="355px",L.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess",
+null,"- Show less")),y(P,!0));J=!J});var O=!1,W=!1,R={},P=[],X=1;mxUtils.get(d,function(a){if(!O){O=!0;for(a=a.getXml().documentElement.firstChild;null!=a;){if("undefined"!==typeof a.getAttribute){var b=a.getAttribute("url");if(null!=b){var c=b.indexOf("/"),b=b.substring(0,c),c=R[b];null==c&&(X++,c=[],R[b]=c);c.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),clibs:a.getAttribute("clibs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),imgUrl:a.getAttribute("imgUrl")})}}a=a.nextSibling}C(R)}});
+mxUtils.get(e,function(a){if(!W){W=!0;for(a=a.getXml().documentElement.firstChild;null!=a;)"undefined"!==typeof a.getAttribute&&null!=a.getAttribute("title")&&P.push({img:a.getAttribute("img"),libs:a.getAttribute("libs"),clibs:a.getAttribute("clibs"),title:a.getAttribute("title")}),a=a.nextSibling;y(P)}});var Q=function(a,b){ea.style.display="";ja.stop();x=!1;I?I=!1:b?T.innerHTML=b:0==a.length?T.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):A(a,!1,M)};z(E);
+var V=null;m&&mxEvent.addListener(F.querySelector(".geTempDlgSearchBox"),"keyup",function(a){var b=this;null!=V&&clearTimeout(V);13==a.keyCode?B(b.value):V=setTimeout(function(){B(b.value)},500)});mxEvent.addListener(aa,"click",v);mxEvent.addListener(F.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(a){v(!0)});mxEvent.addListener(F.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=b&&b();a.hideDialog(!0)})};
 var BtnDialog=function(a,c,b,d){var e=document.createElement("div");e.style.textAlign="center";var g=document.createElement("p");g.style.fontSize="16pt";g.style.padding="0px";g.style.margin="0px";g.style.color="gray";mxUtils.write(g,mxResources.get("done"));var k="Unknown",m=document.createElement("img");m.setAttribute("border","0");m.setAttribute("align","absmiddle");m.style.marginRight="10px";c==a.drive?(k=mxResources.get("googleDrive"),m.src=IMAGE_PATH+"/google-drive-logo-white.svg"):c==a.dropbox?
 (k=mxResources.get("dropbox"),m.src=IMAGE_PATH+"/dropbox-logo-white.svg"):c==a.oneDrive?(k=mxResources.get("oneDrive"),m.src=IMAGE_PATH+"/onedrive-logo-white.svg"):c==a.gitHub?(k=mxResources.get("github"),m.src=IMAGE_PATH+"/github-logo-white.svg"):c==a.trello&&(k=mxResources.get("trello"),m.src=IMAGE_PATH+"/trello-logo-white.svg");a=document.createElement("p");mxUtils.write(a,mxResources.get("authorizedIn",[k],"You are now authorized in {1}"));b=mxUtils.button(b,d);b.insertBefore(m,b.firstChild);
 b.style.marginTop="6px";b.className="geBigButton";e.appendChild(g);e.appendChild(a);e.appendChild(b);this.container=e};(function(){Editor.prototype.appName="draw.io";Editor.prototype.fileExtensions=[{ext:"html",title:"filetypeHtml"},{ext:"png",title:"filetypePng"},{ext:"svg",title:"filetypeSvg"}];Editor.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAApVBMVEUAAAD////k5OT///8AAAB1dXXMzMz9/f39/f37+/v5+fn+/v7///9iYmJaWlqFhYWnp6ejo6OHh4f////////////////7+/v5+fnx8fH///8AAAD///8bGxv7+/v5+fkoKCghISFDQ0MYGBjh4eHY2Njb29tQUFBvb29HR0c/Pz82NjYrKyu/v78SEhLu7u7s7OzV1dVVVVU7OzsVFRXAv78QEBBzqehMAAAAG3RSTlMAA/7p/vz5xZlrTiPL/v78+/v7+OXd2TYQDs8L70ZbAAABKUlEQVQoz3VS13LCMBBUXHChd8iukDslQChJ/v/TchaG4cXS+OSb1c7trU7V60OpdRz2ZtNZL4zXNlcN8BEtSG6+NxIXkeRPoBuQ1cjvZ31/VJFB10ISli6diYfH8iYO3WUNCcNlB0gTrXOtkxTo0O1aKKiBBMhhv2MNBQKoiA5wxlZo0JDzD3AYKbWacyj3fs01wxey0pyEP+R8pWKWXoqtIZ0DDg5pbki9krEKOa6LVDQsdoXEsi46Zqh69KFz7B1u7Hb2yDV8firXDKBlZ4UFiswKGRhXTS93/ECK7yxnJ3+S3y/ThpO+cfSD017nqa18aasabU0/t7d+tk0/1oMEJ1NaD67iwdF68OabFSLn+eHb0+vjy+uk8br9fdrftH0O2menfd7+AQfYM/lNjoDHAAAAAElFTkSuQmCC":
@@ -8315,7 +8318,7 @@ dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree
 Editor.extractGraphModel=function(a,b){if(null!=a&&"undefined"!==typeof pako){var c=a.ownerDocument.getElementsByTagName("div"),f=[];if(null!=c&&0<c.length)for(var d=0;d<c.length;d++)if("mxgraph"==c[d].getAttribute("class")){f.push(c[d]);break}0<f.length&&(c=f[0].getAttribute("data-mxgraph"),null!=c?(f=JSON.parse(c),null!=f&&null!=f.xml&&(f=mxUtils.parseXml(f.xml),a=f.documentElement)):(f=f[0].getElementsByTagName("div"),0<f.length&&(c=mxUtils.getTextContent(f[0]),c=Graph.decompress(c),0<c.length&&
 (f=mxUtils.parseXml(c),a=f.documentElement))))}if(null!=a&&"svg"==a.nodeName)if(c=a.getAttribute("content"),null!=c&&"<"!=c.charAt(0)&&"%"!=c.charAt(0)&&(c=unescape(window.atob?atob(c):Base64.decode(cont,c))),null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c)),null!=c&&0<c.length)a=mxUtils.parseXml(c).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==a||b||(f=null,"diagram"==a.nodeName?f=a:"mxfile"==a.nodeName&&(c=a.getElementsByTagName("diagram"),0<c.length&&(f=c[Math.max(0,
 Math.min(c.length-1,urlParams.page||0))])),null!=f&&(c=Graph.decompress(mxUtils.getTextContent(f)),null!=c&&0<c.length&&(a=mxUtils.parseXml(c).documentElement)));null==a||"mxGraphModel"==a.nodeName||b&&"mxfile"==a.nodeName||(a=null);return a};Editor.extractGraphModelFromPng=function(a){var b=null;try{var c=a.substring(a.indexOf(",")+1),f=window.atob&&!mxClient.IS_SF?atob(c):Base64.decode(c,!0);EditorUi.parsePng(f,mxUtils.bind(this,function(a,c,d){a=f.substring(a+8,a+8+d);"zTXt"==c?(d=a.indexOf(String.fromCharCode(0)),
-"mxGraphModel"==a.substring(0,d)&&(a=Graph.bytesToString(pako.inflateRaw(a.substring(d+2))).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==c&&(a=a.split(String.fromCharCode(0)),1<a.length&&"mxGraphModel"==a[0]&&(b=a[1]));if(null!=b||"IDAT"==c)return!0}))}catch(I){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};Editor.shadowOptionEnabled=!0;Editor.config=null;Editor.configVersion=null;Editor.configure=function(a,b){if(null!=
+"mxGraphModel"==a.substring(0,d)&&(a=Graph.bytesToString(pako.inflateRaw(a.substring(d+2))).replace(/\+/g," "),null!=a&&0<a.length&&(b=a))):"tEXt"==c&&(a=a.split(String.fromCharCode(0)),1<a.length&&"mxGraphModel"==a[0]&&(b=a[1]));if(null!=b||"IDAT"==c)return!0}))}catch(H){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};Editor.shadowOptionEnabled=!0;Editor.config=null;Editor.configVersion=null;Editor.configure=function(a,b){if(null!=
 a){Editor.config=a;Editor.configVersion=a.version;Menus.prototype.defaultFonts=a.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=a.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=a.defaultColors||ColorDialog.prototype.defaultColors;StyleFormatPanel.prototype.defaultColorSchemes=a.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes;Graph.prototype.defaultEdgeLength=a.defaultEdgeLength||Graph.prototype.defaultEdgeLength;
 DrawioFile.prototype.autosaveDelay=a.autosaveDelay||DrawioFile.prototype.autosaveDelay;null!=a.templateFile&&(EditorUi.templateFile=a.templateFile);a.customFonts&&(Menus.prototype.defaultFonts=a.customFonts.concat(Menus.prototype.defaultFonts));a.customPresetColors&&(ColorDialog.prototype.presetColors=a.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=a.customColorSchemes&&(StyleFormatPanel.prototype.defaultColorSchemes=a.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes));
 if(null!=a.css){var c=document.createElement("style");c.setAttribute("type","text/css");c.appendChild(document.createTextNode(a.css));var f=document.getElementsByTagName("script")[0];f.parentNode.insertBefore(c,f)}null!=a.libraries&&(Sidebar.prototype.customEntries=a.libraries);null!=a.enabledLibraries&&(Sidebar.prototype.enabledLibraries=a.enabledLibraries);null!=a.defaultLibraries&&(Sidebar.prototype.defaultEntries=a.defaultLibraries);null!=a.defaultCustomLibraries&&(Editor.defaultCustomLibraries=
@@ -8326,7 +8329,7 @@ null;if(null!=b){var c=b.getElementsByTagName("parsererror");if(null!=c&&0<c.len
 this.graph.getStylesheet())));else if(f=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=f){var d=new mxCodec(f.ownerDocument);d.decode(f,this.graph.getStylesheet())}this.graph.currentStyle=c;this.graph.mathEnabled="1"==urlParams.math||"1"==b.getAttribute("math");c=b.getAttribute("backgroundImage");null!=c?(c=JSON.parse(c),this.graph.setBackgroundImage(new mxImage(c.src,c.width,c.height))):this.graph.setBackgroundImage(null);
 mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==b.getAttribute("shadow"),!1)}a.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=
 function(a){a=null!=a?a:!0;var b=c.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&b.setAttribute("style",this.graph.currentStyle);null!=this.graph.backgroundImage&&b.setAttribute("backgroundImage",JSON.stringify(this.graph.backgroundImage));b.setAttribute("math",this.graph.mathEnabled?"1":"0");b.setAttribute("shadow",this.graph.shadowVisible?"1":"0");return b};Editor.prototype.isDataSvg=function(a){try{var b=mxUtils.parseXml(a).documentElement.getAttribute("content");
-if(null!=b&&(null!=b&&"<"!=b.charAt(0)&&"%"!=b.charAt(0)&&(b=unescape(window.atob?atob(b):Base64.decode(cont,b))),null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b)),null!=b&&0<b.length)){var c=mxUtils.parseXml(b).documentElement;return"mxfile"==c.nodeName||"mxGraphModel"==c.nodeName}}catch(E){}return!1};Editor.prototype.extractGraphModel=function(a,b){return Editor.extractGraphModel.apply(this,arguments)};var b=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled=
+if(null!=b&&(null!=b&&"<"!=b.charAt(0)&&"%"!=b.charAt(0)&&(b=unescape(window.atob?atob(b):Base64.decode(cont,b))),null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b)),null!=b&&0<b.length)){var c=mxUtils.parseXml(b).documentElement;return"mxfile"==c.nodeName||"mxGraphModel"==c.nodeName}}catch(D){}return!1};Editor.prototype.extractGraphModel=function(a,b){return Editor.extractGraphModel.apply(this,arguments)};var b=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled=
 "1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();b.apply(this,arguments)};var d=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){d.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&
 null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(a,b){a=null!=a?a:DRAW_MATH_URL+"/MathJax.js?config=TeX-MML-AM_HTMLorMML";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(a){window.setTimeout(function(){"hidden"!=a.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,a])},0)};window.MathJax={skipStartupTypeset:!0,
 showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(b||{jax:["input/TeX","input/MathML","input/AsciiMath","output/HTML-CSS"],extensions:["tex2jax.js","mml2jax.js","asciimath2jax.js"],"HTML-CSS":{imageFont:null},TeX:{extensions:["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}});MathJax.Hub.Register.StartupHook("Begin",function(){for(var a=0;a<Editor.mathJaxQueue.length;a++)Editor.doMathJaxRender(Editor.mathJaxQueue[a])})}};
@@ -8346,7 +8349,7 @@ c[p].indexOf(")");l.push('url("');l.push(d[b(c[p].substring(0,e))]);l.push('"'+c
 function(a){f--;l()}),!0,null,"data:"+b+";charset=utf-8;base64,")}})(b(c[p].substring(0,e)),g)}}else a()};Editor.prototype.convertMath=function(a,b,c,f){a.mathEnabled&&"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?(Editor.MathJaxRender(b),window.setTimeout(mxUtils.bind(this,function(){MathJax.Hub.Queue(mxUtils.bind(this,function(){f()}))}),0)):f()};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||!this.graph.mathEnabled&&this.useCanvasForExport};Editor.prototype.exportToCanvas=
 function(a,b,c,f,d,l,p,e,g,k,t,u,z,m){l=null!=l?l:!0;u=null!=u?u:this.graph;z=null!=z?z:0;var x=g?null:u.background;x==mxConstants.NONE&&(x=null);null==x&&(x=f);null==x&&0==g&&(x=this.graph.defaultPageBackgroundColor);this.convertImages(u.getSvg(x,null,null,m,null,null!=p?p:!0,null,null,null,k),mxUtils.bind(this,function(c){var f=new Image;f.onload=mxUtils.bind(this,function(){try{var p=document.createElement("canvas"),g=parseInt(c.getAttribute("width")),k=parseInt(c.getAttribute("height"));e=null!=
 e?e:1;null!=b&&(e=l?Math.min(1,Math.min(3*b/(4*k),b/g)):b/g);g=Math.ceil(e*g)+2*z;k=Math.ceil(e*k)+2*z;p.setAttribute("width",g);p.setAttribute("height",k);var t=p.getContext("2d");null!=x&&(t.beginPath(),t.rect(0,0,g,k),t.fillStyle=x,t.fill());t.scale(e,e);mxClient.IS_SF?window.setTimeout(function(){t.drawImage(f,z/e,z/e);a(p)},0):(t.drawImage(f,z/e,z/e),a(p))}catch(R){null!=d&&d(R)}});f.onerror=function(a){null!=d&&d(a)};try{k&&this.graph.addSvgShadow(c);var p=mxUtils.bind(this,function(){if(null!=
-this.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(u,c,!0,mxUtils.bind(this,function(){f.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(p)}catch(ca){null!=d&&d(ca)}}),c,t)};Editor.prototype.writeGraphModelToPng=function(a,b,c,f,d){function l(a,b){var c=g;g+=b;return a.substring(c,g)}function p(a){a=l(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<
+this.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(u,c,!0,mxUtils.bind(this,function(){f.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(p)}catch(aa){null!=d&&d(aa)}}),c,t)};Editor.prototype.writeGraphModelToPng=function(a,b,c,f,d){function l(a,b){var c=g;g+=b;return a.substring(c,g)}function p(a){a=l(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<
 8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function e(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var g=0;if(l(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=d&&d();else if(l(a,4),"IHDR"!=l(a,4))null!=d&&d();else{l(a,17);d=a.substring(0,g);do{var k=p(a);if("IDAT"==l(a,4)){d=a.substring(0,g-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+f;f=4294967295;
 f=EditorUi.prototype.updateCRC(f,b,0,4);f=EditorUi.prototype.updateCRC(f,c,0,c.length);d+=e(c.length)+b+c+e(f^4294967295);d+=a.substring(g-8,a.length);break}d+=a.substring(g-8,g-4+k);l(a,k);l(a,4)}while(k);return"data:image/png;base64,"+(window.btoa?btoa(d):Base64.encode(d,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://desk.draw.io/support/solutions/articles/16000091426";var e=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,b){e.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);
 mxSettings.save()};var g=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){g.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,b){var c=null;null!=a.editor.graph.getModel().getParent(b)?c=b.getId():null!=a.currentPage&&(c=a.currentPage.getId());return c});if(null!=window.StyleFormatPanel){var k=Format.prototype.init;Format.prototype.init=function(){k.apply(this,arguments);
@@ -8391,9 +8394,9 @@ n[p],g=document.createElement("option");g.value=mxUtils.htmlEntities(e.val);g.in
 B,z)):(x.innerHTML=c,mxEvent.addListener(x,"click",mxUtils.bind(t,function(){function l(){var a=p.value,a=0==a.length&&"string"!=m?0:a;k.allowAuto&&("auto"==a.trim().toLowerCase()?(a="auto",m="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=k.min&&a<k.min?a=k.min:null!=k.max&&a>k.max&&(a=k.max);a=mxUtils.htmlEntities(("int"==m?parseInt(a):a)+"");f(b,a,k)}var p=document.createElement("input");d(x,p,!0);p.value=c;p.className="gePropEditor";"int"!=m&&"float"!=m||k.allowAuto||(p.type="number",p.step=
 "int"==m?"1":"any",null!=k.min&&(p.min=parseFloat(k.min)),null!=k.max&&(p.max=parseFloat(k.max)));a.appendChild(p);mxEvent.addListener(p,"keypress",function(a){13==a.keyCode&&l()});p.focus();mxEvent.addListener(p,"blur",function(){l()})})));k.isDeletable&&(z=mxUtils.button("-",mxUtils.bind(t,function(a){f(b,"",k,k.index);mxEvent.consume(a)})),z.style.height="16px",z.style.width="25px",z.style["float"]="right",z.className="geColorBtn",x.appendChild(z));B.appendChild(x);return B}var t=this,u=this.editorUi.editor.graph,
 z=[];a.style.position="relative";a.style.padding="0";var m=document.createElement("table");m.style.whiteSpace="nowrap";m.style.width="100%";var v=document.createElement("tr");v.className="gePropHeader";var B=document.createElement("th");B.className="gePropHeaderCell";var x=document.createElement("img");x.src=Sidebar.prototype.expandedImage;B.appendChild(x);mxUtils.write(B,mxResources.get("property"));v.style.cursor="pointer";var n=function(){var b=m.querySelectorAll(".gePropNonHeaderRow"),c;if(t.editorUi.propertiesCollapsed){x.src=
-Sidebar.prototype.collapsedImage;c="none";for(var f=a.childNodes.length-1;0<=f;f--)try{var d=a.childNodes[f],l=d.nodeName.toUpperCase();"INPUT"!=l&&"SELECT"!=l||a.removeChild(d)}catch(ga){}}else x.src=Sidebar.prototype.expandedImage,c="";for(f=0;f<b.length;f++)b[f].style.display=c};mxEvent.addListener(v,"click",function(){t.editorUi.propertiesCollapsed=!t.editorUi.propertiesCollapsed;n()});v.appendChild(B);B=document.createElement("th");B.className="gePropHeaderCell";B.innerHTML=mxResources.get("value");
-v.appendChild(B);m.appendChild(v);var y=!1,q=!1,A;for(A in b)if(v=b[A],"function"!=typeof v.isVisible||v.isVisible(c)){var C=null!=c.style[A]?mxUtils.htmlEntities(c.style[A]+""):v.defVal;if("separator"==v.type)q=!q;else{if("staticArr"==v.type)v.size=parseInt(c.style[v.sizeProperty]||b[v.sizeProperty].defVal)||0;else if(null!=v.dependentProps){for(var D=v.dependentProps,G=[],H=[],B=0;B<D.length;B++){var Q=c.style[D[B]];H.push(b[D[B]].subDefVal);G.push(null!=Q?Q.split(","):[])}v.dependentPropsDefVal=
-H;v.dependentPropsVals=G}m.appendChild(k(A,C,v,y,q));y=!y}}for(B=0;B<z.length;B++)for(v=z[B],b=v.parentRow,c=0;c<v.values.length;c++)A=k(v.name,v.values[c],{type:v.type,parentRow:v.parentRow,isDeletable:v.isDeletable,index:c,defVal:v.defVal,countProperty:v.countProperty,size:v.size},0==c%2,v.flipBkg),b.parentNode.insertBefore(A,b.nextSibling),b=A;a.appendChild(m);n();return a};StyleFormatPanel.prototype.addStyles=function(a){function b(a){function b(a){var b=mxUtils.button("",function(b){f.getModel().beginUpdate();
+Sidebar.prototype.collapsedImage;c="none";for(var f=a.childNodes.length-1;0<=f;f--)try{var d=a.childNodes[f],l=d.nodeName.toUpperCase();"INPUT"!=l&&"SELECT"!=l||a.removeChild(d)}catch(da){}}else x.src=Sidebar.prototype.expandedImage,c="";for(f=0;f<b.length;f++)b[f].style.display=c};mxEvent.addListener(v,"click",function(){t.editorUi.propertiesCollapsed=!t.editorUi.propertiesCollapsed;n()});v.appendChild(B);B=document.createElement("th");B.className="gePropHeaderCell";B.innerHTML=mxResources.get("value");
+v.appendChild(B);m.appendChild(v);var y=!1,A=!1,q;for(q in b)if(v=b[q],"function"!=typeof v.isVisible||v.isVisible(c)){var C=null!=c.style[q]?mxUtils.htmlEntities(c.style[q]+""):v.defVal;if("separator"==v.type)A=!A;else{if("staticArr"==v.type)v.size=parseInt(c.style[v.sizeProperty]||b[v.sizeProperty].defVal)||0;else if(null!=v.dependentProps){for(var F=v.dependentProps,I=[],G=[],B=0;B<F.length;B++){var Q=c.style[F[B]];G.push(b[F[B]].subDefVal);I.push(null!=Q?Q.split(","):[])}v.dependentPropsDefVal=
+G;v.dependentPropsVals=I}m.appendChild(k(q,C,v,y,A));y=!y}}for(B=0;B<z.length;B++)for(v=z[B],b=v.parentRow,c=0;c<v.values.length;c++)q=k(v.name,v.values[c],{type:v.type,parentRow:v.parentRow,isDeletable:v.isDeletable,index:c,defVal:v.defVal,countProperty:v.countProperty,size:v.size},0==c%2,v.flipBkg),b.parentNode.insertBefore(q,b.nextSibling),b=q;a.appendChild(m);n();return a};StyleFormatPanel.prototype.addStyles=function(a){function b(a){function b(a){var b=mxUtils.button("",function(b){f.getModel().beginUpdate();
 try{var c=f.getSelectionCells();for(b=0;b<c.length;b++){for(var d=f.getModel().getStyle(c[b]),p=0;p<l.length;p++)d=mxUtils.removeStylename(d,l[p]);var e=f.getModel().isVertex(c[b])?f.defaultVertexStyle:f.defaultEdgeStyle;null!=a?(d=mxUtils.setStyle(d,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(e,mxConstants.STYLE_GRADIENTCOLOR,null)),d=""==a.fill?mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,
 null)),d=""==a.stroke?mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(e,mxConstants.STYLE_STROKECOLOR,null)),f.getModel().isVertex(c[b])&&(d=mxUtils.setStyle(d,mxConstants.STYLE_FONTCOLOR,a.font||mxUtils.getValue(e,mxConstants.STYLE_FONTCOLOR,null)))):(d=mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,"#ffffff")),d=mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(e,
 mxConstants.STYLE_STROKECOLOR,"#000000")),d=mxUtils.setStyle(d,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(e,mxConstants.STYLE_GRADIENTCOLOR,null)),f.getModel().isVertex(c[b])&&(d=mxUtils.setStyle(d,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(e,mxConstants.STYLE_FONTCOLOR,null))));f.getModel().setStyle(c[b],d)}}finally{f.getModel().endUpdate()}});b.className="geStyleButton";b.style.width="36px";b.style.height="30px";b.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&
@@ -8412,7 +8415,7 @@ this.graph.getCellStyle(a);if(null!=b){if("rack"==b.childLayout){var c=new mxSta
 b.tableColumns||2,c.colPercentages=b.colPercentages,c.rowPercentages=b.rowPercentages,c.equalColumns="1"==mxUtils.getValue(b,"equalColumns",c.colPercentages?"0":"1"),c.equalRows="1"==mxUtils.getValue(b,"equalRows",c.rowPercentages?"0":"1"),c.resizeParent="1"==mxUtils.getValue(b,"resizeParent","1"),c.border=b.tableBorder||c.border,c.marginLeft=b.marginLeft||0,c.marginRight=b.marginRight||0,c.marginTop=b.marginTop||0,c.marginBottom=b.marginBottom||0,c.autoAddCol="1"==mxUtils.getValue(b,"autoAddCol",
 "0"),c.autoAddRow="1"==mxUtils.getValue(b,"autoAddRow",c.autoAddCol?"0":"1"),c.colWidths=b.colWidths||"100",c.rowHeights=b.rowHeights||"50",c}return f.apply(this,arguments)}};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var a=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(a.ownerDocument)).decode(a)}return this.defaultStylesheet};var u=Graph.prototype.getSvg;Graph.prototype.getSvg=function(){var a=null;null!=this.themes&&"darkTheme"==this.defaultThemeName&&
 (a=this.stylesheet,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var b=u.apply(this,arguments);null!=a&&(this.stylesheet=a,this.refresh());return b};var v=Graph.prototype.isCssTransformsSupported;Graph.prototype.isCssTransformsSupported=function(){return v.apply(this,arguments)&&!mxClient.IS_SF};var t=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var b=t.apply(this,arguments);if(null==b){if(null==this.globalUrlVars&&null!=urlParams.vars)try{this.globalUrlVars=
-JSON.parse(decodeURIComponent(urlParams.vars))}catch(H){null!=window.console&&console.log("Error in vars URL parameter: "+H)}null!=this.globalUrlVars&&(b=this.globalUrlVars[a])}return b};var A=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){A.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||
+JSON.parse(decodeURIComponent(urlParams.vars))}catch(G){null!=window.console&&console.log("Error in vars URL parameter: "+G)}null!=this.globalUrlVars&&(b=this.globalUrlVars[a])}return b};var A=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){A.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||
 "svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",
 a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var y=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){y.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var b=0;b<a.actions.length;b++){var c=a.actions[b];if(null!=c.open)if(this.isCustomLink(c.open)){if(!this.customLinkClicked(c.open))return}else this.openLink(c.open)}this.model.beginUpdate();
 try{for(b=0;b<a.actions.length;b++)c=a.actions[b],null!=c.toggle&&this.toggleCells(this.getCellsForAction(c.toggle,!0)),null!=c.show&&this.setCellsVisible(this.getCellsForAction(c.show,!0),!0),null!=c.hide&&this.setCellsVisible(this.getCellsForAction(c.hide,!0),!1)}finally{this.model.endUpdate()}for(b=0;b<a.actions.length;b++){var c=a.actions[b],f=[];null!=c.select&&this.isEnabled()&&(f=this.getCellsForAction(c.select),this.setSelectionCells(f));null!=c.highlight&&(f=this.getCellsForAction(c.highlight),
@@ -8435,26 +8438,26 @@ mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.js
 [SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+
 "/veeam/veeam.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(a){var b=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?b="mxgraph.er":"sysML"==a.substring(0,5)&&(b="mxgraph.sysml"));
 return b};var C=mxMarker.createMarker;mxMarker.createMarker=function(a,b,c,f,d,l,p,e,g,k){if(null!=c&&null==mxMarker.markers[c]){var t=this.getPackageForType(c);null!=t&&mxStencilRegistry.getStencil(t)}return C.apply(this,arguments)};PrintDialog.prototype.create=function(a,b){function c(){v.value=Math.max(1,Math.min(e,Math.max(parseInt(v.value),parseInt(z.value))));z.value=Math.max(1,Math.min(e,Math.min(parseInt(v.value),parseInt(z.value))))}function f(b){function c(b,c,d){var l=b.getGraphBounds(),
-p=0,e=0,g=O.get(),k=1/b.pageScale,t=y.checked;if(t)var k=parseInt(V.value),u=parseInt(ja.value),k=Math.min(g.height*u/(l.height/b.view.scale),g.width*k/(l.width/b.view.scale));else k=parseInt(n.value)/(100*b.pageScale),isNaN(k)&&(f=1/b.pageScale,n.value="100 %");g=mxRectangle.fromRectangle(g);g.width=Math.ceil(g.width*f);g.height=Math.ceil(g.height*f);k*=f;!t&&b.pageVisible?(l=b.getPageLayout(),p-=l.x*g.width,e-=l.y*g.height):t=!0;if(null==c){c=PrintDialog.createPrintPreview(b,k,g,0,p,e,t);c.pageSelector=
-!1;c.mathEnabled=!1;b=a.getCurrentFile();null!=b&&(c.title=b.getTitle());var z=c.writeHead;c.writeHead=function(b){z.apply(this,arguments);null!=a.editor.fontCss&&(b.writeln('<style type="text/css">'),b.writeln(a.editor.fontCss),b.writeln("</style>"))};if("undefined"!==typeof MathJax){var m=c.renderPage;c.renderPage=function(a,b,c,f,d,l){var p=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var e=m.apply(this,arguments);mxClient.NO_FO=
-p;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:e.className="geDisableMathJax";return e}}c.open(null,null,d,!0)}else{g=b.background;if(null==g||""==g||g==mxConstants.NONE)g="#ffffff";c.backgroundColor=g;c.autoOrigin=t;c.appendGraph(b,k,p,e,d,!0)}return c}var f=parseInt(ba.value)/100;isNaN(f)&&(f=1,ba.value="100 %");var f=.75*f,l=z.value,p=v.value,e=!t.checked,k=null;e&&(e=l==g&&p==g);if(!e&&null!=a.pages&&a.pages.length){var u=0,e=a.pages.length-1;t.checked||(u=parseInt(l)-1,e=parseInt(p)-
-1);for(var m=u;m<=e;m++){var B=a.pages[m],l=B==a.currentPage?d:null;if(null==l){var l=a.createTemporaryGraph(d.getStylesheet()),p=!0,u=!1,x=null,q=null;null==B.viewState&&null==B.root&&a.updatePageRoot(B);null!=B.viewState&&(p=B.viewState.pageVisible,u=B.viewState.mathEnabled,x=B.viewState.background,q=B.viewState.backgroundImage);l.background=x;l.backgroundImage=null!=q?new mxImage(q.src,q.width,q.height):null;l.pageVisible=p;l.mathEnabled=u;var A=l.getGlobalVariable;l.getGlobalVariable=function(a){return"page"==
-a?B.getName():"pagenumber"==a?m+1:A.apply(this,arguments)};document.body.appendChild(l.container);a.updatePageRoot(B);l.model.setRoot(B.root)}k=c(l,k,m!=e);l!=d&&l.container.parentNode.removeChild(l.container)}}else k=c(d);null==k?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(k.mathEnabled&&(e=k.wnd.document,e.writeln('<script type="text/x-mathjax-config">'),e.writeln("MathJax.Hub.Config({"),e.writeln("showMathMenu: false,"),e.writeln('messageStyle: "none",'),e.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),
+p=0,e=0,g=N.get(),k=1/b.pageScale,t=y.checked;if(t)var k=parseInt(ca.value),u=parseInt(fa.value),k=Math.min(g.height*u/(l.height/b.view.scale),g.width*k/(l.width/b.view.scale));else k=parseInt(n.value)/(100*b.pageScale),isNaN(k)&&(f=1/b.pageScale,n.value="100 %");g=mxRectangle.fromRectangle(g);g.width=Math.ceil(g.width*f);g.height=Math.ceil(g.height*f);k*=f;!t&&b.pageVisible?(l=b.getPageLayout(),p-=l.x*g.width,e-=l.y*g.height):t=!0;if(null==c){c=PrintDialog.createPrintPreview(b,k,g,0,p,e,t);c.pageSelector=
+!1;c.mathEnabled=!1;b=a.getCurrentFile();null!=b&&(c.title=b.getTitle());var z=c.writeHead;c.writeHead=function(b){z.apply(this,arguments);null!=a.editor.fontCss&&(b.writeln('<style type="text/css">'),b.writeln(a.editor.fontCss),b.writeln("</style>"))};if("undefined"!==typeof MathJax){var v=c.renderPage;c.renderPage=function(a,b,c,f,d,l){var p=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;var e=v.apply(this,arguments);mxClient.NO_FO=
+p;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:e.className="geDisableMathJax";return e}}c.open(null,null,d,!0)}else{g=b.background;if(null==g||""==g||g==mxConstants.NONE)g="#ffffff";c.backgroundColor=g;c.autoOrigin=t;c.appendGraph(b,k,p,e,d,!0)}return c}var f=parseInt(ga.value)/100;isNaN(f)&&(f=1,ga.value="100 %");var f=.75*f,l=z.value,p=v.value,e=!t.checked,k=null;e&&(e=l==g&&p==g);if(!e&&null!=a.pages&&a.pages.length){var u=0,e=a.pages.length-1;t.checked||(u=parseInt(l)-1,e=parseInt(p)-
+1);for(var m=u;m<=e;m++){var B=a.pages[m],l=B==a.currentPage?d:null;if(null==l){var l=a.createTemporaryGraph(d.getStylesheet()),p=!0,u=!1,x=null,A=null;null==B.viewState&&null==B.root&&a.updatePageRoot(B);null!=B.viewState&&(p=B.viewState.pageVisible,u=B.viewState.mathEnabled,x=B.viewState.background,A=B.viewState.backgroundImage);l.background=x;l.backgroundImage=null!=A?new mxImage(A.src,A.width,A.height):null;l.pageVisible=p;l.mathEnabled=u;var q=l.getGlobalVariable;l.getGlobalVariable=function(a){return"page"==
+a?B.getName():"pagenumber"==a?m+1:q.apply(this,arguments)};document.body.appendChild(l.container);a.updatePageRoot(B);l.model.setRoot(B.root)}k=c(l,k,m!=e);l!=d&&l.container.parentNode.removeChild(l.container)}}else k=c(d);null==k?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(k.mathEnabled&&(e=k.wnd.document,e.writeln('<script type="text/x-mathjax-config">'),e.writeln("MathJax.Hub.Config({"),e.writeln("showMathMenu: false,"),e.writeln('messageStyle: "none",'),e.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),
 e.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),e.writeln('"HTML-CSS": {'),e.writeln("imageFont: null"),e.writeln("},"),e.writeln("TeX: {"),e.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),e.writeln("},"),e.writeln("tex2jax: {"),e.writeln('\tignoreClass: "geDisableMathJax"'),e.writeln("},"),e.writeln("asciimath2jax: {"),e.writeln('\tignoreClass: "geDisableMathJax"'),e.writeln("}"),e.writeln("});"),b&&(e.writeln("MathJax.Hub.Queue(function () {"),
 e.writeln("window.print();"),e.writeln("});")),e.writeln("\x3c/script>"),e.writeln('<script type="text/javascript" src="'+DRAW_MATH_URL+'/MathJax.js">\x3c/script>')),k.closeDocument(),!k.mathEnabled&&b&&PrintDialog.printPreview(k))}var d=a.editor.graph,l=document.createElement("div"),p=document.createElement("h3");p.style.width="100%";p.style.textAlign="center";p.style.marginTop="0px";mxUtils.write(p,b||mxResources.get("print"));l.appendChild(p);var e=1,g=1,k=document.createElement("div");k.style.cssText=
 "border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var t=document.createElement("input");t.style.cssText="margin-right:8px;margin-bottom:8px;";t.setAttribute("value","all");t.setAttribute("type","radio");t.setAttribute("name","pages-printdialog");k.appendChild(t);p=document.createElement("span");mxUtils.write(p,mxResources.get("printAllPages"));k.appendChild(p);mxUtils.br(k);var u=t.cloneNode(!0);t.setAttribute("checked","checked");u.setAttribute("value","range");k.appendChild(u);
 p=document.createElement("span");mxUtils.write(p,mxResources.get("pages")+":");k.appendChild(p);var z=document.createElement("input");z.style.cssText="margin:0 8px 0 8px;";z.setAttribute("value","1");z.setAttribute("type","number");z.setAttribute("min","1");z.style.width="50px";k.appendChild(z);p=document.createElement("span");mxUtils.write(p,mxResources.get("to"));k.appendChild(p);var v=z.cloneNode(!0);k.appendChild(v);mxEvent.addListener(z,"focus",function(){u.checked=!0});mxEvent.addListener(v,
 "focus",function(){u.checked=!0});mxEvent.addListener(z,"change",c);mxEvent.addListener(v,"change",c);if(null!=a.pages&&(e=a.pages.length,null!=a.currentPage))for(p=0;p<a.pages.length;p++)if(a.currentPage==a.pages[p]){g=p+1;z.value=g;v.value=g;break}z.setAttribute("max",e);v.setAttribute("max",e);1<e&&l.appendChild(k);var m=document.createElement("div");m.style.marginBottom="10px";var B=document.createElement("input");B.style.marginRight="8px";B.setAttribute("value","adjust");B.setAttribute("type",
 "radio");B.setAttribute("name","printZoom");m.appendChild(B);p=document.createElement("span");mxUtils.write(p,mxResources.get("adjustTo"));m.appendChild(p);var n=document.createElement("input");n.style.cssText="margin:0 8px 0 8px;";n.setAttribute("value","100 %");n.style.width="50px";m.appendChild(n);mxEvent.addListener(n,"focus",function(){B.checked=!0});l.appendChild(m);var k=k.cloneNode(!1),y=B.cloneNode(!0);y.setAttribute("value","fit");B.setAttribute("checked","checked");p=document.createElement("div");
-p.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";p.appendChild(y);k.appendChild(p);m=document.createElement("table");m.style.display="inline-block";var x=document.createElement("tbody"),q=document.createElement("tr"),A=q.cloneNode(!0),C=document.createElement("td"),D=C.cloneNode(!0),G=C.cloneNode(!0),ea=C.cloneNode(!0),Q=C.cloneNode(!0),X=C.cloneNode(!0);C.style.textAlign="right";ea.style.textAlign="right";mxUtils.write(C,mxResources.get("fitTo"));var V=document.createElement("input");
-V.style.cssText="margin:0 8px 0 8px;";V.setAttribute("value","1");V.setAttribute("min","1");V.setAttribute("type","number");V.style.width="40px";D.appendChild(V);p=document.createElement("span");mxUtils.write(p,mxResources.get("fitToSheetsAcross"));G.appendChild(p);mxUtils.write(ea,mxResources.get("fitToBy"));var ja=V.cloneNode(!0);Q.appendChild(ja);mxEvent.addListener(V,"focus",function(){y.checked=!0});mxEvent.addListener(ja,"focus",function(){y.checked=!0});p=document.createElement("span");mxUtils.write(p,
-mxResources.get("fitToSheetsDown"));X.appendChild(p);q.appendChild(C);q.appendChild(D);q.appendChild(G);A.appendChild(ea);A.appendChild(Q);A.appendChild(X);x.appendChild(q);x.appendChild(A);m.appendChild(x);k.appendChild(m);l.appendChild(k);k=document.createElement("div");p=document.createElement("div");p.style.fontWeight="bold";p.style.marginBottom="12px";mxUtils.write(p,mxResources.get("paperSize"));k.appendChild(p);p=document.createElement("div");p.style.marginBottom="12px";var O=PageSetupDialog.addPageFormatPanel(p,
-"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);k.appendChild(p);p=document.createElement("span");mxUtils.write(p,mxResources.get("pageScale"));k.appendChild(p);var ba=document.createElement("input");ba.style.cssText="margin:0 8px 0 8px;";ba.setAttribute("value","100 %");ba.style.width="60px";k.appendChild(ba);l.appendChild(k);p=document.createElement("div");p.style.cssText="text-align:right;margin:48px 0 0 0;";k=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});
-k.className="geBtn";a.editor.cancelFirst&&p.appendChild(k);a.isOffline()||(m=mxUtils.button(mxResources.get("help"),function(){d.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),m.className="geBtn",p.appendChild(m));PrintDialog.previewEnabled&&(m=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();f(!1)}),m.className="geBtn",p.appendChild(m));m=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();f(!0)});m.className=
-"geBtn gePrimaryBtn";p.appendChild(m);a.editor.cancelFirst||p.appendChild(k);l.appendChild(p);this.container=l};var z=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),null!=this.format&&(this.page.viewState.pageFormat=this.format),null!=
-this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled),null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)):(z.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))};
-Editor.prototype.useCanvasForExport=!1;try{var B=document.createElement("canvas"),D=new Image;D.onload=function(){try{B.getContext("2d").drawImage(D,0,0);var a=B.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=a&&6<a.length}catch(G){}};D.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(x){}})();
-(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,b,d){d.ui=a.ui;return b};a.afterDecode=function(a,b,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="10.9.6";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":"https://rt.draw.io/cache";EditorUi.enablePlantUml=
+p.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";p.appendChild(y);k.appendChild(p);m=document.createElement("table");m.style.display="inline-block";var x=document.createElement("tbody"),A=document.createElement("tr"),q=A.cloneNode(!0),C=document.createElement("td"),F=C.cloneNode(!0),I=C.cloneNode(!0),X=C.cloneNode(!0),Q=C.cloneNode(!0),V=C.cloneNode(!0);C.style.textAlign="right";X.style.textAlign="right";mxUtils.write(C,mxResources.get("fitTo"));var ca=document.createElement("input");
+ca.style.cssText="margin:0 8px 0 8px;";ca.setAttribute("value","1");ca.setAttribute("min","1");ca.setAttribute("type","number");ca.style.width="40px";F.appendChild(ca);p=document.createElement("span");mxUtils.write(p,mxResources.get("fitToSheetsAcross"));I.appendChild(p);mxUtils.write(X,mxResources.get("fitToBy"));var fa=ca.cloneNode(!0);Q.appendChild(fa);mxEvent.addListener(ca,"focus",function(){y.checked=!0});mxEvent.addListener(fa,"focus",function(){y.checked=!0});p=document.createElement("span");
+mxUtils.write(p,mxResources.get("fitToSheetsDown"));V.appendChild(p);A.appendChild(C);A.appendChild(F);A.appendChild(I);q.appendChild(X);q.appendChild(Q);q.appendChild(V);x.appendChild(A);x.appendChild(q);m.appendChild(x);k.appendChild(m);l.appendChild(k);k=document.createElement("div");p=document.createElement("div");p.style.fontWeight="bold";p.style.marginBottom="12px";mxUtils.write(p,mxResources.get("paperSize"));k.appendChild(p);p=document.createElement("div");p.style.marginBottom="12px";var N=
+PageSetupDialog.addPageFormatPanel(p,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);k.appendChild(p);p=document.createElement("span");mxUtils.write(p,mxResources.get("pageScale"));k.appendChild(p);var ga=document.createElement("input");ga.style.cssText="margin:0 8px 0 8px;";ga.setAttribute("value","100 %");ga.style.width="60px";k.appendChild(ga);l.appendChild(k);p=document.createElement("div");p.style.cssText="text-align:right;margin:48px 0 0 0;";k=mxUtils.button(mxResources.get("cancel"),
+function(){a.hideDialog()});k.className="geBtn";a.editor.cancelFirst&&p.appendChild(k);a.isOffline()||(m=mxUtils.button(mxResources.get("help"),function(){d.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}),m.className="geBtn",p.appendChild(m));PrintDialog.previewEnabled&&(m=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();f(!1)}),m.className="geBtn",p.appendChild(m));m=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();
+f(!0)});m.className="geBtn gePrimaryBtn";p.appendChild(m);a.editor.cancelFirst||p.appendChild(k);l.appendChild(p);this.container=l};var z=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),null!=this.format&&(this.page.viewState.pageFormat=
+this.format),null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled),null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)):(z.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))};
+Editor.prototype.useCanvasForExport=!1;try{var B=document.createElement("canvas"),F=new Image;F.onload=function(){try{B.getContext("2d").drawImage(F,0,0);var a=B.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=a&&6<a.length}catch(I){}};F.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(x){}})();
+(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,b,d){d.ui=a.ui;return b};a.afterDecode=function(a,b,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="10.9.7";EditorUi.compactUi="atlas"!=uiTheme;EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":"https://rt.draw.io/cache";EditorUi.enablePlantUml=
 EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.logError=function(a,b,c,d,e){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,c,d,e);else if(EditorUi.enableLogging)try{if(a!=EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=
 a;var f=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",l=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";e=null!=e?e:Error(a);(new Image).src=l+"/log?severity="+f+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=d?":colno:"+encodeURIComponent(d):"")+(null!=e&&null!=e.stack?"&stack="+
 encodeURIComponent(e.stack):"")}}catch(y){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var b=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=b+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)):"")}catch(p){}};EditorUi.sendReport=function(a,b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:
@@ -8499,15 +8502,15 @@ function(a){var b=this.getCurrentFile(),b=null!=b&&null!=b.getTitle()?b.getTitle
 e,g,k,m,n){try{d=null!=d?d:this.editor.graph.isSelectionEmpty();var f=this.getBaseFilename(!e),l=f+"."+a;if("xml"==a){var p='<?xml version="1.0" encoding="UTF-8"?>\n'+(b?mxUtils.getXml(this.editor.getGraphXml(d)):this.getFileData(!0,null,null,null,d,e));this.saveData(l,a,p,"text/xml")}else if("html"==a)p=this.getHtml2(this.getFileData(!0),this.editor.graph,f),this.saveData(l,a,p,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?l=f+
 ".png":"jpeg"==a&&(l=f+".jpg"),this.saveRequest(l,a,mxUtils.bind(this,function(b,c){try{var f=this.editor.graph.pageVisible;null!=g&&(this.editor.graph.pageVisible=g);var l=this.createDownloadRequest(b,a,d,c,k,e,m,n);this.editor.graph.pageVisible=f;return l}catch(K){this.handleError(K)}}));else{var t=null,u=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(l,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,
 function(){mxUtils.popup(t)}))});if("svg"==a){var v=this.editor.graph.background;if(k||v==mxConstants.NONE)v=null;var y=this.editor.graph.getSvg(v,null,null,null,null,d);c&&this.editor.graph.addSvgShadow(y);this.convertImages(y,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();u('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else l=f+".svg",t=this.getFileData(!1,
-!0,null,mxUtils.bind(this,function(a){this.spinner.stop();u(a)}),d)}}catch(I){this.handleError(I)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,d,e,g,k,m){var f=this.editor.graph.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==g?!1:"xmlpng"!=b);var l="",p="";if(f.width*f.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};f="0";"pdf"==b&&0==g&&(p="&allPages=1");if("xmlpng"==b&&(f="1",b="png",null!=this.pages&&null!=this.currentPage))for(g=
+!0,null,mxUtils.bind(this,function(a){this.spinner.stop();u(a)}),d)}}catch(H){this.handleError(H)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,d,e,g,k,m){var f=this.editor.graph.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==g?!1:"xmlpng"!=b);var l="",p="";if(f.width*f.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};f="0";"pdf"==b&&0==g&&(p="&allPages=1");if("xmlpng"==b&&(f="1",b="png",null!=this.pages&&null!=this.currentPage))for(g=
 0;g<this.pages.length;g++)if(this.pages[g]==this.currentPage){l="&from="+g;break}g=this.editor.graph.background;"png"==b&&e?g=mxConstants.NONE:e||null!=g&&g!=mxConstants.NONE||(g="#ffffff");return new mxXmlRequest(EXPORT_URL,"format="+b+l+p+"&bg="+(null!=g?g:mxConstants.NONE)+"&base64="+d+"&embedXml="+f+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):"")+(null!=k?"&scale="+k:"")+(null!=m?"&border="+m:""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=
 function(a,b,c){var f=window.location.hash,d=mxUtils.bind(this,function(c){var d=null!=a.data?a.data:"";null!=c&&0<c.length&&(0<d.length&&(d+="\n"),d+=c);c=new LocalFile(this,"csv"!=a.format&&0<d.length?d:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return f};this.fileLoaded(c);"csv"==a.format&&this.importCsv(d,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));
 if(null!=a.update){var l=null!=a.interval?parseInt(a.interval):6E4,e=null,p=mxUtils.bind(this,function(){var b=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){b===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),g()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),g=mxUtils.bind(this,function(){window.clearTimeout(e);
 e=window.setTimeout(p,l)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){g();p()}));g();p()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var l=a.url;/^https?:\/\//.test(l)&&!this.editor.isCorsEnabledForUrl(l)&&(l=PROXY_URL+"?url="+encodeURIComponent(l));this.loadUrl(l,mxUtils.bind(this,function(a){d(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)}))}else d("")};EditorUi.prototype.updateDiagram=function(a){function b(a){var b=new mxCellOverlay(a.image||f.warningImage,a.tooltip,
 a.align,a.valign,a.offset);b.addListener(mxEvent.CLICK,function(b,c){d.alert(a.tooltip)});return b}var c=null,d=this;if(null!=a&&0<a.length&&(c=mxUtils.parseXml(a),a=null!=c?c.documentElement:null,null!=a&&"updates"==a.nodeName)){var f=this.editor.graph,e=f.getModel();e.beginUpdate();var g=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var k=e.getCell(a.getAttribute("id"));if(null!=k){try{var m=a.getAttribute("value");if(null!=m){var z=mxUtils.parseXml(m).documentElement;if(null!=
-z)if("1"==z.getAttribute("replace-value"))e.setValue(k,z);else for(var B=z.attributes,n=0;n<B.length;n++)f.setAttributeForCell(k,B[n].nodeName,0<B[n].nodeValue.length?B[n].nodeValue:null)}}catch(M){null!=window.console&&console.log("Error in value for "+k.id+": "+M)}try{var q=a.getAttribute("style");null!=q&&f.model.setStyle(k,q)}catch(M){null!=window.console&&console.log("Error in style for "+k.id+": "+M)}try{var G=a.getAttribute("icon");if(null!=G){var H=0<G.length?JSON.parse(G):null;null!=H&&H.append||
-f.removeCellOverlays(k);null!=H&&f.addCellOverlay(k,b(H))}}catch(M){null!=window.console&&console.log("Error in icon for "+k.id+": "+M)}try{var E=a.getAttribute("geometry");if(null!=E){var E=JSON.parse(E),I=f.getCellGeometry(k);if(null!=I){I=I.clone();for(key in E){var J=parseFloat(E[key]);"dx"==key?I.x+=J:"dy"==key?I.y+=J:"dw"==key?I.width+=J:"dh"==key?I.height+=J:I[key]=parseFloat(E[key])}f.model.setGeometry(k,I)}}}catch(M){null!=window.console&&console.log("Error in icon for "+k.id+": "+M)}}}else if("model"==
-a.nodeName){for(var F=a.firstChild;null!=F&&F.nodeType!=mxConstants.NODETYPE_ELEMENT;)F=F.nextSibling;null!=F&&(new mxCodec(a.firstChild)).decode(F,e)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(g=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=
+z)if("1"==z.getAttribute("replace-value"))e.setValue(k,z);else for(var B=z.attributes,n=0;n<B.length;n++)f.setAttributeForCell(k,B[n].nodeName,0<B[n].nodeValue.length?B[n].nodeValue:null)}}catch(M){null!=window.console&&console.log("Error in value for "+k.id+": "+M)}try{var x=a.getAttribute("style");null!=x&&f.model.setStyle(k,x)}catch(M){null!=window.console&&console.log("Error in style for "+k.id+": "+M)}try{var q=a.getAttribute("icon");if(null!=q){var G=0<q.length?JSON.parse(q):null;null!=G&&G.append||
+f.removeCellOverlays(k);null!=G&&f.addCellOverlay(k,b(G))}}catch(M){null!=window.console&&console.log("Error in icon for "+k.id+": "+M)}try{var D=a.getAttribute("geometry");if(null!=D){var D=JSON.parse(D),H=f.getCellGeometry(k);if(null!=H){H=H.clone();for(key in D){var J=parseFloat(D[key]);"dx"==key?H.x+=J:"dy"==key?H.y+=J:"dw"==key?H.width+=J:"dh"==key?H.height+=J:H[key]=parseFloat(D[key])}f.model.setGeometry(k,H)}}}catch(M){null!=window.console&&console.log("Error in icon for "+k.id+": "+M)}}}else if("model"==
+a.nodeName){for(var E=a.firstChild;null!=E&&E.nodeType!=mxConstants.NODETYPE_ELEMENT;)E=E.nextSibling;null!=E&&(new mxCodec(a.firstChild)).decode(E,e)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(g=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=
 a.nextSibling}}finally{e.endUpdate()}null!=g&&this.chromelessResize&&this.chromelessResize(!0,g)}return c};EditorUi.prototype.getCopyFilename=function(a,b){var c=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,d="",f=c.lastIndexOf(".");0<=f&&(d=c.substring(f),c=c.substring(0,f));if(b)var l=new Date,f=l.getFullYear(),e=l.getMonth()+1,g=l.getDate(),k=l.getHours(),z=l.getMinutes(),l=l.getSeconds(),c=c+(" "+(f+"-"+e+"-"+g+"-"+k+"-"+z+"-"+l));return c=mxResources.get("copyOf",[c])+d};EditorUi.prototype.fileLoaded=
 function(a,b){var c=this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);var d=!1;this.hideDialog();null!=c&&(c.removeListener(this.descriptorChangedListener),c.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var f=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=c&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!b&&null!=window.location.hash&&
 0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();b||this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(a);a.addListener("descriptorChanged",this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);
@@ -8526,18 +8529,18 @@ function(a){var b=mxUtils.parseXml(a.getData());if("mxlibrary"==b.documentElemen
 a.title?this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){b=this.convertDataUri(b);var c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==a.aspect&&(c+="aspect=fixed;");return this.sidebar.createVertexTemplate(c+"image="+b,a.w,a.h,"",a.title||"",!1,!1,!0)})):null!=a.xml&&null!=a.title&&this.sidebar.addEntry(a.title,mxUtils.bind(this,function(){var b=this.stringToCells(Graph.decompress(a.xml));return this.sidebar.createVertexTemplateFromCells(b,a.w,a.h,
 a.title||"",!0,!1,!0)}))})(b[e]);c=null!=c&&0<c.length?c:a.getTitle();var g=this.sidebar.addPalette(a.getHash(),c,!0,mxUtils.bind(this,function(a){l(b,a)}));this.repositionLibrary(d);var p=g.parentNode.previousSibling;c=p.getAttribute("title");null!=c&&0<c.length&&".scratchpad"!=a.title&&p.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+c);var k=document.createElement("div");k.style.position="absolute";k.style.right="0px";k.style.top="0px";k.style.padding="8px";mxClient.IS_QUIRKS||8==document.documentMode||
 (k.style.backgroundColor="inherit");p.style.position="relative";var m=document.createElement("img");m.setAttribute("src",Dialog.prototype.closeImage);m.setAttribute("title",mxResources.get("close"));m.setAttribute("valign","absmiddle");m.setAttribute("border","0");m.style.margin="0 3px";var n=null;if(".scratchpad"!=a.title||this.closableScratchpad)k.appendChild(m),mxEvent.addListener(m,"click",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b)){var c=mxUtils.bind(this,function(){this.closeLibrary(a)});
-null!=n?this.confirm(mxResources.get("allChangesLost"),null,c,mxResources.get("cancel"),mxResources.get("discardChanges")):c();mxEvent.consume(b)}}));if(a.isEditable()){var q=this.editor.graph,G=null,H=mxUtils.bind(this,function(c){this.showLibraryDialog(a.getTitle(),g,b,a,a.getMode());mxEvent.consume(c)}),E=mxUtils.bind(this,function(c){a.setModified(!0);a.isAutosave()?(null!=G&&null!=G.parentNode&&G.parentNode.removeChild(G),G=m.cloneNode(!1),G.setAttribute("src",Editor.spinImage),G.setAttribute("title",
-mxResources.get("saving")),G.style.cursor="default",G.style.marginRight="2px",G.style.marginTop="-2px",k.insertBefore(G,k.firstChild),p.style.paddingRight=18*k.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=G&&null!=G.parentNode&&(G.parentNode.removeChild(G),p.style.paddingRight=18*k.childNodes.length+"px")})):null==n&&(n=m.cloneNode(!1),n.setAttribute("src",IMAGE_PATH+"/download.png"),n.setAttribute("title",mxResources.get("save")),k.insertBefore(n,k.firstChild),
-mxEvent.addListener(n,"click",mxUtils.bind(this,function(c){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==n||a.isModified()||(p.style.paddingRight=18*k.childNodes.length+"px",n.parentNode.removeChild(n),n=null)});mxEvent.consume(c)})),p.style.paddingRight=18*k.childNodes.length+"px")}),I=mxUtils.bind(this,function(a,c,d,l){a=q.cloneCells(mxUtils.sortCells(q.model.getTopmostCells(a)));for(var e=0;e<a.length;e++){var p=q.getCellGeometry(a[e]);null!=p&&
-p.translate(-c.x,-c.y)}g.appendChild(this.sidebar.createVertexTemplateFromCells(a,c.width,c.height,l||"",!0,!1,!1));a={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:c.width,h:c.height};null!=l&&(a.title=l);b.push(a);E(d);null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)}),J=mxUtils.bind(this,function(a){if(q.isSelectionEmpty())q.getRubberband().isActive()?(q.getRubberband().execute(a),q.getRubberband().reset()):this.showError(mxResources.get("error"),
-mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var b=q.getSelectionCells(),c=q.view.getBounds(b),d=q.view.scale;c.x/=d;c.y/=d;c.width/=d;c.height/=d;c.x-=q.view.translate.x;c.y-=q.view.translate.y;I(b,c)}mxEvent.consume(a)});mxEvent.addGestureListeners(g,function(){},mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.panningManager&&null!=q.graphHandler.shape&&(q.graphHandler.shape.node.style.visibility="hidden",g.style.backgroundColor="#f1f3f4",g.style.cursor="copy",q.panningManager.stop(),
-q.autoScroll=!1,null!=q.graphHandler.guide&&q.graphHandler.guide.setVisible(!1),null!=q.graphHandler.hint&&(q.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){q.isMouseDown&&null!=q.panningManager&&null!=q.graphHandler&&(g.style.backgroundColor="",g.style.cursor="default",this.sidebar.showTooltips=!0,q.panningManager.stop(),q.graphHandler.reset(),q.isMouseDown=!1,q.autoScroll=!0,J(a),mxEvent.consume(a))}));mxEvent.addListener(g,"mouseleave",mxUtils.bind(this,
-function(a){q.isMouseDown&&null!=q.graphHandler.shape&&(q.graphHandler.shape.node.style.visibility="visible",g.style.backgroundColor="",g.style.cursor="",q.autoScroll=!0,null!=q.graphHandler.guide&&q.graphHandler.guide.setVisible(!0),null!=q.graphHandler.hint&&(q.graphHandler.hint.style.visibility="visible"))}));Graph.fileSupport&&(mxEvent.addListener(g,"dragover",mxUtils.bind(this,function(a){g.style.backgroundColor="#f1f3f4";a.dataTransfer.dropEffect="copy";g.style.cursor="copy";this.sidebar.hideTooltip();
-a.stopPropagation();a.preventDefault()})),mxEvent.addListener(g,"drop",mxUtils.bind(this,function(a){g.style.cursor="";g.style.backgroundColor="";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(c,d,e,p,k,t,m,z,u){if(null!=c&&"image/"==d.substring(0,6))c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(c),c=[new mxCell("",new mxGeometry(0,0,k,t),c)],c[0].vertex=!0,I(c,new mxRectangle(0,
-0,k,t),a,mxEvent.isAltDown(a)?null:m.substring(0,m.lastIndexOf(".")).replace(/_/g," ")),null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null);else{var B=!1,n=mxUtils.bind(this,function(c,d){if(null!=c&&"text/xml"==d){var e=mxUtils.parseXml(c);if("mxlibrary"==e.documentElement.nodeName)try{var p=JSON.parse(mxUtils.getTextContent(e.documentElement));l(p,g);b=b.concat(p);E(a);this.spinner.stop();B=!0}catch(Q){}else if("mxfile"==e.documentElement.nodeName)try{for(var k=e.documentElement.getElementsByTagName("diagram"),
-e=0;e<k.length;e++){var p=mxUtils.getTextContent(k[e]),t=this.stringToCells(Graph.decompress(p)),m=this.editor.graph.getBoundingBoxFromGeometry(t);I(t,new mxRectangle(0,0,m.width,m.height),a)}B=!0}catch(Q){null!=window.console&&console.log("error in drop handler:",Q)}}B||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)});null!=u&&null!=m&&(/(\.v(dx|sdx?))($|\?)/i.test(m)||/(\.vs(x|sx?))($|\?)/i.test(m))?
-this.importVisio(u,function(a){n(a,"text/xml")},null,m):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,m)&&null!=u?this.parseFile(u,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?n(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):n(c,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(g,"dragleave",
-function(a){g.style.cursor="";g.style.backgroundColor="";a.stopPropagation();a.preventDefault()}));m=m.cloneNode(!1);m.setAttribute("src",Editor.editImage);m.setAttribute("title",mxResources.get("edit"));k.insertBefore(m,k.firstChild);mxEvent.addListener(m,"click",H);mxEvent.addListener(g,"dblclick",function(a){mxEvent.getSource(a)==g&&H(a)});c=m.cloneNode(!1);c.setAttribute("src",Editor.plusImage);c.setAttribute("title",mxResources.get("add"));k.insertBefore(c,k.firstChild);mxEvent.addListener(c,
+null!=n?this.confirm(mxResources.get("allChangesLost"),null,c,mxResources.get("cancel"),mxResources.get("discardChanges")):c();mxEvent.consume(b)}}));if(a.isEditable()){var x=this.editor.graph,q=null,G=mxUtils.bind(this,function(c){this.showLibraryDialog(a.getTitle(),g,b,a,a.getMode());mxEvent.consume(c)}),D=mxUtils.bind(this,function(c){a.setModified(!0);a.isAutosave()?(null!=q&&null!=q.parentNode&&q.parentNode.removeChild(q),q=m.cloneNode(!1),q.setAttribute("src",Editor.spinImage),q.setAttribute("title",
+mxResources.get("saving")),q.style.cursor="default",q.style.marginRight="2px",q.style.marginTop="-2px",k.insertBefore(q,k.firstChild),p.style.paddingRight=18*k.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=q&&null!=q.parentNode&&(q.parentNode.removeChild(q),p.style.paddingRight=18*k.childNodes.length+"px")})):null==n&&(n=m.cloneNode(!1),n.setAttribute("src",IMAGE_PATH+"/download.png"),n.setAttribute("title",mxResources.get("save")),k.insertBefore(n,k.firstChild),
+mxEvent.addListener(n,"click",mxUtils.bind(this,function(c){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==n||a.isModified()||(p.style.paddingRight=18*k.childNodes.length+"px",n.parentNode.removeChild(n),n=null)});mxEvent.consume(c)})),p.style.paddingRight=18*k.childNodes.length+"px")}),H=mxUtils.bind(this,function(a,c,d,l){a=x.cloneCells(mxUtils.sortCells(x.model.getTopmostCells(a)));for(var e=0;e<a.length;e++){var p=x.getCellGeometry(a[e]);null!=p&&
+p.translate(-c.x,-c.y)}g.appendChild(this.sidebar.createVertexTemplateFromCells(a,c.width,c.height,l||"",!0,!1,!1));a={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:c.width,h:c.height};null!=l&&(a.title=l);b.push(a);D(d);null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)}),J=mxUtils.bind(this,function(a){if(x.isSelectionEmpty())x.getRubberband().isActive()?(x.getRubberband().execute(a),x.getRubberband().reset()):this.showError(mxResources.get("error"),
+mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var b=x.getSelectionCells(),c=x.view.getBounds(b),d=x.view.scale;c.x/=d;c.y/=d;c.width/=d;c.height/=d;c.x-=x.view.translate.x;c.y-=x.view.translate.y;H(b,c)}mxEvent.consume(a)});mxEvent.addGestureListeners(g,function(){},mxUtils.bind(this,function(a){x.isMouseDown&&null!=x.panningManager&&null!=x.graphHandler.shape&&(x.graphHandler.shape.node.style.visibility="hidden",g.style.backgroundColor="#f1f3f4",g.style.cursor="copy",x.panningManager.stop(),
+x.autoScroll=!1,null!=x.graphHandler.guide&&x.graphHandler.guide.setVisible(!1),null!=x.graphHandler.hint&&(x.graphHandler.hint.style.visibility="hidden"),mxEvent.consume(a))}),mxUtils.bind(this,function(a){x.isMouseDown&&null!=x.panningManager&&null!=x.graphHandler&&(g.style.backgroundColor="",g.style.cursor="default",this.sidebar.showTooltips=!0,x.panningManager.stop(),x.graphHandler.reset(),x.isMouseDown=!1,x.autoScroll=!0,J(a),mxEvent.consume(a))}));mxEvent.addListener(g,"mouseleave",mxUtils.bind(this,
+function(a){x.isMouseDown&&null!=x.graphHandler.shape&&(x.graphHandler.shape.node.style.visibility="visible",g.style.backgroundColor="",g.style.cursor="",x.autoScroll=!0,null!=x.graphHandler.guide&&x.graphHandler.guide.setVisible(!0),null!=x.graphHandler.hint&&(x.graphHandler.hint.style.visibility="visible"))}));Graph.fileSupport&&(mxEvent.addListener(g,"dragover",mxUtils.bind(this,function(a){g.style.backgroundColor="#f1f3f4";a.dataTransfer.dropEffect="copy";g.style.cursor="copy";this.sidebar.hideTooltip();
+a.stopPropagation();a.preventDefault()})),mxEvent.addListener(g,"drop",mxUtils.bind(this,function(a){g.style.cursor="";g.style.backgroundColor="";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(c,d,e,p,k,t,m,z,u){if(null!=c&&"image/"==d.substring(0,6))c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;image="+this.convertDataUri(c),c=[new mxCell("",new mxGeometry(0,0,k,t),c)],c[0].vertex=!0,H(c,new mxRectangle(0,
+0,k,t),a,mxEvent.isAltDown(a)?null:m.substring(0,m.lastIndexOf(".")).replace(/_/g," ")),null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null);else{var n=!1,B=mxUtils.bind(this,function(c,d){if(null!=c&&"text/xml"==d){var e=mxUtils.parseXml(c);if("mxlibrary"==e.documentElement.nodeName)try{var p=JSON.parse(mxUtils.getTextContent(e.documentElement));l(p,g);b=b.concat(p);D(a);this.spinner.stop();n=!0}catch(Q){}else if("mxfile"==e.documentElement.nodeName)try{for(var k=e.documentElement.getElementsByTagName("diagram"),
+e=0;e<k.length;e++){var p=mxUtils.getTextContent(k[e]),t=this.stringToCells(Graph.decompress(p)),m=this.editor.graph.getBoundingBoxFromGeometry(t);H(t,new mxRectangle(0,0,m.width,m.height),a)}n=!0}catch(Q){null!=window.console&&console.log("error in drop handler:",Q)}}n||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=f&&null!=f.parentNode&&0<b.length&&(f.parentNode.removeChild(f),f=null)});null!=u&&null!=m&&(/(\.v(dx|sdx?))($|\?)/i.test(m)||/(\.vs(x|sx?))($|\?)/i.test(m))?
+this.importVisio(u,function(a){B(a,"text/xml")},null,m):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,m)&&null!=u?this.parseFile(u,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?B(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):B(c,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(g,"dragleave",
+function(a){g.style.cursor="";g.style.backgroundColor="";a.stopPropagation();a.preventDefault()}));m=m.cloneNode(!1);m.setAttribute("src",Editor.editImage);m.setAttribute("title",mxResources.get("edit"));k.insertBefore(m,k.firstChild);mxEvent.addListener(m,"click",G);mxEvent.addListener(g,"dblclick",function(a){mxEvent.getSource(a)==g&&G(a)});c=m.cloneNode(!1);c.setAttribute("src",Editor.plusImage);c.setAttribute("title",mxResources.get("add"));k.insertBefore(c,k.firstChild);mxEvent.addListener(c,
 "click",J);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(c=document.createElement("span"),c.setAttribute("title",mxResources.get("help")),c.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(c,"?"),mxEvent.addGestureListeners(c,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),k.insertBefore(c,k.firstChild))}p.appendChild(k);p.style.paddingRight=18*k.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=
 function(a,b){for(var c=0;c<a.length;c++){var d=a[c],f=d.data;if(null!=f){var f=this.convertDataUri(f),e="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==d.aspect&&(e+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(e+"image="+f,d.w,d.h,"",d.title||"",!1,!1,!0))}else null!=d.xml&&(f=this.stringToCells(Graph.decompress(d.xml)),0<f.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(f,d.w,d.h,d.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=
 function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.offline||EditorUi.isElectronApp||("1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64),EditorUi.prototype.createFooter=function(){return document.getElementById("geFooter")});EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS?
@@ -8559,7 +8562,7 @@ c.textarea.style.width="600px";c.textarea.style.height="380px";this.showDialog(c
 b),c.close());else{var f=document.createElement("a"),l=!mxClient.IS_SF&&0>navigator.userAgent.indexOf("PaleMoon/")&&"undefined"!==typeof f.download;if(mxClient.IS_GC)var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),l=65==(g?parseInt(g[2],10):!1)?!1:l;if(l||this.isOffline()){f.href=URL.createObjectURL(d?this.base64ToBlob(a,c):new Blob([a],{type:c}));l?f.download=b:f.setAttribute("target","_blank");document.body.appendChild(f);try{window.setTimeout(function(){URL.revokeObjectURL(f.href)},
 0),f.click(),f.parentNode.removeChild(f)}catch(C){}}else this.createEchoRequest(a,b,c,d,e).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,d,e,g){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=e?"&format="+e:"")+(null!=g?"&base64="+g:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(d?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var c=atob(a),d=c.length,f=Math.ceil(d/1024),e=Array(f),
 l=0;l<f;++l){for(var g=1024*l,k=Math.min(g+1024,d),m=Array(k-g),n=0;g<k;++n,++g)m[n]=c[g].charCodeAt(0);e[l]=new Uint8Array(m)}return new Blob(e,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,d,e,g,k){g=null!=g?g:!1;k=null!=k?k:"vsdx"!=e&&(!mxClient.IS_IOS||!navigator.standalone);e=this.getServiceCount(g);b=new CreateDialog(this,b,mxUtils.bind(this,function(b,f){try{if("_blank"==f)if(null==c||"image/"!=c.substring(0,6)||"image/svg"==c.substring(0,9)&&!mxClient.IS_SVG){var e=window.open("about:blank");
-null==e?mxUtils.popup(a,!0):(e.document.write(mxUtils.htmlEntities(a,!1)),e.document.close())}else this.openInNewWindow(a,c,d);else f==App.MODE_DEVICE||"download"==f?this.doSaveLocalFile(a,b,c,d):null!=b&&0<b.length&&this.pickFolder(f,mxUtils.bind(this,function(e){try{this.exportFile(a,b,c,d,f,e)}catch(D){this.handleError(D)}}))}catch(B){this.handleError(B)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,g,k,null,1<e,4<e&&(!g||6>e)?3:4,
+null==e?mxUtils.popup(a,!0):(e.document.write(mxUtils.htmlEntities(a,!1)),e.document.close())}else this.openInNewWindow(a,c,d);else f==App.MODE_DEVICE||"download"==f?this.doSaveLocalFile(a,b,c,d):null!=b&&0<b.length&&this.pickFolder(f,mxUtils.bind(this,function(e){try{this.exportFile(a,b,c,d,f,e)}catch(F){this.handleError(F)}}))}catch(B){this.handleError(B)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,g,k,null,1<e,4<e&&(!g||6>e)?3:4,
 a,c,d);this.showDialog(b.container,420,1==e?160:4<e?390:270,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,c){if(mxClient.IS_GC||mxClient.IS_EDGE||11==document.documentMode||10==document.documentMode){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(a,!0):("image/svg+xml"==b?d.document.write("<html>"+a+"</html>"):d.document.write('<html><img src="data:'+b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))+'"/></html>'),d.document.close())}else d=window.open("data:"+
 b+(c?";base64,"+a:";charset=utf8,"+encodeURIComponent(a))),null!=d&&null!=d.document||mxUtils.popup(a,!0)};var b=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var c=a(mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",b);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=
 null)});if(null!=this.exportDialog)b.apply(this);else{this.exportDialog=document.createElement("div");var d=c.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";
@@ -8575,38 +8578,38 @@ this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("e
 f.style.marginRight="8px";f.style.marginTop="16px";f.setAttribute("type",k?"radio":"checkbox");k="geCheckbox-"+Editor.guid();f.id=k;null!=m&&f.setAttribute("name",m);c&&(f.setAttribute("checked","checked"),f.defaultChecked=!0);d&&f.setAttribute("disabled","disabled");g&&(a.appendChild(f),c=document.createElement("label"),mxUtils.write(c,b),c.setAttribute("for",k),a.appendChild(c),e||mxUtils.br(a));return f};EditorUi.prototype.addEditButton=function(a,b){var c=this.addCheckbox(a,mxResources.get("edit")+
 ":",!0,null,!0);c.style.marginLeft="24px";var d=this.getCurrentFile(),f="";null!=d&&d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var e=document.createElement("select");e.style.width="120px";e.style.marginLeft="8px";e.style.marginRight="10px";e.className="geBtn";d=document.createElement("option");d.setAttribute("value","blank");mxUtils.write(d,mxResources.get("makeCopy"));e.appendChild(d);d=document.createElement("option");d.setAttribute("value","custom");mxUtils.write(d,
 mxResources.get("custom")+"...");e.appendChild(d);a.appendChild(e);mxEvent.addListener(e,"change",mxUtils.bind(this,function(){if("custom"==e.value){var a=new FilenameDialog(this,f,mxResources.get("ok"),function(a){null!=a?f=a:e.value="blank"},mxResources.get("url"),null,null,null,null,function(){e.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(c,"change",mxUtils.bind(this,function(){c.checked&&(null==b||b.checked)?e.removeAttribute("disabled"):e.setAttribute("disabled",
-"disabled")}));mxUtils.br(a);return{getLink:function(){return c.checked?"blank"===e.value?"_blank":f:null},getEditInput:function(){return c},getEditSelect:function(){return e}}};EditorUi.prototype.addLinkSection=function(a,b){function c(){l.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=e&&e!=mxConstants.NONE?"border:1px solid black;background-color:"+e:"background-position:center center;background-repeat:no-repeat;background-image:url('"+Dialog.prototype.closeImage+
+"disabled")}));mxUtils.br(a);return{getLink:function(){return c.checked?"blank"===e.value?"_blank":f:null},getEditInput:function(){return c},getEditSelect:function(){return e}}};EditorUi.prototype.addLinkSection=function(a,b){function c(){g.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=e&&e!=mxConstants.NONE?"border:1px solid black;background-color:"+e:"background-position:center center;background-repeat:no-repeat;background-image:url('"+Dialog.prototype.closeImage+
 "')")+';"></div>'}mxUtils.write(a,mxResources.get("links")+":");var d=document.createElement("select");d.style.width="100px";d.style.marginLeft="8px";d.style.marginRight="10px";d.className="geBtn";var f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));d.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));d.appendChild(f);f=document.createElement("option");
-f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));d.appendChild(f);b&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),d.appendChild(f));a.appendChild(d);mxUtils.write(a,mxResources.get("borderColor")+":");var e="#0000ff",l=null,l=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(e||"none",function(a){e=a;c()});mxEvent.consume(a)}));c();l.style.padding=
-mxClient.IS_FF?"4px 2px 4px 2px":"4px";l.style.marginLeft="4px";l.style.height="22px";l.style.width="22px";l.style.position="relative";l.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";l.className="geColorBtn";a.appendChild(l);mxUtils.br(a);return{getColor:function(){return e},getTarget:function(){return d.value},focus:function(){d.focus()}}};EditorUi.prototype.createLink=function(a,b,c,d,e,g,k,m){var f=this.getCurrentFile(),l=[];d&&(l.push("lightbox=1"),"auto"!=a&&l.push("target="+
+f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));d.appendChild(f);b&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),d.appendChild(f));a.appendChild(d);mxUtils.write(a,mxResources.get("borderColor")+":");var e="#0000ff",g=null,g=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(e||"none",function(a){e=a;c()});mxEvent.consume(a)}));c();g.style.padding=
+mxClient.IS_FF?"4px 2px 4px 2px":"4px";g.style.marginLeft="4px";g.style.height="22px";g.style.width="22px";g.style.position="relative";g.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";g.className="geColorBtn";a.appendChild(g);mxUtils.br(a);return{getColor:function(){return e},getTarget:function(){return d.value},focus:function(){d.focus()}}};EditorUi.prototype.createLink=function(a,b,c,d,e,g,k,m){var f=this.getCurrentFile(),l=[];d&&(l.push("lightbox=1"),"auto"!=a&&l.push("target="+
 a),null!=b&&b!=mxConstants.NONE&&l.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=e&&0<e.length&&l.push("edit="+encodeURIComponent(e)),g&&l.push("layers=1"),this.editor.graph.foldingEnabled&&l.push("nav=1"));c&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&l.push("page-id="+this.currentPage.getId());a=!0;null!=k?c="#U"+encodeURIComponent(k):(f=this.getCurrentFile(),m||null==f||f.constructor!=window.DriveFile?c="#R"+encodeURIComponent(c?this.getFileData(!0,
 null,null,null,null,null,null,!0):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(c="#"+f.getHash(),a=!1));a&&null!=f&&null!=f.getTitle()&&f.getTitle()!=this.defaultFilename&&l.push("title="+encodeURIComponent(f.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<l.length?"?"+l.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,d,e,g,k,m,n,z,B){this.getBasenames();
 var f={};""!=e&&e!=mxConstants.NONE&&(f.highlight=e);"auto"!==d&&(f.target=d);n||(f.lightbox=!1);f.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(f.zoom=c/100);c=[];k&&(c.push("pages"),f.resize=!0,null!=this.pages&&null!=this.currentPage&&(f.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),f.resize=!0);m&&c.push("layers");0<c.length&&(n&&c.push("lightbox"),f.toolbar=c.join(" "));null!=z&&0<z.length&&(f.edit=z);null!=a?f.url=a:f.xml=this.getFileData(!0,
 null,null,null,null,!k);b='<div class="mxgraph" style="'+(g?"max-width:100%;":"")+(""!=c?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(f))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";B(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+
-"/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,c,d){var f=document.createElement("div");f.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("html"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";f.appendChild(e);var l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var g=document.createElement("input");g.style.cssText=
-"margin-right:8px;margin-top:8px;margin-bottom:8px;";g.setAttribute("value","url");g.setAttribute("type","radio");g.setAttribute("name","type-embedhtmldialog");e=g.cloneNode(!0);e.setAttribute("value","copy");l.appendChild(e);var k=document.createElement("span");mxUtils.write(k,mxResources.get("includeCopyOfMyDiagram"));l.appendChild(k);mxUtils.br(l);l.appendChild(g);k=document.createElement("span");mxUtils.write(k,mxResources.get("publicDiagramUrl"));l.appendChild(k);var p=this.getCurrentFile();
-null==c&&null!=p&&p.constructor==window.DriveFile&&(k=document.createElement("a"),k.style.paddingLeft="12px",k.style.color="gray",k.setAttribute("href","javascript:void(0);"),mxUtils.write(k,mxResources.get("share")),l.appendChild(k),mxEvent.addListener(k,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(p.getId())})));e.setAttribute("checked","checked");null==c&&g.setAttribute("disabled","disabled");f.appendChild(l);var m=this.addLinkSection(f),n=this.addCheckbox(f,
-mxResources.get("zoom"),!0,null,!0);mxUtils.write(f,":");var u=document.createElement("input");u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.style.marginRight="12px";u.value="100%";f.appendChild(u);var q=this.addCheckbox(f,mxResources.get("fit"),!0),l=null!=this.pages&&1<this.pages.length,H=H=this.addCheckbox(f,mxResources.get("allPages"),l,!l),E=this.addCheckbox(f,mxResources.get("layers"),!0),I=this.addCheckbox(f,mxResources.get("lightbox"),
-!0),J=this.addEditButton(f,I),F=J.getEditInput();F.style.marginBottom="16px";mxEvent.addListener(I,"change",function(){I.checked?F.removeAttribute("disabled"):F.setAttribute("disabled","disabled");F.checked&&I.checked?J.getEditSelect().removeAttribute("disabled"):J.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,f,mxUtils.bind(this,function(){d(g.checked?c:null,n.checked,u.value,m.getTarget(),m.getColor(),q.checked,H.checked,E.checked,I.checked,J.getLink())}),null,a,
+"/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,c,d){var f=document.createElement("div");f.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("html"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";f.appendChild(e);var g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var l=document.createElement("input");l.style.cssText=
+"margin-right:8px;margin-top:8px;margin-bottom:8px;";l.setAttribute("value","url");l.setAttribute("type","radio");l.setAttribute("name","type-embedhtmldialog");e=l.cloneNode(!0);e.setAttribute("value","copy");g.appendChild(e);var k=document.createElement("span");mxUtils.write(k,mxResources.get("includeCopyOfMyDiagram"));g.appendChild(k);mxUtils.br(g);g.appendChild(l);k=document.createElement("span");mxUtils.write(k,mxResources.get("publicDiagramUrl"));g.appendChild(k);var p=this.getCurrentFile();
+null==c&&null!=p&&p.constructor==window.DriveFile&&(k=document.createElement("a"),k.style.paddingLeft="12px",k.style.color="gray",k.setAttribute("href","javascript:void(0);"),mxUtils.write(k,mxResources.get("share")),g.appendChild(k),mxEvent.addListener(k,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(p.getId())})));e.setAttribute("checked","checked");null==c&&l.setAttribute("disabled","disabled");f.appendChild(g);var m=this.addLinkSection(f),n=this.addCheckbox(f,
+mxResources.get("zoom"),!0,null,!0);mxUtils.write(f,":");var u=document.createElement("input");u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.style.marginRight="12px";u.value="100%";f.appendChild(u);var q=this.addCheckbox(f,mxResources.get("fit"),!0),g=null!=this.pages&&1<this.pages.length,G=G=this.addCheckbox(f,mxResources.get("allPages"),g,!g),D=this.addCheckbox(f,mxResources.get("layers"),!0),H=this.addCheckbox(f,mxResources.get("lightbox"),
+!0),J=this.addEditButton(f,H),E=J.getEditInput();E.style.marginBottom="16px";mxEvent.addListener(H,"change",function(){H.checked?E.removeAttribute("disabled"):E.setAttribute("disabled","disabled");E.checked&&H.checked?J.getEditSelect().removeAttribute("disabled"):J.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,f,mxUtils.bind(this,function(){d(l.checked?c:null,n.checked,u.value,m.getTarget(),m.getColor(),q.checked,G.checked,D.checked,H.checked,J.getLink())}),null,a,
 b);this.showDialog(a.container,340,384,!0,!0);e.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,d,e,g){var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,a||mxResources.get("link"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";f.appendChild(l);var k=this.getCurrentFile(),l="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=k&&k.constructor==window.DriveFile&&
 !b){a=80;var l="https://desk.draw.io/support/solutions/articles/16000039384",p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var m=document.createElement("div");m.style.whiteSpace="normal";mxUtils.write(m,mxResources.get("linkAccountRequired"));p.appendChild(m);m=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(k.getId())}));m.style.marginTop=
 "12px";m.className="geBtn";p.appendChild(m);f.appendChild(p);m=document.createElement("a");m.style.paddingLeft="12px";m.style.color="gray";m.style.fontSize="11px";m.setAttribute("href","javascript:void(0);");mxUtils.write(m,mxResources.get("check"));p.appendChild(m);mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,
 mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var t=null,n=null;if(null!=c||null!=d)a+=30,mxUtils.write(f,mxResources.get("width")+":"),t=document.createElement("input"),t.setAttribute("type","text"),t.style.marginRight="16px",t.style.width="50px",t.style.marginLeft="6px",t.style.marginRight="16px",t.style.marginBottom="10px",t.value="100%",f.appendChild(t),mxUtils.write(f,mxResources.get("height")+":"),
-n=document.createElement("input"),n.setAttribute("type","text"),n.style.width="50px",n.style.marginLeft="6px",n.style.marginBottom="10px",n.value=d+"px",f.appendChild(n),mxUtils.br(f);var u=this.addLinkSection(f,g);c=null!=this.pages&&1<this.pages.length;var q=null;if(null==k||k.constructor!=window.DriveFile||b)q=this.addCheckbox(f,mxResources.get("allPages"),c,!c);var v=this.addCheckbox(f,mxResources.get("lightbox"),!0),I=this.addEditButton(f,v),J=I.getEditInput(),F=this.addCheckbox(f,mxResources.get("layers"),
-!0);F.style.marginLeft=J.style.marginLeft;F.style.marginBottom="16px";F.style.marginTop="8px";mxEvent.addListener(v,"change",function(){v.checked?(F.removeAttribute("disabled"),J.removeAttribute("disabled")):(F.setAttribute("disabled","disabled"),J.setAttribute("disabled","disabled"));J.checked&&v.checked?I.getEditSelect().removeAttribute("disabled"):I.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,f,mxUtils.bind(this,function(){e(u.getTarget(),u.getColor(),null==q?
-!0:q.checked,v.checked,I.getLink(),F.checked,null!=t?t.value:null,null!=n?n.value:null)}),null,mxResources.get("create"),l);this.showDialog(b.container,340,254+a,!0,!0);null!=t?(t.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?t.select():document.execCommand("selectAll",!1,null)):u.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,c,d,e){var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,
-mxResources.get("image"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(e?"10":"4")+"px";f.appendChild(l);if(e){mxUtils.write(f,mxResources.get("zoom")+":");var g=document.createElement("input");g.setAttribute("type","text");g.style.marginRight="16px";g.style.width="60px";g.style.marginLeft="4px";g.style.marginRight="12px";g.value=this.lastExportZoom||"100%";f.appendChild(g);mxUtils.write(f,mxResources.get("borderWidth")+":");var k=document.createElement("input");k.setAttribute("type",
-"text");k.style.marginRight="16px";k.style.width="60px";k.style.marginLeft="4px";k.value=this.lastExportBorder||"0";f.appendChild(k);mxUtils.br(f)}var p=this.addCheckbox(f,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),m=d?null:this.addCheckbox(f,mxResources.get("includeCopyOfMyDiagram"),!0),l=this.editor.graph,n=d?null:this.addCheckbox(f,mxResources.get("transparentBackground"),l.background==mxConstants.NONE||null==l.background);null!=n&&(n.style.marginBottom="16px");a=
-new CustomDialog(this,f,mxUtils.bind(this,function(){var a=parseInt(g.value)/100||1,b=parseInt(k.value)||0;c(!p.checked,null!=m?m.checked:!1,null!=n?n.checked:!1,a,b)}),null,a,b);this.showDialog(a.container,300,(e?25:0)+(d?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,c,d,e,g,k,m){k=null!=k?k:!0;var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=this.editor.graph,p="jpeg"==m?196:300,t=document.createElement("h3");mxUtils.write(t,a);t.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";
+n=document.createElement("input"),n.setAttribute("type","text"),n.style.width="50px",n.style.marginLeft="6px",n.style.marginBottom="10px",n.value=d+"px",f.appendChild(n),mxUtils.br(f);var u=this.addLinkSection(f,g);c=null!=this.pages&&1<this.pages.length;var q=null;if(null==k||k.constructor!=window.DriveFile||b)q=this.addCheckbox(f,mxResources.get("allPages"),c,!c);var v=this.addCheckbox(f,mxResources.get("lightbox"),!0),H=this.addEditButton(f,v),J=H.getEditInput(),E=this.addCheckbox(f,mxResources.get("layers"),
+!0);E.style.marginLeft=J.style.marginLeft;E.style.marginBottom="16px";E.style.marginTop="8px";mxEvent.addListener(v,"change",function(){v.checked?(E.removeAttribute("disabled"),J.removeAttribute("disabled")):(E.setAttribute("disabled","disabled"),J.setAttribute("disabled","disabled"));J.checked&&v.checked?H.getEditSelect().removeAttribute("disabled"):H.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,f,mxUtils.bind(this,function(){e(u.getTarget(),u.getColor(),null==q?
+!0:q.checked,v.checked,H.getLink(),E.checked,null!=t?t.value:null,null!=n?n.value:null)}),null,mxResources.get("create"),l);this.showDialog(b.container,340,254+a,!0,!0);null!=t?(t.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?t.select():document.execCommand("selectAll",!1,null)):u.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,c,d,e){var f=document.createElement("div");f.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,
+mxResources.get("image"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(e?"10":"4")+"px";f.appendChild(g);if(e){mxUtils.write(f,mxResources.get("zoom")+":");var l=document.createElement("input");l.setAttribute("type","text");l.style.marginRight="16px";l.style.width="60px";l.style.marginLeft="4px";l.style.marginRight="12px";l.value=this.lastExportZoom||"100%";f.appendChild(l);mxUtils.write(f,mxResources.get("borderWidth")+":");var k=document.createElement("input");k.setAttribute("type",
+"text");k.style.marginRight="16px";k.style.width="60px";k.style.marginLeft="4px";k.value=this.lastExportBorder||"0";f.appendChild(k);mxUtils.br(f)}var p=this.addCheckbox(f,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),m=d?null:this.addCheckbox(f,mxResources.get("includeCopyOfMyDiagram"),!0),g=this.editor.graph,n=d?null:this.addCheckbox(f,mxResources.get("transparentBackground"),g.background==mxConstants.NONE||null==g.background);null!=n&&(n.style.marginBottom="16px");a=
+new CustomDialog(this,f,mxUtils.bind(this,function(){var a=parseInt(l.value)/100||1,b=parseInt(k.value)||0;c(!p.checked,null!=m?m.checked:!1,null!=n?n.checked:!1,a,b)}),null,a,b);this.showDialog(a.container,300,(e?25:0)+(d?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(a,b,c,d,e,g,k,m){k=null!=k?k:!0;var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=this.editor.graph,p="jpeg"==m?196:300,t=document.createElement("h3");mxUtils.write(t,a);t.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";
 f.appendChild(t);mxUtils.write(f,mxResources.get("zoom")+":");var n=document.createElement("input");n.setAttribute("type","text");n.style.marginRight="16px";n.style.width="60px";n.style.marginLeft="4px";n.style.marginRight="12px";n.value=this.lastExportZoom||"100%";f.appendChild(n);mxUtils.write(f,mxResources.get("borderWidth")+":");var u=document.createElement("input");u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.value=this.lastExportBorder||
 "0";f.appendChild(u);mxUtils.br(f);var q=this.addCheckbox(f,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=m),v=this.addCheckbox(f,mxResources.get("selectionOnly"),!1,l.isSelectionEmpty()),y=document.createElement("input");y.style.marginTop="16px";y.style.marginRight="8px";y.style.marginLeft="24px";y.setAttribute("disabled","disabled");y.setAttribute("type","checkbox");g&&(f.appendChild(y),mxUtils.write(f,mxResources.get("crop")),mxUtils.br(f),p+=26,mxEvent.addListener(v,"change",function(){v.checked?
-y.removeAttribute("disabled"):y.setAttribute("disabled","disabled")}));l.isSelectionEmpty()||(y.setAttribute("checked","checked"),y.defaultChecked=!0);var A=this.addCheckbox(f,mxResources.get("shadow"),l.shadowVisible),F=document.createElement("input");F.style.marginTop="16px";F.style.marginRight="8px";F.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||F.setAttribute("disabled","disabled");b&&(f.appendChild(F),mxUtils.write(f,mxResources.get("embedImages")),mxUtils.br(f),p+=
+y.removeAttribute("disabled"):y.setAttribute("disabled","disabled")}));l.isSelectionEmpty()||(y.setAttribute("checked","checked"),y.defaultChecked=!0);var A=this.addCheckbox(f,mxResources.get("shadow"),l.shadowVisible),E=document.createElement("input");E.style.marginTop="16px";E.style.marginRight="8px";E.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||E.setAttribute("disabled","disabled");b&&(f.appendChild(E),mxUtils.write(f,mxResources.get("embedImages")),mxUtils.br(f),p+=
 26);var M=this.addCheckbox(f,mxResources.get("includeCopyOfMyDiagram"),k,null,null,"jpeg"!=m),K=null!=this.pages&&1<this.pages.length,S=this.addCheckbox(f,K?mxResources.get("allPages"):"",K,!K,null,"jpeg"!=m);S.style.marginLeft="24px";S.style.marginBottom="16px";K||(S.style.display="none");mxEvent.addListener(M,"change",function(){M.checked&&K?S.removeAttribute("disabled"):S.setAttribute("disabled","disabled")});k&&K||S.setAttribute("disabled","disabled");var L=document.createElement("select");L.style.maxWidth=
 "260px";L.style.marginLeft="8px";L.style.marginRight="10px";L.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));L.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));L.appendChild(a);a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));L.appendChild(a);"svg"==m&&(mxUtils.write(f,
-mxResources.get("links")+":"),f.appendChild(L),mxUtils.br(f),mxUtils.br(f),p+=26);c=new CustomDialog(this,f,mxUtils.bind(this,function(){this.lastExportBorder=u.value;this.lastExportZoom=n.value;e(n.value,q.checked,!v.checked,A.checked,M.checked,F.checked,u.value,y.checked,!S.checked,L.value)}),null,c,d);this.showDialog(c.container,340,p,!0,!0,null,null,null,null,!0);n.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?n.select():document.execCommand("selectAll",
-!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,c,d,e){var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=this.editor.graph;if(null!=b){var g=document.createElement("h3");mxUtils.write(g,b);g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";f.appendChild(g)}var k=this.addCheckbox(f,mxResources.get("fit"),!0),p=this.addCheckbox(f,mxResources.get("shadow"),l.shadowVisible&&d,!d),m=this.addCheckbox(f,c),n=this.addCheckbox(f,mxResources.get("lightbox"),
-!0),u=this.addEditButton(f,n),q=u.getEditInput(),v=1<l.model.getChildCount(l.model.getRoot()),E=this.addCheckbox(f,mxResources.get("layers"),v,!v);E.style.marginLeft=q.style.marginLeft;E.style.marginBottom="12px";E.style.marginTop="8px";mxEvent.addListener(n,"change",function(){n.checked?(v&&E.removeAttribute("disabled"),q.removeAttribute("disabled")):(E.setAttribute("disabled","disabled"),q.setAttribute("disabled","disabled"));q.checked&&n.checked?u.getEditSelect().removeAttribute("disabled"):u.getEditSelect().setAttribute("disabled",
-"disabled")});b=new CustomDialog(this,f,mxUtils.bind(this,function(){a(k.checked,p.checked,m.checked,n.checked,u.getLink(),E.checked)}),null,mxResources.get("embed"),e);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,d,e,g,k,m){function f(b){var f=" ",p="";d&&(f=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
+mxResources.get("links")+":"),f.appendChild(L),mxUtils.br(f),mxUtils.br(f),p+=26);c=new CustomDialog(this,f,mxUtils.bind(this,function(){this.lastExportBorder=u.value;this.lastExportZoom=n.value;e(n.value,q.checked,!v.checked,A.checked,M.checked,E.checked,u.value,y.checked,!S.checked,L.value)}),null,c,d);this.showDialog(c.container,340,p,!0,!0,null,null,null,null,!0);n.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?n.select():document.execCommand("selectAll",
+!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,c,d,e){var f=document.createElement("div");f.style.whiteSpace="nowrap";var g=this.editor.graph;if(null!=b){var l=document.createElement("h3");mxUtils.write(l,b);l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";f.appendChild(l)}var k=this.addCheckbox(f,mxResources.get("fit"),!0),p=this.addCheckbox(f,mxResources.get("shadow"),g.shadowVisible&&d,!d),m=this.addCheckbox(f,c),n=this.addCheckbox(f,mxResources.get("lightbox"),
+!0),u=this.addEditButton(f,n),q=u.getEditInput(),v=1<g.model.getChildCount(g.model.getRoot()),D=this.addCheckbox(f,mxResources.get("layers"),v,!v);D.style.marginLeft=q.style.marginLeft;D.style.marginBottom="12px";D.style.marginTop="8px";mxEvent.addListener(n,"change",function(){n.checked?(v&&D.removeAttribute("disabled"),q.removeAttribute("disabled")):(D.setAttribute("disabled","disabled"),q.setAttribute("disabled","disabled"));q.checked&&n.checked?u.getEditSelect().removeAttribute("disabled"):u.getEditSelect().setAttribute("disabled",
+"disabled")});b=new CustomDialog(this,f,mxUtils.bind(this,function(){a(k.checked,p.checked,m.checked,n.checked,u.getLink(),D.checked)}),null,mxResources.get("embed"),e);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,d,e,g,k,m){function f(b){var f=" ",p="";d&&(f=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
 EditorUi.drawHost+"/?client=1&lightbox=1"+(e?"&edit=_blank":"")+(g?"&layers=1":"")+"');}})(this);\"",p+="cursor:pointer;");a&&(p+="max-width:100%;");var m="";c&&(m=' width="'+Math.round(l.width)+'" height="'+Math.round(l.height)+'"');k('<img src="'+b+'"'+m+(""!=p?' style="'+p+'"':"")+f+"/>")}var l=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=d?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");f(a)}),null,null,null,
 mxUtils.bind(this,function(a){m({message:mxResources.get("unknownError")})}),null,!0,c?2:1,null,b);else if(b=this.getFileData(!0),l.width*l.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var p="";c&&(p="&w="+Math.round(2*l.width)+"&h="+Math.round(2*l.height));var n=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(d?"1":"0")+p+"&xml="+encodeURIComponent(b));n.send(mxUtils.bind(this,function(){200<=n.getStatus()&&299>=n.getStatus()?f("data:image/png;base64,"+n.getText()):m({message:mxResources.get("unknownError")})}))}else m({message:mxResources.get("drawingTooLarge")})};
 EditorUi.prototype.createEmbedSvg=function(a,b,c,d,e,g,k){var f=this.editor.graph.getSvg(),l=f.getElementsByTagName("a");if(null!=l)for(var p=0;p<l.length;p++){var m=l[p].getAttribute("href");null!=m&&"#"==m.charAt(0)&&"_blank"==l[p].getAttribute("target")&&l[p].removeAttribute("target")}d&&f.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(f);if(c){var n=" ",t="";d&&(n="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
@@ -8618,20 +8621,20 @@ this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(t){}f
 e=d.getGlobalVariable,g=this.pages[0];d.getGlobalVariable=function(a){return"page"==a?g.getName():"pagenumber"==a?1:e.apply(this,arguments)};document.body.appendChild(d.container);d.model.setRoot(g.root)}this.exportToCanvas(mxUtils.bind(this,function(c){try{null==f&&(f=this.getFileData(!0));var e=c.toDataURL("image/png"),e=this.writeGraphModelToPng(e,"zTXt","mxGraphModel",atob(Graph.compress(f)));a(e.substring(e.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(z){null!=
 b&&b(z)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,d.shadowVisible,null,d)}catch(y){null!=b&&b(y)}};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,d,e,g,k){k=b.background;k==mxConstants.NONE&&(k=null);g=b.getSvg(k,null,null,null,null,g);b.shadowVisible&&b.addSvgShadow(g);null!=a&&g.setAttribute("content",a);null!=c&&g.setAttribute("resource",c);if(null!=e)this.convertImages(g,mxUtils.bind(this,function(a){e((d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+
 mxUtils.getXml(a))}));else return(d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(g)};EditorUi.prototype.exportImage=function(a,b,c,d,e,g,k,m,n){n=null!=n?n:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var f=this.editor.graph.isSelectionEmpty();c=null!=c?c:f;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop();
-try{this.saveCanvas(a,e?this.getFileData(!0,null,null,null,c,m):null,n)}catch(D){"Invalid image"==D.message?this.downloadFile(n):this.handleError(D)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,d,null,null,g,k)}catch(B){this.spinner.stop(),this.handleError(B)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var b=function(a){return a.replace(RegExp("^[\\s\"']+","g"),
+try{this.saveCanvas(a,e?this.getFileData(!0,null,null,null,c,m):null,n)}catch(F){"Invalid image"==F.message?this.downloadFile(n):this.handleError(F)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,d,null,null,g,k)}catch(B){this.spinner.stop(),this.handleError(B)}}};EditorUi.prototype.loadFonts=function(a){if(null!=this.editor.fontCss&&null==this.editor.resolvedFontCss){var b=function(a){return a.replace(RegExp("^[\\s\"']+","g"),
 "").replace(RegExp("[\\s\"']+$","g"),"")},c=this.editor.fontCss.split("url("),d=0,f={},e=mxUtils.bind(this,function(){if(0==d){for(var e=[c[0]],g=1;g<c.length;g++){var l=c[g].indexOf(")");e.push('url("');e.push(f[b(c[g].substring(0,l))]);e.push('"'+c[g].substring(l))}this.editor.resolvedFontCss=e.join("");a()}});if(0<c.length)for(var g=1;g<c.length;g++){var k=c[g].indexOf(")"),m=null,n=c[g].indexOf("format(",k);0<n&&(m=b(c[g].substring(n+7,c[g].indexOf(")",n))));mxUtils.bind(this,function(a){if(null==
 f[a]){f[a]=a;d++;var b="application/x-font-ttf";if("svg"==m||/(\.svg)($|\?)/i.test(a))b="image/svg+xml";else if("otf"==m||"embedded-opentype"==m||/(\.otf)($|\?)/i.test(a))b="application/x-font-opentype";else if("woff"==m||/(\.woff)($|\?)/i.test(a))b="application/font-woff";else if("woff2"==m||/(\.woff2)($|\?)/i.test(a))b="application/font-woff2";else if("eot"==m||/(\.eot)($|\?)/i.test(a))b="application/vnd.ms-fontobject";else if("sfnt"==m||/(\.sfnt)($|\?)/i.test(a))b="application/font-sfnt";var c=
-a;/^https?:\/\//.test(c)&&!this.editor.isCorsEnabledForUrl(c)&&(c=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(c,mxUtils.bind(this,function(b){f[a]=b;d--;e()}),mxUtils.bind(this,function(a){d--;e()}),!0,null,"data:"+b+";charset=utf-8;base64,")}})(b(c[g].substring(0,k)),m)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,d,e,g,k,m,n,z,q,D,x,G){g=null!=g?g:!0;D=null!=D?D:this.editor.graph;x=null!=x?x:0;var f=n?null:D.background;f==mxConstants.NONE&&(f=null);null==f&&(f=d);null==
-f&&0==n&&(f="#ffffff");this.convertImages(D.getSvg(f,null,null,G,null,null!=k?k:!0,null,null,null,z),mxUtils.bind(this,function(c){var d=new Image;d.onload=mxUtils.bind(this,function(){try{var l=document.createElement("canvas"),k=parseInt(c.getAttribute("width")),p=parseInt(c.getAttribute("height"));m=null!=m?m:1;null!=b&&(m=g?Math.min(1,Math.min(3*b/(4*p),b/k)):b/k);k=Math.ceil(m*k)+2*x;p=Math.ceil(m*p)+2*x;l.setAttribute("width",k);l.setAttribute("height",p);var n=l.getContext("2d");null!=f&&(n.beginPath(),
-n.rect(0,0,k,p),n.fillStyle=f,n.fill());n.scale(m,m);mxClient.IS_SF?window.setTimeout(function(){n.drawImage(d,x/m,x/m);a(l)},0):(n.drawImage(d,x/m,x/m),a(l))}catch(L){null!=e&&e(L)}});d.onerror=function(a){null!=e&&e(a)};try{z&&this.editor.graph.addSvgShadow(c);var l=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(D,
-c,!0,mxUtils.bind(this,function(){d.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(l)}catch(F){null!=e&&e(F)}}),c,q)};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(d){if(null!=d){var f="http://"==d.substring(0,7)||"https://"==d.substring(0,8);f&&!navigator.onLine?d=c.svgBrokenImage.src:!f||d.substring(0,a.baseUrl.length)==a.baseUrl||c.crossOriginImages&&c.editor.isCorsEnabledForUrl(d)?"chrome-extension://"!=
+a;/^https?:\/\//.test(c)&&!this.editor.isCorsEnabledForUrl(c)&&(c=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(c,mxUtils.bind(this,function(b){f[a]=b;d--;e()}),mxUtils.bind(this,function(a){d--;e()}),!0,null,"data:"+b+";charset=utf-8;base64,")}})(b(c[g].substring(0,k)),m)}}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,d,e,g,k,m,n,z,B,q,x,I){g=null!=g?g:!0;q=null!=q?q:this.editor.graph;x=null!=x?x:0;var f=n?null:q.background;f==mxConstants.NONE&&(f=null);null==f&&(f=d);null==
+f&&0==n&&(f="#ffffff");this.convertImages(q.getSvg(f,null,null,I,null,null!=k?k:!0,null,null,null,z),mxUtils.bind(this,function(c){var d=new Image;d.onload=mxUtils.bind(this,function(){try{var l=document.createElement("canvas"),k=parseInt(c.getAttribute("width")),p=parseInt(c.getAttribute("height"));m=null!=m?m:1;null!=b&&(m=g?Math.min(1,Math.min(3*b/(4*p),b/k)):b/k);k=Math.ceil(m*k)+2*x;p=Math.ceil(m*p)+2*x;l.setAttribute("width",k);l.setAttribute("height",p);var n=l.getContext("2d");null!=f&&(n.beginPath(),
+n.rect(0,0,k,p),n.fillStyle=f,n.fill());n.scale(m,m);mxClient.IS_SF?window.setTimeout(function(){n.drawImage(d,x/m,x/m);a(l)},0):(n.drawImage(d,x/m,x/m),a(l))}catch(L){null!=e&&e(L)}});d.onerror=function(a){null!=e&&e(a)};try{z&&this.editor.graph.addSvgShadow(c);var l=mxUtils.bind(this,function(){if(null!=this.editor.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.editor.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}this.convertMath(q,
+c,!0,mxUtils.bind(this,function(){d.src=this.createSvgDataUri(mxUtils.getXml(c))}))});this.loadFonts(l)}catch(E){null!=e&&e(E)}}),c,B)};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(d){if(null!=d){var f="http://"==d.substring(0,7)||"https://"==d.substring(0,8);f&&!navigator.onLine?d=c.svgBrokenImage.src:!f||d.substring(0,a.baseUrl.length)==a.baseUrl||c.crossOriginImages&&c.editor.isCorsEnabledForUrl(d)?"chrome-extension://"!=
 d.substring(0,19)&&(d=b.apply(this,arguments)):d=PROXY_URL+"?url="+encodeURIComponent(d)}return d};return a};EditorUi.prototype.convertImages=function(a,b,c,d){null==d&&(d=this.createImageUrlConverter());var f=0,e=c||{};c=mxUtils.bind(this,function(c,g){for(var l=a.getElementsByTagName(c),k=0;k<l.length;k++)mxUtils.bind(this,function(c){try{if(null!=c){var l=d.convert(c.getAttribute(g));if(null!=l&&"data:"!=l.substring(0,5)){var k=e[l];null==k?(f++,this.convertImageToDataUri(l,function(d){null!=d&&
-(e[l]=d,c.setAttribute(g,d));f--;0==f&&b(a)})):c.setAttribute(g,k)}else null!=l&&c.setAttribute(g,l)}}catch(G){}})(l[k])});c("image","xlink:href");c("img","src");0==f&&b(a)};EditorUi.prototype.loadUrl=function(a,b,c,d,e,g,k){try{var f=!k&&(d||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a));e=null!=e?e:!0;var l=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var d=a.getText();if(f){if((9==
+(e[l]=d,c.setAttribute(g,d));f--;0==f&&b(a)})):c.setAttribute(g,k)}else null!=l&&c.setAttribute(g,l)}}catch(I){}})(l[k])});c("image","xlink:href");c("img","src");0==f&&b(a)};EditorUi.prototype.loadUrl=function(a,b,c,d,e,g,k){try{var f=!k&&(d||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a));e=null!=e?e:!0;var l=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var d=a.getText();if(f){if((9==
 document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var d=Array(a.length),e=0;e<a.length;e++)d[e]=String.fromCharCode(a[e]);d=d.join("")}g=null!=g?g:"data:image/png;base64,";d=g+this.base64Encode(d)}b(d)}}else null!=c&&c({message:mxResources.get("error")+" "+a.getStatus()},a)}),function(a){null!=c&&c({message:mxResources.get("error")+" "+a.getStatus()})},f,this.timeout,function(){e&&null!=
 c&&c({code:App.ERROR_TIMEOUT,retry:l})})});l()}catch(z){null!=c&&c(z)}};EditorUi.prototype.isCorsEnabledForUrl=function(a){return this.editor.isCorsEnabledForUrl(a)};EditorUi.prototype.convertImageToDataUri=function(a,b){try{var c=!0,d=window.setTimeout(mxUtils.bind(this,function(){c=!1;b(this.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){window.clearTimeout(d);c&&b(this.createSvgDataUri(a.getText()))}),function(){window.clearTimeout(d);c&&
 b(this.svgBrokenImage.src)});else{var f=new Image,e=this;this.crossOriginImages&&(f.crossOrigin="anonymous");f.onload=function(){window.clearTimeout(d);if(c)try{var a=document.createElement("canvas"),g=a.getContext("2d");a.height=f.height;a.width=f.width;g.drawImage(f,0,0);b(a.toDataURL())}catch(C){b(e.svgBrokenImage.src)}};f.onerror=function(){window.clearTimeout(d);c&&b(e.svgBrokenImage.src)};f.src=a}}catch(A){b(this.svgBrokenImage.src)}};EditorUi.prototype.importXml=function(a,b,c,d,e){b=null!=
 b?b:0;c=null!=c?c:0;var f=[];try{var g=this.editor.graph;if(null!=a&&0<a.length){g.model.beginUpdate();try{var l=mxUtils.parseXml(a),k=this.editor.extractGraphModel(l.documentElement,null!=this.pages);if(null!=k&&"mxfile"==k.nodeName&&null!=this.pages){var p=k.getElementsByTagName("diagram");if(1==p.length)k=mxUtils.parseXml(Graph.decompress(mxUtils.getTextContent(p[0]))).documentElement;else if(1<p.length){a={};var l=[],m=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(k=mxUtils.parseXml(Graph.decompress(mxUtils.getTextContent(p[0]))).documentElement,
-d=!1,m=1);for(;m<p.length;m++){var n=p[m].getAttribute("id");p[m].removeAttribute("id");var q=this.updatePageRoot(new DiagramPage(p[m]));a[n]=p[m].getAttribute("id");var u=this.pages.length;null==q.getName()&&q.setName(mxResources.get("pageWithNumber",[u+1]));g.model.execute(new ChangePage(this,q,q,u,!0));l.push(q)}this.updatePageLinks(a,l)}}null!=k&&"mxGraphModel"===k.nodeName&&(f=g.importGraphModel(k,b,c,d))}finally{g.model.endUpdate()}}}catch(H){if(e)throw H;this.handleError(H)}return f};EditorUi.prototype.updatePageLinks=
+d=!1,m=1);for(;m<p.length;m++){var n=p[m].getAttribute("id");p[m].removeAttribute("id");var q=this.updatePageRoot(new DiagramPage(p[m]));a[n]=p[m].getAttribute("id");var u=this.pages.length;null==q.getName()&&q.setName(mxResources.get("pageWithNumber",[u+1]));g.model.execute(new ChangePage(this,q,q,u,!0));l.push(q)}this.updatePageLinks(a,l)}}null!=k&&"mxGraphModel"===k.nodeName&&(f=g.importGraphModel(k,b,c,d))}finally{g.model.endUpdate()}}}catch(G){if(e)throw G;this.handleError(G)}return f};EditorUi.prototype.updatePageLinks=
 function(a,b){for(var c=0;c<b.length;c++)this.updatePageLinksForCell(a,b[c].root)};EditorUi.prototype.updatePageLinksForCell=function(a,b){var c=document.createElement("div"),d=this.editor.graph,f=d.getLinkForCell(b);null!=f&&"data:page/id,"==f.substring(0,13)&&d.setLinkForCell(b,this.updatePageLink(a,f));if(d.isHtmlLabel(b)){c.innerHTML=d.getLabel(b);for(var e=c.getElementsByTagName("a"),g=!1,l=0;l<e.length;l++)f=e[l].getAttribute("href"),null!=f&&"data:page/id,"==f.substring(0,13)&&(e[l].setAttribute("href",
 this.updatePageLink(a,f)),g=!0);g&&d.labelChanged(b,c.innerHTML)}for(l=0;l<d.model.getChildCount(b);l++)this.updatePageLinksForCell(a,d.model.getChildAt(b,l))};EditorUi.prototype.updatePageLink=function(a,b){var c=a[b.substring(b.indexOf(",")+1)];return null!=c?"data:page/id,"+c:null};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,c,d){d=null!=d?d:a.name;c=null!=c?c:mxUtils.bind(this,
 function(a){this.handleError(a)});var f=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio)if(this.isRemoteVisioFormat(d)&&null!=VSD_CONVERT_URL){var f=new FormData;f.append("file1",a,d);var e=new XMLHttpRequest;e.open("POST",VSD_CONVERT_URL);e.responseType="blob";e.onreadystatechange=mxUtils.bind(this,function(){if(4==e.readyState)if(200<=e.status&&299>=e.status)try{this.doImportVisio(e.response,b,c,d)}catch(y){c(y)}else c({})});e.send(f)}else try{this.doImportVisio(a,b,
@@ -8653,41 +8656,41 @@ a,k)):b=this.importXml(a,c,d,z);null!=m&&m(b)});"image"==b.substring(0,5)?(n=!1,
 a+";")])):/(\.*<graphml )/.test(a)?(f=!0,this.importGraphML(a,p)):null!=n&&null!=k&&(/(\.v(dx|sdx?))($|\?)/i.test(k)||/(\.vs(x|sx?))($|\?)/i.test(k))?(f=!0,this.importVisio(n,p)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,k)?(f=!0,this.parseFile(null!=n?n:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?p(a.responseText):null!=m&&m(null))}),k)):/(\.v(sd|dx))($|\?)/i.test(k)||/(\.vs(s|x))($|\?)/i.test(k)||
 (l=this.insertTextAt(this.validateFileData(a),c,d,!0,null,z));f||null==m||m(l);return l};EditorUi.prototype.base64Encode=function(a){for(var b="",c=0,d=a.length,f,e,g;c<d;){f=a.charCodeAt(c++)&255;if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4);b+="==";break}e=a.charCodeAt(c++);if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);
 b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4|(e&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&15)<<2);b+="=";break}g=a.charCodeAt(c++);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4|(e&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&15)<<2|(g&192)>>6);b+=
-"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,d,e,g,k,m,n,z,q,D){b=null!=b?b:0;c=null!=c?c:0;d=null!=d?d:this.maxImageSize;z=null!=z?z:this.maxImageBytes;var f=null!=b&&null!=c,l=!0,p=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var t=q||this.resampleThreshold,B=0;B<a.length;B++)if("image/"==a[B].type.substring(0,6)&&a[B].size>t){p=!0;break}var u=mxUtils.bind(this,function(){var p=this.editor.graph,n=p.gridSize;
-e=null!=e?e:mxUtils.bind(this,function(a,b,c,d,e,g,l,k,p){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,l)),null):this.importFile(a,b,c,d,e,g,l,k,p,f,D)});g=null!=g?g:mxUtils.bind(this,function(a){p.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var t=a.length,B=t,u=[],x=mxUtils.bind(this,function(a,b){u[a]=b;if(0==--B){this.spinner.stop();if(null!=m)m(u);else{var c=[];p.getModel().beginUpdate();
+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,d,e,g,k,m,n,z,q,F){b=null!=b?b:0;c=null!=c?c:0;d=null!=d?d:this.maxImageSize;z=null!=z?z:this.maxImageBytes;var f=null!=b&&null!=c,l=!0,p=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var t=q||this.resampleThreshold,B=0;B<a.length;B++)if("image/"==a[B].type.substring(0,6)&&a[B].size>t){p=!0;break}var u=mxUtils.bind(this,function(){var p=this.editor.graph,n=p.gridSize;
+e=null!=e?e:mxUtils.bind(this,function(a,b,c,d,e,g,l,k,p){return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,l)),null):this.importFile(a,b,c,d,e,g,l,k,p,f,F)});g=null!=g?g:mxUtils.bind(this,function(a){p.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var t=a.length,B=t,u=[],x=mxUtils.bind(this,function(a,b){u[a]=b;if(0==--B){this.spinner.stop();if(null!=m)m(u);else{var c=[];p.getModel().beginUpdate();
 try{for(var d=0;d<u.length;d++){var f=u[d]();null!=f&&(c=c.concat(f))}}finally{p.getModel().endUpdate()}}g(c)}}),v=0;v<t;v++)mxUtils.bind(this,function(f){var g=a[f];if(null!=g){var m=new FileReader;m.onload=mxUtils.bind(this,function(a){if(null==k||k(g))if("image/"==g.type.substring(0,6))if("image/svg"==g.type.substring(0,9)){var m=a.target.result,t=m.indexOf(","),B=decodeURIComponent(escape(atob(m.substring(t+1)))),u=mxUtils.parseXml(B),B=u.getElementsByTagName("svg");if(0<B.length){var B=B[0],
-v=D?null:B.getAttribute("content");null!=v&&"<"!=v.charAt(0)&&"%"!=v.charAt(0)&&(v=unescape(window.atob?atob(v):Base64.decode(v,!0)));null!=v&&"%"==v.charAt(0)&&(v=decodeURIComponent(v));null==v||"<mxfile "!==v.substring(0,8)&&"<mxGraphModel "!==v.substring(0,14)?x(f,mxUtils.bind(this,function(){try{if(m.substring(0,t+1),null!=u){var a=u.getElementsByTagName("svg");if(0<a.length){var l=a[0],k=parseFloat(l.getAttribute("width")),z=parseFloat(l.getAttribute("height")),q=l.getAttribute("viewBox");if(null==
-q||0==q.length)l.setAttribute("viewBox","0 0 "+k+" "+z);else if(isNaN(k)||isNaN(z)){var B=q.split(" ");3<B.length&&(k=parseFloat(B[2]),z=parseFloat(B[3]))}m=this.createSvgDataUri(mxUtils.getXml(l));var x=Math.min(1,Math.min(d/Math.max(1,k)),d/Math.max(1,z)),v=e(m,g.type,b+f*n,c+f*n,Math.max(1,Math.round(k*x)),Math.max(1,Math.round(z*x)),g.name);if(isNaN(k)||isNaN(z)){var D=new Image;D.onload=mxUtils.bind(this,function(){k=Math.max(1,D.width);z=Math.max(1,D.height);v[0].geometry.width=k;v[0].geometry.height=
-z;l.setAttribute("viewBox","0 0 "+k+" "+z);m=this.createSvgDataUri(mxUtils.getXml(l));var a=m.indexOf(";");0<a&&(m=m.substring(0,a)+m.substring(m.indexOf(",",a+1)));p.setCellStyles("image",m,[v[0]])});D.src=this.createSvgDataUri(mxUtils.getXml(l))}return v}}}catch(ra){}return null})):x(f,mxUtils.bind(this,function(){return e(v,"text/xml",b+f*n,c+f*n,0,0,g.name)}))}else x(f,mxUtils.bind(this,function(){return null}))}else{B=!1;if("image/png"==g.type){var y=D?null:this.extractGraphModelFromPng(a.target.result);
-if(null!=y&&0<y.length){var C=new Image;C.src=a.target.result;x(f,mxUtils.bind(this,function(){return e(y,"text/xml",b+f*n,c+f*n,C.width,C.height,g.name)}));B=!0}}B||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,
+v=F?null:B.getAttribute("content");null!=v&&"<"!=v.charAt(0)&&"%"!=v.charAt(0)&&(v=unescape(window.atob?atob(v):Base64.decode(v,!0)));null!=v&&"%"==v.charAt(0)&&(v=decodeURIComponent(v));null==v||"<mxfile "!==v.substring(0,8)&&"<mxGraphModel "!==v.substring(0,14)?x(f,mxUtils.bind(this,function(){try{if(m.substring(0,t+1),null!=u){var a=u.getElementsByTagName("svg");if(0<a.length){var l=a[0],k=parseFloat(l.getAttribute("width")),z=parseFloat(l.getAttribute("height")),q=l.getAttribute("viewBox");if(null==
+q||0==q.length)l.setAttribute("viewBox","0 0 "+k+" "+z);else if(isNaN(k)||isNaN(z)){var B=q.split(" ");3<B.length&&(k=parseFloat(B[2]),z=parseFloat(B[3]))}m=this.createSvgDataUri(mxUtils.getXml(l));var x=Math.min(1,Math.min(d/Math.max(1,k)),d/Math.max(1,z)),v=e(m,g.type,b+f*n,c+f*n,Math.max(1,Math.round(k*x)),Math.max(1,Math.round(z*x)),g.name);if(isNaN(k)||isNaN(z)){var F=new Image;F.onload=mxUtils.bind(this,function(){k=Math.max(1,F.width);z=Math.max(1,F.height);v[0].geometry.width=k;v[0].geometry.height=
+z;l.setAttribute("viewBox","0 0 "+k+" "+z);m=this.createSvgDataUri(mxUtils.getXml(l));var a=m.indexOf(";");0<a&&(m=m.substring(0,a)+m.substring(m.indexOf(",",a+1)));p.setCellStyles("image",m,[v[0]])});F.src=this.createSvgDataUri(mxUtils.getXml(l))}return v}}}catch(ra){}return null})):x(f,mxUtils.bind(this,function(){return e(v,"text/xml",b+f*n,c+f*n,0,0,g.name)}))}else x(f,mxUtils.bind(this,function(){return null}))}else{B=!1;if("image/png"==g.type){var y=F?null:this.extractGraphModelFromPng(a.target.result);
+if(null!=y&&0<y.length){var E=new Image;E.src=a.target.result;x(f,mxUtils.bind(this,function(){return e(y,"text/xml",b+f*n,c+f*n,E.width,E.height,g.name)}));B=!0}}B||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,
 a.target.result,mxUtils.bind(this,function(k,p,m){x(f,mxUtils.bind(this,function(){if(null!=k&&k.length<z){var t=l&&this.isResampleImage(a.target.result,q)?Math.min(1,Math.min(d/p,d/m)):1;return e(k,g.type,b+f*n,c+f*n,Math.round(p*t),Math.round(m*t),g.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),l,d,q)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else e(a.target.result,g.type,b+f*n,c+f*n,240,160,g.name,
 function(a){x(f,function(){return a})})});/(\.v(dx|sdx?))($|\?)/i.test(g.name)||/(\.vs(x|sx?))($|\?)/i.test(g.name)?e(null,g.type,b+f*n,c+f*n,240,160,g.name,function(a){x(f,function(){return a})},g):"image"==g.type.substring(0,5)?m.readAsDataURL(g):m.readAsText(g)}})(v)});if(p){p=[];for(B=0;B<a.length;B++)p.push(a[B]);a=p;this.confirmImageResize(function(a){l=a;u()},n)}else u()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():
 function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,f=function(d,f){if(d||b)mxSettings.setResizeImages(d?f:null),mxSettings.save();c();a(f)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){f(a,!0)},function(a){f(a,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,
 340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):f(!1,d)};EditorUi.prototype.parseFile=function(a,b,c){c=null!=c?c:a.name;var d=new FormData;d.append("format","xml");d.append("upfile",a,c);var f=new XMLHttpRequest;f.open("POST",OPEN_URL);f.onreadystatechange=function(){b(f)};f.send(d)};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,c,d,e,g){e=null!=e?e:this.maxImageSize;var f=Math.max(1,a.width),
-l=Math.max(1,a.height);if(d&&this.isResampleImage(b,g))try{var k=Math.max(f/e,l/e);if(1<k){var p=Math.round(f/k),m=Math.round(l/k),n=document.createElement("canvas");n.width=p;n.height=m;n.getContext("2d").drawImage(a,0,0,p,m);var t=n.toDataURL();if(t.length<b.length){var q=document.createElement("canvas");q.width=p;q.height=m;var u=q.toDataURL();t!==u&&(b=t,f=p,l=m)}}}catch(E){}c(b,f,l)};EditorUi.prototype.crcTable=[];for(var d=0;256>d;d++)for(var e=d,g=0;8>g;g++)e=1==(e&1)?3988292384^e>>>1:e>>>
-1,EditorUi.prototype.crcTable[d]=e;EditorUi.prototype.updateCRC=function(a,b,c,d){for(var f=0;f<d;f++)a=EditorUi.prototype.crcTable[(a^b.charCodeAt(c+f))&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,c=0;c<a.length;c++)b=b>>>8^this.crcTable[(b^a.charCodeAt(c))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,c,d,e){function f(a,b){var c=k;k+=b;return a.substring(c,k)}function g(a){a=f(a,4);return a.charCodeAt(3)+
-(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function l(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var k=0;if(f(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(f(a,4),"IHDR"!=f(a,4))null!=e&&e();else{f(a,17);e=a.substring(0,k);do{var p=g(a);if("IDAT"==f(a,4)){e=a.substring(0,k-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):
-"")+d;d=4294967295;d=this.updateCRC(d,b,0,4);d=this.updateCRC(d,c,0,c.length);e+=l(c.length)+b+c+l(d^4294967295);e+=a.substring(k-8,a.length);break}e+=a.substring(k-8,k-4+p);f(a,p);f(a,4)}while(p);return"data:image/png;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){return Editor.extractGraphModelFromPng(a)};EditorUi.prototype.loadImage=function(a,b,c){try{var d=new Image;d.onload=function(){b(d)};null!=c&&(d.onerror=c);d.src=a}catch(v){if(null!=
-c)c(v);else throw v;}};var k=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph;b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(F){a.handleError(F)}return c};var c=this.clearDefaultStyle;this.clearDefaultStyle=function(){c.apply(this,
+k=Math.max(1,a.height);if(d&&this.isResampleImage(b,g))try{var l=Math.max(f/e,k/e);if(1<l){var p=Math.round(f/l),m=Math.round(k/l),n=document.createElement("canvas");n.width=p;n.height=m;n.getContext("2d").drawImage(a,0,0,p,m);var t=n.toDataURL();if(t.length<b.length){var q=document.createElement("canvas");q.width=p;q.height=m;var u=q.toDataURL();t!==u&&(b=t,f=p,k=m)}}}catch(D){}c(b,f,k)};EditorUi.prototype.crcTable=[];for(var d=0;256>d;d++)for(var e=d,g=0;8>g;g++)e=1==(e&1)?3988292384^e>>>1:e>>>
+1,EditorUi.prototype.crcTable[d]=e;EditorUi.prototype.updateCRC=function(a,b,c,d){for(var f=0;f<d;f++)a=EditorUi.prototype.crcTable[(a^b.charCodeAt(c+f))&255]^a>>>8;return a};EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,c=0;c<a.length;c++)b=b>>>8^this.crcTable[(b^a.charCodeAt(c))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,c,d,e){function f(a,b){var c=l;l+=b;return a.substring(c,l)}function g(a){a=f(a,4);return a.charCodeAt(3)+
+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function k(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var l=0;if(f(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(f(a,4),"IHDR"!=f(a,4))null!=e&&e();else{f(a,17);e=a.substring(0,l);do{var p=g(a);if("IDAT"==f(a,4)){e=a.substring(0,l-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):
+"")+d;d=4294967295;d=this.updateCRC(d,b,0,4);d=this.updateCRC(d,c,0,c.length);e+=k(c.length)+b+c+k(d^4294967295);e+=a.substring(l-8,a.length);break}e+=a.substring(l-8,l-4+p);f(a,p);f(a,4)}while(p);return"data:image/png;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){return Editor.extractGraphModelFromPng(a)};EditorUi.prototype.loadImage=function(a,b,c){try{var d=new Image;d.onload=function(){b(d)};null!=c&&(d.onerror=c);d.src=a}catch(v){if(null!=
+c)c(v);else throw v;}};var k=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph;b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(E){a.handleError(E)}return c};var c=this.clearDefaultStyle;this.clearDefaultStyle=function(){c.apply(this,
 arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var d=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(b){b=null!=b?b:"";if(null!=a.pages&&null!=a.currentPage)for(var c=0;c<a.pages.length;c++)if(a.pages[c]==a.currentPage){0<c&&(b+=(0<b.length?"&":"?")+"page="+c);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return d.apply(this,arguments)};
 var e=b.addClickHandler;b.addClickHandler=function(a,c,d){var f=c;c=function(a,c){if(null==c){var d=mxEvent.getSource(a);"a"==d.nodeName.toLowerCase()&&(c=d.getAttribute("href"))}null!=c&&b.isCustomLink(c)&&(mxEvent.isTouchEvent(a)||!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(c)&&mxEvent.consume(a);null!=f&&f(a,c)};e.call(this,a,c,d)};k.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container,
 360,null!=a.pages&&1<a.pages.length?420:360,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var g=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:g.apply(this,arguments)};var m=b.labelLinkClicked;b.labelLinkClicked=function(a,c,d){var f=c.getAttribute("href");if(null==f||!b.isCustomLink(f)||!mxEvent.isTouchEvent(d)&&mxEvent.isPopupTrigger(d))m.apply(this,
 arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(f),b.getRubberband().reset();mxEvent.consume(d)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var n=this.actions.get("print");n.setEnabled(!mxClient.IS_IOS||!navigator.standalone);n.visible=n.isEnabled();if(!this.editor.chromeless||this.editor.editable){var q=function(){window.setTimeout(function(){z.innerHTML="&nbsp;";
 z.focus();document.execCommand("selectAll",!1,null)},0)};this.keyHandler.bindAction(70,!0,"find");this.keyHandler.bindAction(67,!0,"copyStyle",!0);this.keyHandler.bindAction(86,!0,"pasteStyle",!0);this.keyHandler.bindAction(77,!0,"editGeometry",!0);this.keyHandler.bindAction(88,!0,"insertText",!0);this.keyHandler.bindAction(75,!0,"insertRectangle");this.keyHandler.bindAction(75,!0,"insertEllipse",!0);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]="synchronize");mxClient.IS_IE||
 b.container.addEventListener("paste",mxUtils.bind(this,function(a){var b=this.editor.graph;if(!mxEvent.isConsumed(a))try{for(var c=a.clipboardData||a.originalEvent.clipboardData,d=!1,f=0;f<c.types.length;f++)if("text/"===c.types[f].substring(0,5)){d=!0;break}if(!d){var e=c.items;for(index in e){var g=e[index];if("file"===g.kind){if(b.isEditing())this.importFiles([g.getAsFile()],0,0,this.maxImageSize,function(a,c,d,f,e,g){b.insertImage(a,e,g)},function(){},function(a){return"image/"==a.type.substring(0,
-6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var k=this.editor.graph.getInsertPoint();this.importFiles([g.getAsFile()],k.x,k.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(Y){}}),!1);var z=document.createElement("div");z.style.position="absolute";z.style.whiteSpace="nowrap";z.style.overflow="hidden";z.style.display="block";z.contentEditable=!0;mxUtils.setOpacity(z,0);z.style.width="1px";z.style.height="1px";z.innerHTML="&nbsp;";var B=!1;this.keyHandler.bindControlKey(88,null);
+6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var k=this.editor.graph.getInsertPoint();this.importFiles([g.getAsFile()],k.x,k.y,this.maxImageSize);mxEvent.consume(a)}break}}}}catch(Z){}}),!1);var z=document.createElement("div");z.style.position="absolute";z.style.whiteSpace="nowrap";z.style.overflow="hidden";z.style.display="block";z.contentEditable=!0;mxUtils.setOpacity(z,0);z.style.width="1px";z.style.height="1px";z.innerHTML="&nbsp;";var B=!1;this.keyHandler.bindControlKey(88,null);
 this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var c=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==c.nodeName||"TEXTAREA"==c.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||B||(z.style.left=b.container.scrollLeft+10+"px",z.style.top=b.container.scrollTop+10+"px",b.container.appendChild(z),
 B=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){z.focus();document.execCommand("selectAll",!1,null)},0):(z.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var c=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!B||224!=c&&17!=c&&91!=c||(B=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),z.parentNode.removeChild(z),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(z,
 "copy",mxUtils.bind(this,function(a){if(b.isEnabled())try{mxClipboard.copy(b),this.copyCells(z),q()}catch(J){this.handleError(J)}}));mxEvent.addListener(z,"cut",mxUtils.bind(this,function(a){if(b.isEnabled())try{mxClipboard.copy(b),this.copyCells(z,!0),q()}catch(J){this.handleError(J)}}));mxEvent.addListener(z,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(z.innerHTML="&nbsp;",z.focus(),window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,
-z);z.innerHTML="&nbsp;"}),0))}),!0);var D=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==z?!0:D.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,c=b.cellEditor.text2,d=null;null!=c&&(mxEvent.addListener(c,"dragleave",
+z);z.innerHTML="&nbsp;"}),0))}),!0);var F=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==z?!0:F.apply(this,arguments)}}this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,c=b.cellEditor.text2,d=null;null!=c&&(mxEvent.addListener(c,"dragleave",
 function(a){null!=d&&(d.parentNode.removeChild(d),d=null);a.stopPropagation();a.preventDefault()}),mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null==d&&(!mxClient.IS_IE||10<document.documentMode)&&(d=this.highlightElement(c));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=d&&(d.parentNode.removeChild(d),d=null);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,function(a,c,d,f,
 e,g){b.insertImage(a,e,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()},mxEvent.isControlDown(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var c=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(c)?this.loadImage(decodeURIComponent(c),mxUtils.bind(this,function(a){var d=Math.max(1,a.width);a=Math.max(1,a.height);var f=this.maxImageSize,f=Math.min(1,Math.min(f/Math.max(1,d)),f/Math.max(1,
 a));b.insertImage(decodeURIComponent(c),d*f,a*f)})):document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"))}else 0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"));a.stopPropagation();a.preventDefault()})))}));if("1"==urlParams.ruler&&"undefined"!==typeof mxRuler){n=document.createElement("div");
-n.style.position="absolute";n.style.top="95px";n.style.left="250px";n.style.width="2000px";n.style.height="30px";n.style.background="whiteSmoke";document.body.appendChild(n);var x=document.createElement("div");x.style.position="absolute";x.style.top="125px";x.style.left="220px";x.style.width="30px";x.style.height="1000px";x.style.background="whiteSmoke";document.body.appendChild(x);var G=document.createElement("div");G.style.position="absolute";G.style.top="95px";G.style.left="220px";G.style.width=
-"30px";G.style.height="30px";G.style.background="whiteSmoke";document.body.appendChild(G);this.vRuler=new mxRuler(this.editor.graph,x,!0);this.hRuler=new mxRuler(this.editor.graph,n,!1)}if("1"==urlParams.styledev){n=document.getElementById("geFooter");null!=n&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility=
+n.style.position="absolute";n.style.top="95px";n.style.left="250px";n.style.width="2000px";n.style.height="30px";n.style.background="whiteSmoke";document.body.appendChild(n);var x=document.createElement("div");x.style.position="absolute";x.style.top="125px";x.style.left="220px";x.style.width="30px";x.style.height="1000px";x.style.background="whiteSmoke";document.body.appendChild(x);var I=document.createElement("div");I.style.position="absolute";I.style.top="95px";I.style.left="220px";I.style.width=
+"30px";I.style.height="30px";I.style.background="whiteSmoke";document.body.appendChild(I);this.vRuler=new mxRuler(this.editor.graph,x,!0);this.hRuler=new mxRuler(this.editor.graph,n,!1)}if("1"==urlParams.styledev){n=document.getElementById("geFooter");null!=n&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility=
 "hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this,function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),this.styleInput.value)})),n.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||
-"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var H=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:H.apply(this,arguments)}}n=document.getElementById("geInfo");null!=n&&n.parentNode.removeChild(n);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var E=null;mxEvent.addListener(b.container,"dragleave",function(a){b.isEnabled()&&(null!=E&&(E.parentNode.removeChild(E),
-E=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null==E&&(!mxClient.IS_IE||10<document.documentMode)&&(E=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=E&&(E.parentNode.removeChild(E),E=null);if(b.isEnabled()){var c=mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),
+"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var G=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:G.apply(this,arguments)}}n=document.getElementById("geInfo");null!=n&&n.parentNode.removeChild(n);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var D=null;mxEvent.addListener(b.container,"dragleave",function(a){b.isEnabled()&&(null!=D&&(D.parentNode.removeChild(D),
+D=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null==D&&(!mxClient.IS_IE||10<document.documentMode)&&(D=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=D&&(D.parentNode.removeChild(D),D=null);if(b.isEnabled()){var c=mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),
 d=b.view.translate,f=b.view.scale,e=c.x/f-d.x,g=c.y/f-d.y;mxEvent.isAltDown(a)&&(g=e=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,e,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var k=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,c=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=c)b.setSelectionCells(this.importXml(c,e,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,
 "text/html")){var l=a.dataTransfer.getData("text/html"),c=document.createElement("div");c.innerHTML=l;var p=null,d=c.getElementsByTagName("img");null!=d&&1==d.length?(l=d[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)||(p=!0)):(c=c.getElementsByTagName("a"),null!=c&&1==c.length&&(l=c[0].getAttribute("href")));var m=!0,n=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(l,e,g,!0,p,null,m))});p&&l.length>this.resampleThreshold?this.confirmImageResize(function(a){m=
 a;n()},mxEvent.isControlDown(a)):n()}else null!=k&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)?this.loadImage(decodeURIComponent(k),mxUtils.bind(this,function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var d=this.maxImageSize,d=Math.min(1,Math.min(d/Math.max(1,c)),d/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",e,g,c*d,a*d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+k+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(k,
@@ -8722,19 +8725,19 @@ this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightbox
 function(a){var b=null,c=!1,d=!1,f=null,e=mxUtils.bind(this,function(a,b){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE,e);mxEvent.addListener(window,"message",mxUtils.bind(this,function(e){if(e.source==(window.opener||window.parent)){var k=e.data,l=mxUtils.bind(this,function(a){if(null!=a&&"function"===typeof a.charAt&&
 "<"!=a.charAt(0))try{"data:image/png;base64,"==a.substring(0,22)?a=this.extractGraphModelFromPng(a):"data:image/svg+xml;base64,"==a.substring(0,26)?a=atob(a.substring(26)):"data:image/svg+xml;utf8,"==a.substring(0,24)&&(a=a.substring(24)),null!=a&&("%"==a.charAt(0)?a=decodeURIComponent(a):"<"!=a.charAt(0)&&(a=Graph.decompress(a)))}catch(S){}return a});if("json"==urlParams.proto){try{k=JSON.parse(k)}catch(K){k=null}if(null==k)return;if("dialog"==k.action){this.showError(null!=k.titleKey?mxResources.get(k.titleKey):
 k.title,null!=k.messageKey?mxResources.get(k.messageKey):k.message,null!=k.buttonKey?mxResources.get(k.buttonKey):k.button);null!=k.modified&&(this.editor.modified=k.modified);return}if("prompt"==k.action){this.spinner.stop();l=new FilenameDialog(this,k.defaultValue||"",null!=k.okKey?mxResources.get(k.okKey):null,function(a){null!=a&&g.postMessage(JSON.stringify({event:"prompt",value:a,message:k}),"*")},null!=k.titleKey?mxResources.get(k.titleKey):k.title);this.showDialog(l.container,300,80,!0,!1);
-l.init();return}if("draft"==k.action){var m=l(k.xml);this.spinner.stop();l=new DraftDialog(this,mxResources.get("draftFound",[k.name||this.defaultFilename]),m,mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"edit",message:k}),"*")}),mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"discard",message:k}),"*")}),k.editKey?mxResources.get(k.editKey):null,k.discardKey?mxResources.get(k.discardKey):null,k.ignore?
-mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"ignore",message:k}),"*")}):null);this.showDialog(l.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{l.init()}catch(K){g.postMessage(JSON.stringify({event:"draft",error:K.toString(),message:k}),"*")}return}if("template"==k.action){this.spinner.stop();var l=1==k.enableRecent,m=1==k.enableSearch,p=1==k.enableCustomTemp,l=new NewDialog(this,!1,null!=k.callback,
-mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=k.callback?g.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c}),"*"):(a(b,e,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,l?mxUtils.bind(this,function(a){this.remoteInvoke("getRecentDiagrams",null,null,a,function(){a(null,"Network Error!")})}):null,m?mxUtils.bind(this,function(a,b){this.remoteInvoke("searchDiagrams",[a],null,b,function(){b(null,
-"Network Error!")})}):null,mxUtils.bind(this,function(a,b,c){g.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")}),null,null,p?mxUtils.bind(this,function(a){this.remoteInvoke("getCustomTemplates",null,null,a,function(){a({},0)})}):null);this.showDialog(l.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));l.init();return}if("textContent"==k.action){l=this.getDiagramTextContent();g.postMessage(JSON.stringify({event:"textContent",data:l,
+l.init();return}if("draft"==k.action){var p=l(k.xml);this.spinner.stop();l=new DraftDialog(this,mxResources.get("draftFound",[k.name||this.defaultFilename]),p,mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"edit",message:k}),"*")}),mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"discard",message:k}),"*")}),k.editKey?mxResources.get(k.editKey):null,k.discardKey?mxResources.get(k.discardKey):null,k.ignore?
+mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"ignore",message:k}),"*")}):null);this.showDialog(l.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{l.init()}catch(K){g.postMessage(JSON.stringify({event:"draft",error:K.toString(),message:k}),"*")}return}if("template"==k.action){this.spinner.stop();var l=1==k.enableRecent,p=1==k.enableSearch,m=1==k.enableCustomTemp,l=new NewDialog(this,!1,null!=k.callback,
+mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=k.callback?g.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c}),"*"):(a(b,e,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,l?mxUtils.bind(this,function(a){this.remoteInvoke("getRecentDiagrams",null,null,a,function(){a(null,"Network Error!")})}):null,p?mxUtils.bind(this,function(a,b){this.remoteInvoke("searchDiagrams",[a],null,b,function(){b(null,
+"Network Error!")})}):null,mxUtils.bind(this,function(a,b,c){g.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")}),null,null,m?mxUtils.bind(this,function(a){this.remoteInvoke("getCustomTemplates",null,null,a,function(){a({},0)})}):null);this.showDialog(l.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));l.init();return}if("textContent"==k.action){l=this.getDiagramTextContent();g.postMessage(JSON.stringify({event:"textContent",data:l,
 message:k}),"*");return}if("status"==k.action){null!=k.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(k.messageKey))):null!=k.message&&this.editor.setStatus(mxUtils.htmlEntities(k.message));null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var n=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body,n):this.spinner.stop();return}if("export"==k.action){if("png"==k.format||"xmlpng"==k.format){if(null==
-k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var q=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var t=this.editor.graph,u=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=k.format;b.message=k;b.data=a;b.xml=encodeURIComponent(q);g.postMessage(JSON.stringify(b),"*")}),v=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);
-"xmlpng"==k.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(Graph.compress(q))));t!=this.editor.graph&&t.container.parentNode.removeChild(t.container);u(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var t=this.createTemporaryGraph(t.getStylesheet()),y=t.getGlobalVariable,F=this.pages[0];t.getGlobalVariable=function(a){return"page"==a?F.getName():"pagenumber"==a?1:y.apply(this,arguments)};document.body.appendChild(t.container);t.model.setRoot(F.root)}this.exportToCanvas(mxUtils.bind(this,
-function(a){v(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){v(null)}),null,null,k.scale,null,null,null,t)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(q)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?u("data:image/png;base64,"+a.getText()):v(null)}),mxUtils.bind(this,function(){v(null)}))}}else{null!=k.xml&&0<k.xml.length&&
-this.setFileData(k.xml);n=this.createLoadMessage("export");if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))l=this.getXmlFileData(),n.xml=mxUtils.getXml(l),n.data=this.getFileData(null,null,!0,null,null,null,l),n.format=k.format;else if("html"==k.format)q=this.editor.getGraphXml(),n.data=this.getHtml(q,this.editor.graph),n.xml=mxUtils.getXml(q),n.format=k.format;else{mxSvgCanvas2D.prototype.foAltText=null;l=this.editor.graph.background;l==mxConstants.NONE&&
+k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var t=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var q=this.editor.graph,u=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=k.format;b.message=k;b.data=a;b.xml=encodeURIComponent(t);g.postMessage(JSON.stringify(b),"*")}),v=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);
+"xmlpng"==k.format&&(a=this.writeGraphModelToPng(a,"zTXt","mxGraphModel",atob(Graph.compress(t))));q!=this.editor.graph&&q.container.parentNode.removeChild(q.container);u(a)});if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage!=this.pages[0]){var q=this.createTemporaryGraph(q.getStylesheet()),y=q.getGlobalVariable,E=this.pages[0];q.getGlobalVariable=function(a){return"page"==a?E.getName():"pagenumber"==a?1:y.apply(this,arguments)};document.body.appendChild(q.container);q.model.setRoot(E.root)}this.exportToCanvas(mxUtils.bind(this,
+function(a){v(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this,function(){v(null)}),null,null,k.scale,null,null,null,q)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(encodeURIComponent(t)))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?u("data:image/png;base64,"+a.getText()):v(null)}),mxUtils.bind(this,function(){v(null)}))}}else{null!=k.xml&&0<k.xml.length&&
+this.setFileData(k.xml);n=this.createLoadMessage("export");if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length))l=this.getXmlFileData(),n.xml=mxUtils.getXml(l),n.data=this.getFileData(null,null,!0,null,null,null,l),n.format=k.format;else if("html"==k.format)t=this.editor.getGraphXml(),n.data=this.getHtml(t,this.editor.graph),n.xml=mxUtils.getXml(t),n.format=k.format;else{mxSvgCanvas2D.prototype.foAltText=null;l=this.editor.graph.background;l==mxConstants.NONE&&
 (l=null);n.xml=this.getFileData(!0);n.format="svg";if(k.embedImages||null==k.embedImages){if(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))this.editor.graph.setEnabled(!1),"xmlsvg"==k.format?this.getEmbeddedSvg(n.xml,this.editor.graph,null,!0,mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();n.data=this.createSvgDataUri(a);g.postMessage(JSON.stringify(n),"*")})):this.convertImages(this.editor.graph.getSvg(l),
 mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();n.data=this.createSvgDataUri(mxUtils.getXml(a));g.postMessage(JSON.stringify(n),"*")}));return}l="xmlsvg"==k.format?this.getEmbeddedSvg(this.getFileData(!0),this.editor.graph,null,!0):mxUtils.getXml(this.editor.graph.getSvg(l));n.data=this.createSvgDataUri(l)}g.postMessage(JSON.stringify(n),"*")}return}if("load"==k.action)d=1==k.autosave,this.hideDialog(),null!=k.modified&&null==urlParams.modified&&(urlParams.modified=
-k.modified),null!=k.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=k.saveAndExit),null!=k.title&&null!=this.buttonContainer&&(m=document.createElement("span"),mxUtils.write(m,k.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="6px",this.buttonContainer.style.right="25px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),
-this.buttonContainer.appendChild(m),this.embedFilenameSpan=m),k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):k.xml;else{"remoteInvokeReady"==k.action?this.handleRemoteInvokeReady(g):"remoteInvoke"==k.action?this.handleRemoteInvoke(k):"remoteInvokeResponse"==k.action?this.handleRemoteInvokeResponse(k):g.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}var A=mxUtils.bind(this,function(e,k){c=!0;try{a(e,k)}catch(T){this.handleError(T)}c=!1;null!=urlParams.modified&&
+k.modified),null!=k.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=k.saveAndExit),null!=k.title&&null!=this.buttonContainer&&(p=document.createElement("span"),mxUtils.write(p,k.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="6px",this.buttonContainer.style.right="25px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),
+this.buttonContainer.appendChild(p),this.embedFilenameSpan=p),k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):k.xml;else{"remoteInvokeReady"==k.action?this.handleRemoteInvokeReady(g):"remoteInvoke"==k.action?this.handleRemoteInvoke(k):"remoteInvokeResponse"==k.action?this.handleRemoteInvokeResponse(k):g.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}var A=mxUtils.bind(this,function(e,k){c=!0;try{a(e,k)}catch(T){this.handleError(T)}c=!1;null!=urlParams.modified&&
 this.editor.setStatus("");var l=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())});f=l();d&&null==b&&(b=mxUtils.bind(this,function(a,b){var d=l();if(d!=f&&!c){var e=this.createLoadMessage("autosave");e.xml=d;d=JSON.stringify(e);(window.opener||window.parent).postMessage(d,"*")}f=d}),this.editor.graph.model.addListener(mxEvent.CHANGE,b),this.editor.graph.addListener("gridSizeChanged",b),this.editor.graph.addListener("shadowVisibleChanged",
 b),this.addListener("pageFormatChanged",b),this.addListener("pageScaleChanged",b),this.addListener("backgroundColorChanged",b),this.addListener("backgroundImageChanged",b),this.addListener("foldingEnabledChanged",b),this.addListener("mathEnabledChanged",b),this.addListener("gridEnabledChanged",b),this.addListener("guidesEnabledChanged",b),this.addListener("pageViewChanged",b));"1"!=urlParams.returnbounds&&"json"!=urlParams.proto||g.postMessage(JSON.stringify(this.createLoadMessage("load")),"*")});
 null!=k&&"function"===typeof k.substring&&"data:application/vnd.visio;base64,"==k.substring(0,34)?(l="0M8R4KGxGuE"==k.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(k.substring(k.indexOf(",")+1)),function(a){A(a,e)},mxUtils.bind(this,function(a){this.handleError(a)}),l)):null!=k&&"function"===typeof k.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(k,"")?this.parseFile(new Blob([k],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==
@@ -8743,19 +8746,19 @@ this.menubar){var a=document.createElement("div");a.style.display="inline-block"
 "click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b)):(mxUtils.write(b,mxResources.get("save")),b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),a.appendChild(b),"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.style.fontSize=
 "12px",b.style.marginLeft="6px",b.style.padding="4px",b.style.cursor="pointer",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b)));b=document.createElement("a");mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.style.fontSize="12px";b.style.marginLeft="6px";b.style.marginRight="20px";b.style.padding="4px";b.style.cursor="pointer";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()}));
 a.appendChild(b);this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),null,null,620,430,null,!0,!0,mxResources.get("import")));this.showDialog(this.importCsvDialog.container,640,520,!0,!0);this.importCsvDialog.init()};
-EditorUi.prototype.executeLayoutList=function(a,b){for(var c=this.editor.graph,d=c.getSelectionCells(),e=0;e<a.length;e++){var f=new window[a[e].layout](c);if(null!=a[e].config)for(var g in a[e].config)f[g]=a[e].config[g];this.executeLayout(function(){f.execute(c.getDefaultParent(),0==d.length?null:d)},e==a.length-1,b)}};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[],e=[],f={};if(0<c.length){var g={},k=null,l=null,m=null,n=null,q=null,x=null,G="",H="auto",E="auto",I=null,
-J=null,F=40,M=40,K=100,S=0,L=this.editor.graph;L.getGraphBounds();for(var T=function(){null!=b?b(ka):(L.setSelectionCells(ka),L.scrollCellToVisible(L.getSelectionCell()))},Y=L.getFreeInsertPoint(),da=Y.x,aa=Y.y,Y=aa,ha=null,U="auto",x=null,Z=[],ca=null,P=null,W=0;W<c.length&&"#"==c[W].charAt(0);){a=c[W];for(W++;W<c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[W].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[W].substring(1)),W++;if("#"!=a.charAt(1)){var fa=a.indexOf(":");if(0<fa){var R=mxUtils.trim(a.substring(1,
-fa)),N=mxUtils.trim(a.substring(fa+1));"label"==R?ha=L.sanitizeHtml(N):"style"==R?k=N:"parentstyle"==R?n=N:"stylename"==R&&0<N.length&&"-"!=N?m=N:"styles"==R&&0<N.length&&"-"!=N?l=JSON.parse(N):"identity"==R&&0<N.length&&"-"!=N?q=N:"parent"==R&&0<N.length&&"-"!=N?x=N:"namespace"==R&&0<N.length&&"-"!=N?G=N:"width"==R?H=N:"height"==R?E=N:"left"==R&&0<N.length?I=N:"top"==R&&0<N.length?J=N:"ignore"==R?P=N.split(","):"connect"==R?Z.push(JSON.parse(N)):"link"==R?ca=N:"padding"==R?S=parseFloat(N):"edgespacing"==
-R?F=parseFloat(N):"nodespacing"==R?M=parseFloat(N):"levelspacing"==R?K=parseFloat(N):"layout"==R&&(U=N)}}}if(null==c[W])throw Error(mxResources.get("invalidOrMissingFile"));var ea=this.editor.csvToArray(c[W]),R=fa=null;if(null!=q||null!=x)for(var Q=0;Q<ea.length;Q++)q==ea[Q]&&(fa=Q),x==ea[Q]&&(R=Q);null==ha&&(ha="%"+ea[0]+"%");if(null!=Z)for(var X=0;X<Z.length;X++)null==g[Z[X].to]&&(g[Z[X].to]={});L.model.beginUpdate();try{for(Q=W+1;Q<c.length;Q++){var V=this.editor.csvToArray(c[Q]);if(null==V){var ja=
-40<c[Q].length?c[Q].substring(0,40)+"...":c[Q];throw Error(Q+" ("+ja+") "+mxResources.get("containsValidationErrors"));}if(V.length==ea.length){var O=null,ba=null!=fa?G+V[fa]:null;null!=ba&&(O=L.model.getCell(ba));var q=null!=O,ga=new mxCell(ha,new mxGeometry(da,Y,0,0),k||"whiteSpace=wrap;html=1;");ga.vertex=!0;ga.id=ba;for(var ia=0;ia<V.length;ia++)L.setAttributeForCell(ga,ea[ia],V[ia]);if(null!=m&&null!=l){var ra=l[ga.getAttribute(m)];null!=ra&&(ga.style=ra)}L.setAttributeForCell(ga,"placeholders",
-"1");ga.style=L.replacePlaceholders(ga,ga.style);q&&(L.model.setGeometry(O,ga.geometry),L.model.setStyle(O,ga.style),0>mxUtils.indexOf(e,O)&&e.push(O));O=ga;if(!q)for(X=0;X<Z.length;X++)g[Z[X].to][O.getAttribute(Z[X].to)]=O;null!=ca&&"link"!=ca&&(L.setLinkForCell(O,O.getAttribute(ca)),L.setAttributeForCell(O,ca,null));L.fireEvent(new mxEventObject("cellsInserted","cells",[O]));var ta=this.editor.graph.getPreferredSizeForCell(O);O.vertex&&(null!=I&&null!=O.getAttribute(I)&&(O.geometry.x=da+parseFloat(O.getAttribute(I))),
-null!=J&&null!=O.getAttribute(J)&&(O.geometry.y=aa+parseFloat(O.getAttribute(J))),"@"==H.charAt(0)&&null!=O.getAttribute(H.substring(1))?O.geometry.width=parseFloat(O.getAttribute(H.substring(1))):O.geometry.width="auto"==H?ta.width+S:parseFloat(H),"@"==E.charAt(0)&&null!=O.getAttribute(E.substring(1))?O.geometry.height=parseFloat(O.getAttribute(E.substring(1))):O.geometry.height="auto"==E?ta.height+S:parseFloat(E),Y+=O.geometry.height+M);q?(null==f[ba]&&(f[ba]=[]),f[ba].push(O)):(x=null!=R?L.model.getCell(G+
-V[R]):null,d.push(O),null!=x?(x.style=L.replacePlaceholders(x,n),L.addCell(O,x)):e.push(L.addCell(O)))}}for(var la=e.slice(),ka=e.slice(),X=0;X<Z.length;X++)for(var ua=Z[X],Q=0;Q<e.length;Q++){var O=e[Q],va=mxUtils.bind(this,function(a,b,c){var d=b.getAttribute(c.from);if(null!=d){L.setAttributeForCell(b,c.from,null);for(var d=d.split(","),e=0;e<d.length;e++){var f=g[c.to][d[e]];if(null!=f){var k=c.label;null!=c.fromlabel&&(k=(b.getAttribute(c.fromlabel)||"")+(k||""));null!=c.tolabel&&(k=(k||"")+
-(f.getAttribute(c.tolabel)||""));ka.push(L.insertEdge(null,null,k||"",c.invert?f:a,c.invert?a:f,c.style||L.createCurrentEdgeStyle()));mxUtils.remove(c.invert?a:f,la)}}}});va(O,O,ua);if(null!=f[O.id])for(ia=0;ia<f[O.id].length;ia++)va(O,f[O.id][ia],ua)}if(null!=P)for(Q=0;Q<d.length;Q++)for(O=d[Q],ia=0;ia<P.length;ia++)L.setAttributeForCell(O,mxUtils.trim(P[ia]),null);if(0<e.length){var ma=new mxParallelEdgeLayout(L);ma.spacing=F;var sa=function(){0<ma.spacing&&ma.execute(L.getDefaultParent());for(var a=
-0;a<e.length;a++){var b=L.getCellGeometry(e[a]);b.x=Math.round(L.snap(b.x));b.y=Math.round(L.snap(b.y));"auto"==H&&(b.width=Math.round(L.snap(b.width)));"auto"==E&&(b.height=Math.round(L.snap(b.height)))}};if("["==U.charAt(0)){var wa=T;L.view.validate();this.executeLayoutList(JSON.parse(U),function(){sa();wa()});T=null}else if("circle"==U){var pa=new mxCircleLayout(L);pa.resetEdges=!1;var xa=pa.isVertexIgnored;pa.isVertexIgnored=function(a){return xa.apply(this,arguments)||0>mxUtils.indexOf(e,a)};
+EditorUi.prototype.executeLayoutList=function(a,b){for(var c=this.editor.graph,d=c.getSelectionCells(),e=0;e<a.length;e++){var f=new window[a[e].layout](c);if(null!=a[e].config)for(var g in a[e].config)f[g]=a[e].config[g];this.executeLayout(function(){f.execute(c.getDefaultParent(),0==d.length?null:d)},e==a.length-1,b)}};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[],e=[],f={};if(0<c.length){var g={},k=null,l=null,m=null,n=null,q=null,x=null,I="",G="auto",D="auto",H=null,
+J=null,E=40,M=40,K=100,S=0,L=this.editor.graph;L.getGraphBounds();for(var T=function(){null!=b?b(ka):(L.setSelectionCells(ka),L.scrollCellToVisible(L.getSelectionCell()))},Z=L.getFreeInsertPoint(),ea=Z.x,ba=Z.y,Z=ba,ha=null,U="auto",x=null,Y=[],aa=null,ja=null,O=0;O<c.length&&"#"==c[O].charAt(0);){a=c[O];for(O++;O<c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[O].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[O].substring(1)),O++;if("#"!=a.charAt(1)){var W=a.indexOf(":");if(0<W){var R=mxUtils.trim(a.substring(1,
+W)),P=mxUtils.trim(a.substring(W+1));"label"==R?ha=L.sanitizeHtml(P):"style"==R?k=P:"parentstyle"==R?n=P:"stylename"==R&&0<P.length&&"-"!=P?m=P:"styles"==R&&0<P.length&&"-"!=P?l=JSON.parse(P):"identity"==R&&0<P.length&&"-"!=P?q=P:"parent"==R&&0<P.length&&"-"!=P?x=P:"namespace"==R&&0<P.length&&"-"!=P?I=P:"width"==R?G=P:"height"==R?D=P:"left"==R&&0<P.length?H=P:"top"==R&&0<P.length?J=P:"ignore"==R?ja=P.split(","):"connect"==R?Y.push(JSON.parse(P)):"link"==R?aa=P:"padding"==R?S=parseFloat(P):"edgespacing"==
+R?E=parseFloat(P):"nodespacing"==R?M=parseFloat(P):"levelspacing"==R?K=parseFloat(P):"layout"==R&&(U=P)}}}if(null==c[O])throw Error(mxResources.get("invalidOrMissingFile"));var X=this.editor.csvToArray(c[O]),R=W=null;if(null!=q||null!=x)for(var Q=0;Q<X.length;Q++)q==X[Q]&&(W=Q),x==X[Q]&&(R=Q);null==ha&&(ha="%"+X[0]+"%");if(null!=Y)for(var V=0;V<Y.length;V++)null==g[Y[V].to]&&(g[Y[V].to]={});L.model.beginUpdate();try{for(Q=O+1;Q<c.length;Q++){var ca=this.editor.csvToArray(c[Q]);if(null==ca){var fa=
+40<c[Q].length?c[Q].substring(0,40)+"...":c[Q];throw Error(Q+" ("+fa+") "+mxResources.get("containsValidationErrors"));}if(ca.length==X.length){var N=null,ga=null!=W?I+ca[W]:null;null!=ga&&(N=L.model.getCell(ga));var q=null!=N,da=new mxCell(ha,new mxGeometry(ea,Z,0,0),k||"whiteSpace=wrap;html=1;");da.vertex=!0;da.id=ga;for(var ia=0;ia<ca.length;ia++)L.setAttributeForCell(da,X[ia],ca[ia]);if(null!=m&&null!=l){var ra=l[da.getAttribute(m)];null!=ra&&(da.style=ra)}L.setAttributeForCell(da,"placeholders",
+"1");da.style=L.replacePlaceholders(da,da.style);q&&(L.model.setGeometry(N,da.geometry),L.model.setStyle(N,da.style),0>mxUtils.indexOf(e,N)&&e.push(N));N=da;if(!q)for(V=0;V<Y.length;V++)g[Y[V].to][N.getAttribute(Y[V].to)]=N;null!=aa&&"link"!=aa&&(L.setLinkForCell(N,N.getAttribute(aa)),L.setAttributeForCell(N,aa,null));L.fireEvent(new mxEventObject("cellsInserted","cells",[N]));var ta=this.editor.graph.getPreferredSizeForCell(N);N.vertex&&(null!=H&&null!=N.getAttribute(H)&&(N.geometry.x=ea+parseFloat(N.getAttribute(H))),
+null!=J&&null!=N.getAttribute(J)&&(N.geometry.y=ba+parseFloat(N.getAttribute(J))),"@"==G.charAt(0)&&null!=N.getAttribute(G.substring(1))?N.geometry.width=parseFloat(N.getAttribute(G.substring(1))):N.geometry.width="auto"==G?ta.width+S:parseFloat(G),"@"==D.charAt(0)&&null!=N.getAttribute(D.substring(1))?N.geometry.height=parseFloat(N.getAttribute(D.substring(1))):N.geometry.height="auto"==D?ta.height+S:parseFloat(D),Z+=N.geometry.height+M);q?(null==f[ga]&&(f[ga]=[]),f[ga].push(N)):(x=null!=R?L.model.getCell(I+
+ca[R]):null,d.push(N),null!=x?(x.style=L.replacePlaceholders(x,n),L.addCell(N,x)):e.push(L.addCell(N)))}}for(var la=e.slice(),ka=e.slice(),V=0;V<Y.length;V++)for(var ua=Y[V],Q=0;Q<e.length;Q++){var N=e[Q],va=mxUtils.bind(this,function(a,b,c){var d=b.getAttribute(c.from);if(null!=d){L.setAttributeForCell(b,c.from,null);for(var d=d.split(","),e=0;e<d.length;e++){var f=g[c.to][d[e]];if(null!=f){var k=c.label;null!=c.fromlabel&&(k=(b.getAttribute(c.fromlabel)||"")+(k||""));null!=c.tolabel&&(k=(k||"")+
+(f.getAttribute(c.tolabel)||""));ka.push(L.insertEdge(null,null,k||"",c.invert?f:a,c.invert?a:f,c.style||L.createCurrentEdgeStyle()));mxUtils.remove(c.invert?a:f,la)}}}});va(N,N,ua);if(null!=f[N.id])for(ia=0;ia<f[N.id].length;ia++)va(N,f[N.id][ia],ua)}if(null!=ja)for(Q=0;Q<d.length;Q++)for(N=d[Q],ia=0;ia<ja.length;ia++)L.setAttributeForCell(N,mxUtils.trim(ja[ia]),null);if(0<e.length){var ma=new mxParallelEdgeLayout(L);ma.spacing=E;var sa=function(){0<ma.spacing&&ma.execute(L.getDefaultParent());for(var a=
+0;a<e.length;a++){var b=L.getCellGeometry(e[a]);b.x=Math.round(L.snap(b.x));b.y=Math.round(L.snap(b.y));"auto"==G&&(b.width=Math.round(L.snap(b.width)));"auto"==D&&(b.height=Math.round(L.snap(b.height)))}};if("["==U.charAt(0)){var wa=T;L.view.validate();this.executeLayoutList(JSON.parse(U),function(){sa();wa()});T=null}else if("circle"==U){var pa=new mxCircleLayout(L);pa.resetEdges=!1;var xa=pa.isVertexIgnored;pa.isVertexIgnored=function(a){return xa.apply(this,arguments)||0>mxUtils.indexOf(e,a)};
 this.executeLayout(function(){pa.execute(L.getDefaultParent());sa()},!0,T);T=null}else if("horizontaltree"==U||"verticaltree"==U||"auto"==U&&ka.length==2*e.length-1&&1==la.length){L.view.validate();var qa=new mxCompactTreeLayout(L,"horizontaltree"==U);qa.levelDistance=M;qa.edgeRouting=!1;qa.resetEdges=!1;this.executeLayout(function(){qa.execute(L.getDefaultParent(),0<la.length?la[0]:null)},!0,T);T=null}else if("horizontalflow"==U||"verticalflow"==U||"auto"==U&&1==la.length){L.view.validate();var na=
-new mxHierarchicalLayout(L,"horizontalflow"==U?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);na.intraCellSpacing=M;na.parallelEdgeSpacing=F;na.interRankCellSpacing=K;na.disableEdgeStyle=!1;this.executeLayout(function(){na.execute(L.getDefaultParent(),ka);L.moveCells(ka,da,aa)},!0,T);T=null}else if("organic"==U||"auto"==U&&ka.length>e.length){L.view.validate();var oa=new mxFastOrganicLayout(L);oa.forceConstant=3*M;oa.resetEdges=!1;var ya=oa.isVertexIgnored;oa.isVertexIgnored=function(a){return ya.apply(this,
-arguments)||0>mxUtils.indexOf(e,a)};ma=new mxParallelEdgeLayout(L);ma.spacing=F;this.executeLayout(function(){oa.execute(L.getDefaultParent());sa()},!0,T);T=null}}this.hideDialog()}finally{L.model.endUpdate()}null!=T&&T()}}catch(za){this.handleError(za)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var c="?",d;for(d in urlParams)0>mxUtils.indexOf(a,d)&&null!=urlParams[d]&&(b+=c+d+"="+urlParams[d],c="&")}else b=
+new mxHierarchicalLayout(L,"horizontalflow"==U?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);na.intraCellSpacing=M;na.parallelEdgeSpacing=E;na.interRankCellSpacing=K;na.disableEdgeStyle=!1;this.executeLayout(function(){na.execute(L.getDefaultParent(),ka);L.moveCells(ka,ea,ba)},!0,T);T=null}else if("organic"==U||"auto"==U&&ka.length>e.length){L.view.validate();var oa=new mxFastOrganicLayout(L);oa.forceConstant=3*M;oa.resetEdges=!1;var ya=oa.isVertexIgnored;oa.isVertexIgnored=function(a){return ya.apply(this,
+arguments)||0>mxUtils.indexOf(e,a)};ma=new mxParallelEdgeLayout(L);ma.spacing=E;this.executeLayout(function(){oa.execute(L.getDefaultParent());sa()},!0,T);T=null}}this.hideDialog()}finally{L.model.endUpdate()}null!=T&&T()}}catch(za){this.handleError(za)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var c="?",d;for(d in urlParams)0>mxUtils.indexOf(a,d)&&null!=urlParams[d]&&(b+=c+d+"="+urlParams[d],c="&")}else b=
 window.location.search;return b};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0;if("1"==urlParams.offline)a+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),d;for(d in urlParams)0>mxUtils.indexOf(c,d)&&(a=0==b?a+"?":a+"&",null!=urlParams[d]&&(a+=d+"="+urlParams[d],b++))}return a};EditorUi.prototype.showLinkDialog=function(a,b,c){a=new LinkDialog(this,a,b,c,
 !0);this.showDialog(a.container,480,130,!0,!0);a.init()};var m=EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=m.apply(this,arguments),c=this.editor.graph,d=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(c.container)&&c.pageVisible&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width-2*a.x/b),Math.ceil(this.source.minimumGraphSize.height-
 2*a.y/b))}return d.apply(this,arguments)};var e=b.getSourceContainerSize;b.getSourceContainerSize=function(){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width*b-2*a.x),Math.ceil(this.source.minimumGraphSize.height*b-2*a.y))}return e.apply(this,arguments)};b.getOutlineOffset=function(a){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var d=
@@ -8774,13 +8777,13 @@ this.actions.get("connectionArrows").setEnabled(b);this.actions.get("connectionP
 c&&!c.isRestricted());this.actions.get("editDiagram").setEnabled(b&&(null==c||!c.isRestricted()));this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("find").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);
 this.actions.get("rename").setEnabled(null!=c&&c.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var q=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){this.editUpdateListener&&(this.editor.undoManager.removeListener(this.editUpdateListener),this.editUpdateListener=
 null);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);q.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,c,d,e,g){var f=a.editor.graph;if("xml"==c)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==c)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(f.getSvg(d,e,g)),"image/svg+xml");else{var k=
-a.getFileData(!0,null,null,null,null,!0),l=f.getGraphBounds(),m=Math.floor(l.width*e/f.view.scale),n=Math.floor(l.height*e/f.view.scale);k.length<=MAX_REQUEST_SIZE&&m*n<MAX_AREA?(a.hideDialog(),"png"!=c&&"jpg"!=c&&"jpeg"!=c||!a.isExportToCanvas()?a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=d?d:"none")+"&w="+m+"&h="+n+"&border="+g+"&xml="+encodeURIComponent(k))}):"png"==c?a.exportImage(e,
+a.getFileData(!0,null,null,null,null,!0),l=f.getGraphBounds(),m=Math.floor(l.width*e/f.view.scale),p=Math.floor(l.height*e/f.view.scale);k.length<=MAX_REQUEST_SIZE&&m*p<MAX_AREA?(a.hideDialog(),"png"!=c&&"jpg"!=c&&"jpeg"!=c||!a.isExportToCanvas()?a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&bg="+(null!=d?d:"none")+"&w="+m+"&h="+p+"&border="+g+"&xml="+encodeURIComponent(k))}):"png"==c?a.exportImage(e,
 null==d||"none"==d,!0,!1,!1,g,!0,!1):a.exportImage(e,!1,!0,!1,!1,g,!0,!1,"jpeg")):mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.updateEditReferences=function(a){for(var b=0;b<a.changes.length;b++){var c=a.changes[b];if(null!=c&&c.constructor==mxChildChange&&null!=c.child){var d=c.child;if(null!=d.source&&null!=d.source.id){var e=this.getFutureCellForEdit(c.model,a,d.source.id);e!=d.source&&(d.source=e)}null!=d.target&&null!=d.target.id&&(c=this.getFutureCellForEdit(c.model,
 a,d.target.id),c!=d.target&&(d.target=c))}}};EditorUi.prototype.getFutureCellForEdit=function(a,b,c){var d=a.getCell(c);if(null==d)for(var e=b.changes.length-1;0<=e;e--){var f=b.changes[e];if(f.constructor==mxChildChange&&null!=f.child&&f.child.id==c){a.contains(f.previous)&&(d=f.child);break}}return d};EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var a=this.editor.graph,b="";if(null!=this.pages)for(var c=0;c<this.pages.length;c++){var d=a;this.currentPage!=
 this.pages[c]&&(d=this.createTemporaryGraph(a.getStylesheet()),d.model.setRoot(this.pages[c].root));b+=this.pages[c].getName()+" "+d.getIndexableText()+" "}else b=a.getIndexableText();this.editor.graph.setEnabled(!0);return b};EditorUi.prototype.showRemotelyStoredLibrary=function(a){var b={},c=document.createElement("div");c.style.whiteSpace="nowrap";var d=document.createElement("h3");mxUtils.write(d,mxUtils.htmlEntities(a));d.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";
 c.appendChild(d);var e=document.createElement("div");e.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";e.innerHTML='<img src="/images/spin.gif">';var f={};try{var g=mxSettings.getCustomLibraries();for(a=0;a<g.length;a++){var k=g[a];if("R"==k.substring(0,1)){var m=JSON.parse(decodeURIComponent(k.substring(1)));f[m[0]]={id:m[0],title:m[1],downloadUrl:m[2]}}}}catch(z){}this.remoteInvoke("getCustomLibraries",null,null,function(a){e.innerHTML="";if(0==a.length)e.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+
 mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var c=0;c<a.length;c++){var d=a[c];f[d.id]&&(b[d.id]=d);var g=this.addCheckbox(e,d.title,f[d.id]);(function(a,c){mxEvent.addListener(c,"change",function(){this.checked?b[a.id]=a:delete b[a.id]})})(d,g)}},function(){this.handleError(null,mxResources.get("errorLoadingFile"))});c.appendChild(e);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var a=0,c;for(c in b)null==
-f[c]&&(a++,mxUtils.bind(this,function(b){this.remoteInvoke("getFileContent",[b.downloadUrl],null,mxUtils.bind(this,function(c){a--;0==a&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,c,b))}catch(G){this.handleError(G,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){a--;0==a&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(b[c]));for(c in f)b[c]||this.closeLibrary(new RemoteLibrary(this,null,f[c]));0==a&&this.spinner.stop()}),
+f[c]&&(a++,mxUtils.bind(this,function(b){this.remoteInvoke("getFileContent",[b.downloadUrl],null,mxUtils.bind(this,function(c){a--;0==a&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,c,b))}catch(I){this.handleError(I,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){a--;0==a&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(b[c]));for(c in f)b[c]||this.closeLibrary(new RemoteLibrary(this,null,f[c]));0==a&&this.spinner.stop()}),
 null,null,"https://desk.draw.io/support/solutions/articles/16000092763");this.showDialog(c.container,340,375,!0,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(a){this.remoteWin=a;for(var b=0;b<this.remoteInvokeQueue.length;b++)a.postMessage(this.remoteInvokeQueue[b],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=
 function(a){var b=a.msgMarkers,c=this.remoteInvokeCallbacks[b.callbackId];a.error?c.error&&c.error(a.error.errResp):c.callback&&c.callback.apply(this,a.resp);this.remoteInvokeCallbacks[b.callbackId]=null};EditorUi.prototype.remoteInvoke=function(a,b,c,d,e){c=c||{};c.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:d,error:e});a=JSON.stringify({event:"remoteInvoke",funtionName:a,functionArgs:b,msgMarkers:c});null!=this.remoteWin?this.remoteWin.postMessage(a,"*"):
 this.remoteInvokeQueue.push(a)};EditorUi.prototype.handleRemoteInvoke=function(a){var b=mxUtils.bind(this,function(b,c){var d={event:"remoteInvokeResponse",msgMarkers:a.msgMarkers};null!=c?d.error={errResp:c}:null!=b&&(d.resp=b);this.remoteWin.postMessage(JSON.stringify(d),"*")});try{var c=a.funtionName,d=this.remoteInvokableFns[c];if(null!=d&&"function"===typeof this[c]){var e=a.functionArgs;Array.isArray(e)||(e=[]);if(d.isAsync)e.push(function(){b(Array.prototype.slice.apply(arguments))}),e.push(function(a){b(null,
@@ -8792,23 +8795,23 @@ var CommentsWindow=function(a,c,b,d,e,g){function k(){for(var a=C.getElementsByT
 "geCommentEditTxtArea";l.style.minHeight=f.offsetHeight+"px";l.value=a.content;b.insertBefore(l,f);var m=document.createElement("div");m.className="geCommentEditBtns";var n=mxUtils.button(mxResources.get("cancel"),function(){d?(b.parentNode.removeChild(b),k()):e();t=null});n.className="geCommentEditBtn";m.appendChild(n);var p=mxUtils.button(mxResources.get("save"),function(){f.innerHTML="";a.content=l.value;mxUtils.write(f,a.content);e();c(a);t=null});mxEvent.addListener(l,"keydown",mxUtils.bind(this,
 function(a){mxEvent.isConsumed(a)||((mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a))&&13==a.keyCode?(p.click(),mxEvent.consume(a)):27==a.keyCode&&(n.click(),mxEvent.consume(a)))}));p.focus();p.className="geCommentEditBtn gePrimaryBtn";m.appendChild(p);b.insertBefore(m,f);g.style.display="none";f.style.display="none";l.focus()}function n(b,c){c.innerHTML="";var d=a.timeSince(new Date(b.modifiedDate));null==d&&(d=mxResources.get("lessThanAMinute"));mxUtils.write(c,mxResources.get("timeAgo",
 [d],"{1} ago"))}function q(a){var b=document.createElement("img");b.className="geCommentBusyImg";b.src="/images/spin.gif";a.appendChild(b);a.busyImg=b}function f(a){a.style.border="1px solid red";a.removeChild(a.busyImg)}function l(a){a.style.border="";a.removeChild(a.busyImg)}function p(b,c,d,e,g){function B(a,c,d){var e=document.createElement("li");e.className="geCommentAction";var f=document.createElement("a");f.className="geCommentActionLnk";mxUtils.write(f,a);e.appendChild(f);mxEvent.addListener(f,
-"click",function(a){c(a,b);a.preventDefault();mxEvent.consume(a)});M.appendChild(e);d&&(e.style.display="none")}function D(){function a(b){c.push(d);if(null!=b.replies)for(var e=0;e<b.replies.length;e++)d=d.nextSibling,a(b.replies[e])}var c=[],d=F;a(b);return{pdiv:d,replies:c}}function y(c,d,g,k,n){function t(){q(u);b.addReply(x,function(a){x.id=a;b.replies.push(x);l(u);g&&g()},function(b){z();f(u);a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},k,n)}function z(){m(x,
-u,function(a){t()},!0)}var B=D().pdiv,x=a.newComment(c,a.getCurrentUser());x.pCommentId=b.id;null==b.replies&&(b.replies=[]);var u=p(x,b.replies,B,e+1);d?z():t()}if(g||!b.isResolved){z.style.display="none";var F=document.createElement("div");F.className="geCommentContainer";F.setAttribute("data-commentId",b.id);F.style.marginLeft=20*e+5+"px";b.isResolved&&"dark"!=uiTheme&&(F.style.backgroundColor="ghostWhite");var A=document.createElement("div");A.className="geCommentHeader";var G=document.createElement("img");
-G.className="geCommentUserImg";G.src=b.user.pictureUrl||Editor.userImage;A.appendChild(G);G=document.createElement("div");G.className="geCommentHeaderTxt";A.appendChild(G);var E=document.createElement("div");E.className="geCommentUsername";mxUtils.write(E,b.user.displayName||"");G.appendChild(E);E=document.createElement("div");E.className="geCommentDate";E.setAttribute("data-commentId",b.id);n(b,E);G.appendChild(E);F.appendChild(A);A=document.createElement("div");A.className="geCommentTxt";mxUtils.write(A,
-b.content||"");F.appendChild(A);A=document.createElement("div");A.className="geCommentActions";var M=document.createElement("ul");M.className="geCommentActionsList";A.appendChild(M);u||0!=e&&!v||B(mxResources.get("reply"),function(){y("",!0)},b.isResolved);G=a.getCurrentUser();null==G||G.id!=b.user.id||u||(B(mxResources.get("edit"),function(){function c(){m(b,F,function(){q(F);b.editComment(b.content,function(){l(F)},function(b){f(F);c();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}
-c()},b.isResolved),B(mxResources.get("delete"),function(){a.confirm(mxResources.get("areYouSure"),function(){q(F);b.deleteComment(function(){for(var a=D(b).replies,d=0;d<a.length;d++)C.removeChild(a[d]);for(d=0;d<c.length;d++)if(c[d]==b){c.splice(d,1);break}z.style.display=0==C.getElementsByTagName("div").length?"block":"none"},function(b){f(F);a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},b.isResolved));u||0!=e||B(b.isResolved?mxResources.get("reopen"):
-mxResources.get("resolve"),function(a){function c(){var c=a.target;c.innerHTML="";b.isResolved=!b.isResolved;mxUtils.write(c,b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var d=b.isResolved?"none":"",e=D(b).replies,f="dark"==uiTheme?"transparent":b.isResolved?"ghostWhite":"white",g=0;g<e.length;g++){e[g].style.backgroundColor=f;for(var l=e[g].querySelectorAll(".geCommentAction"),m=0;m<l.length;m++)l[m]!=c.parentNode&&(l[m].style.display=d);x||(e[g].style.display="none")}k()}
-b.isResolved?y(mxResources.get("reOpened")+": ",!0,c,!1,!0):y(mxResources.get("markedAsResolved"),!1,c,!0)});F.appendChild(A);null!=d?C.insertBefore(F,d.nextSibling):C.appendChild(F);for(d=0;null!=b.replies&&d<b.replies.length;d++)A=b.replies[d],A.isResolved=b.isResolved,p(A,b.replies,null,e+1,g);null!=t&&(t.comment.id==b.id?(g=b.content,b.content=t.comment.content,m(b,F,t.saveCallback,t.deleteOnCancel),b.content=g):null==t.comment.id&&t.comment.pCommentId==b.id&&(C.appendChild(t.div),m(t.comment,
-t.div,t.saveCallback,t.deleteOnCancel)));return F}}var u=!a.canComment(),v=a.canReplyToReplies(),t=null,A=document.createElement("div");A.className="geCommentsWin";A.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;var y=EditorUi.compactUi?"26px":"30px",C=document.createElement("div");C.className="geCommentsList";C.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;C.style.bottom=parseInt(y)+7+"px";A.appendChild(C);var z=document.createElement("span");
+"click",function(a){c(a,b);a.preventDefault();mxEvent.consume(a)});M.appendChild(e);d&&(e.style.display="none")}function F(){function a(b){c.push(d);if(null!=b.replies)for(var e=0;e<b.replies.length;e++)d=d.nextSibling,a(b.replies[e])}var c=[],d=y;a(b);return{pdiv:d,replies:c}}function E(c,d,g,k,n){function t(){q(u);b.addReply(x,function(a){x.id=a;b.replies.push(x);l(u);g&&g()},function(b){z();f(u);a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},k,n)}function z(){m(x,
+u,function(a){t()},!0)}var B=F().pdiv,x=a.newComment(c,a.getCurrentUser());x.pCommentId=b.id;null==b.replies&&(b.replies=[]);var u=p(x,b.replies,B,e+1);d?z():t()}if(g||!b.isResolved){z.style.display="none";var y=document.createElement("div");y.className="geCommentContainer";y.setAttribute("data-commentId",b.id);y.style.marginLeft=20*e+5+"px";b.isResolved&&"dark"!=uiTheme&&(y.style.backgroundColor="ghostWhite");var A=document.createElement("div");A.className="geCommentHeader";var I=document.createElement("img");
+I.className="geCommentUserImg";I.src=b.user.pictureUrl||Editor.userImage;A.appendChild(I);I=document.createElement("div");I.className="geCommentHeaderTxt";A.appendChild(I);var D=document.createElement("div");D.className="geCommentUsername";mxUtils.write(D,b.user.displayName||"");I.appendChild(D);D=document.createElement("div");D.className="geCommentDate";D.setAttribute("data-commentId",b.id);n(b,D);I.appendChild(D);y.appendChild(A);A=document.createElement("div");A.className="geCommentTxt";mxUtils.write(A,
+b.content||"");y.appendChild(A);A=document.createElement("div");A.className="geCommentActions";var M=document.createElement("ul");M.className="geCommentActionsList";A.appendChild(M);u||0!=e&&!v||B(mxResources.get("reply"),function(){E("",!0)},b.isResolved);I=a.getCurrentUser();null==I||I.id!=b.user.id||u||(B(mxResources.get("edit"),function(){function c(){m(b,y,function(){q(y);b.editComment(b.content,function(){l(y)},function(b){f(y);c();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}
+c()},b.isResolved),B(mxResources.get("delete"),function(){a.confirm(mxResources.get("areYouSure"),function(){q(y);b.deleteComment(function(){for(var a=F(b).replies,d=0;d<a.length;d++)C.removeChild(a[d]);for(d=0;d<c.length;d++)if(c[d]==b){c.splice(d,1);break}z.style.display=0==C.getElementsByTagName("div").length?"block":"none"},function(b){f(y);a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},b.isResolved));u||0!=e||B(b.isResolved?mxResources.get("reopen"):
+mxResources.get("resolve"),function(a){function c(){var c=a.target;c.innerHTML="";b.isResolved=!b.isResolved;mxUtils.write(c,b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var d=b.isResolved?"none":"",e=F(b).replies,f="dark"==uiTheme?"transparent":b.isResolved?"ghostWhite":"white",g=0;g<e.length;g++){e[g].style.backgroundColor=f;for(var l=e[g].querySelectorAll(".geCommentAction"),m=0;m<l.length;m++)l[m]!=c.parentNode&&(l[m].style.display=d);x||(e[g].style.display="none")}k()}
+b.isResolved?E(mxResources.get("reOpened")+": ",!0,c,!1,!0):E(mxResources.get("markedAsResolved"),!1,c,!0)});y.appendChild(A);null!=d?C.insertBefore(y,d.nextSibling):C.appendChild(y);for(d=0;null!=b.replies&&d<b.replies.length;d++)A=b.replies[d],A.isResolved=b.isResolved,p(A,b.replies,null,e+1,g);null!=t&&(t.comment.id==b.id?(g=b.content,b.content=t.comment.content,m(b,y,t.saveCallback,t.deleteOnCancel),b.content=g):null==t.comment.id&&t.comment.pCommentId==b.id&&(C.appendChild(t.div),m(t.comment,
+t.div,t.saveCallback,t.deleteOnCancel)));return y}}var u=!a.canComment(),v=a.canReplyToReplies(),t=null,A=document.createElement("div");A.className="geCommentsWin";A.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;var y=EditorUi.compactUi?"26px":"30px",C=document.createElement("div");C.className="geCommentsList";C.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;C.style.bottom=parseInt(y)+7+"px";A.appendChild(C);var z=document.createElement("span");
 z.style.cssText="display:none;padding-top:10px;text-align:center;";mxUtils.write(z,mxResources.get("noCommentsFound"));var B=document.createElement("div");B.className="geToolbarContainer geCommentsToolbar";B.style.height=y;B.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";B.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;mxClient.IS_QUIRKS&&(B.style.filter="none");y=document.createElement("a");y.className="geButton";mxClient.IS_QUIRKS&&(y.style.filter=
-"none");if(!u){var D=y.cloneNode();D.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';D.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(D,"click",function(b){function c(){m(d,e,function(b){q(e);a.addComment(b,function(a){b.id=a;G.push(b);l(e)},function(b){f(e);c();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var d=a.newComment("",a.getCurrentUser()),e=p(d,G,null,0);c();b.preventDefault();
-mxEvent.consume(b)});B.appendChild(D)}D=y.cloneNode();D.innerHTML='<img src="/images/check.png" style="width: 16px; padding: 2px;">';D.setAttribute("title",mxResources.get("showResolved"));var x=!1;"dark"==uiTheme&&(D.style.filter="invert(100%)");mxEvent.addListener(D,"click",function(a){this.className=(x=!x)?"geButton geCheckedBtn":"geButton";H();a.preventDefault();mxEvent.consume(a)});B.appendChild(D);a.commentsRefreshNeeded()&&(D=y.cloneNode(),D.innerHTML='<img src="/images/update16.png" style="width: 16px; padding: 2px;">',
-D.setAttribute("title",mxResources.get("refresh")),"dark"==uiTheme&&(D.style.filter="invert(100%)"),mxEvent.addListener(D,"click",function(a){H();a.preventDefault();mxEvent.consume(a)}),B.appendChild(D));a.commentsSaveNeeded()&&(y=y.cloneNode(),y.innerHTML='<img src="/images/save.png" style="width: 20px; padding: 2px;">',y.setAttribute("title",mxResources.get("save")),"dark"==uiTheme&&(y.style.filter="invert(100%)"),mxEvent.addListener(y,"click",function(a){g();a.preventDefault();mxEvent.consume(a)}),
-B.appendChild(y));A.appendChild(B);var G=[],H=mxUtils.bind(this,function(){if(null!=t){t.div=t.div.cloneNode(!0);var b=t.div.querySelector(".geCommentEditTxtArea"),c=t.div.querySelector(".geCommentEditBtns");t.comment.content=b.value;b.parentNode.removeChild(b);c.parentNode.removeChild(c)}C.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="/images/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";v=a.canReplyToReplies();a.commentsSupported()?
-a.getComments(function(a){function b(a){if(null!=a){a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});for(var c=0;c<a.length;c++)b(a[c].replies)}}a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});C.innerHTML="";C.appendChild(z);z.style.display="block";G=a;for(a=0;a<G.length;a++)b(G[a].replies),p(G[a],G,null,0,x);null!=t&&null==t.comment.id&&null==t.comment.pCommentId&&(C.appendChild(t.div),m(t.comment,t.div,t.saveCallback,t.deleteOnCancel))},
-function(){C.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))}):C.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});H();this.refreshComments=H;B=mxUtils.bind(this,function(){function a(b){var d=c[b.id];if(null!=d)for(n(b,d),d=0;null!=b.replies&&d<b.replies.length;d++)a(b.replies[d])}if(this.window.isVisible()){for(var b=C.querySelectorAll(".geCommentDate"),c={},d=0;d<b.length;d++){var e=b[d];c[e.getAttribute("data-commentId")]=e}for(d=0;d<G.length;d++)a(G[d])}});setInterval(B,6E4);
+"none");if(!u){var F=y.cloneNode();F.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';F.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(F,"click",function(b){function c(){m(d,e,function(b){q(e);a.addComment(b,function(a){b.id=a;I.push(b);l(e)},function(b){f(e);c();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var d=a.newComment("",a.getCurrentUser()),e=p(d,I,null,0);c();b.preventDefault();
+mxEvent.consume(b)});B.appendChild(F)}F=y.cloneNode();F.innerHTML='<img src="/images/check.png" style="width: 16px; padding: 2px;">';F.setAttribute("title",mxResources.get("showResolved"));var x=!1;"dark"==uiTheme&&(F.style.filter="invert(100%)");mxEvent.addListener(F,"click",function(a){this.className=(x=!x)?"geButton geCheckedBtn":"geButton";G();a.preventDefault();mxEvent.consume(a)});B.appendChild(F);a.commentsRefreshNeeded()&&(F=y.cloneNode(),F.innerHTML='<img src="/images/update16.png" style="width: 16px; padding: 2px;">',
+F.setAttribute("title",mxResources.get("refresh")),"dark"==uiTheme&&(F.style.filter="invert(100%)"),mxEvent.addListener(F,"click",function(a){G();a.preventDefault();mxEvent.consume(a)}),B.appendChild(F));a.commentsSaveNeeded()&&(y=y.cloneNode(),y.innerHTML='<img src="/images/save.png" style="width: 20px; padding: 2px;">',y.setAttribute("title",mxResources.get("save")),"dark"==uiTheme&&(y.style.filter="invert(100%)"),mxEvent.addListener(y,"click",function(a){g();a.preventDefault();mxEvent.consume(a)}),
+B.appendChild(y));A.appendChild(B);var I=[],G=mxUtils.bind(this,function(){if(null!=t){t.div=t.div.cloneNode(!0);var b=t.div.querySelector(".geCommentEditTxtArea"),c=t.div.querySelector(".geCommentEditBtns");t.comment.content=b.value;b.parentNode.removeChild(b);c.parentNode.removeChild(c)}C.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="/images/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";v=a.canReplyToReplies();a.commentsSupported()?
+a.getComments(function(a){function b(a){if(null!=a){a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});for(var c=0;c<a.length;c++)b(a[c].replies)}}a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});C.innerHTML="";C.appendChild(z);z.style.display="block";I=a;for(a=0;a<I.length;a++)b(I[a].replies),p(I[a],I,null,0,x);null!=t&&null==t.comment.id&&null==t.comment.pCommentId&&(C.appendChild(t.div),m(t.comment,t.div,t.saveCallback,t.deleteOnCancel))},
+function(){C.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))}):C.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});G();this.refreshComments=G;B=mxUtils.bind(this,function(){function a(b){var d=c[b.id];if(null!=d)for(n(b,d),d=0;null!=b.replies&&d<b.replies.length;d++)a(b.replies[d])}if(this.window.isVisible()){for(var b=C.querySelectorAll(".geCommentDate"),c={},d=0;d<b.length;d++){var e=b[d];c[e.getAttribute("data-commentId")]=e}for(d=0;d<I.length;d++)a(I[d])}});setInterval(B,6E4);
 this.refreshCommentsTime=B;this.window=new mxWindow(mxResources.get("comments"),A,c,b,d,e,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;
-a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var E=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",E);this.destroy=function(){mxEvent.removeListener(window,"resize",E);this.window.destroy()}},
+a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var D=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",D);this.destroy=function(){mxEvent.removeListener(window,"resize",D);this.window.destroy()}},
 ConfirmDialog=function(a,c,b,d,e,g,k,m,n,q){var f=document.createElement("div");f.style.textAlign="center";var l=document.createElement("div");l.style.padding="6px";l.style.overflow="auto";l.style.maxHeight="44px";l.style.lineHeight="1.2em";mxClient.IS_QUIRKS&&(l.style.height="60px");mxUtils.write(l,c);f.appendChild(l);null!=q&&(l=document.createElement("div"),l.style.padding="6px 0 6px 0",c=document.createElement("img"),c.setAttribute("src",q),l.appendChild(c),f.appendChild(l));q=document.createElement("div");
 q.style.textAlign="center";q.style.whiteSpace="nowrap";var p=document.createElement("input");p.setAttribute("type","checkbox");g=mxUtils.button(g||mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d(p.checked)});g.className="geBtn";null!=m&&(g.innerHTML=m+"<br>"+g.innerHTML,g.style.paddingBottom="8px",g.style.paddingTop="8px",g.style.height="auto",g.style.width="40%");a.editor.cancelFirst&&q.appendChild(g);var u=mxUtils.button(e||mxResources.get("ok"),function(){a.hideDialog();null!=b&&
 b(p.checked)});q.appendChild(u);null!=k?(u.innerHTML=k+"<br>"+u.innerHTML+"<br>",u.style.paddingBottom="8px",u.style.paddingTop="8px",u.style.height="auto",u.className="geBtn",u.style.width="40%"):u.className="geBtn gePrimaryBtn";a.editor.cancelFirst||q.appendChild(g);f.appendChild(q);n?(q.style.marginTop="10px",l=document.createElement("p"),l.style.marginTop="20px",l.appendChild(p),e=document.createElement("span"),mxUtils.write(e," "+mxResources.get("rememberThisSetting")),l.appendChild(e),f.appendChild(l),
@@ -8970,17 +8973,17 @@ k)?this.ui.parseFile(new Blob([d],{type:"application/octet-stream"}),mxUtils.bin
 a.mimeType.substring(0,9)||/\.png$/i.test(a.title)||/\.jpe?g$/i.test(a.title))}catch(m){if(null!=b)b(m);else throw m;}};
 DriveClient.prototype.saveFile=function(a,c,b,d,e,g,k,m){try{a.saveLevel=1;var n=mxUtils.bind(this,function(b){a.saveLevel=null;if(null!=d)d(b);else throw b;try{if(!a.isConflict(b)){var c="error_"+(a.getErrorMessage(b)||"unknown");null!=b&&null!=b.error&&null!=b.error.code&&(c+="-code_"+b.error.code);EditorUi.logEvent({category:"ERROR-SAVE-FILE-"+a.getHash()+"-rev_"+a.desc.headRevisionId+"-mod_"+a.desc.modifiedDate+"-size_"+a.getSize()+"-mime_"+a.desc.mimeType+(this.ui.editor.autosave?"":"-nosave")+
 (a.isAutosave()?"":"-noauto")+(a.changeListenerEnabled?"":"-nolisten")+(a.inConflictState?"-conflict":"")+(a.invalidChecksum?"-invalid":""),action:c,label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")})}}catch(z){}}),q=mxUtils.bind(this,function(b){n(b);try{EditorUi.logError(b.message,null,null,b),EditorUi.sendReport("Critical error in DriveClient.saveFile "+(new Date).toISOString()+":\n\nBrowser="+navigator.userAgent+"\nFile="+a.desc.id+"."+a.desc.headRevisionId+
-"\nUser="+(null!=this.user?this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")+"\nMessage="+b.message+"\n\nStack:\n"+b.stack)}catch(C){}});if(a.isEditable()&&null!=a.desc){var f=(new Date).getTime(),l=a.desc.etag,p=a.desc.modifiedDate,u=a.desc.headRevisionId,v=this.ui.useCanvasForExport&&/(\.png)$/i.test(a.getTitle());e=null!=e?e:!this.ui.isLegacyDriveDomain()||"1"==urlParams.ignoremime;g=null!=g?g:!1;var t=mxUtils.bind(this,function(d,e,t){try{a.saveLevel=3;var z=null,D=!1,
-x={mimeType:a.desc.mimeType,title:a.getTitle()};this.isGoogleRealtimeMimeType(a.desc.mimeType)?(x.mimeType=this.xmlMimeType,z=a.desc,D=c=!0):"application/octet-stream"==x.mimeType&&(x.mimeType=this.xmlMimeType);a.constructor==DriveFile&&(null==m&&(m=[]),null==a.getChannelId()&&m.push({key:"channel",value:Editor.guid(32)}),null==a.getChannelKey()&&m.push({key:"key",value:Editor.guid(32)}),m.push({key:"secret",value:Editor.guid(32)}));t||(null!=d||g||(d=this.placeholderThumbnail,e=this.placeholderMimeType),
+"\nUser="+(null!=this.user?this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")+"\nMessage="+b.message+"\n\nStack:\n"+b.stack)}catch(C){}});if(a.isEditable()&&null!=a.desc){var f=(new Date).getTime(),l=a.desc.etag,p=a.desc.modifiedDate,u=a.desc.headRevisionId,v=this.ui.useCanvasForExport&&/(\.png)$/i.test(a.getTitle());e=null!=e?e:!this.ui.isLegacyDriveDomain()||"1"==urlParams.ignoremime;g=null!=g?g:!1;var t=mxUtils.bind(this,function(d,e,t){try{a.saveLevel=3;var z=null,F=!1,
+x={mimeType:a.desc.mimeType,title:a.getTitle()};this.isGoogleRealtimeMimeType(a.desc.mimeType)?(x.mimeType=this.xmlMimeType,z=a.desc,F=c=!0):"application/octet-stream"==x.mimeType&&(x.mimeType=this.xmlMimeType);a.constructor==DriveFile&&(null==m&&(m=[]),null==a.getChannelId()&&m.push({key:"channel",value:Editor.guid(32)}),null==a.getChannelKey()&&m.push({key:"key",value:Editor.guid(32)}),m.push({key:"secret",value:Editor.guid(32)}));t||(null!=d||g||(d=this.placeholderThumbnail,e=this.placeholderMimeType),
 null!=d&&null!=e&&(x.thumbnail={image:d,mimeType:e}));var y=a.getData(),A=mxUtils.bind(this,function(d){try{a.saveDelay=(new Date).getTime()-f;var e=(new Date(d.modifiedDate)).getTime()-(new Date(p)).getTime();if(0>=e||l==d.etag||c&&u==d.headRevisionId){var g=[];0>=e&&g.push("invalid modified time");l==d.etag&&g.push("stale etag");c&&u==d.headRevisionId&&g.push("stale revision");var k=g.join(", ");n({message:mxResources.get("errorSavingFile")+": "+k},d);try{EditorUi.sendReport("Critical: Error saving to Google Drive "+
 (new Date).toISOString()+":\n\nBrowser="+navigator.userAgent+"\nFile="+a.desc.id+" "+a.desc.mimeType+"\nUser="+(null!=this.user?this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")+"\nErrors="+k+"\nOld="+u+" "+p+" etag-hash="+this.ui.hashValue(l)+"\nNew="+d.headRevisionId+" "+d.modifiedDate+" etag-hash="+this.ui.hashValue(d.etag)),EditorUi.logError("Critical: Error saving to Google Drive "+a.desc.id,null,"from-"+u+"."+p+"-"+this.ui.hashValue(l)+"-to-"+d.headRevisionId+"."+d.modifiedDate+
 "-"+this.ui.hashValue(d.etag)+(0<k.length?"-errors-"+k:""),"user-"+(null!=this.user?this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync"))}catch(K){}}else{a.saveLevel=null;b(d,y);if(null!=z){this.executeRequest(gapi.client.drive.revisions.get({fileId:z.id,revisionId:z.headRevisionId,supportsTeamDrives:!0}),mxUtils.bind(this,mxUtils.bind(this,function(a){a.pinned=!0;this.executeRequest(gapi.client.drive.revisions.update({fileId:z.id,revisionId:z.headRevisionId,resource:a}))})));
 try{EditorUi.logEvent({category:a.convertedFrom+"-CONVERT-FILE-"+a.getHash(),action:"from_"+z.id+"."+z.headRevisionId+"-to_"+a.desc.id+"."+a.desc.headRevisionId,label:null!=this.user?"user_"+this.user.id:"nouser"+(null!=a.sync?"-client_"+a.sync.clientId:"nosync")})}catch(K){}}try{EditorUi.logEvent({category:"SUCCESS-SAVE-FILE-"+a.getHash()+"-rev0_"+u+"-mod0_"+p,action:"rev-"+d.headRevisionId+"-mod_"+d.modifiedDate+"-size_"+a.getSize()+"-mime_"+a.desc.mimeType+(this.ui.editor.autosave?"":"-nosave")+
-(a.isAutosave()?"":"-noauto")+(a.changeListenerEnabled?"":"-nolisten")+(a.inConflictState?"-conflict":"")+(a.invalidChecksum?"-invalid":""),label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")})}catch(K){}}}catch(K){q(K)}}),E=mxUtils.bind(this,function(b,e){a.saveLevel=4;try{null!=m&&(x.properties=m);var f=k||a.constructor!=DriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:a.getCurrentEtag(),g=0,l=mxUtils.bind(this,function(d){a.saveLevel=
-5;try{var k=a.desc.mimeType!=this.xmlMimeType&&a.desc.mimeType!=this.mimeType&&a.desc.mimeType!=this.libraryMimeType,m=!0,p=window.setTimeout(mxUtils.bind(this,function(){m=!1;n({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),4*this.ui.timeout);this.executeRequest(this.createUploadRequest(a.getId(),x,b,c||d||k,e,d?null:f,D),mxUtils.bind(this,function(a){window.clearTimeout(p);m&&A(a)}),mxUtils.bind(this,function(b){window.clearTimeout(p);if(m){a.saveLevel=6;try{a.isConflict(b)?this.executeRequest(gapi.client.drive.files.get({fileId:a.getId(),
+(a.isAutosave()?"":"-noauto")+(a.changeListenerEnabled?"":"-nolisten")+(a.inConflictState?"-conflict":"")+(a.invalidChecksum?"-invalid":""),label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")})}catch(K){}}}catch(K){q(K)}}),D=mxUtils.bind(this,function(b,e){a.saveLevel=4;try{null!=m&&(x.properties=m);var f=k||a.constructor!=DriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:a.getCurrentEtag(),g=0,l=mxUtils.bind(this,function(d){a.saveLevel=
+5;try{var k=a.desc.mimeType!=this.xmlMimeType&&a.desc.mimeType!=this.mimeType&&a.desc.mimeType!=this.libraryMimeType,m=!0,p=window.setTimeout(mxUtils.bind(this,function(){m=!1;n({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),4*this.ui.timeout);this.executeRequest(this.createUploadRequest(a.getId(),x,b,c||d||k,e,d?null:f,F),mxUtils.bind(this,function(a){window.clearTimeout(p);m&&A(a)}),mxUtils.bind(this,function(b){window.clearTimeout(p);if(m){a.saveLevel=6;try{a.isConflict(b)?this.executeRequest(gapi.client.drive.files.get({fileId:a.getId(),
 fields:this.catchupFields,supportsTeamDrives:!0}),mxUtils.bind(this,function(c){a.saveLevel=7;try{if(null!=c&&c.etag==f)if(g<this.maxRetries)g++,window.setTimeout(l,2*g*this.coolOff*(1+.1*(Math.random()-.5)));else{l(!0);try{EditorUi.logError("Warning: Stale Etag Overwrite "+a.getHash(),null,a.desc.id+"."+a.desc.headRevisionId,(null!=this.user?"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync"))}catch(U){}}else n(b,c)}catch(U){q(U)}}),mxUtils.bind(this,function(){n(b)})):
-n(b)}catch(ha){q(ha)}}}))}catch(aa){q(aa)}});if(v&&null==d){a.saveLevel=8;var p=new Image;p.onload=mxUtils.bind(this,function(){try{var a=this.thumbnailWidth/p.width,b=document.createElement("canvas");b.width=this.thumbnailWidth;b.height=Math.floor(p.height*a);b.getContext("2d").drawImage(p,0,0,b.width,b.height);var c=b.toDataURL(),c=c.substring(c.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_");x.thumbnail={image:c,mimeType:"image/png"};l(!1)}catch(da){l(!1)}});p.src="data:image/png;base64,"+
-b}else l(!1)}catch(L){q(L)}});v?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){E(a,!0)}),n,this.ui.getCurrentFile()!=a?y:null):E(y,!1)}catch(I){q(I)}}),A=mxUtils.bind(this,function(){try{if(a.saveLevel=2,g||v||a.constructor==DriveLibrary||!this.enableThumbnails||"0"==urlParams.thumb||null!=a.desc.mimeType&&"application/vnd.jgraph.mxfile"!=a.desc.mimeType.substring(0,29)||!this.ui.getThumbnail(this.thumbnailWidth,mxUtils.bind(this,function(b){try{var c=a.thumbTime=null;try{null!=b&&(c=b.toDataURL("image/png")),
+n(b)}catch(ha){q(ha)}}}))}catch(ba){q(ba)}});if(v&&null==d){a.saveLevel=8;var p=new Image;p.onload=mxUtils.bind(this,function(){try{var a=this.thumbnailWidth/p.width,b=document.createElement("canvas");b.width=this.thumbnailWidth;b.height=Math.floor(p.height*a);b.getContext("2d").drawImage(p,0,0,b.width,b.height);var c=b.toDataURL(),c=c.substring(c.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_");x.thumbnail={image:c,mimeType:"image/png"};l(!1)}catch(ea){l(!1)}});p.src="data:image/png;base64,"+
+b}else l(!1)}catch(L){q(L)}});v?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){D(a,!0)}),n,this.ui.getCurrentFile()!=a?y:null):D(y,!1)}catch(H){q(H)}}),A=mxUtils.bind(this,function(){try{if(a.saveLevel=2,g||v||a.constructor==DriveLibrary||!this.enableThumbnails||"0"==urlParams.thumb||null!=a.desc.mimeType&&"application/vnd.jgraph.mxfile"!=a.desc.mimeType.substring(0,29)||!this.ui.getThumbnail(this.thumbnailWidth,mxUtils.bind(this,function(b){try{var c=a.thumbTime=null;try{null!=b&&(c=b.toDataURL("image/png")),
 null!=c&&(c=c.length>this.maxThumbnailSize?null:c.substring(c.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_"))}catch(z){c=null}t(c,"image/png")}catch(z){q(z)}})))a.thumbTime=null,t(null,null,a.constructor!=DriveLibrary)}catch(y){q(y)}});e||!c?A():this.verifyMimeType(a.getId(),A,!0)}else this.ui.editor.graph.reset(),n({message:mxResources.get("readOnly")})}catch(y){q(y)}};
 DriveClient.prototype.verifyMimeType=function(a,c,b,d){null==this.lastMimeCheck&&(this.lastMimeCheck=0);var e=(new Date).getTime();if(b||e-this.lastMimeCheck>this.mimeTypeCheckCoolOff)this.lastMimeCheck=e,this.checkingMimeType||(this.checkingMimeType=!0,this.executeRequest(gapi.client.drive.files.get({fileId:a,fields:"mimeType",supportsTeamDrives:!0}),mxUtils.bind(this,function(b){this.checkingMimeType=!1;null!=b&&"application/vnd.jgraph.mxfile.realtime"==b.mimeType?this.redirectToNewApp(d,a):null!=
 c&&c()})))};
@@ -9014,12 +9017,12 @@ DriveClient.prototype.jsonToCell=function(a,c){var b=new mxCell;b.id=a.cellId.js
 DriveClient.prototype.checkRealtimeFiles=function(a){var c=null!=this.user&&null!=this.user.email?this.user.email:null;this.executeRequest(gapi.client.drive.files.list({maxResults:1,q:"mimeType='application/vnd.jgraph.mxfile.realtime'"+(null!=c?" and '"+c+"' in writers":""),includeTeamDriveItems:!0,supportsTeamDrives:!0}),mxUtils.bind(this,function(b){null!=b&&(null!=b.nextPageToken||null!=b.items&&0<b.items.length)&&a()}))};
 DriveClient.prototype.convertRealtimeFiles=function(){var a=document.createElement("div");a.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;padding:8px;background:#ffffff;z-index:2;overflow:auto;white-space:nowrap;line-height:1.5em;";document.body.appendChild(a);var c=Date.now(),b=mxUtils.bind(this,function(b,c){a.innerHTML+=b+(c?"":"<br>");a.scrollTop=a.scrollHeight});b("draw.io ("+EditorUi.VERSION+") is searching files to be converted...");b('<a href="https://desk.draw.io/support/solutions/articles/16000092210" target="_blank">Click here for help</a>');
 this.ui.spinner.spin(document.body,"Searching files...")?this.checkToken(mxUtils.bind(this,function(){var a={},e=0,g=0,k=0,m=0,n=0,q=0,f=0,l=0,p=0,u=null!=this.user&&null!=this.user.email?this.user.email:null,v="mimeType='application/vnd.jgraph.mxfile.realtime'"+(null!=u?" and '"+u+"' in writers":""),t=mxUtils.bind(this,function(){this.ui.spinner.stop();b("<br>Conversion complete. Successfully converted "+e+" file(s).",!0);0<f?b(" Failed to convert "+f+' file(s).<br><br><b>ACTION REQUIRED:</b><br><ul><li>Click <a target="_blank" href="https://drive.google.com/drive/u/0/search?q=type:application/vnd.jgraph.mxfile.realtime">here</a> to list all affected files</li><li>Open each file in turn by right-clicking the file and selecting open with draw.io</li><li>Open each file in turn. When loaded, select File->Save</li></ul>'):
-b("<br><br>This window can now be closed.");try{var a=Date.now()-c;EditorUi.logEvent({category:"AUTO-CONVERT",action:"total_"+l+"-done_"+e+"-fail_"+f+"-xml_"+k+"-json_"+g+"-load_"+m+"-save_"+q+"-invalid_"+n+"-dt-"+Math.round(a/1E3),label:null!=this.user?"user_"+this.user.id:"-nouser"})}catch(D){}}),A=function(a){return null==a?"":null!=a.message?a.message:null!=a.error&&null!=a.error.message?a.error.message:""},y=mxUtils.bind(this,function(){if(this.ui.spinner.spin(document.body,"Converting "+l+" file(s)")){b("Found "+
-l+" file(s). This will take up to "+Math.ceil(5E3*l/6E4)+" minute(s). <b>Please do not close this window!</b><br>");var c=0,d=mxUtils.bind(this,function(z,B){var x={maxResults:1,q:v,includeTeamDriveItems:!0,supportsTeamDrives:!0};null!=z&&(x.pageToken=z);var u=!0,D=window.setTimeout(mxUtils.bind(this,function(){u=!1;d(z,B)}),this.ui.timeout);this.executeRequest(gapi.client.drive.files.list(x),mxUtils.bind(this,function(x){window.clearTimeout(D);if(u){var v=mxUtils.bind(this,function(){null!=x.nextPageToken?
+b("<br><br>This window can now be closed.");try{var a=Date.now()-c;EditorUi.logEvent({category:"AUTO-CONVERT",action:"total_"+l+"-done_"+e+"-fail_"+f+"-xml_"+k+"-json_"+g+"-load_"+m+"-save_"+q+"-invalid_"+n+"-dt-"+Math.round(a/1E3),label:null!=this.user?"user_"+this.user.id:"-nouser"})}catch(F){}}),A=function(a){return null==a?"":null!=a.message?a.message:null!=a.error&&null!=a.error.message?a.error.message:""},y=mxUtils.bind(this,function(){if(this.ui.spinner.spin(document.body,"Converting "+l+" file(s)")){b("Found "+
+l+" file(s). This will take up to "+Math.ceil(5E3*l/6E4)+" minute(s). <b>Please do not close this window!</b><br>");var c=0,d=mxUtils.bind(this,function(z,B){var x={maxResults:1,q:v,includeTeamDriveItems:!0,supportsTeamDrives:!0};null!=z&&(x.pageToken=z);var u=!0,F=window.setTimeout(mxUtils.bind(this,function(){u=!1;d(z,B)}),this.ui.timeout);this.executeRequest(gapi.client.drive.files.list(x),mxUtils.bind(this,function(x){window.clearTimeout(F);if(u){var v=mxUtils.bind(this,function(){null!=x.nextPageToken?
 d(x.nextPageToken):t()});if(null!=x&&null!=x.error)p++,4>p?d(z,B):(this.ui.spinner.stop(),b("Query for next file failed multiple times. Exiting.<br><br>This window can now be closed."));else if(null==x||null!=x.items&&0!=x.items.length||null==x.nextPageToken)if(null!=x&&null!=x.items&&0<x.items.length){var y=x.items[0].id;this.ui.spinner.stop();c++;this.ui.spinner.spin(document.body,"Converting file "+c+" of "+l)&&(b("Converting "+c+" of "+l+': "'+mxUtils.htmlEntities(x.items[0].title)+'" (<a href="https://drive.google.com/open?id='+
-y+'" target="_blank">'+y+"</a>)... ",!0),window.setTimeout(mxUtils.bind(this,function(){null==a[y]?(u=a[y]=!0,D=window.setTimeout(mxUtils.bind(this,function(){u=!1;f++;m++;b('<img src="'+this.ui.editor.graph.warningImage.src+'" border="0" valign="absmiddle"/> Timeout');v()}),this.ui.timeout),this.getFile(y,mxUtils.bind(this,function(a){window.clearTimeout(D);u&&(a.constructor==DriveFile?("json"==a.convertedFrom?g++:k++,u=!0,D=window.setTimeout(mxUtils.bind(this,function(){u=!1;f++;q++;b('<img src="'+
-this.ui.editor.graph.warningImage.src+'" border="0" valign="absmiddle"/> Timeout');v()}),this.ui.timeout),this.saveFile(a,null,mxUtils.bind(this,function(){window.clearTimeout(D);u&&(e++,b('OK <img src="'+Editor.checkmarkImage+'" border="0" valign="middle"/>'),v())}),mxUtils.bind(this,function(a){window.clearTimeout(D);u&&(a=A(a),f++,q++,b('<img src="'+this.ui.editor.graph.warningImage.src+'" border="0" valign="absmiddle"/> '+a),v())}))):(f++,n++,b('<img src="'+this.ui.editor.graph.warningImage.src+
-'" border="0" valign="absmiddle"/> Invalid file'),v()))}),mxUtils.bind(this,function(a){window.clearTimeout(D);u&&(a=A(a),f++,m++,b('<img src="'+this.ui.editor.graph.warningImage.src+'" border="0" valign="absmiddle"/> '+a),v())}))):(this.ui.spinner.stop(),b("Search returned duplicate file "+y+". Exiting.<br><br>This window can now be closed."))}),null!=B?B:2E3))}else t();else d(x.nextPageToken,1E4)}}))});d()}}),C={maxResults:1E4,q:v,includeTeamDriveItems:!0,supportsTeamDrives:!0},z=mxUtils.bind(this,
+y+'" target="_blank">'+y+"</a>)... ",!0),window.setTimeout(mxUtils.bind(this,function(){null==a[y]?(u=a[y]=!0,F=window.setTimeout(mxUtils.bind(this,function(){u=!1;f++;m++;b('<img src="'+this.ui.editor.graph.warningImage.src+'" border="0" valign="absmiddle"/> Timeout');v()}),this.ui.timeout),this.getFile(y,mxUtils.bind(this,function(a){window.clearTimeout(F);u&&(a.constructor==DriveFile?("json"==a.convertedFrom?g++:k++,u=!0,F=window.setTimeout(mxUtils.bind(this,function(){u=!1;f++;q++;b('<img src="'+
+this.ui.editor.graph.warningImage.src+'" border="0" valign="absmiddle"/> Timeout');v()}),this.ui.timeout),this.saveFile(a,null,mxUtils.bind(this,function(){window.clearTimeout(F);u&&(e++,b('OK <img src="'+Editor.checkmarkImage+'" border="0" valign="middle"/>'),v())}),mxUtils.bind(this,function(a){window.clearTimeout(F);u&&(a=A(a),f++,q++,b('<img src="'+this.ui.editor.graph.warningImage.src+'" border="0" valign="absmiddle"/> '+a),v())}))):(f++,n++,b('<img src="'+this.ui.editor.graph.warningImage.src+
+'" border="0" valign="absmiddle"/> Invalid file'),v()))}),mxUtils.bind(this,function(a){window.clearTimeout(F);u&&(a=A(a),f++,m++,b('<img src="'+this.ui.editor.graph.warningImage.src+'" border="0" valign="absmiddle"/> '+a),v())}))):(this.ui.spinner.stop(),b("Search returned duplicate file "+y+". Exiting.<br><br>This window can now be closed."))}),null!=B?B:2E3))}else t();else d(x.nextPageToken,1E4)}}))});d()}}),C={maxResults:1E4,q:v,includeTeamDriveItems:!0,supportsTeamDrives:!0},z=mxUtils.bind(this,
 function(a){null!=a&&(C.pageToken=a);this.executeRequest(gapi.client.drive.files.list(C),mxUtils.bind(this,function(a){l+=null!=a&&null!=a.items?a.items.length:0;null!=a.nextPageToken?z(a.nextPageToken):(this.ui.spinner.stop(),this.ui.showError("Confirm","You are about to convert "+l+" file(s)","Cancel",mxUtils.bind(this,function(){b("Cancelled by user.<br><br>This window can now be closed.")}),null,"OK",y,"Help",function(){window.open("https://desk.draw.io/support/solutions/articles/16000092210")},
 340,120))}))});z()})):(this.ui.spinner.stop(),b("Busy. <br><br>This window can now be closed."))};DropboxFile=function(a,c,b){DrawioFile.call(this,a,c);this.stat=b};mxUtils.extend(DropboxFile,DrawioFile);DropboxFile.prototype.getId=function(){return this.stat.path_display.substring(1)};DropboxFile.prototype.getHash=function(){return"D"+encodeURIComponent(this.getId())};DropboxFile.prototype.getMode=function(){return App.MODE_DROPBOX};DropboxFile.prototype.isAutosaveOptional=function(){return!0};DropboxFile.prototype.getTitle=function(){return this.stat.name};
 DropboxFile.prototype.isRenamable=function(){return!0};DropboxFile.prototype.getSize=function(){return this.stat.size};DropboxFile.prototype.isRevisionHistorySupported=function(){return!0};
@@ -9156,10 +9159,10 @@ c.height;g.style="border: 1px solid black;margin:5px;vertical-align:middle";f.ap
 mxUtils.bind(this,function(a){this.ui.spinner.stop();m.appendChild(n("../ [Up]",mxUtils.bind(this,function(){u()})));mxUtils.br(m);null==a||0==a.length?mxUtils.write(m,mxResources.get("noFiles")):mxUtils.bind(this,function(){for(var d=0;d<a.length;d++)mxUtils.bind(this,function(a){m.appendChild(n(a.name,mxUtils.bind(this,function(){this.ui.hideDialog();c(b+this.SEPARATOR+a.id)}),null!=a.previews?a.previews[0]:null))})(a[d])})()}),mxUtils.bind(this,function(b){401==b.status?this.authenticate(a,q,!0):
 null!=q&&q(b)}))});a()}),l=null,p=null,u=mxUtils.bind(this,function(g){null==g&&(e=0,m.innerHTML="",g=1);this.ui.spinner.spin(m,mxResources.get("loading"));null!=l&&null!=l.parentNode&&l.parentNode.removeChild(l);l=document.createElement("a");l.style.display="block";l.setAttribute("href","javascript:void(0);");mxUtils.write(l,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){mxEvent.removeListener(m,"scroll",p);u(g+1)});mxEvent.addListener(l,"click",k);var v=mxUtils.bind(this,function(){Trello.get("search",
 {query:""==mxUtils.trim(d)?"is:open":d,cards_limit:100,cards_page:g-1},mxUtils.bind(this,function(e){this.ui.spinner.stop();e=null!=e?e.cards:null;if(null==e||0==e.length)mxUtils.write(m,mxResources.get("noFiles"));else{1==g&&(m.appendChild(n(mxResources.get("filterCards")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.ui,d,mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&(d=a,u())}),mxResources.get("filterCards"),null,null,"http://help.trello.com/article/808-searching-for-cards-all-boards");
-this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(m));for(var q=0;q<e.length;q++)mxUtils.bind(this,function(d){m.appendChild(n(d.name,mxUtils.bind(this,function(){a?(b=d.id,f()):(this.ui.hideDialog(),c(d.id))})))})(e[q]);100==e.length&&(m.appendChild(l),p=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&k()},mxEvent.addListener(m,"scroll",p))}}),mxUtils.bind(this,function(a){401==a.status?this.authenticate(v,q,!0):null!=q&&q({message:a.responseText})}))});v()});u()};
+this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(m));for(var t=0;t<e.length;t++)mxUtils.bind(this,function(d){m.appendChild(n(d.name,mxUtils.bind(this,function(){a?(b=d.id,f()):(this.ui.hideDialog(),c(d.id))})))})(e[t]);100==e.length&&(m.appendChild(l),p=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&k()},mxEvent.addListener(m,"scroll",p))}}),mxUtils.bind(this,function(a){401==a.status?this.authenticate(v,q,!0):null!=q&&q({message:a.responseText})}))});v()});u()};
 TrelloClient.prototype.isAuthorized=function(){try{return null!=localStorage.trello_token}catch(a){}return!1};TrelloClient.prototype.logout=function(){localStorage.removeItem("trello_token");Trello.deauthorize()};DrawioComment=function(a,c,b,d,e,g,k){this.file=a;this.id=c;this.content=b;this.modifiedDate=d;this.createdDate=e;this.isResolved=g;this.user=k;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,c,b,d,e){c()};DrawioComment.prototype.editComment=function(a,c,b){c()};DrawioComment.prototype.deleteComment=function(a,c){a()};DriveComment=function(a,c,b,d,e,g,k,m){DrawioComment.call(this,a,c,b,d,e,g,k);this.pCommentId=m};mxUtils.extend(DriveComment,DrawioComment);DriveComment.prototype.addReply=function(a,c,b,d,e){a={content:a.content};d?a.verb="resolve":e&&(a.verb="reopen");this.file.ui.drive.executeRequest(gapi.client.drive.replies.insert({fileId:this.file.getId(),commentId:this.id,resource:a}),mxUtils.bind(this,function(a){c(a.replyId)}),b)};
 DriveComment.prototype.editComment=function(a,c,b){this.content=a;a={content:a};this.file.ui.drive.executeRequest(this.pCommentId?gapi.client.drive.replies.patch({fileId:this.file.getId(),commentId:this.pCommentId,replyId:this.id,resource:a}):gapi.client.drive.comments.patch({fileId:this.file.getId(),commentId:this.id,resource:a}),c,b)};
-DriveComment.prototype.deleteComment=function(a,c){this.file.ui.drive.executeRequest(this.pCommentId?gapi.client.drive.replies["delete"]({fileId:this.file.getId(),commentId:this.pCommentId,replyId:this.id}):gapi.client.drive.comments["delete"]({fileId:this.file.getId(),commentId:this.id}),a,c)};App=function(a,c,b){EditorUi.call(this,a,c,null!=b?b:"1"==urlParams.lightbox||"min"==uiTheme&&"0"!=urlParams.chrome);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(window.onunload=mxUtils.bind(this,function(){var a=this.getCurrentFile();if(null!=a&&a.isModified()){var b={category:"DISCARD-FILE-"+a.getHash(),action:(a.savingFile?"saving":"")+(a.savingFile&&null!=a.savingFileTime?"_"+Math.round((Date.now()-a.savingFileTime.getTime())/1E3):"")+ +(null!=a.saveLevel?"-sl_"+a.saveLevel:0)+"-age_"+(null!=
+DriveComment.prototype.deleteComment=function(a,c){this.file.ui.drive.executeRequest(this.pCommentId?gapi.client.drive.replies["delete"]({fileId:this.file.getId(),commentId:this.pCommentId,replyId:this.id}):gapi.client.drive.comments["delete"]({fileId:this.file.getId(),commentId:this.id}),a,c)};App=function(a,c,b){EditorUi.call(this,a,c,null!=b?b:"1"==urlParams.lightbox||"min"==uiTheme&&"0"!=urlParams.chrome);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(window.onunload=mxUtils.bind(this,function(){var a=this.getCurrentFile();if(null!=a&&a.isModified()){var b={category:"DISCARD-FILE-"+a.getHash(),action:(a.savingFile?"saving":"")+(a.savingFile&&null!=a.savingFileTime?"_"+Math.round((Date.now()-a.savingFileTime.getTime())/1E3):"")+(null!=a.saveLevel?"-sl_"+a.saveLevel:"")+"-age_"+(null!=
 a.ageStart?Math.round((Date.now()-a.ageStart.getTime())/1E3):"x")+(this.editor.autosave?"":"-nosave")+(a.isAutosave()?"":"-noauto")+"-open_"+(null!=a.opened?Math.round((Date.now()-a.opened.getTime())/1E3):"x")+"-save_"+(null!=a.lastSaved?Math.round((Date.now()-a.lastSaved.getTime())/1E3):"x")+"-change_"+(null!=a.lastChanged?Math.round((Date.now()-a.lastChanged.getTime())/1E3):"x")+"-alive_"+Math.round((Date.now()-App.startTime.getTime())/1E3),label:null!=a.sync?"client_"+a.sync.clientId:"nosync"};
 a.constructor==DriveFile&&null!=a.desc&&null!=this.drive&&(b.label+=(null!=this.drive.user?"-user_"+this.drive.user.id:"-nouser")+"-rev_"+a.desc.headRevisionId+"-mod_"+a.desc.modifiedDate+"-size_"+a.getSize()+"-mime_"+a.desc.mimeType);EditorUi.logEvent(b)}}));this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&EditorUi.logEvent({category:(this.editor.autosave?"ON":"OFF")+"-AUTOSAVE-FILE-"+a.getHash(),action:"changed",label:"autosave_"+(this.editor.autosave?
 "on":"off")})}));mxClient.IS_SVG?mxGraph.prototype.warningImage.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAE7SURBVHjaYvz//z8DJQAggBjwGXDuHMP/tWuD/uPTCxBAOA0AaQRK/f/+XeJ/cbHlf1wGAAQQTgPu3QNLgfHSpZo4DQAIIKwGwGyH4e/fFbG6AiQJEEAs2Ew2NFzH8OOHBMO6dT/A/KCg7wxGRh+wuhQggDBcALMdFIAcHBxgDGJjcwVIIUAAYbhAUXEdVos4OO4DXcGBIQ4QQCguQPY7sgtgAYruCpAgQACx4LJdU1OCwctLEcyWlLwPJF+AXQE0EMUBAAEEdwF6yMOiD4RRY0QT7gqQAEAAseDzu6XldYYPH9DD4joQa8L5AAEENgWb7SBcXa0JDQMBrK4AcQACiAlfyOMCEFdAnAYQQEz4FLa0XGf4/v0H0IIPONUABBAjyBmMjIwMS5cK/L927QORbtBkaG29DtYLEGAAH6f7oq3Zc+kAAAAASUVORK5CYII=":
@@ -9212,7 +9215,7 @@ typeof Dropbox.choose?(window.DrawDropboxClientCallback=null,this.dropbox=new Dr
 action:"timeout",label:408})}),this.timeout);(new Date).getTime();mxUtils.get(EditorUi.cacheUrl+"?alive",mxUtils.bind(this,function(a){window.clearTimeout(g)}))}}else null!=this.menubar&&(this.menubar.container.style.paddingTop="0px");this.updateHeader();null!=this.menubar&&(this.buttonContainer=document.createElement("div"),this.buttonContainer.style.display="inline-block",this.buttonContainer.style.paddingRight="48px",this.buttonContainer.style.position="absolute",this.buttonContainer.style.right=
 "0px",this.menubar.container.appendChild(this.buttonContainer));"atlas"==uiTheme&&null!=this.menubar&&(null!=this.toggleElement&&(this.toggleElement.click(),this.toggleElement.style.display="none"),this.icon=document.createElement("img"),this.icon.setAttribute("src",IMAGE_PATH+"/logo-flat-small.png"),this.icon.setAttribute("title",mxResources.get("draw.io")),this.icon.style.padding="6px",this.icon.style.cursor="pointer",mxEvent.addListener(this.icon,"click",mxUtils.bind(this,function(a){this.appIconClicked(a)})),
 mxClient.IS_QUIRKS&&(this.icon.style.marginTop="12px"),this.menubar.container.insertBefore(this.icon,this.menubar.container.firstChild))};App.prototype.scheduleSanityCheck=function(){null==this.sanityCheckThread&&(this.sanityCheckThread=window.setTimeout(mxUtils.bind(this,function(){this.sanityCheckThread=null;this.sanityCheck()}),this.warnInterval))};App.prototype.stopSanityCheck=function(){null!=this.sanityCheckThread&&(window.clearTimeout(this.sanityCheckThread),this.sanityCheckThread=null)};
-App.prototype.sanityCheck=function(){var a=this.getCurrentFile();if(null!=a&&a.isModified()&&a.isAutosave()&&a.isOverdue()){var c={category:"WARN-FILE-"+a.getHash(),action:(a.savingFile?"saving":"")+(a.savingFile&&null!=a.savingFileTime?"_"+Math.round((Date.now()-a.savingFileTime.getTime())/1E3):"")+ +(null!=a.saveLevel?"-sl_"+a.saveLevel:0)+"-age_"+(null!=a.ageStart?Math.round((Date.now()-a.ageStart.getTime())/1E3):"x")+(this.editor.autosave?"":"-nosave")+(a.isAutosave()?"":"-noauto")+"-open_"+(null!=
+App.prototype.sanityCheck=function(){var a=this.getCurrentFile();if(null!=a&&a.isModified()&&a.isAutosave()&&a.isOverdue()){var c={category:"WARN-FILE-"+a.getHash(),action:(a.savingFile?"saving":"")+(a.savingFile&&null!=a.savingFileTime?"_"+Math.round((Date.now()-a.savingFileTime.getTime())/1E3):"")+(null!=a.saveLevel?"-sl_"+a.saveLevel:"")+"-age_"+(null!=a.ageStart?Math.round((Date.now()-a.ageStart.getTime())/1E3):"x")+(this.editor.autosave?"":"-nosave")+(a.isAutosave()?"":"-noauto")+"-open_"+(null!=
 a.opened?Math.round((Date.now()-a.opened.getTime())/1E3):"x")+"-save_"+(null!=a.lastSaved?Math.round((Date.now()-a.lastSaved.getTime())/1E3):"x")+"-change_"+(null!=a.lastChanged?Math.round((Date.now()-a.lastChanged.getTime())/1E3):"x")+"-alive_"+Math.round((Date.now()-App.startTime.getTime())/1E3),label:null!=a.sync?"client_"+a.sync.clientId:"nosync"};a.constructor==DriveFile&&null!=a.desc&&null!=this.drive&&(c.label+=(null!=this.drive.user?"-user_"+this.drive.user.id:"-nouser")+"-rev_"+a.desc.headRevisionId+
 "-mod_"+a.desc.modifiedDate+"-size_"+a.getSize()+"-mime_"+a.desc.mimeType);EditorUi.logEvent(c);c=mxResources.get("ensureDataSaved");null!=a.lastSaved&&(c=this.timeSince(a.lastSaved),null==c&&(c=mxResources.get("lessThanAMinute")),c=mxResources.get("lastSaved",[c]));this.showError(mxResources.get("unsavedChanges"),c,mxResources.get("ignore"),mxUtils.bind(this,function(){this.hideDialog()}),null,mxResources.get("save"),mxUtils.bind(this,function(){this.stopSanityCheck();this.actions.get(null!=this.mode&&
 a.isEditable()?"save":"saveAs").funct()}),null,null,360,120,null,mxUtils.bind(this,function(){this.scheduleSanityCheck()}))}};App.prototype.isDriveDomain=function(){return"0"!=urlParams.drive&&("test.draw.io"==window.location.hostname||"cdn.draw.io"==window.location.hostname||"www.draw.io"==window.location.hostname||"drive.draw.io"==window.location.hostname||"jgraph.github.io"==window.location.hostname)};App.prototype.isLegacyDriveDomain=function(){return 0==urlParams.drive||"legacy.draw.io"==window.location.hostname};
@@ -9276,14 +9279,14 @@ this.getFileData(/(\.xml)$/i.test(a)||0>a.indexOf(".")||/(\.drawio)$/i.test(a),/
 App.prototype.loadTemplate=function(a,c,b,d){var e=!1,g=a;this.editor.isCorsEnabledForUrl(g)||(g="t="+(new Date).getTime(),g=PROXY_URL+"?url="+encodeURIComponent(a)+"&base64=1&"+g,e=!0);var k=null!=d?d:a;this.loadUrl(g,mxUtils.bind(this,function(d){try{var g=e?!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(d):atob(d):d;if(/(\.v(dx|sdx?))($|\?)/i.test(k)||this.isVisioData(g))this.importVisio(this.base64ToBlob(d.substring(d.indexOf(",")+1)),function(a){c(a)},b,k);else if(!this.isOffline()&&
 (new XMLHttpRequest).upload&&this.isRemoteFileFormat(g,k))this.parseFile(new Blob([g],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&c(a.responseText)}),a);else if(this.isLucidChartData(g))this.convertLucidChart(g,mxUtils.bind(this,function(a){c(a)}),mxUtils.bind(this,function(a){b(a)}));else{if(/(\.png)($|\?)/i.test(k)||this.isPngData(g))g=this.extractGraphModelFromPng(d);c(g)}}catch(q){b(q)}}),
 b,/(\.png)($|\?)/i.test(k)||/(\.v(dx|sdx?))($|\?)/i.test(k),null,null,e)};App.prototype.getPeerForMode=function(a){return a==App.MODE_GOOGLE?this.drive:a==App.MODE_GITHUB?this.gitHub:a==App.MODE_DROPBOX?this.dropbox:a==App.MODE_ONEDRIVE?this.oneDrive:a==App.MODE_TRELLO?this.trello:null};
-App.prototype.createFile=function(a,c,b,d,e,g,k,m){d=m?null:null!=d?d:this.mode;if(null!=a&&this.spinner.spin(document.body,mxResources.get("inserting"))){c=null!=c?c:this.emptyDiagramXml;var n=mxUtils.bind(this,function(){this.spinner.stop()}),q=mxUtils.bind(this,function(a){n();null==a&&null==this.getCurrentFile()&&null==this.dialog?this.showSplash():null!=a&&this.handleError(a)});try{if(d==App.MODE_GOOGLE&&null!=this.drive)null==k&&null!=this.stateArg&&null!=this.stateArg.folderId&&(k=this.stateArg.folderId),
-this.drive.insertFile(a,c,k,mxUtils.bind(this,function(a){n();this.fileCreated(a,b,g,e)}),q);else if(d==App.MODE_GITHUB&&null!=this.gitHub)this.gitHub.insertFile(a,c,mxUtils.bind(this,function(a){n();this.fileCreated(a,b,g,e)}),q,!1,k);else if(d==App.MODE_TRELLO&&null!=this.trello)this.trello.insertFile(a,c,mxUtils.bind(this,function(a){n();this.fileCreated(a,b,g,e)}),q,!1,k);else if(d==App.MODE_DROPBOX&&null!=this.dropbox)this.dropbox.insertFile(a,c,mxUtils.bind(this,function(a){n();this.fileCreated(a,
-b,g,e)}),q);else if(d==App.MODE_ONEDRIVE&&null!=this.oneDrive)this.oneDrive.insertFile(a,c,mxUtils.bind(this,function(a){n();this.fileCreated(a,b,g,e)}),q,!1,k);else if(d==App.MODE_BROWSER){n();var f=mxUtils.bind(this,function(){var d=new StorageFile(this,c,a);d.saveFile(a,!1,mxUtils.bind(this,function(){this.fileCreated(d,b,g,e)}),q)});null==localStorage.getItem(a)?f():this.confirm(mxResources.get("replaceIt",[a]),f,mxUtils.bind(this,function(){null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))}else n(),
-this.fileCreated(new LocalFile(this,c,a,null==d),b,g,e)}catch(l){n(),this.handleError(l)}}};
-App.prototype.fileCreated=function(a,c,b,d){var e=window.location.pathname;null!=c&&0<c.length&&(e+="?libs="+c);e=this.getUrl(e);a.getMode()!=App.MODE_DEVICE&&(e+="#"+a.getHash());if(this.spinner.spin(document.body,mxResources.get("inserting"))){var g=a.getData(),g=0<g.length?this.editor.extractGraphModel(mxUtils.parseXml(g).documentElement,!0):null,k=window.location.protocol+"//"+window.location.hostname+e,m=g,n=null;null!=g&&/\.svg$/i.test(a.getTitle())&&(n=this.createTemporaryGraph(this.editor.graph.getStylesheet()),
-document.body.appendChild(n.container),m=this.decodeNodeIntoGraph(m,n));a.setData(this.createFileData(g,n,a,k));null!=n&&n.container.parentNode.removeChild(n.container);var q=mxUtils.bind(this,function(){this.spinner.stop()}),f=mxUtils.bind(this,function(){q();var f=this.getCurrentFile();null==b&&null!=f&&(b=!f.isModified()&&null==f.getMode());var g=mxUtils.bind(this,function(){window.openFile=null;this.fileLoaded(a);b&&a.addAllSavedStatus();null!=c&&this.sidebar.showEntries(c)}),k=mxUtils.bind(this,
-function(){b||null==f||!f.isModified()?g():this.confirm(mxResources.get("allChangesLost"),null,g,mxResources.get("cancel"),mxResources.get("discardChanges"))});null!=d&&d();null==b||b?k():(a.constructor==LocalFile&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(a.getData(),a.getTitle(),null==a.getMode())),null!=d&&d(),window.openWindow(e,null,k))});a.constructor==LocalFile?f():a.saveFile(a.getTitle(),!1,mxUtils.bind(this,function(){f()}),mxUtils.bind(this,
-function(a){q();this.handleError(a)}))}};
+App.prototype.createFile=function(a,c,b,d,e,g,k,m,n){d=m?null:null!=d?d:this.mode;if(null!=a&&this.spinner.spin(document.body,mxResources.get("inserting"))){c=null!=c?c:this.emptyDiagramXml;var q=mxUtils.bind(this,function(){this.spinner.stop()}),f=mxUtils.bind(this,function(a){q();null==a&&null==this.getCurrentFile()&&null==this.dialog?this.showSplash():null!=a&&this.handleError(a)});try{if(d==App.MODE_GOOGLE&&null!=this.drive)null==k&&null!=this.stateArg&&null!=this.stateArg.folderId&&(k=this.stateArg.folderId),
+this.drive.insertFile(a,c,k,mxUtils.bind(this,function(a){q();this.fileCreated(a,b,g,e,n)}),f);else if(d==App.MODE_GITHUB&&null!=this.gitHub)this.gitHub.insertFile(a,c,mxUtils.bind(this,function(a){q();this.fileCreated(a,b,g,e,n)}),f,!1,k);else if(d==App.MODE_TRELLO&&null!=this.trello)this.trello.insertFile(a,c,mxUtils.bind(this,function(a){q();this.fileCreated(a,b,g,e,n)}),f,!1,k);else if(d==App.MODE_DROPBOX&&null!=this.dropbox)this.dropbox.insertFile(a,c,mxUtils.bind(this,function(a){q();this.fileCreated(a,
+b,g,e,n)}),f);else if(d==App.MODE_ONEDRIVE&&null!=this.oneDrive)this.oneDrive.insertFile(a,c,mxUtils.bind(this,function(a){q();this.fileCreated(a,b,g,e,n)}),f,!1,k);else if(d==App.MODE_BROWSER){q();var l=mxUtils.bind(this,function(){var d=new StorageFile(this,c,a);d.saveFile(a,!1,mxUtils.bind(this,function(){this.fileCreated(d,b,g,e,n)}),f)});null==localStorage.getItem(a)?l():this.confirm(mxResources.get("replaceIt",[a]),l,mxUtils.bind(this,function(){null==this.getCurrentFile()&&null==this.dialog&&
+this.showSplash()}))}else q(),this.fileCreated(new LocalFile(this,c,a,null==d),b,g,e,n)}catch(p){q(),this.handleError(p)}}};
+App.prototype.fileCreated=function(a,c,b,d,e){var g=window.location.pathname;null!=c&&0<c.length&&(g+="?libs="+c);null!=e&&0<e.length&&(g+="?clibs="+e);g=this.getUrl(g);a.getMode()!=App.MODE_DEVICE&&(g+="#"+a.getHash());if(this.spinner.spin(document.body,mxResources.get("inserting"))){var k=a.getData(),k=0<k.length?this.editor.extractGraphModel(mxUtils.parseXml(k).documentElement,!0):null,m=window.location.protocol+"//"+window.location.hostname+g,n=k,q=null;null!=k&&/\.svg$/i.test(a.getTitle())&&
+(q=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(q.container),n=this.decodeNodeIntoGraph(n,q));a.setData(this.createFileData(k,q,a,m));null!=q&&q.container.parentNode.removeChild(q.container);var f=mxUtils.bind(this,function(){this.spinner.stop()}),l=mxUtils.bind(this,function(){f();var k=this.getCurrentFile();null==b&&null!=k&&(b=!k.isModified()&&null==k.getMode());var l=mxUtils.bind(this,function(){window.openFile=null;this.fileLoaded(a);b&&a.addAllSavedStatus();
+null!=c&&this.sidebar.showEntries(c);if(null!=e){for(var d=[],f=e.split(";"),g=0;g<f.length;g++)d.push(decodeURIComponent(f[g]));this.loadLibraries(d)}}),m=mxUtils.bind(this,function(){b||null==k||!k.isModified()?l():this.confirm(mxResources.get("allChangesLost"),null,l,mxResources.get("cancel"),mxResources.get("discardChanges"))});null!=d&&d();null==b||b?m():(a.constructor==LocalFile&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(a.getData(),a.getTitle(),
+null==a.getMode())),null!=d&&d(),window.openWindow(g,null,m))});a.constructor==LocalFile?l():a.saveFile(a.getTitle(),!1,mxUtils.bind(this,function(){l()}),mxUtils.bind(this,function(a){f();this.handleError(a)}))}};
 App.prototype.loadFile=function(a,c,b,d,e){this.hideDialog();var g=mxUtils.bind(this,function(){if(null==a||0==a.length)this.editor.setStatus(""),this.fileLoaded(null);else if(this.spinner.spin(document.body,mxResources.get("loading")))if("L"==a.charAt(0))if(this.spinner.stop(),isLocalStorage)try{a=decodeURIComponent(a.substring(1));var e=localStorage.getItem(a);if(null!=e)this.fileLoaded(new StorageFile(this,e,a)),null!=d&&d();else throw{message:mxResources.get("fileNotFound")};}catch(p){this.handleError(p,
 mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""}))}else this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")},mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""}));else if(null!=b)this.spinner.stop(),this.fileLoaded(b),null!=d&&d();else if("S"==a.charAt(0)){this.spinner.stop();try{this.loadDescriptor(JSON.parse(Graph.decompress(a.substring(1))),
 d,mxUtils.bind(this,function(a){this.handleError(a,mxResources.get("errorLoadingFile"))}))}catch(p){this.handleError(p,mxResources.get("errorLoadingFile"))}}else if("R"==a.charAt(0))this.spinner.stop(),e=decodeURIComponent(a.substring(1)),"<"!=e.charAt(0)&&(e=Graph.decompress(e)),e=new LocalFile(this,e,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0),e.getHash=function(){return a},this.fileLoaded(e),null!=d&&d();else if("U"==a.charAt(0)){var g=decodeURIComponent(a.substring(1)),
@@ -9295,18 +9298,17 @@ null!=a?a.getHash():""}));else{var k=a.charAt(0);a=decodeURIComponent(a.substrin
 b+"</div>"));null!=d&&d()}),mxUtils.bind(this,function(b){null!=window.console&&null!=b&&console.log("error in loadFile:",a,b);this.handleError(b,null!=b?mxResources.get("errorLoadingFile"):null,mxUtils.bind(this,function(){var a=this.getCurrentFile();null==a?(window.location.hash="",this.showSplash()):window.location.hash="#"+a.getHash()}))}))}}),k=this.getCurrentFile(),m=mxUtils.bind(this,function(){e||null==k||!k.isModified()?g():this.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,
 function(){null!=k&&(window.location.hash=k.getHash())}),g,mxResources.get("cancel"),mxResources.get("discardChanges"))});null==a||0==a.length?m():null!=k&&k.isModified()&&!c?window.openWindow(this.getUrl()+"#"+a,null,m):m()};
 App.prototype.getLibraryStorageHint=function(a){var c=a.getTitle();a.constructor!=LocalLibrary&&(c+="\n"+a.getHash());a.constructor==DriveLibrary?c+=" ("+mxResources.get("googleDrive")+")":a.constructor==GitHubLibrary?c+=" ("+mxResources.get("github")+")":a.constructor==TrelloLibrary?c+=" ("+mxResources.get("trello")+")":a.constructor==DropboxLibrary?c+=" ("+mxResources.get("dropbox")+")":a.constructor==OneDriveLibrary?c+=" ("+mxResources.get("oneDrive")+")":a.constructor==StorageLibrary?c+=" ("+
-mxResources.get("browser")+")":a.constructor==LocalLibrary&&(c+=" ("+mxResources.get("device")+")");return c};
-App.prototype.restoreLibraries=function(){if(null!=this.sidebar){null==this.pendingLibraries&&(this.pendingLibraries={});var a=mxUtils.bind(this,function(a,c){c||mxSettings.removeCustomLibrary(a);delete this.pendingLibraries[a]}),c=mxUtils.bind(this,function(b,c){var d=0,g=[],k=mxUtils.bind(this,function(){if(0==d){if(null!=b)for(var a=b.length-1;0<=a;a--)null!=g[a]&&this.loadLibrary(g[a]);null!=c&&c()}});if(null!=b)for(var m=0;m<b.length;m++){var n=encodeURIComponent(decodeURIComponent(b[m]));mxUtils.bind(this,
-function(b,c){if(null!=b&&0<b.length&&null==this.pendingLibraries[b]&&null==this.sidebar.palettes[b]){d++;var e=mxUtils.bind(this,function(a){delete this.pendingLibraries[b];g[c]=a;d--;k()}),f=mxUtils.bind(this,function(c){a(b,c);d--;k()});this.pendingLibraries[b]=!0;var m=b.substring(0,1);if("L"==m)(isLocalStorage||mxClient.IS_CHROMEAPP)&&window.setTimeout(mxUtils.bind(this,function(){try{var a=decodeURIComponent(b.substring(1));this.getLocalData(a,mxUtils.bind(this,function(b){".scratchpad"==a&&
-null==b&&(b=this.emptyLibraryXml);null!=b?e(new StorageLibrary(this,b,a)):f()}))}catch(C){f()}}),0);else if("U"==m){var n=decodeURIComponent(b.substring(1));if(!this.isOffline()){m=n;this.editor.isCorsEnabledForUrl(m)||(m="t="+(new Date).getTime(),m=PROXY_URL+"?url="+encodeURIComponent(n)+"&"+m);try{mxUtils.get(m,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus())try{e(new UrlLibrary(this,a.getText(),n))}catch(C){f()}else f()}),function(){f()})}catch(y){f()}}}else if("R"==m){if(m=
-decodeURIComponent(b.substring(1)),!this.isOffline())try{var m=JSON.parse(m),t={id:m[0],title:m[1],downloadUrl:m[2]};this.remoteInvoke("getFileContent",[t.downloadUrl],null,mxUtils.bind(this,function(a){try{e(new RemoteLibrary(this,a,t))}catch(C){f()}}),function(){f()})}catch(y){f()}}else if("S"==m&&null!=this.loadDesktopLib)try{this.loadDesktopLib(decodeURIComponent(b.substring(1)),function(a){e(a)},f)}catch(y){f()}else{var q=null;"G"==m?null!=this.drive&&null!=this.drive.user&&(q=this.drive):"H"==
-m?null!=this.gitHub&&null!=this.gitHub.getUser()&&(q=this.gitHub):"T"==m?null!=this.trello&&this.trello.isAuthorized()&&(q=this.trello):"D"==m?null!=this.dropbox&&null!=this.dropbox.getUser()&&(q=this.dropbox):"W"==m&&null!=this.oneDrive&&null!=this.oneDrive.getUser()&&(q=this.oneDrive);null!=q?q.getLibrary(decodeURIComponent(b.substring(1)),mxUtils.bind(this,function(a){try{e(a)}catch(C){f()}}),function(a){f()}):f(!0)}}})(n,m)}k()});c(mxSettings.getCustomLibraries(),function(){c((urlParams.clibs||
-"").split(";"))})}};
-App.prototype.updateButtonContainer=function(){if(null!=this.buttonContainer){var a=this.getCurrentFile();this.commentsSupported()?null==this.commentButton&&(this.commentButton=document.createElement("a"),this.commentButton.setAttribute("title",mxResources.get("comments")),this.commentButton.className="geToolbarButton",this.commentButton.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;float:left;cursor:pointer;width:24px;height:24px;background-size:24px 24px;background-position:center center;background-repeat:no-repeat;background-image:url("+Editor.commentImage+
-");","atlas"==uiTheme&&(this.commentButton.style.marginRight="10px",this.commentButton.style.marginTop="-3px"),mxEvent.addListener(this.commentButton,"click",mxUtils.bind(this,function(){this.actions.get("comments").funct()})),this.buttonContainer.appendChild(this.commentButton),"dark"==uiTheme||"atlas"==uiTheme)&&(this.commentButton.style.filter="invert(100%)"):null!=this.commentButton&&(this.commentButton.parentNode.removeChild(this.commentButton),this.commentButton=null);null!=a&&a.constructor==
-DriveFile?null==this.shareButton&&(this.shareButton=document.createElement("div"),this.shareButton.className="geBtn gePrimaryBtn",this.shareButton.style.display="inline-block",this.shareButton.style.padding="0 10px 0 10px",this.shareButton.style.marginTop="-4px",this.shareButton.style.height="28px",this.shareButton.style.lineHeight="28px",this.shareButton.style.minWidth="0px",this.shareButton.style.cssFloat="right",this.shareButton.setAttribute("title",mxResources.get("share")),a=document.createElement("img"),
-a.setAttribute("src",this.shareImage),a.setAttribute("align","absmiddle"),a.style.marginRight="4px",a.style.marginTop="-3px",this.shareButton.appendChild(a),mxUtils.write(this.shareButton,mxResources.get("share")),mxEvent.addListener(this.shareButton,"click",mxUtils.bind(this,function(){this.actions.get("share").funct()})),this.buttonContainer.appendChild(this.shareButton)):null!=this.shareButton&&(this.shareButton.parentNode.removeChild(this.shareButton),this.shareButton=null)}};
-App.prototype.save=function(a,c){var b=this.getCurrentFile(),d=mxResources.get("saving");if(null!=b&&this.spinner.spin(document.body,d)){this.editor.setStatus("");this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var d=mxUtils.bind(this,function(){b.handleFileSuccess(!0);null!=c&&c()}),e=mxUtils.bind(this,function(a){b.handleFileError(a,!0)});try{a==b.getTitle()?b.save(!0,d,e):b.saveAs(a,d,e)}catch(g){b.handleFileError(g,!0)}}};
+mxResources.get("browser")+")":a.constructor==LocalLibrary&&(c+=" ("+mxResources.get("device")+")");return c};App.prototype.restoreLibraries=function(){this.loadLibraries(mxSettings.getCustomLibraries(),mxUtils.bind(this,function(){this.loadLibraries((urlParams.clibs||"").split(";"))}))};
+App.prototype.loadLibraries=function(a,c){if(null!=this.sidebar){null==this.pendingLibraries&&(this.pendingLibraries={});var b=mxUtils.bind(this,function(a,b){b||mxSettings.removeCustomLibrary(a);delete this.pendingLibraries[a]}),d=0,e=[],g=mxUtils.bind(this,function(){if(0==d){if(null!=a)for(var b=a.length-1;0<=b;b--)null!=e[b]&&this.loadLibrary(e[b]);null!=c&&c()}});if(null!=a)for(var k=0;k<a.length;k++){var m=encodeURIComponent(decodeURIComponent(a[k]));mxUtils.bind(this,function(a,c){if(null!=
+a&&0<a.length&&null==this.pendingLibraries[a]&&null==this.sidebar.palettes[a]){d++;var f=mxUtils.bind(this,function(b){delete this.pendingLibraries[a];e[c]=b;d--;g()}),k=mxUtils.bind(this,function(c){b(a,c);d--;g()});this.pendingLibraries[a]=!0;var m=a.substring(0,1);if("L"==m)(isLocalStorage||mxClient.IS_CHROMEAPP)&&window.setTimeout(mxUtils.bind(this,function(){try{var b=decodeURIComponent(a.substring(1));this.getLocalData(b,mxUtils.bind(this,function(a){".scratchpad"==b&&null==a&&(a=this.emptyLibraryXml);
+null!=a?f(new StorageLibrary(this,a,b)):k()}))}catch(y){k()}}),0);else if("U"==m){var n=decodeURIComponent(a.substring(1));if(!this.isOffline()){m=n;this.editor.isCorsEnabledForUrl(m)||(m="t="+(new Date).getTime(),m=PROXY_URL+"?url="+encodeURIComponent(n)+"&"+m);try{mxUtils.get(m,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus())try{f(new UrlLibrary(this,a.getText(),n))}catch(y){k()}else k()}),function(){k()})}catch(A){k()}}}else if("R"==m){if(m=decodeURIComponent(a.substring(1)),
+!this.isOffline())try{var m=JSON.parse(m),q={id:m[0],title:m[1],downloadUrl:m[2]};this.remoteInvoke("getFileContent",[q.downloadUrl],null,mxUtils.bind(this,function(a){try{f(new RemoteLibrary(this,a,q))}catch(y){k()}}),function(){k()})}catch(A){k()}}else if("S"==m&&null!=this.loadDesktopLib)try{this.loadDesktopLib(decodeURIComponent(a.substring(1)),function(a){f(a)},k)}catch(A){k()}else{var t=null;"G"==m?null!=this.drive&&null!=this.drive.user&&(t=this.drive):"H"==m?null!=this.gitHub&&null!=this.gitHub.getUser()&&
+(t=this.gitHub):"T"==m?null!=this.trello&&this.trello.isAuthorized()&&(t=this.trello):"D"==m?null!=this.dropbox&&null!=this.dropbox.getUser()&&(t=this.dropbox):"W"==m&&null!=this.oneDrive&&null!=this.oneDrive.getUser()&&(t=this.oneDrive);null!=t?t.getLibrary(decodeURIComponent(a.substring(1)),mxUtils.bind(this,function(a){try{f(a)}catch(y){k()}}),function(a){k()}):k(!0)}}})(m,k)}g()}};
+App.prototype.updateButtonContainer=function(){if(null!=this.buttonContainer){var a=this.getCurrentFile();this.commentsSupported()?null==this.commentButton&&(this.commentButton=document.createElement("a"),this.commentButton.setAttribute("title",mxResources.get("comments")),this.commentButton.className="geToolbarButton",this.commentButton.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;float:left;cursor:pointer;width:24px;height:24px;background-size:24px 24px;background-position:center center;background-repeat:no-repeat;background-image:url("+
+Editor.commentImage+");","atlas"==uiTheme&&(this.commentButton.style.marginRight="10px",this.commentButton.style.marginTop="-3px"),mxEvent.addListener(this.commentButton,"click",mxUtils.bind(this,function(){this.actions.get("comments").funct()})),this.buttonContainer.appendChild(this.commentButton),"dark"==uiTheme||"atlas"==uiTheme)&&(this.commentButton.style.filter="invert(100%)"):null!=this.commentButton&&(this.commentButton.parentNode.removeChild(this.commentButton),this.commentButton=null);null!=
+a&&a.constructor==DriveFile?null==this.shareButton&&(this.shareButton=document.createElement("div"),this.shareButton.className="geBtn gePrimaryBtn",this.shareButton.style.display="inline-block",this.shareButton.style.padding="0 10px 0 10px",this.shareButton.style.marginTop="-4px",this.shareButton.style.height="28px",this.shareButton.style.lineHeight="28px",this.shareButton.style.minWidth="0px",this.shareButton.style.cssFloat="right",this.shareButton.setAttribute("title",mxResources.get("share")),
+a=document.createElement("img"),a.setAttribute("src",this.shareImage),a.setAttribute("align","absmiddle"),a.style.marginRight="4px",a.style.marginTop="-3px",this.shareButton.appendChild(a),mxUtils.write(this.shareButton,mxResources.get("share")),mxEvent.addListener(this.shareButton,"click",mxUtils.bind(this,function(){this.actions.get("share").funct()})),this.buttonContainer.appendChild(this.shareButton)):null!=this.shareButton&&(this.shareButton.parentNode.removeChild(this.shareButton),this.shareButton=
+null)}};App.prototype.save=function(a,c){var b=this.getCurrentFile(),d=mxResources.get("saving");if(null!=b&&this.spinner.spin(document.body,d)){this.editor.setStatus("");this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var d=mxUtils.bind(this,function(){b.handleFileSuccess(!0);null!=c&&c()}),e=mxUtils.bind(this,function(a){b.handleFileError(a,!0)});try{a==b.getTitle()?b.save(!0,d,e):b.saveAs(a,d,e)}catch(g){b.handleFileError(g,!0)}}};
 App.prototype.pickFolder=function(a,c,b,d,e){b=null!=b?b:!0;var g=this.spinner.pause();b&&a==App.MODE_GOOGLE&&null!=this.drive?this.drive.pickFolder(mxUtils.bind(this,function(a){g();if(a.action==google.picker.Action.PICKED){var b=null;null!=a.docs&&0<a.docs.length&&"folder"==a.docs[0].type&&(b=a.docs[0].id);c(b)}}),e):b&&a==App.MODE_ONEDRIVE&&null!=this.oneDrive?this.oneDrive.pickFolder(mxUtils.bind(this,function(a){g();null!=a&&null!=a.value&&0<a.value.length&&(a=OneDriveFile.prototype.getIdOf(a.value[0]),
 c(a))}),d):b&&a==App.MODE_GITHUB&&null!=this.gitHub?this.gitHub.pickFolder(mxUtils.bind(this,function(a){g();c(a)})):b&&a==App.MODE_TRELLO&&null!=this.trello?this.trello.pickFolder(mxUtils.bind(this,function(a){g();c(a)})):EditorUi.prototype.pickFolder.apply(this,arguments)};
 App.prototype.exportFile=function(a,c,b,d,e,g){e==App.MODE_DROPBOX?null!=this.dropbox&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.dropbox.insertFile(c,d?this.base64ToBlob(a,b):a,mxUtils.bind(this,function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)})):e==App.MODE_GOOGLE?null!=this.drive&&this.spinner.spin(document.body,mxResources.get("saving"))&&this.drive.insertFile(c,a,g,mxUtils.bind(this,function(a){this.spinner.stop()}),
@@ -9395,13 +9397,13 @@ mxUtils.bind(this,function(){a.vRuler.setUnit(mxRuler.prototype.CENTIMETER);a.hR
 mxUtils.bind(this,function(){d.isSelectionEmpty()||a.showTextDialog("Create Sidebar Entry","sb.createVertexTemplateFromData('"+Graph.compress(mxUtils.getXml(d.encodeCells(d.getSelectionCells())))+"', width, height, 'Title');")})),a.actions.addAction("showBoundingBox",mxUtils.bind(this,function(){var a=d.getGraphBounds(),b=d.view.translate,c=d.view.scale;d.insertVertex(d.getDefaultParent(),null,"",a.x/c-b.x,a.y/c-b.y,a.width/c,a.height/c,"fillColor=none;strokeColor=red;")})),a.actions.addAction("testCheckFile",
 mxUtils.bind(this,function(){var b=null!=a.pages&&null!=a.getCurrentFile()?a.getCurrentFile().getAnonymizedXmlForPages(a.pages):"",b=new TextareaDialog(a,"Paste Data:",b,function(b){if(0<b.length)try{var c=function(a){function b(a){if(null==n[a]){if(n[a]=!0,null!=e[a]){for(;0<e[a].length;){var d=e[a].pop();b(d)}delete e[a]}}else mxLog.debug(c+": Visited: "+a)}var c=a.parentNode.id,d=a.childNodes;a={};for(var e={},f=null,g={},k=0;k<d.length;k++){var l=d[k];if(null!=l.id&&0<l.id.length)if(null==a[l.id]){a[l.id]=
 l.id;var m=l.getAttribute("parent");null==m?null!=f?mxLog.debug(c+": Multiple roots: "+l.id):f=l.id:(null==e[m]&&(e[m]=[]),e[m].push(l.id))}else g[l.id]=l.id}0<Object.keys(g).length?(d=c+": "+Object.keys(g).length+" Duplicates: "+Object.keys(g).join(", "),mxLog.debug(d+" (see console)")):mxLog.debug(c+": Checked");var n={};null==f?mxLog.debug(c+": No root"):(b(f),Object.keys(n).length!=Object.keys(a).length&&(mxLog.debug(c+": Invalid tree: (see console)"),console.log(c+": Invalid tree",e)))};"<"!=
-b.charAt(0)&&(b=Graph.decompress(b),mxLog.debug("See console for uncompressed XML"),console.log("xml",b));var d=mxUtils.parseXml(b),e=a.getPagesForNode(d.documentElement,"mxGraphModel");if(null!=e&&0<e.length)try{var f=a.getHashValueForPages(e);mxLog.debug("Checksum: ",f)}catch(I){mxLog.debug("Error: ",I.message)}else mxLog.debug("No pages found for checksum");var g=d.getElementsByTagName("root");for(b=0;b<g.length;b++)c(g[b]);mxLog.show()}catch(I){a.handleError(I),console.error(I)}});b.textarea.style.width=
-"600px";b.textarea.style.height="380px";a.showDialog(b.container,620,460,!0,!0);b.init()})),a.actions.addAction("testDiff",mxUtils.bind(this,function(){if(null!=a.pages){var b=new TextareaDialog(a,"Paste Data:","",function(b){if(0<b.length)try{console.log(JSON.stringify(a.diffPages(a.pages,a.getPagesForNode(mxUtils.parseXml(b).documentElement)),null,2))}catch(D){a.handleError(D),console.error(D)}});b.textarea.style.width="600px";b.textarea.style.height="380px";a.showDialog(b.container,620,460,!0,
+b.charAt(0)&&(b=Graph.decompress(b),mxLog.debug("See console for uncompressed XML"),console.log("xml",b));var d=mxUtils.parseXml(b),e=a.getPagesForNode(d.documentElement,"mxGraphModel");if(null!=e&&0<e.length)try{var f=a.getHashValueForPages(e);mxLog.debug("Checksum: ",f)}catch(H){mxLog.debug("Error: ",H.message)}else mxLog.debug("No pages found for checksum");var g=d.getElementsByTagName("root");for(b=0;b<g.length;b++)c(g[b]);mxLog.show()}catch(H){a.handleError(H),console.error(H)}});b.textarea.style.width=
+"600px";b.textarea.style.height="380px";a.showDialog(b.container,620,460,!0,!0);b.init()})),a.actions.addAction("testDiff",mxUtils.bind(this,function(){if(null!=a.pages){var b=new TextareaDialog(a,"Paste Data:","",function(b){if(0<b.length)try{console.log(JSON.stringify(a.diffPages(a.pages,a.getPagesForNode(mxUtils.parseXml(b).documentElement)),null,2))}catch(F){a.handleError(F),console.error(F)}});b.textarea.style.width="600px";b.textarea.style.height="380px";a.showDialog(b.container,620,460,!0,
 !0);b.init()}else a.alert("No pages")})),a.actions.addAction("testInspect",mxUtils.bind(this,function(){console.log(a,d.getModel())})),a.actions.addAction("testXmlImageExport",mxUtils.bind(this,function(){var a=new mxImageExport,b=d.getGraphBounds(),c=d.view.scale,e=mxUtils.createXmlDocument(),f=e.createElement("output");e.appendChild(f);e=new mxXmlCanvas2D(f);e.translate(Math.floor((1-b.x)/c),Math.floor((1-b.y)/c));e.scale(1/c);var g=0,k=e.save;e.save=function(){g++;k.apply(this,arguments)};var l=
 e.restore;e.restore=function(){g--;l.apply(this,arguments)};var m=a.drawShape;a.drawShape=function(a){mxLog.debug("entering shape",a,g);m.apply(this,arguments);mxLog.debug("leaving shape",a,g)};a.drawState(d.getView().getState(d.model.root),e);mxLog.show();mxLog.debug(mxUtils.getXml(f));mxLog.debug("stateCounter",g)})),a.actions.addAction("testDownloadRtModel...",mxUtils.bind(this,function(){null==a.drive?a.handleError({message:mxResources.get("serviceUnavailableOrBlocked")}):a.drive.execute(mxUtils.bind(this,
 function(){var b=prompt("File ID","");if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("export"))){var c=new mxXmlRequest("https://www.googleapis.com/drive/v2/files/"+b+"/realtime?supportsTeamDrives=true",null,"GET");c.setRequestHeaders=function(a){mxXmlRequest.prototype.setRequestHeaders.apply(this,arguments);var b=gapi.auth.getToken().access_token;a.setRequestHeader("authorization","Bearer "+b)};c.send(function(c){a.spinner.stop();200<=c.getStatus()&&299>=c.getStatus()?a.saveLocalFile(c.getText(),
 "json-"+b+".txt","text/plain"):a.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile"))})}}))})),a.actions.addAction("testShowConsole",function(){mxLog.isVisible()?mxLog.window.fit():mxLog.show();mxLog.window.div.style.zIndex=mxPopupMenu.prototype.zIndex-1}),this.put("testDevelop",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"createSidebarEntry showBoundingBox - testCheckFile testDiff - testInspect - testXmlImageExport - testDownloadRtModel".split(" "),
-c);b.addItem(mxResources.get("testImportRtModel")+"...",null,function(){var b=document.createElement("input");b.setAttribute("type","file");mxEvent.addListener(b,"change",mxUtils.bind(this,function(){if(null!=b.files){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{a.openLocalFile(mxUtils.getXml(a.drive.convertJsonToXml(JSON.parse(c.target.result).data)),b.files[0].name,!0)}catch(H){a.handleError(H,mxResources.get("errorLoadingFile"))}});c.readAsText(b.files[0])}}));b.click()},c);
+c);b.addItem(mxResources.get("testImportRtModel")+"...",null,function(){var b=document.createElement("input");b.setAttribute("type","file");mxEvent.addListener(b,"change",mxUtils.bind(this,function(){if(null!=b.files){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{a.openLocalFile(mxUtils.getXml(a.drive.convertJsonToXml(JSON.parse(c.target.result).data)),b.files[0].name,!0)}catch(G){a.handleError(G,mxResources.get("errorLoadingFile"))}});c.readAsText(b.files[0])}}));b.click()},c);
 this.addMenuItems(b,["-","testShowConsole"],c)}))));a.actions.addAction("shapes...",function(){mxClient.IS_CHROMEAPP||!a.isOffline()?a.showDialog((new MoreShapesDialog(a,!0)).container,640,isLocalStorage?mxClient.IS_IOS?480:460:440,!0,!0):a.showDialog((new MoreShapesDialog(a,!1)).container,360,isLocalStorage?mxClient.IS_IOS?300:280:260,!0,!0)});a.actions.addAction("createShape...",function(){a.getCurrentFile();if(d.isEnabled()){var b=new mxCell("",new mxGeometry(0,0,120,120),a.defaultCustomShapeStyle);
 b.vertex=!0;b=new EditShapeDialog(a,b,mxResources.get("editShape")+":",630,400);a.showDialog(b.container,640,480,!0,!1);b.init()}});a.actions.put("embedHtml",new Action(mxResources.get("html")+"...",function(){a.spinner.spin(document.body,mxResources.get("loading"))&&a.getPublicUrl(a.getCurrentFile(),function(b){a.spinner.stop();a.showHtmlDialog(mxResources.get("create"),"https://desk.draw.io/support/solutions/articles/16000042542",b,function(b,c,d,e,f,g,k,l,m,n){a.createHtml(b,c,d,e,f,g,k,l,m,n,
 mxUtils.bind(this,function(b,c){var d=new EmbedDialog(a,b+"\n"+c,null,null,function(){var d=window.open(),e=d.document;if(null!=e){"CSS1Compat"===document.compatMode&&e.writeln("<!DOCTYPE html>");e.writeln("<html>");e.writeln("<head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head>');e.writeln("<body>");e.writeln(b);var f=mxClient.IS_IE||mxClient.IS_EDGE||null!=document.documentMode;f&&e.writeln(c);e.writeln("</body>");e.writeln("</html>");e.close();if(!f){var g=
@@ -9449,7 +9451,7 @@ n&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+
 typeof google&&"undefined"!=typeof google.picker&&(null!=a.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){a.pickLibrary(App.MODE_GOOGLE)},c):g&&"function"===typeof window.DriveClient&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=a.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){a.pickLibrary(App.MODE_ONEDRIVE)},c):m&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+
 " ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){a.pickLibrary(App.MODE_DROPBOX)},c):k&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=a.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){a.pickLibrary(App.MODE_GITHUB)},c);null!=a.trello?b.addItem(mxResources.get("trello")+"...",null,function(){a.pickLibrary(App.MODE_TRELLO)},
 c):n&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);b.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){a.pickLibrary(App.MODE_BROWSER)},c);b.addItem(mxResources.get("device")+"...",null,function(){a.pickLibrary(App.MODE_DEVICE)},c);a.isOffline()||(b.addSeparator(c),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(a,
-"",mxResources.get("open"),function(b){if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("loading"))){var c=b;a.editor.isCorsEnabledForUrl(b)||(c=PROXY_URL+"?url="+encodeURIComponent(b));mxUtils.get(c,function(c){if(200<=c.getStatus()&&299>=c.getStatus()){a.spinner.stop();try{a.loadLibrary(new UrlLibrary(this,c.getText(),b))}catch(E){a.handleError(E,mxResources.get("errorLoadingFile"))}}else a.spinner.stop(),a.handleError(null,mxResources.get("errorLoadingFile"))},function(){a.spinner.stop();
+"",mxResources.get("open"),function(b){if(null!=b&&0<b.length&&a.spinner.spin(document.body,mxResources.get("loading"))){var c=b;a.editor.isCorsEnabledForUrl(b)||(c=PROXY_URL+"?url="+encodeURIComponent(b));mxUtils.get(c,function(c){if(200<=c.getStatus()&&299>=c.getStatus()){a.spinner.stop();try{a.loadLibrary(new UrlLibrary(this,c.getText(),b))}catch(D){a.handleError(D,mxResources.get("errorLoadingFile"))}}else a.spinner.stop(),a.handleError(null,mxResources.get("errorLoadingFile"))},function(){a.spinner.stop();
 a.handleError(null,mxResources.get("errorLoadingFile"))})}},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()},c));"1"==urlParams.confLib&&(b.addSeparator(c),b.addItem(mxResources.get("confluenceCloud")+"...",null,function(){a.showRemotelyStoredLibrary(mxResources.get("libraries"))},c))})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"undo redo - cut copy paste delete - duplicate - find - editData editTooltip - editStyle editGeometry - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));
 q=a.actions.addAction("comments",mxUtils.bind(this,function(){null==this.commentsWindow?(this.commentsWindow=new CommentsWindow(a,document.body.offsetWidth-380,120,300,350),this.commentsWindow.window.addListener("show",function(){a.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.addListener("hide",function(){a.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.setVisible(!0),a.fireEvent(new mxEventObject("comments"))):(this.commentsWindow.window.setVisible(!this.commentsWindow.window.isVisible()),
 this.commentsWindow.refreshCommentsTime())}));q.setToggleAction(!0);q.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.commentsWindow&&this.commentsWindow.window.isVisible()}));a.editor.addListener("fileLoaded",mxUtils.bind(this,function(){null!=this.commentsWindow&&(this.commentsWindow.destroy(),this.commentsWindow=null)}));var q=this.get("viewPanels"),C=q.funct;q.funct=function(b,c){C.apply(this,arguments);a.commentsSupported()&&a.menus.addMenuItems(b,["comments"],c)};this.put("view",
@@ -9523,8 +9525,8 @@ this.model.setCollapsed(d[g],a))}for(g=0;g<f.length;g++)this.model.setVisible(f[
 return b}function d(a){var b=!1;null!=a&&(a=A.getParent(a),b=t.view.getState(a),b="tree"==(null!=b?b.style:t.getCellStyle(a)).containerType);return b}function m(a){var b=!1;null!=a&&(a=A.getParent(a),b=t.view.getState(a),t.view.getState(a),b=null!=(null!=b?b.style:t.getCellStyle(a)).childLayout);return b}function n(a){a=t.view.getState(a);if(null!=a){var b=t.getIncomingEdges(a.cell);if(0<b.length&&(b=t.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==
 a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function q(a,b){b=null!=b?b:!0;t.model.beginUpdate();try{var c=t.model.getParent(a),d=t.getIncomingEdges(a),e=t.cloneCells([d[0],a]);t.model.setTerminal(e[0],t.model.getTerminal(d[0],!0),!0);var f=n(a),g=c.geometry;f==mxConstants.DIRECTION_SOUTH||
 f==mxConstants.DIRECTION_NORTH?e[1].geometry.x+=b?a.geometry.width+10:-e[1].geometry.width-10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;t.view.currentRoot!=c&&(e[1].geometry.x-=g.x,e[1].geometry.y-=g.y);var k=t.view.getState(a),l=t.view.scale;if(null!=k){var m=mxRectangle.fromRectangle(k);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?m.x+=(b?a.geometry.width+10:-e[1].geometry.width-10)*l:m.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*l;var p=t.getOutgoingEdges(t.model.getTerminal(d[0],
-!0));if(null!=p){for(var q=f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH,u=g=d=0;u<p.length;u++){var x=t.model.getTerminal(p[u],!1);if(f==n(x)){var v=t.view.getState(x);x!=a&&null!=v&&(q&&b!=v.getCenterX()<k.getCenterX()||!q&&b!=v.getCenterY()<k.getCenterY())&&mxUtils.intersects(m,v)&&(d=10+Math.max(d,(Math.min(m.x+m.width,v.x+v.width)-Math.max(m.x,v.x))/l),g=10+Math.max(g,(Math.min(m.y+m.height,v.y+v.height)-Math.max(m.y,v.y))/l))}}q?g=0:d=0;for(u=0;u<p.length;u++)if(x=t.model.getTerminal(p[u],
-!1),f==n(x)&&(v=t.view.getState(x),x!=a&&null!=v&&(q&&b!=v.getCenterX()<k.getCenterX()||!q&&b!=v.getCenterY()<k.getCenterY()))){var B=[];t.traverse(v.cell,!0,function(a,b){null!=b&&B.push(b);B.push(a);return!0});t.moveCells(B,(b?1:-1)*d,(b?1:-1)*g)}}}return t.addCells(e,c)}finally{t.model.endUpdate()}}function f(a){t.model.beginUpdate();try{var b=n(a),c=t.getIncomingEdges(a),d=t.cloneCells([c[0],a]);t.model.setTerminal(c[0],d[1],!1);t.model.setTerminal(d[0],d[1],!0);t.model.setTerminal(d[0],a,!1);
+!0));if(null!=p){for(var q=f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH,x=g=d=0;x<p.length;x++){var u=t.model.getTerminal(p[x],!1);if(f==n(u)){var v=t.view.getState(u);u!=a&&null!=v&&(q&&b!=v.getCenterX()<k.getCenterX()||!q&&b!=v.getCenterY()<k.getCenterY())&&mxUtils.intersects(m,v)&&(d=10+Math.max(d,(Math.min(m.x+m.width,v.x+v.width)-Math.max(m.x,v.x))/l),g=10+Math.max(g,(Math.min(m.y+m.height,v.y+v.height)-Math.max(m.y,v.y))/l))}}q?g=0:d=0;for(x=0;x<p.length;x++)if(u=t.model.getTerminal(p[x],
+!1),f==n(u)&&(v=t.view.getState(u),u!=a&&null!=v&&(q&&b!=v.getCenterX()<k.getCenterX()||!q&&b!=v.getCenterY()<k.getCenterY()))){var B=[];t.traverse(v.cell,!0,function(a,b){null!=b&&B.push(b);B.push(a);return!0});t.moveCells(B,(b?1:-1)*d,(b?1:-1)*g)}}}return t.addCells(e,c)}finally{t.model.endUpdate()}}function f(a){t.model.beginUpdate();try{var b=n(a),c=t.getIncomingEdges(a),d=t.cloneCells([c[0],a]);t.model.setTerminal(c[0],d[1],!1);t.model.setTerminal(d[0],d[1],!0);t.model.setTerminal(d[0],a,!1);
 var e=t.model.getParent(a),f=e.geometry,g=[];t.view.currentRoot!=e&&(d[1].geometry.x-=f.x,d[1].geometry.y-=f.y);t.traverse(a,!0,function(a,b){null!=b&&g.push(b);g.push(a);return!0});var k=a.geometry.width+40,l=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?k=0:b==mxConstants.DIRECTION_NORTH?(k=0,l=-l):b==mxConstants.DIRECTION_WEST?(k=-k,l=0):b==mxConstants.DIRECTION_EAST&&(l=0);t.moveCells(g,k,l);return t.addCells(d,e)}finally{t.model.endUpdate()}}function l(a){t.model.beginUpdate();try{var b=
 t.model.getParent(a),c=t.getIncomingEdges(a),d=t.cloneCells([c[0],a]);t.model.setTerminal(d[0],a,!0);var c=t.getOutgoingEdges(a),e=b.geometry,f=[];t.view.currentRoot==b&&(e=new mxRectangle);for(var g=0;g<c.length;g++){var k=t.model.getTerminal(c[g],!1);null!=k&&f.push(k)}var l=t.view.getBounds(f),m=n(a),p=t.view.translate,q=t.view.scale;m==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/q-p.x-e.x+10,d[1].geometry.y+=d[1].geometry.height-
 e.y+40):m==mxConstants.DIRECTION_NORTH?(d[1].geometry.x=null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/q-p.x+-e.x+10,d[1].geometry.y-=d[1].geometry.height+e.y+40):(d[1].geometry.x=m==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width+e.x+40):d[1].geometry.x+(d[1].geometry.width-e.x+40),d[1].geometry.y=null==l?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(l.y+l.height)/q-p.y+-e.y+10);return t.addCells(d,b)}finally{t.model.endUpdate()}}function p(a,
@@ -9536,15 +9538,15 @@ v.menus.createPopupMenu=function(a,c,d){y.apply(this,arguments);if(1==t.getSelec
 null,null,"Alt+Shift+D");var C=t.removeCells;t.removeCells=function(a,c){c=null!=c?c:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));c&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var e=[],f=0;f<a.length;f++){var g=a[f];A.isEdge(g)&&d(g)&&(e.push(g),g=A.getTerminal(g,!1));b(g)?(t.traverse(g,!0,function(a,b){null!=b&&e.push(b);e.push(a);return!0}),g=t.getIncomingEdges(a[f]),a=a.concat(g)):e.push(a[f])}a=e;return C.apply(this,arguments)};v.hoverIcons.getStateAt=function(a,c,
 d){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var z=t.duplicateCells;t.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();for(var d=a.slice(0),e=0;e<d.length;e++){var f=t.view.getState(d[e]);if(null!=f&&b(f.cell))for(var g=t.getIncomingEdges(f.cell),f=0;f<g.length;f++)mxUtils.remove(g[f],a)}this.model.beginUpdate();try{var k=z.call(this,a,c);if(k.length==a.length)for(e=0;e<a.length;e++)if(b(a[e])){var l=t.getIncomingEdges(k[e]),g=t.getIncomingEdges(a[e]);
 if(0==l.length&&0<g.length){var m=this.cloneCell(g[0]);this.addEdge(m,t.getDefaultParent(),this.model.getTerminal(g[0],!0),k[e])}}}finally{this.model.endUpdate()}return k};var B=t.moveCells;t.moveCells=function(a,c,d,e,f,g,k){var l=null;this.model.beginUpdate();try{var m=f,n=this.view.getState(f),p=null!=n?n.style:this.getCellStyle(f);if(null!=a&&b(f)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var q=0;q<a.length;q++)if(b(a[q])||t.model.isEdge(a[q])&&null==t.model.getTerminal(a[q],!0)){f=t.model.getParent(a[q]);
-break}if(null!=m&&f!=m&&null!=this.view.getState(a[0])){var u=t.getIncomingEdges(a[0]);if(0<u.length){var x=t.view.getState(t.model.getTerminal(u[0],!0));if(null!=x){var v=t.view.getState(m);null!=v&&(c=(v.getCenterX()-x.getCenterX())/t.view.scale,d=(v.getCenterY()-x.getCenterY())/t.view.scale)}}}}l=B.apply(this,arguments);if(null!=l&&null!=a&&l.length==a.length)for(q=0;q<l.length;q++)if(this.model.isEdge(l[q]))b(m)&&0>mxUtils.indexOf(l,this.model.getTerminal(l[q],!0))&&this.model.setTerminal(l[q],
-m,!0);else if(b(a[q])&&(u=t.getIncomingEdges(a[q]),0<u.length))if(!e)b(m)&&0>mxUtils.indexOf(a,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],m,!0);else if(0==t.getIncomingEdges(l[q]).length){n=m;if(null==n||n==t.model.getParent(a[q]))n=t.model.getTerminal(u[0],!0);e=this.cloneCell(u[0]);this.addEdge(e,t.getDefaultParent(),n,l[q])}}finally{this.model.endUpdate()}return l};if(null!=v.sidebar){var D=v.sidebar.dropAndConnect;v.sidebar.dropAndConnect=function(a,c,d,e){var f=t.model,g=null;
-f.beginUpdate();try{if(g=D.apply(this,arguments),b(a))for(var k=0;k<g.length;k++)if(f.isEdge(g[k])&&null==f.getTerminal(g[k],!0)){f.setTerminal(g[k],a,!0);var l=t.getCellGeometry(g[k]);l.points=null;null!=l.getTerminalPoint(!0)&&l.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return g}}var x={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},G=v.onKeyDown;v.onKeyDown=function(a){try{if(t.isEnabled()&&!t.isEditing()&&
+break}if(null!=m&&f!=m&&null!=this.view.getState(a[0])){var x=t.getIncomingEdges(a[0]);if(0<x.length){var u=t.view.getState(t.model.getTerminal(x[0],!0));if(null!=u){var v=t.view.getState(m);null!=v&&(c=(v.getCenterX()-u.getCenterX())/t.view.scale,d=(v.getCenterY()-u.getCenterY())/t.view.scale)}}}}l=B.apply(this,arguments);if(null!=l&&null!=a&&l.length==a.length)for(q=0;q<l.length;q++)if(this.model.isEdge(l[q]))b(m)&&0>mxUtils.indexOf(l,this.model.getTerminal(l[q],!0))&&this.model.setTerminal(l[q],
+m,!0);else if(b(a[q])&&(x=t.getIncomingEdges(a[q]),0<x.length))if(!e)b(m)&&0>mxUtils.indexOf(a,this.model.getTerminal(x[0],!0))&&this.model.setTerminal(x[0],m,!0);else if(0==t.getIncomingEdges(l[q]).length){n=m;if(null==n||n==t.model.getParent(a[q]))n=t.model.getTerminal(x[0],!0);e=this.cloneCell(x[0]);this.addEdge(e,t.getDefaultParent(),n,l[q])}}finally{this.model.endUpdate()}return l};if(null!=v.sidebar){var F=v.sidebar.dropAndConnect;v.sidebar.dropAndConnect=function(a,c,d,e){var f=t.model,g=null;
+f.beginUpdate();try{if(g=F.apply(this,arguments),b(a))for(var k=0;k<g.length;k++)if(f.isEdge(g[k])&&null==f.getTerminal(g[k],!0)){f.setTerminal(g[k],a,!0);var l=t.getCellGeometry(g[k]);l.points=null;null!=l.getTerminalPoint(!0)&&l.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return g}}var x={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},I=v.onKeyDown;v.onKeyDown=function(a){try{if(t.isEnabled()&&!t.isEditing()&&
 b(t.getSelectionCell())&&1==t.getSelectionCount()){var c=null;0<t.getIncomingEdges(t.getSelectionCell()).length&&(9==a.which?c=mxEvent.isShiftDown(a)?f(t.getSelectionCell()):l(t.getSelectionCell()):13==a.which&&(c=q(t.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=c&&0<c.length)1==c.length&&t.model.isEdge(c[0])?t.setSelectionCell(t.model.getTerminal(c[0],!1)):t.setSelectionCell(c[c.length-1]),null!=v.hoverIcons&&v.hoverIcons.update(t.view.getState(t.getSelectionCell())),t.startEditingAtCell(t.getSelectionCell()),
 mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var d=x[a.keyCode];null!=d&&(d.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(u(t.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(u(t.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(u(t.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(u(t.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(a))}}catch(S){console.log("error",
-S)}mxEvent.isConsumed(a)||G.apply(this,arguments)};var H=t.connectVertex;t.connectVertex=function(a,c,d,e,g,k){var m=t.getIncomingEdges(a);return b(a)&&0<m.length?(d=n(a),e=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST,g=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,d==c?l(a):e==g?f(a):q(a,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):H.call(this,a,c,d,e,g,k)};t.getSubtree=function(a){var d=[a];!c(a)&&!b(a)||m(a)||t.traverse(a,!0,function(a,b){null!=
-b&&0>mxUtils.indexOf(d,b)&&d.push(b);0>mxUtils.indexOf(d,a)&&d.push(a);return!0});return d};var E=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){E.apply(this,arguments);(c(this.state.cell)||b(this.state.cell))&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="18px",
+S)}mxEvent.isConsumed(a)||I.apply(this,arguments)};var G=t.connectVertex;t.connectVertex=function(a,c,d,e,g,k){var m=t.getIncomingEdges(a);return b(a)&&0<m.length?(d=n(a),e=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST,g=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,d==c?l(a):e==g?f(a):q(a,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):G.call(this,a,c,d,e,g,k)};t.getSubtree=function(a){var d=[a];!c(a)&&!b(a)||m(a)||t.traverse(a,!0,function(a,b){null!=
+b&&0>mxUtils.indexOf(d,b)&&d.push(b);0>mxUtils.indexOf(d,a)&&d.push(a);return!0});return d};var D=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){D.apply(this,arguments);(c(this.state.cell)||b(this.state.cell))&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="18px",
 this.moveHandle.style.height="18px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a));this.graph.graphHandler.cells=this.graph.getSubtree(this.state.cell);this.graph.graphHandler.bounds=this.state.view.getBounds(this.graph.graphHandler.cells);this.graph.graphHandler.pBounds=this.graph.graphHandler.getPreviewBounds(this.graph.graphHandler.cells);
-this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;mxEvent.consume(a)})))};var I=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){I.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var J=mxVertexHandler.prototype.destroy;
+this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;mxEvent.consume(a)})))};var H=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){H.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var J=mxVertexHandler.prototype.destroy;
 mxVertexHandler.prototype.destroy=function(a,b){J.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var d=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=d.apply(this,arguments),b=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,220,160),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");
 a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap central idea branch topic",function(){var a=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var b=new mxCell("Central Idea",new mxGeometry(160,60,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;treeMoving=1;");b.vertex=!0;var c=new mxCell("Topic",
 new mxGeometry(320,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;");c.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");d.geometry.relative=!0;d.edge=!0;b.insertEdge(d,!0);c.insertEdge(d,!1);var e=new mxCell("Branch",new mxGeometry(320,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;treeMoving=1;");
@@ -9615,17 +9617,17 @@ null==urlParams.libs||c(this);var k=this,l=k.editor.graph;k.toolbar=this.createT
 k.statusContainer.style.maxWidth="";k.statusContainer.style.marginTop="7px";k.statusContainer.style.marginLeft="6px";k.statusContainer.style.color="gray";k.statusContainer.style.cursor="default";k.editor.addListener("statusChanged",mxUtils.bind(this,function(){k.setStatusText(k.editor.getStatus())}));var q=k.descriptorChanged;k.descriptorChanged=function(){q.apply(this,arguments);var a=k.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub":
 "onedrive"==b&&(b="oneDrive");b=mxResources.get(b);m.setAttribute("title",a.getTitle()+(null!=b?" ("+b+")":""))}else m.removeAttribute("title")};k.setStatusText(k.editor.getStatus());m.appendChild(k.statusContainer);k.buttonContainer=document.createElement("div");k.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";m.appendChild(k.buttonContainer);k.menubarContainer=k.buttonContainer;k.tabContainer=document.createElement("div");
 k.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";var g=k.diagramContainer.parentNode,u=document.createElement("div");u.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";k.diagramContainer.style.top="47px";var J=k.menus.get("viewZoom");if(null!=J){this.tabContainer.style.right=
-"70px";var F=p.addMenu("100%",J.funct);F.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");F.style.whiteSpace="nowrap";F.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";F.style.backgroundPosition="right 6px center";F.style.backgroundRepeat="no-repeat";F.style.backgroundColor="#ffffff";F.style.paddingRight="10px";F.style.display="block";F.style.position="absolute";F.style.textDecoration="none";F.style.textDecoration="none";F.style.right="0px";F.style.bottom="0px";
-F.style.overflow="hidden";F.style.visibility="hidden";F.style.textAlign="center";F.style.color="#000";F.style.fontSize="12px";F.style.color="#707070";F.style.width="59px";F.style.cursor="pointer";F.style.borderTop="1px solid lightgray";F.style.borderLeft="1px solid lightgray";F.style.height=parseInt(k.tabContainerHeight)-1+"px";F.style.lineHeight=parseInt(k.tabContainerHeight)+1+"px";u.appendChild(F);J=mxUtils.bind(this,function(){F.innerHTML=Math.round(100*k.editor.graph.view.scale)+"%"});k.editor.graph.view.addListener(mxEvent.EVENT_SCALE,
-J);k.editor.addListener("resetGraphView",J);k.editor.addListener("pageSelected",J);var M=k.setGraphEnabled;k.setGraphEnabled=function(){M.apply(this,arguments);null!=this.tabContainer&&(F.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?this.tabContainerHeight+"px":"0px")}}u.appendChild(k.tabContainer);u.appendChild(m);u.appendChild(k.diagramContainer);g.appendChild(u);k.updateTabContainer();var K=null;f();mxEvent.addListener(window,
+"70px";var E=p.addMenu("100%",J.funct);E.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");E.style.whiteSpace="nowrap";E.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";E.style.backgroundPosition="right 6px center";E.style.backgroundRepeat="no-repeat";E.style.backgroundColor="#ffffff";E.style.paddingRight="10px";E.style.display="block";E.style.position="absolute";E.style.textDecoration="none";E.style.textDecoration="none";E.style.right="0px";E.style.bottom="0px";
+E.style.overflow="hidden";E.style.visibility="hidden";E.style.textAlign="center";E.style.color="#000";E.style.fontSize="12px";E.style.color="#707070";E.style.width="59px";E.style.cursor="pointer";E.style.borderTop="1px solid lightgray";E.style.borderLeft="1px solid lightgray";E.style.height=parseInt(k.tabContainerHeight)-1+"px";E.style.lineHeight=parseInt(k.tabContainerHeight)+1+"px";u.appendChild(E);J=mxUtils.bind(this,function(){E.innerHTML=Math.round(100*k.editor.graph.view.scale)+"%"});k.editor.graph.view.addListener(mxEvent.EVENT_SCALE,
+J);k.editor.addListener("resetGraphView",J);k.editor.addListener("pageSelected",J);var M=k.setGraphEnabled;k.setGraphEnabled=function(){M.apply(this,arguments);null!=this.tabContainer&&(E.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?this.tabContainerHeight+"px":"0px")}}u.appendChild(k.tabContainer);u.appendChild(m);u.appendChild(k.diagramContainer);g.appendChild(u);k.updateTabContainer();var K=null;f();mxEvent.addListener(window,
 "resize",function(){f();null!=k.sidebarWindow&&k.sidebarWindow.window.fit();null!=k.formatWindow&&k.formatWindow.window.fit();null!=k.actions.outlineWindow&&k.actions.outlineWindow.window.fit();null!=k.actions.layersWindow&&k.actions.layersWindow.window.fit();null!=k.menus.tagsWindow&&k.menus.tagsWindow.window.fit();null!=k.menus.findWindow&&k.menus.findWindow.window.fit()})}}};
 (function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();(function(){var a=mxGuide.prototype.move;mxGuide.prototype.move=function(b,c,g,k){var d=c.y,e=c.x,q=!1,f=!1;if(null!=this.states&&null!=b&&null!=c){var l=this,p=new mxCellState,u=this.graph.getView().scale,v=Math.max(2,this.getGuideTolerance()/2);p.x=b.x+e;p.y=b.y+d;p.width=b.width;p.height=b.height;for(var t=[],A=[],y=0;y<this.states.length;y++){var C=this.states[y];C instanceof mxCellState&&(k||!this.graph.isCellSelected(C.cell))&&((p.x>=C.x&&p.x<=C.x+C.width||C.x>=p.x&&C.x<=p.x+p.width)&&(p.y>
-C.y+C.height+4||p.y+p.height+4<C.y)?t.push(C):(p.y>=C.y&&p.y<=C.y+C.height||C.y>=p.y&&C.y<=p.y+p.height)&&(p.x>C.x+C.width+4||p.x+p.width+4<C.x)&&A.push(C))}var z=0,B=0,D=C=0,x=0,G=0,H=0,E=0,I=5*u;if(1<t.length){t.push(p);t.sort(function(a,b){return a.y-b.y});var J=!1,y=p==t[0],u=p==t[t.length-1];if(!y&&!u)for(y=1;y<t.length-1;y++)if(p==t[y]){u=t[y-1];y=t[y+1];C=B=D=(y.y-u.y-u.height-p.height)/2;break}for(y=0;y<t.length-1;y++){var u=t[y],F=t[y+1],M=p==u||p==F,F=F.y-u.y-u.height,J=J|p==u;if(0==B&&
-0==z)B=F,z=1;else if(Math.abs(B-F)<=(M||1==y&&J?v:0))z+=1;else if(1<z&&J){t=t.slice(0,y+1);break}else if(3<=t.length-y&&!J)z=0,C=B=0!=D?D:0,t.splice(0,0==y?1:y),y=-1;else break;0!=C||M||(B=C=F)}3==t.length&&t[1]==p&&(C=0)}if(1<A.length){A.push(p);A.sort(function(a,b){return a.x-b.x});J=!1;y=p==A[0];u=p==A[A.length-1];if(!y&&!u)for(y=1;y<A.length-1;y++)if(p==A[y]){u=A[y-1];y=A[y+1];H=G=E=(y.x-u.x-u.width-p.width)/2;break}for(y=0;y<A.length-1;y++){u=A[y];F=A[y+1];M=p==u||p==F;F=F.x-u.x-u.width;J|=p==
-u;if(0==G&&0==x)G=F,x=1;else if(Math.abs(G-F)<=(M||1==y&&J?v:0))x+=1;else if(1<x&&J){A=A.slice(0,y+1);break}else if(3<=A.length-y&&!J)x=0,H=G=0!=E?E:0,A.splice(0,0==y?1:y),y=-1;else break;0!=H||M||(G=H=F)}3==A.length&&A[1]==p&&(H=0)}v=function(a,b,c,d){var e=[],f;d?(d=I,f=0):(d=0,f=I);e.push(new mxPoint(a.x-d,a.y-f));e.push(new mxPoint(a.x+d,a.y+f));e.push(a);e.push(b);e.push(new mxPoint(b.x-d,b.y-f));e.push(new mxPoint(b.x+d,b.y+f));if(null!=c)return c.points=e,c;a=new mxPolyline(e,mxConstants.GUIDE_COLOR,
-mxConstants.GUIDE_STROKEWIDTH);a.dialect=mxConstants.DIALECT_SVG;a.pointerEvents=!1;a.init(l.graph.getView().getOverlayPane());return a};G=function(a,b){if(a&&null!=l.guidesArrHor)for(var c=0;c<l.guidesArrHor.length;c++)l.guidesArrHor[c].node.style.visibility="hidden";if(b&&null!=l.guidesArrVer)for(c=0;c<l.guidesArrVer.length;c++)l.guidesArrVer[c].node.style.visibility="hidden"};if(1<x&&x==A.length-1){x=[];E=l.guidesArrHor;q=[];e=0;y=A[0]==p?1:0;J=A[y].y+A[y].height;if(0<H)for(y=0;y<A.length-1;y++)u=
-A[y],F=A[y+1],p==u?(e=F.x-u.width-H,q.push(new mxPoint(e+u.width+I,J)),q.push(new mxPoint(F.x-I,J))):p==F?(q.push(new mxPoint(u.x+u.width+I,J)),e=u.x+u.width+H,q.push(new mxPoint(e-I,J))):(q.push(new mxPoint(u.x+u.width+I,J)),q.push(new mxPoint(F.x-I,J)));else u=A[0],y=A[2],e=u.x+u.width+(y.x-u.x-u.width-p.width)/2,q.push(new mxPoint(u.x+u.width+I,J)),q.push(new mxPoint(e-I,J)),q.push(new mxPoint(e+p.width+I,J)),q.push(new mxPoint(y.x-I,J));for(y=0;y<q.length;y+=2)A=q[y],H=q[y+1],A=v(A,H,null!=E?
-E[y/2]:null),A.node.style.visibility="visible",A.redraw(),x.push(A);for(y=q.length/2;null!=E&&y<E.length;y++)E[y].destroy();l.guidesArrHor=x;e-=b.x;q=!0}else G(!0);if(1<z&&z==t.length-1){x=[];E=l.guidesArrVer;f=[];d=0;y=t[0]==p?1:0;z=t[y].x+t[y].width;if(0<C)for(y=0;y<t.length-1;y++)u=t[y],F=t[y+1],p==u?(d=F.y-u.height-C,f.push(new mxPoint(z,d+u.height+I)),f.push(new mxPoint(z,F.y-I))):p==F?(f.push(new mxPoint(z,u.y+u.height+I)),d=u.y+u.height+C,f.push(new mxPoint(z,d-I))):(f.push(new mxPoint(z,u.y+
-u.height+I)),f.push(new mxPoint(z,F.y-I)));else u=t[0],y=t[2],d=u.y+u.height+(y.y-u.y-u.height-p.height)/2,f.push(new mxPoint(z,u.y+u.height+I)),f.push(new mxPoint(z,d-I)),f.push(new mxPoint(z,d+p.height+I)),f.push(new mxPoint(z,y.y-I));for(y=0;y<f.length;y+=2)A=f[y],H=f[y+1],A=v(A,H,null!=E?E[y/2]:null,!0),A.node.style.visibility="visible",A.redraw(),x.push(A);for(y=f.length/2;null!=E&&y<E.length;y++)E[y].destroy();l.guidesArrVer=x;d-=b.y;f=!0}else G(!1,!0)}if(q||f)return p=new mxPoint(e,d),t=a.call(this,
-b,p,g,k),q&&!f?p.y=t.y:f&&!q&&(p.x=t.x),t.y!=p.y&&null!=this.guideY&&null!=this.guideY.node&&(this.guideY.node.style.visibility="hidden"),t.x!=p.x&&null!=this.guideX&&null!=this.guideX.node&&(this.guideX.node.style.visibility="hidden"),p;G(!0,!0);return a.apply(this,arguments)};var c=mxGuide.prototype.setVisible;mxGuide.prototype.setVisible=function(a){c.call(this,a);var b=this.guidesArrVer,d=this.guidesArrHor;if(null!=b)for(var k=0;k<b.length;k++)b[k].node.style.visibility=a?"visible":"hidden";if(null!=
+C.y+C.height+4||p.y+p.height+4<C.y)?t.push(C):(p.y>=C.y&&p.y<=C.y+C.height||C.y>=p.y&&C.y<=p.y+p.height)&&(p.x>C.x+C.width+4||p.x+p.width+4<C.x)&&A.push(C))}var z=0,B=0,F=C=0,x=0,I=0,G=0,D=0,H=5*u;if(1<t.length){t.push(p);t.sort(function(a,b){return a.y-b.y});var J=!1,y=p==t[0],u=p==t[t.length-1];if(!y&&!u)for(y=1;y<t.length-1;y++)if(p==t[y]){u=t[y-1];y=t[y+1];C=B=F=(y.y-u.y-u.height-p.height)/2;break}for(y=0;y<t.length-1;y++){var u=t[y],E=t[y+1],M=p==u||p==E,E=E.y-u.y-u.height,J=J|p==u;if(0==B&&
+0==z)B=E,z=1;else if(Math.abs(B-E)<=(M||1==y&&J?v:0))z+=1;else if(1<z&&J){t=t.slice(0,y+1);break}else if(3<=t.length-y&&!J)z=0,C=B=0!=F?F:0,t.splice(0,0==y?1:y),y=-1;else break;0!=C||M||(B=C=E)}3==t.length&&t[1]==p&&(C=0)}if(1<A.length){A.push(p);A.sort(function(a,b){return a.x-b.x});J=!1;y=p==A[0];u=p==A[A.length-1];if(!y&&!u)for(y=1;y<A.length-1;y++)if(p==A[y]){u=A[y-1];y=A[y+1];G=I=D=(y.x-u.x-u.width-p.width)/2;break}for(y=0;y<A.length-1;y++){u=A[y];E=A[y+1];M=p==u||p==E;E=E.x-u.x-u.width;J|=p==
+u;if(0==I&&0==x)I=E,x=1;else if(Math.abs(I-E)<=(M||1==y&&J?v:0))x+=1;else if(1<x&&J){A=A.slice(0,y+1);break}else if(3<=A.length-y&&!J)x=0,G=I=0!=D?D:0,A.splice(0,0==y?1:y),y=-1;else break;0!=G||M||(I=G=E)}3==A.length&&A[1]==p&&(G=0)}v=function(a,b,c,d){var e=[],f;d?(d=H,f=0):(d=0,f=H);e.push(new mxPoint(a.x-d,a.y-f));e.push(new mxPoint(a.x+d,a.y+f));e.push(a);e.push(b);e.push(new mxPoint(b.x-d,b.y-f));e.push(new mxPoint(b.x+d,b.y+f));if(null!=c)return c.points=e,c;a=new mxPolyline(e,mxConstants.GUIDE_COLOR,
+mxConstants.GUIDE_STROKEWIDTH);a.dialect=mxConstants.DIALECT_SVG;a.pointerEvents=!1;a.init(l.graph.getView().getOverlayPane());return a};I=function(a,b){if(a&&null!=l.guidesArrHor)for(var c=0;c<l.guidesArrHor.length;c++)l.guidesArrHor[c].node.style.visibility="hidden";if(b&&null!=l.guidesArrVer)for(c=0;c<l.guidesArrVer.length;c++)l.guidesArrVer[c].node.style.visibility="hidden"};if(1<x&&x==A.length-1){x=[];D=l.guidesArrHor;q=[];e=0;y=A[0]==p?1:0;J=A[y].y+A[y].height;if(0<G)for(y=0;y<A.length-1;y++)u=
+A[y],E=A[y+1],p==u?(e=E.x-u.width-G,q.push(new mxPoint(e+u.width+H,J)),q.push(new mxPoint(E.x-H,J))):p==E?(q.push(new mxPoint(u.x+u.width+H,J)),e=u.x+u.width+G,q.push(new mxPoint(e-H,J))):(q.push(new mxPoint(u.x+u.width+H,J)),q.push(new mxPoint(E.x-H,J)));else u=A[0],y=A[2],e=u.x+u.width+(y.x-u.x-u.width-p.width)/2,q.push(new mxPoint(u.x+u.width+H,J)),q.push(new mxPoint(e-H,J)),q.push(new mxPoint(e+p.width+H,J)),q.push(new mxPoint(y.x-H,J));for(y=0;y<q.length;y+=2)A=q[y],G=q[y+1],A=v(A,G,null!=D?
+D[y/2]:null),A.node.style.visibility="visible",A.redraw(),x.push(A);for(y=q.length/2;null!=D&&y<D.length;y++)D[y].destroy();l.guidesArrHor=x;e-=b.x;q=!0}else I(!0);if(1<z&&z==t.length-1){x=[];D=l.guidesArrVer;f=[];d=0;y=t[0]==p?1:0;z=t[y].x+t[y].width;if(0<C)for(y=0;y<t.length-1;y++)u=t[y],E=t[y+1],p==u?(d=E.y-u.height-C,f.push(new mxPoint(z,d+u.height+H)),f.push(new mxPoint(z,E.y-H))):p==E?(f.push(new mxPoint(z,u.y+u.height+H)),d=u.y+u.height+C,f.push(new mxPoint(z,d-H))):(f.push(new mxPoint(z,u.y+
+u.height+H)),f.push(new mxPoint(z,E.y-H)));else u=t[0],y=t[2],d=u.y+u.height+(y.y-u.y-u.height-p.height)/2,f.push(new mxPoint(z,u.y+u.height+H)),f.push(new mxPoint(z,d-H)),f.push(new mxPoint(z,d+p.height+H)),f.push(new mxPoint(z,y.y-H));for(y=0;y<f.length;y+=2)A=f[y],G=f[y+1],A=v(A,G,null!=D?D[y/2]:null,!0),A.node.style.visibility="visible",A.redraw(),x.push(A);for(y=f.length/2;null!=D&&y<D.length;y++)D[y].destroy();l.guidesArrVer=x;d-=b.y;f=!0}else I(!1,!0)}if(q||f)return p=new mxPoint(e,d),t=a.call(this,
+b,p,g,k),q&&!f?p.y=t.y:f&&!q&&(p.x=t.x),t.y!=p.y&&null!=this.guideY&&null!=this.guideY.node&&(this.guideY.node.style.visibility="hidden"),t.x!=p.x&&null!=this.guideX&&null!=this.guideX.node&&(this.guideX.node.style.visibility="hidden"),p;I(!0,!0);return a.apply(this,arguments)};var c=mxGuide.prototype.setVisible;mxGuide.prototype.setVisible=function(a){c.call(this,a);var b=this.guidesArrVer,d=this.guidesArrHor;if(null!=b)for(var k=0;k<b.length;k++)b[k].node.style.visibility=a?"visible":"hidden";if(null!=
 d)for(k=0;k<d.length;k++)d[k].node.style.visibility=a?"visible":"hidden"};var b=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){b.call(this);var a=this.guidesArrVer,c=this.guidesArrHor;if(null!=a){for(var g=0;g<a.length;g++)a[g].destroy();this.guidesArrVer=null}if(null!=c){for(g=0;g<c.length;g++)c[g].destroy();this.guidesArrHor=null}}})();
diff --git a/src/main/webapp/js/diagramly/App.js b/src/main/webapp/js/diagramly/App.js
index c4e1d4310..207a5934b 100644
--- a/src/main/webapp/js/diagramly/App.js
+++ b/src/main/webapp/js/diagramly/App.js
@@ -29,7 +29,7 @@ App = function(editor, container, lightbox)
 					action: ((file.savingFile) ? 'saving' : '') +
 					((file.savingFile && file.savingFileTime != null) ? '_' +
 						Math.round((Date.now() - file.savingFileTime.getTime()) / 1000) : '') +
-					+ ((file.saveLevel != null) ? ('-sl_' + file.saveLevel) : '') +
+					((file.saveLevel != null) ? ('-sl_' + file.saveLevel) : '') +
 					'-age_' + ((file.ageStart != null) ? Math.round((Date.now() - file.ageStart.getTime()) / 1000) : 'x') +
 					((this.editor.autosave) ? '' : '-nosave') +
 					((file.isAutosave()) ? '' : '-noauto') +
@@ -1516,7 +1516,7 @@ App.prototype.sanityCheck = function()
 			action: ((file.savingFile) ? 'saving' : '') +
 			((file.savingFile && file.savingFileTime != null) ? '_' +
 				Math.round((Date.now() - file.savingFileTime.getTime()) / 1000) : '') +
-			+ ((file.saveLevel != null) ? ('-sl_' + file.saveLevel) : '') +
+			((file.saveLevel != null) ? ('-sl_' + file.saveLevel) : '') +
 			'-age_' + ((file.ageStart != null) ? Math.round((Date.now() - file.ageStart.getTime()) / 1000) : 'x') +
 			((this.editor.autosave) ? '' : '-nosave') +
 			((file.isAutosave()) ? '' : '-noauto') +
@@ -3671,7 +3671,7 @@ App.prototype.getPeerForMode = function(mode)
  * @param {number} dx X-coordinate of the translation.
  * @param {number} dy Y-coordinate of the translation.
  */
-App.prototype.createFile = function(title, data, libs, mode, done, replace, folderId, tempFile)
+App.prototype.createFile = function(title, data, libs, mode, done, replace, folderId, tempFile, clibs)
 {
 	mode = (tempFile) ? null : ((mode != null) ? mode : this.mode);
 
@@ -3710,7 +3710,7 @@ App.prototype.createFile = function(title, data, libs, mode, done, replace, fold
 				this.drive.insertFile(title, data, folderId, mxUtils.bind(this, function(file)
 				{
 					complete();
-					this.fileCreated(file, libs, replace, done);
+					this.fileCreated(file, libs, replace, done, clibs);
 				}), error);
 			}
 			else if (mode == App.MODE_GITHUB && this.gitHub != null)
@@ -3718,7 +3718,7 @@ App.prototype.createFile = function(title, data, libs, mode, done, replace, fold
 				this.gitHub.insertFile(title, data, mxUtils.bind(this, function(file)
 				{
 					complete();
-					this.fileCreated(file, libs, replace, done);
+					this.fileCreated(file, libs, replace, done, clibs);
 				}), error, false, folderId);
 			}
 			else if (mode == App.MODE_TRELLO && this.trello != null)
@@ -3726,7 +3726,7 @@ App.prototype.createFile = function(title, data, libs, mode, done, replace, fold
 				this.trello.insertFile(title, data, mxUtils.bind(this, function(file)
 				{
 					complete();
-					this.fileCreated(file, libs, replace, done);
+					this.fileCreated(file, libs, replace, done, clibs);
 				}), error, false, folderId);
 			}
 			else if (mode == App.MODE_DROPBOX && this.dropbox != null)
@@ -3734,7 +3734,7 @@ App.prototype.createFile = function(title, data, libs, mode, done, replace, fold
 				this.dropbox.insertFile(title, data, mxUtils.bind(this, function(file)
 				{
 					complete();
-					this.fileCreated(file, libs, replace, done);
+					this.fileCreated(file, libs, replace, done, clibs);
 				}), error);
 			}
 			else if (mode == App.MODE_ONEDRIVE && this.oneDrive != null)
@@ -3742,7 +3742,7 @@ App.prototype.createFile = function(title, data, libs, mode, done, replace, fold
 				this.oneDrive.insertFile(title, data, mxUtils.bind(this, function(file)
 				{
 					complete();
-					this.fileCreated(file, libs, replace, done);
+					this.fileCreated(file, libs, replace, done, clibs);
 				}), error, false, folderId);
 			}
 			else if (mode == App.MODE_BROWSER)
@@ -3756,7 +3756,7 @@ App.prototype.createFile = function(title, data, libs, mode, done, replace, fold
 					// Inserts data into local storage
 					file.saveFile(title, false, mxUtils.bind(this, function()
 					{
-						this.fileCreated(file, libs, replace, done);
+						this.fileCreated(file, libs, replace, done, clibs);
 					}), error);
 				});
 				
@@ -3778,7 +3778,7 @@ App.prototype.createFile = function(title, data, libs, mode, done, replace, fold
 			else
 			{
 				complete();
-				this.fileCreated(new LocalFile(this, data, title, mode == null), libs, replace, done);
+				this.fileCreated(new LocalFile(this, data, title, mode == null), libs, replace, done, clibs);
 			}
 		}
 		catch (e)
@@ -3795,7 +3795,7 @@ App.prototype.createFile = function(title, data, libs, mode, done, replace, fold
  * @param {number} dx X-coordinate of the translation.
  * @param {number} dy Y-coordinate of the translation.
  */
-App.prototype.fileCreated = function(file, libs, replace, done)
+App.prototype.fileCreated = function(file, libs, replace, done, clibs)
 {
 	var url = window.location.pathname;
 	
@@ -3803,6 +3803,11 @@ App.prototype.fileCreated = function(file, libs, replace, done)
 	{
 		url += '?libs=' + libs;
 	}
+
+	if (clibs != null && clibs.length > 0)
+	{
+		url += '?clibs=' + clibs;
+	}
 	
 	url = this.getUrl(url);
 
@@ -3811,7 +3816,7 @@ App.prototype.fileCreated = function(file, libs, replace, done)
 	{
 		url += '#' + file.getHash();
 	}
-	
+
 	// Makes sure to produce consistent output with finalized files via createFileData this needs
 	// to save the file again since it needs the newly created file ID for redirecting in HTML
 	if (this.spinner.spin(document.body, mxResources.get('inserting')))
@@ -3868,6 +3873,19 @@ App.prototype.fileCreated = function(file, libs, replace, done)
 				{
 					this.sidebar.showEntries(libs);
 				}
+				
+				if (clibs != null)
+				{
+					var temp = [];
+					var tokens = clibs.split(';');
+					
+					for (var i = 0; i < tokens.length; i++)
+					{
+						temp.push(decodeURIComponent(tokens[i]));
+					}
+					
+					this.loadLibraries(temp);
+				}
 			});
 
 			var fn2 = mxUtils.bind(this, function()
@@ -4358,6 +4376,17 @@ App.prototype.getLibraryStorageHint = function(file)
  * Updates action states depending on the selection.
  */
 App.prototype.restoreLibraries = function()
+{	
+	this.loadLibraries(mxSettings.getCustomLibraries(), mxUtils.bind(this, function()
+	{
+		this.loadLibraries((urlParams['clibs'] || '').split(';'));
+	}));
+};
+
+/**
+ * Updates action states depending on the selection.
+ */
+App.prototype.loadLibraries = function(libs, done)
 {
 	if (this.sidebar != null)
 	{
@@ -4377,274 +4406,266 @@ App.prototype.restoreLibraries = function()
 			delete this.pendingLibraries[id];
 		});
 				
-		var load = mxUtils.bind(this, function(libs, done)
-		{
-			var waiting = 0;
-			var files = [];
+		var waiting = 0;
+		var files = [];
 
-			// Loads in order of libs array
-			var checkDone = mxUtils.bind(this, function()
+		// Loads in order of libs array
+		var checkDone = mxUtils.bind(this, function()
+		{
+			if (waiting == 0)
 			{
-				if (waiting == 0)
+				if (libs != null)
 				{
-					if (libs != null)
+					for (var i = libs.length - 1; i >= 0; i--)
 					{
-						for (var i = libs.length - 1; i >= 0; i--)
+						if (files[i] != null)
 						{
-							if (files[i] != null)
-							{
-								this.loadLibrary(files[i]);
-							}
+							this.loadLibrary(files[i]);
 						}
 					}
-					
-					if (done != null)
-					{
-						done();
-					}
 				}
-			});
-			
-			if (libs != null)
+				
+				if (done != null)
+				{
+					done();
+				}
+			}
+		});
+		
+		if (libs != null)
+		{
+			for (var i = 0; i < libs.length; i++)
 			{
-				for (var i = 0; i < libs.length; i++)
+				var name = encodeURIComponent(decodeURIComponent(libs[i]));
+				
+				(mxUtils.bind(this, function(id, index)
 				{
-					var name = encodeURIComponent(decodeURIComponent(libs[i]));
-					
-					(mxUtils.bind(this, function(id, index)
+					if (id != null && id.length > 0 && this.pendingLibraries[id] == null &&
+						this.sidebar.palettes[id] == null)
 					{
-						if (id != null && id.length > 0 && this.pendingLibraries[id] == null &&
-							this.sidebar.palettes[id] == null)
+						// Waits for all libraries to load
+						waiting++;
+						
+						var onload = mxUtils.bind(this, function(file)
 						{
-							// Waits for all libraries to load
-							waiting++;
-							
-							var onload = mxUtils.bind(this, function(file)
-							{
-								delete this.pendingLibraries[id];
-								files[index] = file;
-								waiting--;
-								checkDone();
-							});
-							
-							var onerror = mxUtils.bind(this, function(keep)
-							{
-								ignore(id, keep);
-								waiting--;
-								checkDone();
-							});
-							
-							this.pendingLibraries[id] = true;
-							var service = id.substring(0, 1);
-							
-							if (service == 'L')
-							{
-								if (isLocalStorage || mxClient.IS_CHROMEAPP)
-								{
-									// Make asynchronous for barrier to work
-									window.setTimeout(mxUtils.bind(this, function()
-									{
-										try
-										{
-											var name = decodeURIComponent(id.substring(1));
-											
-											var xml = this.getLocalData(name, mxUtils.bind(this, function(xml)
-											{
-												if (name == '.scratchpad' && xml == null)
-												{
-													xml = this.emptyLibraryXml;
-												}
-												
-												if (xml != null)
-												{
-													onload(new StorageLibrary(this, xml, name));
-												}
-												else
-												{
-													onerror();
-												}
-											}));
-										}
-										catch (e)
-										{
-											onerror();
-										}
-									}), 0);
-								}
-							}
-							else if (service == 'U')
+							delete this.pendingLibraries[id];
+							files[index] = file;
+							waiting--;
+							checkDone();
+						});
+						
+						var onerror = mxUtils.bind(this, function(keep)
+						{
+							ignore(id, keep);
+							waiting--;
+							checkDone();
+						});
+						
+						this.pendingLibraries[id] = true;
+						var service = id.substring(0, 1);
+						
+						if (service == 'L')
+						{
+							if (isLocalStorage || mxClient.IS_CHROMEAPP)
 							{
-								var url = decodeURIComponent(id.substring(1));
-								
-								if (!this.isOffline())
+								// Make asynchronous for barrier to work
+								window.setTimeout(mxUtils.bind(this, function()
 								{
-									var realUrl = url;
-									
-									if (!this.editor.isCorsEnabledForUrl(realUrl))
-									{
-										var nocache = 't=' + new Date().getTime();
-										realUrl = PROXY_URL + '?url=' + encodeURIComponent(url) + '&' + nocache;
-									}
-									
 									try
 									{
-										// Uses proxy to avoid CORS issues
-										mxUtils.get(realUrl, mxUtils.bind(this, function(req)
+										var name = decodeURIComponent(id.substring(1));
+										
+										var xml = this.getLocalData(name, mxUtils.bind(this, function(xml)
 										{
-											if (req.getStatus() >= 200 && req.getStatus() <= 299)
+											if (name == '.scratchpad' && xml == null)
 											{
-												try
-												{
-													onload(new UrlLibrary(this, req.getText(), url));
-												}
-												catch (e)
-												{
-													onerror();
-												}
+												xml = this.emptyLibraryXml;
+											}
+											
+											if (xml != null)
+											{
+												onload(new StorageLibrary(this, xml, name));
 											}
 											else
 											{
 												onerror();
 											}
-										}), function()
-										{
-											onerror();
-										});
+										}));
 									}
 									catch (e)
 									{
 										onerror();
 									}
-								}
+								}), 0);
 							}
-							else if (service == 'R')
+						}
+						else if (service == 'U')
+						{
+							var url = decodeURIComponent(id.substring(1));
+							
+							if (!this.isOffline())
 							{
-								var libDesc = decodeURIComponent(id.substring(1));
+								var realUrl = url;
 								
-								if (!this.isOffline())
+								if (!this.editor.isCorsEnabledForUrl(realUrl))
 								{
-									try
+									var nocache = 't=' + new Date().getTime();
+									realUrl = PROXY_URL + '?url=' + encodeURIComponent(url) + '&' + nocache;
+								}
+								
+								try
+								{
+									// Uses proxy to avoid CORS issues
+									mxUtils.get(realUrl, mxUtils.bind(this, function(req)
 									{
-										libDesc = JSON.parse(libDesc);
-										var libObj = {
-											id: libDesc[0], 
-					               			title: libDesc[1], 
-					               			downloadUrl: libDesc[2]
-										}
-										
-										this.remoteInvoke('getFileContent', [libObj.downloadUrl], null, mxUtils.bind(this, function(libContent)
+										if (req.getStatus() >= 200 && req.getStatus() <= 299)
 										{
 											try
 											{
-												onload(new RemoteLibrary(this, libContent, libObj));
+												onload(new UrlLibrary(this, req.getText(), url));
 											}
 											catch (e)
 											{
 												onerror();
 											}
-										}), function()
+										}
+										else
 										{
 											onerror();
-										});
-									}
-									catch (e)
+										}
+									}), function()
 									{
 										onerror();
-									}
+									});
+								}
+								catch (e)
+								{
+									onerror();
 								}
 							}
-							else if (service == 'S' && this.loadDesktopLib != null)
+						}
+						else if (service == 'R')
+						{
+							var libDesc = decodeURIComponent(id.substring(1));
+							
+							if (!this.isOffline())
 							{
 								try
 								{
-									this.loadDesktopLib(decodeURIComponent(id.substring(1)), function(desktopLib)
+									libDesc = JSON.parse(libDesc);
+									var libObj = {
+										id: libDesc[0], 
+				               			title: libDesc[1], 
+				               			downloadUrl: libDesc[2]
+									}
+									
+									this.remoteInvoke('getFileContent', [libObj.downloadUrl], null, mxUtils.bind(this, function(libContent)
+									{
+										try
+										{
+											onload(new RemoteLibrary(this, libContent, libObj));
+										}
+										catch (e)
+										{
+											onerror();
+										}
+									}), function()
 									{
-										onload(desktopLib);
-									}, onerror);
+										onerror();
+									});
 								}
 								catch (e)
 								{
 									onerror();
 								}
 							}
-							else
+						}
+						else if (service == 'S' && this.loadDesktopLib != null)
+						{
+							try
 							{
-								var peer = null;
-								
-								if (service == 'G')
+								this.loadDesktopLib(decodeURIComponent(id.substring(1)), function(desktopLib)
 								{
-									if (this.drive != null && this.drive.user != null)
-									{
-										peer = this.drive;
-									}
+									onload(desktopLib);
+								}, onerror);
+							}
+							catch (e)
+							{
+								onerror();
+							}
+						}
+						else
+						{
+							var peer = null;
+							
+							if (service == 'G')
+							{
+								if (this.drive != null && this.drive.user != null)
+								{
+									peer = this.drive;
 								}
-								else if (service == 'H')
+							}
+							else if (service == 'H')
+							{
+								if (this.gitHub != null && this.gitHub.getUser() != null)
 								{
-									if (this.gitHub != null && this.gitHub.getUser() != null)
-									{
-										peer = this.gitHub;
-									}
+									peer = this.gitHub;
 								}
-								else if (service == 'T')
+							}
+							else if (service == 'T')
+							{
+								if (this.trello != null && this.trello.isAuthorized())
 								{
-									if (this.trello != null && this.trello.isAuthorized())
-									{
-										peer = this.trello;
-									}
+									peer = this.trello;
 								}
-								else if (service == 'D')
+							}
+							else if (service == 'D')
+							{
+								if (this.dropbox != null && this.dropbox.getUser() != null)
 								{
-									if (this.dropbox != null && this.dropbox.getUser() != null)
-									{
-										peer = this.dropbox;
-									}
+									peer = this.dropbox;
 								}
-								else if (service == 'W')
+							}
+							else if (service == 'W')
+							{
+								if (this.oneDrive != null && this.oneDrive.getUser() != null)
 								{
-									if (this.oneDrive != null && this.oneDrive.getUser() != null)
-									{
-										peer = this.oneDrive;
-									}
+									peer = this.oneDrive;
 								}
-								
-								if (peer != null)
+							}
+							
+							if (peer != null)
+							{
+								peer.getLibrary(decodeURIComponent(id.substring(1)), mxUtils.bind(this, function(file)
 								{
-									peer.getLibrary(decodeURIComponent(id.substring(1)), mxUtils.bind(this, function(file)
+									try
 									{
-										try
-										{
-											onload(file);
-										}
-										catch (e)
-										{
-											onerror();
-										}
-									}), function(resp)
+										onload(file);
+									}
+									catch (e)
 									{
 										onerror();
-									});
-								}
-								else
+									}
+								}), function(resp)
 								{
-									onerror(true);
-								}
+									onerror();
+								});
+							}
+							else
+							{
+								onerror(true);
 							}
 						}
-					}))(name, i);
-				}
-				
-				checkDone();
-			}
-			else
-			{
-				checkDone();
+					}
+				}))(name, i);
 			}
-		});
-		
-		load(mxSettings.getCustomLibraries(), function()
+			
+			checkDone();
+		}
+		else
 		{
-			load((urlParams['clibs'] || '').split(';'));
-		});
+			checkDone();
+		}
 	}
 };
 
diff --git a/src/main/webapp/js/diagramly/Dialogs.js b/src/main/webapp/js/diagramly/Dialogs.js
index e316feec1..10c294479 100644
--- a/src/main/webapp/js/diagramly/Dialogs.js
+++ b/src/main/webapp/js/diagramly/Dialogs.js
@@ -2741,7 +2741,7 @@ var NewDialog = function(editorUi, compact, showName, callback, createOnly, canc
 			{
 				var tmp = templates[i0++];
 				addButton(tmp.url, tmp.libs, tmp.title, tmp.tooltip? tmp.tooltip : tmp.title,
-					tmp.select, tmp.imgUrl, tmp.info, tmp.onClick, tmp.preview, tmp.noImg);
+					tmp.select, tmp.imgUrl, tmp.info, tmp.onClick, tmp.preview, tmp.noImg, tmp.clibs);
 				first = false;
 			}
 		}		
@@ -2940,6 +2940,7 @@ var NewDialog = function(editorUi, compact, showName, callback, createOnly, canc
 	}
 	
 	var templateLibs = null;
+	var templateClibs = null;
 	var templateXml = null;
 	var selectedElt = null;
 	var templateExtUrl = null;
@@ -2977,7 +2978,8 @@ var NewDialog = function(editorUi, compact, showName, callback, createOnly, canc
 						templateLibs.length > 0) ? templateLibs : null, null, function()
 					{
 						editorUi.hideDialog();
-					}, null, folderId);
+					}, null, folderId, null, (templateClibs != null &&
+						templateClibs.length > 0) ? templateClibs : null);
 				}, editorUi.mode != App.MODE_GOOGLE ||
 					editorUi.stateArg == null ||
 					editorUi.stateArg.folderId == null);
@@ -3004,7 +3006,7 @@ var NewDialog = function(editorUi, compact, showName, callback, createOnly, canc
 	var w = 140;
 	var h = 140;
 
-	function selectElement(elt, xml, libs, extUrl, infoObj)
+	function selectElement(elt, xml, libs, extUrl, infoObj, clibs)
 	{
 		if (selectedElt != null)
 		{
@@ -3016,6 +3018,7 @@ var NewDialog = function(editorUi, compact, showName, callback, createOnly, canc
 		
 		templateXml = xml;
 		templateLibs = libs;
+		templateClibs = clibs;
 		selectedElt = elt;
 		templateExtUrl = extUrl;
 		templateInfoObj = infoObj;
@@ -3024,7 +3027,7 @@ var NewDialog = function(editorUi, compact, showName, callback, createOnly, canc
 		selectedElt.style.border = rightHighlightBorder;
 	};
 
-	function addButton(url, libs, title, tooltip, select, imgUrl, infoObj, onClick, preview, noImg)
+	function addButton(url, libs, title, tooltip, select, imgUrl, infoObj, onClick, preview, noImg, clibs)
 	{
 		var elt = document.createElement('div');
 		elt.className = 'geTemplate';
@@ -3045,7 +3048,7 @@ var NewDialog = function(editorUi, compact, showName, callback, createOnly, canc
 			
 			mxEvent.addListener(elt, 'click', function(evt)
 			{
-				selectElement(elt, null, null, url, infoObj);
+				selectElement(elt, null, null, url, infoObj, clibs);
 			});
 			
 			mxEvent.addListener(elt, 'dblclick', function(evt)
@@ -3088,7 +3091,7 @@ var NewDialog = function(editorUi, compact, showName, callback, createOnly, canc
 					
 					if (req.getStatus() >= 200 && req.getStatus() <= 299)
 					{
-						selectElement(elt, req.getText(), libs);
+						selectElement(elt, req.getText(), libs, null, null, clibs);
 						
 						if (createIt)
 						{
@@ -3327,7 +3330,7 @@ var NewDialog = function(editorUi, compact, showName, callback, createOnly, canc
 								
 								list.push({url: node.getAttribute('url'), libs: node.getAttribute('libs'),
 									title: node.getAttribute('title'), tooltip: node.getAttribute('url'),
-									preview: node.getAttribute('preview')});
+									preview: node.getAttribute('preview'), clibs: node.getAttribute('clibs')});
 							}
 						}
 						
@@ -9497,7 +9500,8 @@ TemplatesDialog.prototype.init = function(editorUi, callback, cancelCallback,
 						}
 						
 						list.push({url: node.getAttribute('url'), libs: node.getAttribute('libs'),
-							title: node.getAttribute('title'), tooltip: node.getAttribute('url'), imgUrl: node.getAttribute('imgUrl')});
+							clibs: node.getAttribute('clibs'), title: node.getAttribute('title'),
+							tooltip: node.getAttribute('url'), imgUrl: node.getAttribute('imgUrl')});
 					}
 				}
 				
@@ -9526,7 +9530,7 @@ TemplatesDialog.prototype.init = function(editorUi, callback, cancelCallback,
 					if (title != null)
 					{
 						newDiagramCats.push({img: node.getAttribute('img'), libs: node.getAttribute('libs'),
-							title: node.getAttribute('title')});
+							clibs: node.getAttribute('clibs'), title: node.getAttribute('title')});
 					}
 				}
 				
diff --git a/src/main/webapp/js/mxgraph/Graph.js b/src/main/webapp/js/mxgraph/Graph.js
index d44772314..a0d1971c8 100644
--- a/src/main/webapp/js/mxgraph/Graph.js
+++ b/src/main/webapp/js/mxgraph/Graph.js
@@ -991,7 +991,8 @@ Graph.zapGremlins = function(text)
 		var code = text.charCodeAt(i);
 		
 		// Removes all control chars except TAB, LF and CR
-		if ((code >= 32 || code == 9 || code == 10 || code == 13) && code != 0xFFFF)
+		if ((code >= 32 || code == 9 || code == 10 || code == 13) &&
+			code != 0xFFFF && code != 0xFFFE)
 		{
 			checked.push(text.charAt(i));
 		}
@@ -4797,6 +4798,9 @@ if (typeof mxVertexHandler != 'undefined')
 	
 		// Enables guides
 		mxGraphHandler.prototype.guidesEnabled = true;
+		
+		// Removes parents where all child cells are moved out
+		mxGraphHandler.prototype.removeEmptyParents = true;
 	
 		// Enables fading of rubberband
 		mxRubberband.prototype.fadeOut = true;
diff --git a/src/main/webapp/js/viewer.min.js b/src/main/webapp/js/viewer.min.js
index 1ce14a5de..2a880058c 100644
--- a/src/main/webapp/js/viewer.min.js
+++ b/src/main/webapp/js/viewer.min.js
@@ -433,9 +433,9 @@ mxSvgCanvas2D.prototype.convertHtml=function(a){if(this.useDomParser){var b=(new
 b.documentElement.appendChild(c);var d=document.createElement("div");d.innerHTML=a;for(a=d.firstChild;null!=a;)d=a.nextSibling,c.appendChild(b.adoptNode(a)),a=d;return c.innerHTML}b=document.createElement("textarea");b.innerHTML=a.replace(/&amp;/g,"&amp;amp;").replace(/&#60;/g,"&amp;lt;").replace(/&#62;/g,"&amp;gt;").replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;");a=b.value.replace(/&/g,"&amp;").replace(/&amp;lt;/g,"&lt;").replace(/&amp;gt;/g,"&gt;").replace(/&amp;amp;/g,
 "&amp;").replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />").replace(/(<img[^>]+)>/gm,"$1 />")}return a};
 mxSvgCanvas2D.prototype.createDiv=function(a,b,c,d,e,f){c=this.state;d="display:inline-block;font-size:"+c.fontSize+'px;font-family:"'+c.fontFamily+'";color:'+c.fontColor+";line-height:"+(mxConstants.ABSOLUTE_LINE_HEIGHT?c.fontSize*mxConstants.LINE_HEIGHT+"px":mxConstants.LINE_HEIGHT*this.lineHeightCorrection)+";"+d;(c.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d+="font-weight:bold;");(c.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d+="font-style:italic;");(c.fontStyle&
-mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d+="text-decoration:underline;");d=b==mxConstants.ALIGN_CENTER?d+"text-align:center;":b==mxConstants.ALIGN_RIGHT?d+"text-align:right;":d+"text-align:left;";b="";null!=c.fontBackgroundColor&&(b+="background-color:"+c.fontBackgroundColor+";");null!=c.fontBorderColor&&(b+="border:1px solid "+c.fontBorderColor+";");mxUtils.isNode(a)||(a=this.convertHtml(a),"fill"!=e&&"width"!=e?(null!=f&&(b+="white-space:"+f+";"),a='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;'+
-b+'">'+a+"</div>"):d+=b);if(!mxClient.IS_IE&&document.createElementNS)return e=document.createElementNS("http://www.w3.org/1999/xhtml","div"),e.setAttribute("style",d),mxUtils.isNode(a)?this.root.ownerDocument!=document?e.appendChild(a.cloneNode(!0)):e.appendChild(a):e.innerHTML=a,e;mxUtils.isNode(a)&&this.root.ownerDocument!=document&&(a=a.outerHTML);return mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+d+'">'+a+"</div>").documentElement};
-mxSvgCanvas2D.prototype.invalidateCachedOffsetSize=function(a){delete a.firstChild.mxCachedOffsetWidth;delete a.firstChild.mxCachedFinalOffsetWidth;delete a.firstChild.mxCachedFinalOffsetHeight};
+mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d+="text-decoration:underline;");d=b==mxConstants.ALIGN_CENTER?d+"text-align:center;":b==mxConstants.ALIGN_RIGHT?d+"text-align:right;":d+"text-align:left;";b="";null!=c.fontBackgroundColor&&(b+="background-color:"+mxUtils.htmlEntities(c.fontBackgroundColor)+";");null!=c.fontBorderColor&&(b+="border:1px solid "+mxUtils.htmlEntities(c.fontBorderColor)+";");mxUtils.isNode(a)||(a=this.convertHtml(a),"fill"!=e&&"width"!=e?(null!=f&&(b+="white-space:"+
+f+";"),a='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;'+b+'">'+a+"</div>"):d+=b);if(!mxClient.IS_IE&&document.createElementNS)return e=document.createElementNS("http://www.w3.org/1999/xhtml","div"),e.setAttribute("style",d),mxUtils.isNode(a)?this.root.ownerDocument!=document?e.appendChild(a.cloneNode(!0)):e.appendChild(a):e.innerHTML=a,e;mxUtils.isNode(a)&&this.root.ownerDocument!=document&&(a=a.outerHTML);return mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+
+d+'">'+a+"</div>").documentElement};mxSvgCanvas2D.prototype.invalidateCachedOffsetSize=function(a){delete a.firstChild.mxCachedOffsetWidth;delete a.firstChild.mxCachedFinalOffsetWidth;delete a.firstChild.mxCachedFinalOffsetHeight};
 mxSvgCanvas2D.prototype.updateText=function(a,b,c,d,e,f,g,k,l,m,n){if(null!=n&&null!=n.firstChild&&null!=n.firstChild.firstChild&&null!=n.firstChild.firstChild.firstChild){n=n.firstChild;var p=n.firstChild,q=p.firstChild;m=null!=m?m:0;var r=this.state;a+=r.dx;b+=r.dy;l?(q.style.maxHeight=Math.round(d)+"px",q.style.maxWidth=Math.round(c)+"px"):"fill"==k?(q.style.width=Math.round(c+1)+"px",q.style.height=Math.round(d+1)+"px"):"width"==k&&(q.style.width=Math.round(c+1)+"px",0<d&&(q.style.maxHeight=Math.round(d)+
 "px"));g&&0<c&&(q.style.width=Math.round(c+1)+"px");var t,u=q;null!=u.firstChild&&"DIV"==u.firstChild.nodeName&&(u=u.firstChild);var x=null!=n.mxCachedOffsetWidth?n.mxCachedOffsetWidth:u.offsetWidth;t=x+0;g&&"fill"!=k&&(l&&(t=Math.min(t,c)),q.style.width=Math.round(t+1)+"px");t=null!=n.mxCachedFinalOffsetWidth?n.mxCachedFinalOffsetWidth:u.offsetWidth;g=null!=n.mxCachedFinalOffsetHeight?n.mxCachedFinalOffsetHeight:u.offsetHeight;this.cacheOffsetSize&&(n.mxCachedOffsetWidth=x,n.mxCachedFinalOffsetWidth=
 t,n.mxCachedFinalOffsetHeight=g);t+=0;g-=2;l&&(g=Math.min(g,d),t=Math.min(t,c));"width"==k?d=g:"fill"!=k&&(c=t,d=g);g=l=0;e==mxConstants.ALIGN_CENTER?l-=c/2:e==mxConstants.ALIGN_RIGHT&&(l-=c);a+=l;f==mxConstants.ALIGN_MIDDLE?g-=d/2:f==mxConstants.ALIGN_BOTTOM&&(g-=d);"fill"!=k&&mxClient.IS_FF&&mxClient.IS_WIN&&(g-=2);b+=g;e=1!=r.scale?"scale("+r.scale+")":"";0!=r.rotation&&this.rotateHtml?(e+="rotate("+r.rotation+","+c/2+","+d/2+")",b=this.rotatePoint((a+c/2)*r.scale,(b+d/2)*r.scale,r.rotation,r.rotationCx,
@@ -475,9 +475,9 @@ mxVmlCanvas2D.prototype.quadTo=function(a,b,c,d){var e=this.state,f=(this.lastX+
 mxVmlCanvas2D.prototype.createRect=function(a,b,c,d,e){var f=this.state;a=this.createVmlElement(a);a.style.position="absolute";a.style.left=this.format((b+f.dx)*f.scale)+"px";a.style.top=this.format((c+f.dy)*f.scale)+"px";a.style.width=this.format(d*f.scale)+"px";a.style.height=this.format(e*f.scale)+"px";return a};mxVmlCanvas2D.prototype.rect=function(a,b,c,d){this.node=this.createRect("rect",a,b,c,d)};
 mxVmlCanvas2D.prototype.roundrect=function(a,b,c,d,e,f){this.node=this.createRect("roundrect",a,b,c,d);this.node.setAttribute("arcsize",Math.max(100*e/c,100*f/d)+"%")};mxVmlCanvas2D.prototype.ellipse=function(a,b,c,d){this.node=this.createRect("oval",a,b,c,d)};
 mxVmlCanvas2D.prototype.image=function(a,b,c,d,e,f,g,k){f?(a=this.createRect("rect",a,b,c,d),a.stroked="false",b=this.createVmlElement("fill"),b.aspect=f?"atmost":"ignore",b.rotate="true",b.type="frame",b.src=e,a.appendChild(b)):(a=this.createRect("image",a,b,c,d),a.src=e);g&&k?a.style.rotation="180":g?a.style.flip="x":k&&(a.style.flip="y");if(1>this.state.alpha||1>this.state.fillAlpha)a.style.filter+="alpha(opacity="+this.state.alpha*this.state.fillAlpha*100+")";this.root.appendChild(a)};
-mxVmlCanvas2D.prototype.createDiv=function(a,b,c,d){c=this.createElement("div");var e=this.state,f="";null!=e.fontBackgroundColor&&(f+="background-color:"+e.fontBackgroundColor+";");null!=e.fontBorderColor&&(f+="border:1px solid "+e.fontBorderColor+";");mxUtils.isNode(a)?c.appendChild(a):"fill"!=d&&"width"!=d?(d=this.createElement("div"),d.style.cssText=f,d.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",d.style.zoom="1",d.style.textDecoration="inherit",d.innerHTML=a,c.appendChild(d)):(c.style.cssText=
-f,c.innerHTML=a);a=c.style;a.fontSize=e.fontSize/this.vmlScale+"px";a.fontFamily=e.fontFamily;a.color=e.fontColor;a.verticalAlign="top";a.textAlign=b||"left";a.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?e.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale+"px":mxConstants.LINE_HEIGHT;(e.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a.fontWeight="bold");(e.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a.fontStyle="italic");(e.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&
-(a.textDecoration="underline");return c};
+mxVmlCanvas2D.prototype.createDiv=function(a,b,c,d){c=this.createElement("div");var e=this.state,f="";null!=e.fontBackgroundColor&&(f+="background-color:"+mxUtils.htmlEntities(e.fontBackgroundColor)+";");null!=e.fontBorderColor&&(f+="border:1px solid "+mxUtils.htmlEntities(e.fontBorderColor)+";");mxUtils.isNode(a)?c.appendChild(a):"fill"!=d&&"width"!=d?(d=this.createElement("div"),d.style.cssText=f,d.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",d.style.zoom="1",d.style.textDecoration=
+"inherit",d.innerHTML=a,c.appendChild(d)):(c.style.cssText=f,c.innerHTML=a);a=c.style;a.fontSize=e.fontSize/this.vmlScale+"px";a.fontFamily=e.fontFamily;a.color=e.fontColor;a.verticalAlign="top";a.textAlign=b||"left";a.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?e.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale+"px":mxConstants.LINE_HEIGHT;(e.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a.fontWeight="bold");(e.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a.fontStyle="italic");
+(e.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a.textDecoration="underline");return c};
 mxVmlCanvas2D.prototype.text=function(a,b,c,d,e,f,g,k,l,m,n,p,q){if(this.textEnabled&&null!=e){var r=this.state;if("html"==l){null!=r.rotation&&(b=this.rotatePoint(a,b,r.rotation,r.rotationCx,r.rotationCy),a=b.x,b=b.y);8!=document.documentMode||mxClient.IS_EM?(a*=r.scale,b*=r.scale):(a+=r.dx,b+=r.dy,"fill"!=m&&g==mxConstants.ALIGN_TOP&&--b);l=8!=document.documentMode||mxClient.IS_EM?this.createElement("div"):this.createVmlElement("group");l.style.position="absolute";l.style.display="inline";l.style.left=
 this.format(a)+"px";l.style.top=this.format(b)+"px";l.style.zoom=r.scale;var t=this.createElement("div");t.style.position="relative";t.style.display="inline";var u=mxUtils.getAlignmentAsPoint(f,g),x=u.x,u=u.y;e=this.createDiv(e,f,g,m);f=this.createElement("div");null!=q&&e.setAttribute("dir",q);if(k&&0<c){if(n||(e.style.width=Math.round(c)+"px"),e.style.wordWrap=mxConstants.WORD_WRAP,e.style.whiteSpace="normal","break-word"==e.style.wordWrap){var y=e;null!=y.firstChild&&"DIV"==y.firstChild.nodeName&&
 (y.firstChild.style.width="100%")}}else e.style.whiteSpace="nowrap";p=r.rotation+(p||0);this.rotateHtml&&0!=p?(f.style.display="inline",f.style.zoom="1",f.appendChild(e),8!=document.documentMode||mxClient.IS_EM||"DIV"==this.root.nodeName?l.appendChild(f):(t.appendChild(f),l.appendChild(t))):8!=document.documentMode||mxClient.IS_EM?(e.style.display="inline",l.appendChild(e)):(t.appendChild(e),l.appendChild(t));"DIV"!=this.root.nodeName?(q=this.createVmlElement("rect"),q.stroked="false",q.filled="false",
@@ -620,8 +620,8 @@ this.textWidthPadding;this.clipped&&(f=Math.min(f,this.bounds.height));l=this.bo
 "px");var g=g*d,l=l*d,m=this.getTextRotation()*(Math.PI/180);e=parseFloat(parseFloat(Math.cos(m)).toFixed(8));f=parseFloat(parseFloat(Math.sin(-m)).toFixed(8));m%=2*Math.PI;0>m&&(m+=2*Math.PI);m%=Math.PI;m>Math.PI/2&&(m=Math.PI-m);var k=Math.cos(m),n=Math.sin(-m),b=l*-(b+.5),p=g*-(c+.5);0!=m&&(c="progid:DXImageTransform.Microsoft.Matrix(M11="+e+", M12="+f+", M21="+-f+", M22="+e+", sizingMethod='auto expand')",a.filter=null!=a.filter&&0<a.filter.length?a.filter+(" "+c):c);c=0;"fill"!=this.overflow&&
 mxClient.IS_QUIRKS&&(c=this.valign==mxConstants.ALIGN_TOP?c-1:this.valign==mxConstants.ALIGN_BOTTOM?c+2:c+1);a.zoom=d;a.left=Math.round(this.bounds.x+((l-l*k+g*n)/2-e*b-f*p)-l/2)+"px";a.top=Math.round(this.bounds.y+((g-g*k+l*n)/2+f*b-e*p)-g/2+c)+"px"};
 mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var a=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(a=mxUtils.htmlEntities(a,!1));var a=mxUtils.replaceTrailingNewlines(a,"<div><br></div>"),a=this.replaceLinefeeds?a.replace(/\n/g,"<br/>"):a,b=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,c=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if("fill"==this.overflow||
-"width"==this.overflow)null!=b&&(this.node.style.backgroundColor=b),null!=c&&(this.node.style.border="1px solid "+c);else{var d="";null!=b&&(d+="background-color:"+b+";");null!=c&&(d+="border:1px solid "+c+";");a='<div style="zoom:1;'+d+"display:inline-block;_display:inline;text-decoration:inherit;padding-bottom:1px;padding-right:1px;line-height:"+(mxConstants.ABSOLUTE_LINE_HEIGHT?this.size*mxConstants.LINE_HEIGHT+"px":mxConstants.LINE_HEIGHT)+'">'+a+"</div>"}this.node.innerHTML=a;a=this.node.getElementsByTagName("div");
-0<a.length&&(b=this.textDirection,b==mxConstants.TEXT_DIRECTION_AUTO&&this.dialect!=mxConstants.DIALECT_STRICTHTML&&(b=this.getAutoDirection()),b==mxConstants.TEXT_DIRECTION_LTR||b==mxConstants.TEXT_DIRECTION_RTL?a[a.length-1].setAttribute("dir",b):a[a.length-1].removeAttribute("dir"))}};
+"width"==this.overflow)null!=b&&(this.node.style.backgroundColor=b),null!=c&&(this.node.style.border="1px solid "+c);else{var d="";null!=b&&(d+="background-color:"+mxUtils.htmlEntities(b)+";");null!=c&&(d+="border:1px solid "+mxUtils.htmlEntities(c)+";");a='<div style="zoom:1;'+d+"display:inline-block;_display:inline;text-decoration:inherit;padding-bottom:1px;padding-right:1px;line-height:"+(mxConstants.ABSOLUTE_LINE_HEIGHT?this.size*mxConstants.LINE_HEIGHT+"px":mxConstants.LINE_HEIGHT)+'">'+a+"</div>"}this.node.innerHTML=
+a;a=this.node.getElementsByTagName("div");0<a.length&&(b=this.textDirection,b==mxConstants.TEXT_DIRECTION_AUTO&&this.dialect!=mxConstants.DIALECT_STRICTHTML&&(b=this.getAutoDirection()),b==mxConstants.TEXT_DIRECTION_LTR||b==mxConstants.TEXT_DIRECTION_RTL?a[a.length-1].setAttribute("dir",b):a[a.length-1].removeAttribute("dir"))}};
 mxText.prototype.updateFont=function(a){a=a.style;a.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?this.size*mxConstants.LINE_HEIGHT+"px":mxConstants.LINE_HEIGHT;a.fontSize=this.size+"px";a.fontFamily='"'+this.family+'"';a.verticalAlign="top";a.color=this.color;a.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"";a.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"";a.textDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?
 "underline":"";a.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"};
 mxText.prototype.updateSize=function(a,b){var c=Math.max(0,Math.round(this.bounds.width/this.scale)),d=Math.max(0,Math.round(this.bounds.height/this.scale)),e=a.style;this.clipped?(e.overflow="hidden",mxClient.IS_QUIRKS?e.width=c+"px":(e.maxHeight=d+"px",e.maxWidth=c+"px")):"fill"==this.overflow?(e.width=c+1+"px",e.height=d+1+"px",e.overflow="hidden"):"width"==this.overflow&&(e.width=c+1+"px",e.maxHeight=d+1+"px",e.overflow="hidden");if(this.wrap&&0<c){if(e.wordWrap=mxConstants.WORD_WRAP,e.whiteSpace=
@@ -1476,9 +1476,10 @@ g)),b,c,d)}};mxCellStatePreview.prototype.addEdges=function(a){for(var b=this.gr
 mxConnectionConstraint.prototype.dx=null;mxConnectionConstraint.prototype.dy=null;
 function mxGraphHandler(a){this.graph=a;this.graph.addMouseListener(this);this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape();this.updateHint()});this.graph.addListener(mxEvent.PAN,this.panHandler);this.escapeHandler=mxUtils.bind(this,function(a,c){this.reset()});this.graph.addListener(mxEvent.ESCAPE,this.escapeHandler);this.refreshHandler=mxUtils.bind(this,function(a,c){if(null!=this.first)try{this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),
 this.updatePreviewShape()}catch(d){this.reset()}});this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler)}mxGraphHandler.prototype.graph=null;mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50;mxGraphHandler.prototype.enabled=!0;mxGraphHandler.prototype.highlightEnabled=!0;mxGraphHandler.prototype.cloneEnabled=!0;mxGraphHandler.prototype.moveEnabled=!0;mxGraphHandler.prototype.guidesEnabled=!1;mxGraphHandler.prototype.guide=null;mxGraphHandler.prototype.currentDx=null;
-mxGraphHandler.prototype.currentDy=null;mxGraphHandler.prototype.updateCursor=!0;mxGraphHandler.prototype.selectEnabled=!0;mxGraphHandler.prototype.removeCellsFromParent=!0;mxGraphHandler.prototype.connectOnDrop=!1;mxGraphHandler.prototype.scrollOnMove=!0;mxGraphHandler.prototype.minimumSize=6;mxGraphHandler.prototype.previewColor="black";mxGraphHandler.prototype.htmlPreview=!1;mxGraphHandler.prototype.shape=null;mxGraphHandler.prototype.scaleGrid=!1;mxGraphHandler.prototype.rotationEnabled=!0;
-mxGraphHandler.prototype.isEnabled=function(){return this.enabled};mxGraphHandler.prototype.setEnabled=function(a){this.enabled=a};mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled};mxGraphHandler.prototype.setCloneEnabled=function(a){this.cloneEnabled=a};mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled};mxGraphHandler.prototype.setMoveEnabled=function(a){this.moveEnabled=a};mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled};
-mxGraphHandler.prototype.setSelectEnabled=function(a){this.selectEnabled=a};mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent};mxGraphHandler.prototype.setRemoveCellsFromParent=function(a){this.removeCellsFromParent=a};mxGraphHandler.prototype.getInitialCellForEvent=function(a){return a.getCell()};mxGraphHandler.prototype.isDelayedSelection=function(a,b){return this.graph.isCellSelected(a)};mxGraphHandler.prototype.consumeMouseEvent=function(a,b){b.consume()};
+mxGraphHandler.prototype.currentDy=null;mxGraphHandler.prototype.updateCursor=!0;mxGraphHandler.prototype.selectEnabled=!0;mxGraphHandler.prototype.removeCellsFromParent=!0;mxGraphHandler.prototype.removeEmptyParents=!1;mxGraphHandler.prototype.connectOnDrop=!1;mxGraphHandler.prototype.scrollOnMove=!0;mxGraphHandler.prototype.minimumSize=6;mxGraphHandler.prototype.previewColor="black";mxGraphHandler.prototype.htmlPreview=!1;mxGraphHandler.prototype.shape=null;mxGraphHandler.prototype.scaleGrid=!1;
+mxGraphHandler.prototype.rotationEnabled=!0;mxGraphHandler.prototype.isEnabled=function(){return this.enabled};mxGraphHandler.prototype.setEnabled=function(a){this.enabled=a};mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled};mxGraphHandler.prototype.setCloneEnabled=function(a){this.cloneEnabled=a};mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled};mxGraphHandler.prototype.setMoveEnabled=function(a){this.moveEnabled=a};
+mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled};mxGraphHandler.prototype.setSelectEnabled=function(a){this.selectEnabled=a};mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent};mxGraphHandler.prototype.setRemoveCellsFromParent=function(a){this.removeCellsFromParent=a};mxGraphHandler.prototype.getInitialCellForEvent=function(a){return a.getCell()};mxGraphHandler.prototype.isDelayedSelection=function(a,b){return this.graph.isCellSelected(a)};
+mxGraphHandler.prototype.consumeMouseEvent=function(a,b){b.consume()};
 mxGraphHandler.prototype.mouseDown=function(a,b){if(!b.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&null!=b.getState()&&!mxEvent.isMultiTouchEvent(b.getEvent())){var c=this.getInitialCellForEvent(b);this.delayedSelection=this.isDelayedSelection(c,b);this.cell=null;this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(c,b.getEvent());if(this.isMoveEnabled()){var d=this.graph.model,e=d.getGeometry(c);this.graph.isCellMovable(c)&&(!d.isEdge(c)||1<this.graph.getSelectionCount()||
 null!=e.points&&0<e.points.length||null==d.getTerminal(c,!0)||null==d.getTerminal(c,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(b.getEvent())&&this.graph.isCellsCloneable())?this.start(c,b.getX(),b.getY()):this.delayedSelection&&(this.cell=c);this.cellWasClicked=!0;this.consumeMouseEvent(mxEvent.MOUSE_DOWN,b)}}};
 mxGraphHandler.prototype.getGuideStates=function(){var a=this.graph.getDefaultParent(),b=this.graph.getModel(),c=mxUtils.bind(this,function(a){return null!=this.graph.view.getState(a)&&b.isVertex(a)&&null!=b.getGeometry(a)&&!b.getGeometry(a).relative});return this.graph.view.getCellStates(b.filterDescendants(c,a))};mxGraphHandler.prototype.getCells=function(a){return!this.delayedSelection&&this.graph.isCellMovable(a)?[a]:this.graph.getMovableCells(this.graph.getSelectionCells())};
@@ -1498,8 +1499,10 @@ mxGraphHandler.prototype.mouseUp=function(a,b){if(!b.isConsumed()){var c=this.gr
 e),e=this.roundLength(this.currentDy/e),g=this.target;c.isSplitEnabled()&&c.isSplitTarget(g,this.cells,b.getEvent())?c.splitEdge(g,this.cells,null,f,e):this.moveCells(this.cells,f,e,d,this.target,b.getEvent())}}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(b)}this.cellWasClicked&&this.consumeMouseEvent(mxEvent.MOUSE_UP,b);this.reset()};
 mxGraphHandler.prototype.selectDelayed=function(a){this.graph.isCellSelected(this.cell)&&this.graph.popupMenuHandler.isPopupTrigger(a)||this.graph.selectCellForEvent(this.cell,a.getEvent())};mxGraphHandler.prototype.reset=function(){this.destroyShapes();this.removeHint();this.delayedSelection=this.cellWasClicked=!1;this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null};
 mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,b,c){if(this.graph.getModel().isVertex(a)&&(a=this.graph.getView().getState(a),null!=a)){c=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(c),mxEvent.getClientY(c));var d=mxUtils.toRadians(mxUtils.getValue(a.style,mxConstants.STYLE_ROTATION)||0);if(0!=d){b=Math.cos(-d);var d=Math.sin(-d),e=new mxPoint(a.getCenterX(),a.getCenterY());c=mxUtils.getRotatedPoint(c,b,d,e)}return!mxUtils.contains(a,c.x,c.y)}return!1};
-mxGraphHandler.prototype.moveCells=function(a,b,c,d,e,f){d&&(a=this.graph.getCloneableCells(a));null==e&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),a,f)&&(e=this.graph.getDefaultParent());d=d&&!this.graph.isCellLocked(e||this.graph.getDefaultParent());a=this.graph.moveCells(a,b-this.graph.panDx/this.graph.view.scale,c-this.graph.panDy/this.graph.view.scale,d,e,f);this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(a[0]);
-d&&this.graph.setSelectionCells(a)};mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null);null!=this.guide&&(this.guide.destroy(),this.guide=null);null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)};
+mxGraphHandler.prototype.moveCells=function(a,b,c,d,e,f){d&&(a=this.graph.getCloneableCells(a));var g=this.graph.getModel().getParent(this.cell);null==e&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(g,a,f)&&(e=this.graph.getDefaultParent());d=d&&!this.graph.isCellLocked(e||this.graph.getDefaultParent());this.graph.getModel().beginUpdate();try{g=[];if(!d&&null!=e&&this.removeEmptyParents){for(var k=new mxDictionary,l=0;l<a.length;l++)k.put(a[l],!0);for(l=0;l<a.length;l++){var m=
+this.graph.model.getParent(a[l]);null==m||k.get(m)||(k.put(m,!0),g.push(m))}}a=this.graph.moveCells(a,b-this.graph.panDx/this.graph.view.scale,c-this.graph.panDy/this.graph.view.scale,d,e,f);b=[];for(l=0;l<g.length;l++)this.shouldRemoveParent(g[l])&&b.push(g[l]);this.graph.removeCells(b,!1)}finally{this.graph.getModel().endUpdate()}d&&this.graph.setSelectionCells(a);this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(a[0])};
+mxGraphHandler.prototype.shouldRemoveParent=function(a){var b=this.graph.view.getState(a);console.log("state",b,this.graph.model.getChildCount(b.cell));return null!=b&&(this.graph.model.isEdge(b.cell)||this.graph.model.isVertex(b.cell))&&this.graph.isCellDeletable(b.cell)&&0==this.graph.model.getChildCount(b.cell)?(a=mxUtils.getValue(b.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),b=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE),a==mxConstants.NONE&&b==mxConstants.NONE):
+!1};mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null);null!=this.guide&&(this.guide.destroy(),this.guide=null);null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)};
 mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this);this.graph.removeListener(this.panHandler);null!=this.escapeHandler&&(this.graph.removeListener(this.escapeHandler),this.escapeHandler=null);null!=this.refreshHandler&&(this.graph.getModel().removeListener(this.refreshHandler),this.refreshHandler=null);this.destroyShapes();this.removeHint()};
 function mxPanningHandler(a){null!=a&&(this.graph=a,this.graph.addMouseListener(this),this.forcePanningHandler=mxUtils.bind(this,function(a,c){var b=c.getProperty("eventName"),e=c.getProperty("event");b==mxEvent.MOUSE_DOWN&&this.isForcePanningEvent(e)&&(this.start(e),this.active=!0,this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",e)),e.consume())}),this.graph.addListener(mxEvent.FIRE_MOUSE_EVENT,this.forcePanningHandler),this.gestureHandler=mxUtils.bind(this,function(a,c){if(this.isPinchEnabled()){var b=
 c.getProperty("event");mxEvent.isConsumed(b)||"gesturestart"!=b.type?"gestureend"==b.type&&null!=this.initialScale&&(this.initialScale=null):(this.initialScale=this.graph.view.scale,this.active||null==this.mouseDownEvent||(this.start(this.mouseDownEvent),this.mouseDownEvent=null));if(null!=this.initialScale){var e=Math.round(this.initialScale*b.scale*100)/100;null!=this.minScale&&(e=Math.max(this.minScale,e));null!=this.maxScale&&(e=Math.min(this.maxScale,e));this.graph.view.scale!=e&&(this.graph.zoomTo(e),
@@ -2235,7 +2238,7 @@ mxUtils.bind(this,function(a,c){if(!mxEvent.isMultiTouchEvent(c)){var b=c.getPro
 function(a,c){return c&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler;null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var D=this.updateMouseEvent;this.updateMouseEvent=function(a){a=D.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=
 null);return a}}this.currentTranslate=new mxPoint(0,0)};Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.lineJumpsEnabled=!0;Graph.defaultJumpSize=6;
 Graph.createSvgImage=function(a,b,e){e=unescape(encodeURIComponent('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+b+'px" version="1.1">'+e+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0)),a,b)};
-Graph.zapGremlins=function(a){for(var b=[],e=0;e<a.length;e++){var d=a.charCodeAt(e);(32<=d||9==d||10==d||13==d)&&65535!=d&&b.push(a.charAt(e))}return b.join("")};Graph.stringToBytes=function(a){for(var b=Array(a.length),e=0;e<a.length;e++)b[e]=a.charCodeAt(e);return b};Graph.bytesToString=function(a){for(var b=Array(a.length),e=0;e<a.length;e++)b[e]=String.fromCharCode(a[e]);return b.join("")};Graph.compressNode=function(a){return Graph.compress(Graph.zapGremlins(mxUtils.getXml(a)))};
+Graph.zapGremlins=function(a){for(var b=[],e=0;e<a.length;e++){var d=a.charCodeAt(e);(32<=d||9==d||10==d||13==d)&&65535!=d&&65534!=d&&b.push(a.charAt(e))}return b.join("")};Graph.stringToBytes=function(a){for(var b=Array(a.length),e=0;e<a.length;e++)b[e]=a.charCodeAt(e);return b};Graph.bytesToString=function(a){for(var b=Array(a.length),e=0;e<a.length;e++)b[e]=String.fromCharCode(a[e]);return b.join("")};Graph.compressNode=function(a){return Graph.compress(Graph.zapGremlins(mxUtils.getXml(a)))};
 Graph.compress=function(a,b){if(null==a||0==a.length||"undefined"===typeof pako)return a;var e=Graph.bytesToString(b?pako.deflate(encodeURIComponent(a)):pako.deflateRaw(encodeURIComponent(a)));return window.btoa?btoa(e):Base64.encode(e,!0)};Graph.decompress=function(a,b){if(null==a||0==a.length||"undefined"===typeof pako)return a;var e=window.atob?atob(a):Base64.decode(a,!0);return Graph.zapGremlins(decodeURIComponent(Graph.bytesToString(b?pako.inflate(e):pako.inflateRaw(e))))};
 mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null;Graph.prototype.linkPolicy="frame"==urlParams.target?"blank":urlParams.target||"auto";Graph.prototype.linkTarget="frame"==urlParams.target?"_self":"_blank";Graph.prototype.linkRelation="nofollow noopener noreferrer";Graph.prototype.defaultScrollbars=!mxClient.IS_IOS;Graph.prototype.defaultPageVisible=!0;Graph.prototype.lightbox=!1;Graph.prototype.defaultPageBackgroundColor="#ffffff";
 Graph.prototype.defaultPageBorderColor="#ffffff";Graph.prototype.scrollTileSize=new mxRectangle(0,0,400,400);Graph.prototype.transparentBackground=!0;Graph.prototype.selectParentAfterDelete=!1;Graph.prototype.defaultEdgeLength=80;Graph.prototype.edgeMode=!1;Graph.prototype.connectionArrowsEnabled=!0;Graph.prototype.placeholderPattern=RegExp("%(date{.*}|[^%^{^}]+)%","g");Graph.prototype.absoluteUrlPattern=/^(?:[a-z]+:)?\/\//i;Graph.prototype.defaultThemeName="default";
@@ -2347,21 +2350,21 @@ l.documentElement&&mxStencilRegistry.parseStencilSet(l.documentElement,b,m)}};mx
 mxStencilRegistry.parseStencilSet=function(a,b,e){if("stencils"==a.nodeName)for(var d=a.firstChild;null!=d;)"shapes"==d.nodeName&&mxStencilRegistry.parseStencilSet(d,b,e),d=d.nextSibling;else{e=null!=e?e:!0;var d=a.firstChild,l="";a=a.getAttribute("name");for(null!=a&&(l=a+".");null!=d;){if(d.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=d.getAttribute("name"),null!=a)){var l=l.toLowerCase(),m=a.replace(/ /g,"_");e&&mxStencilRegistry.addStencil(l+m.toLowerCase(),new mxStencil(d));if(null!=b){var r=d.getAttribute("w"),
 u=d.getAttribute("h"),r=null==r?80:parseInt(r,10),u=null==u?80:parseInt(u,10);b(l,m,a,r,u)}}d=d.nextSibling}}};
 "undefined"!=typeof mxVertexHandler&&function(){function a(){var a=document.createElement("div");a.className="geHint";a.style.whiteSpace="nowrap";a.style.position="absolute";return a}mxConstants.HANDLE_FILLCOLOR="#29b6f2";mxConstants.HANDLE_STROKECOLOR="#0088cf";mxConstants.VERTEX_SELECTION_COLOR="#00a8ff";mxConstants.OUTLINE_COLOR="#00a8ff";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.EDGE_SELECTION_COLOR=
-"#00a8ff";mxConstants.DEFAULT_VALID_COLOR="#00a8ff";mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff";mxConstants.GUIDE_COLOR="#0088cf";mxConstants.HIGHLIGHT_OPACITY=30;mxConstants.HIGHLIGHT_SIZE=5;mxEdgeHandler.prototype.snapToTerminals=!0;mxGraphHandler.prototype.guidesEnabled=!0;mxRubberband.prototype.fadeOut=!0;mxGuide.prototype.isEnabledForEvent=function(a){return!mxEvent.isAltDown(a)};var b=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(a){return mxEvent.isControlDown(a)||
-b.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var a=new mxEllipse(null,this.highlightColor,this.highlightColor,0);a.opacity=mxConstants.HIGHLIGHT_OPACITY;return a};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=function(a){a=this.graph.createCurrentEdgeStyle();a=this.graph.createEdge(null,null,null,null,null,a);a=new mxCellState(this.graph.view,a,this.graph.getCellStyle(a));
-for(var c in this.graph.currentEdgeStyle)a.style[c]=this.graph.currentEdgeStyle[c];return a};var e=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var a=e.apply(this,arguments);a.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];return a};mxConnectionHandler.prototype.updatePreview=function(a){};var d=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=d.apply(this,arguments),c=a.getCell;
-a.getCell=mxUtils.bind(this,function(a){var b=c.apply(this,arguments);this.error=null;return b});return a};mxConnectionHandler.prototype.isCellEnabled=function(a){return!this.graph.isCellLocked(a)};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=function(){var a="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";";null!=this.currentEdgeStyle.shape&&
-(a+="shape="+this.currentEdgeStyle.shape+";");null!=this.currentEdgeStyle.curved&&(a+="curved="+this.currentEdgeStyle.curved+";");null!=this.currentEdgeStyle.rounded&&(a+="rounded="+this.currentEdgeStyle.rounded+";");null!=this.currentEdgeStyle.comic&&(a+="comic="+this.currentEdgeStyle.comic+";");null!=this.currentEdgeStyle.jumpStyle&&(a+="jumpStyle="+this.currentEdgeStyle.jumpStyle+";");null!=this.currentEdgeStyle.jumpSize&&(a+="jumpSize="+this.currentEdgeStyle.jumpSize+";");null!=this.currentEdgeStyle.orthogonalLoop?
-a+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&(a+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?a+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(a+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=this.currentEdgeStyle.elbow&&(a+="elbow="+this.currentEdgeStyle.elbow+
-";");return a=null!=this.currentEdgeStyle.html?a+("html="+this.currentEdgeStyle.html+";"):a+"html=1;"};Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var a=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())};Graph.prototype.importGraphModel=function(a,c,b,f){c=null!=c?
-c:0;b=null!=b?b:0;var d=new mxCodec(a.ownerDocument),e=new mxGraphModel;d.decode(a,e);a=[];d=e.getChildren(this.cloneCell(e.root,this.isCloneInvalidEdges()));if(null!=d){d=d.slice();this.model.beginUpdate();try{if(1!=d.length||this.isCellLocked(this.getDefaultParent()))for(e=0;e<d.length;e++)a=a.concat(this.model.getChildren(this.moveCells([d[e]],c,b,!1,this.model.getRoot())[0]));else a=this.moveCells(e.getChildren(d[0]),c,b,!1,this.getDefaultParent());if(f){this.isGridEnabled()&&(c=this.snap(c),
-b=this.snap(b));var k=this.getBoundingBoxFromGeometry(a,!0);null!=k&&this.moveCells(a,c-k.x,b-k.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,c){if(null!=a){var b=mxUtils.getValue(a.style,"points",null);if(null!=b){var f=[];try{for(var d=JSON.parse(b),b=0;b<d.length;b++){var e=d[b];f.push(new mxConnectionConstraint(new mxPoint(e[0],e[1]),2<e.length?"0"!=e[2]:!0,null,3<e.length?e[3]:0,4<e.length?e[4]:0))}}catch(Z){}return f}if(null!=a.shape&&null!=
-a.shape.bounds){e=a.shape.direction;d=a.shape.bounds;b=a.shape.scale;f=d.width/b;d=d.height/b;if(e==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH)e=f,f=d,d=e;b=a.shape.getConstraints(a.style,f,d);if(null!=b)return b;if(null!=a.shape.stencil&&null!=a.shape.stencil.constraints)return a.shape.stencil.constraints;if(null!=a.shape.constraints)return a.shape.constraints}}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);
-null!=c&&(c=mxUtils.getValue(c,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,c,[a]))}};Graph.prototype.isValidRoot=function(a){for(var c=this.model.getChildCount(a),b=0,f=0;f<c;f++){var d=this.model.getChildAt(a,f);this.model.isVertex(d)&&(d=this.getCellGeometry(d),null==d||d.relative||b++)}return 0<b||this.isContainer(a)};Graph.prototype.isValidDropTarget=function(a){var c=
-this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(c,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(c,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var c=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(c&&null!=a&&null!=
-this.layoutManager){var b=this.model.getParent(a);null!=b&&(b=this.layoutManager.getLayout(b),null!=b&&b.constructor==mxStackLayout&&(c=!1))}return c};Graph.prototype.getPreferredSizeForCell=function(a){var c=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=c&&(c.width+=10,c.height+=4,this.gridEnabled&&(c.width=this.snap(c.width),c.height=this.snap(c.height)));return c};Graph.prototype.turnShapes=function(a){var c=this.getModel(),b=[];c.beginUpdate();try{for(var f=0;f<a.length;f++){var d=
-a[f];if(c.isEdge(d)){var e=c.getTerminal(d,!0),k=c.getTerminal(d,!1);c.setTerminal(d,k,!0);c.setTerminal(d,e,!1);var g=c.getGeometry(d);if(null!=g){g=g.clone();null!=g.points&&g.points.reverse();var p=g.getTerminalPoint(!0),n=g.getTerminalPoint(!1);g.setTerminalPoint(p,!1);g.setTerminalPoint(n,!0);c.setGeometry(d,g);var q=this.view.getState(d),t=this.view.getState(e),M=this.view.getState(k);if(null!=q){var B=null!=t?this.getConnectionConstraint(q,t,!0):null,l=null!=M?this.getConnectionConstraint(q,
-M,!1):null;this.setConnectionConstraint(d,e,!0,l);this.setConnectionConstraint(d,k,!1,B)}b.push(d)}}else if(c.isVertex(d)&&(g=this.getCellGeometry(d),null!=g)){g=g.clone();g.x+=g.width/2-g.height/2;g.y+=g.height/2-g.width/2;var y=g.width;g.width=g.height;g.height=y;c.setGeometry(d,g);var D=this.view.getState(d);if(null!=D){var v=D.style[mxConstants.STYLE_DIRECTION]||"east";"east"==v?v="south":"south"==v?v="west":"west"==v?v="north":"north"==v&&(v="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,
+"#00a8ff";mxConstants.DEFAULT_VALID_COLOR="#00a8ff";mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff";mxConstants.GUIDE_COLOR="#0088cf";mxConstants.HIGHLIGHT_OPACITY=30;mxConstants.HIGHLIGHT_SIZE=5;mxEdgeHandler.prototype.snapToTerminals=!0;mxGraphHandler.prototype.guidesEnabled=!0;mxGraphHandler.prototype.removeEmptyParents=!0;mxRubberband.prototype.fadeOut=!0;mxGuide.prototype.isEnabledForEvent=function(a){return!mxEvent.isAltDown(a)};var b=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=
+function(a){return mxEvent.isControlDown(a)||b.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var a=new mxEllipse(null,this.highlightColor,this.highlightColor,0);a.opacity=mxConstants.HIGHLIGHT_OPACITY;return a};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=function(a){a=this.graph.createCurrentEdgeStyle();a=this.graph.createEdge(null,null,null,null,null,a);a=new mxCellState(this.graph.view,
+a,this.graph.getCellStyle(a));for(var c in this.graph.currentEdgeStyle)a.style[c]=this.graph.currentEdgeStyle[c];return a};var e=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var a=e.apply(this,arguments);a.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];return a};mxConnectionHandler.prototype.updatePreview=function(a){};var d=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=
+d.apply(this,arguments),c=a.getCell;a.getCell=mxUtils.bind(this,function(a){var b=c.apply(this,arguments);this.error=null;return b});return a};mxConnectionHandler.prototype.isCellEnabled=function(a){return!this.graph.isCellLocked(a)};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=function(){var a="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";";
+null!=this.currentEdgeStyle.shape&&(a+="shape="+this.currentEdgeStyle.shape+";");null!=this.currentEdgeStyle.curved&&(a+="curved="+this.currentEdgeStyle.curved+";");null!=this.currentEdgeStyle.rounded&&(a+="rounded="+this.currentEdgeStyle.rounded+";");null!=this.currentEdgeStyle.comic&&(a+="comic="+this.currentEdgeStyle.comic+";");null!=this.currentEdgeStyle.jumpStyle&&(a+="jumpStyle="+this.currentEdgeStyle.jumpStyle+";");null!=this.currentEdgeStyle.jumpSize&&(a+="jumpSize="+this.currentEdgeStyle.jumpSize+
+";");null!=this.currentEdgeStyle.orthogonalLoop?a+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&(a+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?a+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(a+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=
+this.currentEdgeStyle.elbow&&(a+="elbow="+this.currentEdgeStyle.elbow+";");return a=null!=this.currentEdgeStyle.html?a+("html="+this.currentEdgeStyle.html+";"):a+"html=1;"};Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var a=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())};
+Graph.prototype.importGraphModel=function(a,c,b,f){c=null!=c?c:0;b=null!=b?b:0;var d=new mxCodec(a.ownerDocument),e=new mxGraphModel;d.decode(a,e);a=[];d=e.getChildren(this.cloneCell(e.root,this.isCloneInvalidEdges()));if(null!=d){d=d.slice();this.model.beginUpdate();try{if(1!=d.length||this.isCellLocked(this.getDefaultParent()))for(e=0;e<d.length;e++)a=a.concat(this.model.getChildren(this.moveCells([d[e]],c,b,!1,this.model.getRoot())[0]));else a=this.moveCells(e.getChildren(d[0]),c,b,!1,this.getDefaultParent());
+if(f){this.isGridEnabled()&&(c=this.snap(c),b=this.snap(b));var k=this.getBoundingBoxFromGeometry(a,!0);null!=k&&this.moveCells(a,c-k.x,b-k.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.getAllConnectionConstraints=function(a,c){if(null!=a){var b=mxUtils.getValue(a.style,"points",null);if(null!=b){var f=[];try{for(var d=JSON.parse(b),b=0;b<d.length;b++){var e=d[b];f.push(new mxConnectionConstraint(new mxPoint(e[0],e[1]),2<e.length?"0"!=e[2]:!0,null,3<e.length?e[3]:0,4<e.length?e[4]:
+0))}}catch(Z){}return f}if(null!=a.shape&&null!=a.shape.bounds){e=a.shape.direction;d=a.shape.bounds;b=a.shape.scale;f=d.width/b;d=d.height/b;if(e==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH)e=f,f=d,d=e;b=a.shape.getConstraints(a.style,f,d);if(null!=b)return b;if(null!=a.shape.stencil&&null!=a.shape.stencil.constraints)return a.shape.stencil.constraints;if(null!=a.shape.constraints)return a.shape.constraints}}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var c=this.view.getState(a),
+c=null!=c?c.style:this.getCellStyle(a);null!=c&&(c=mxUtils.getValue(c,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,c,[a]))}};Graph.prototype.isValidRoot=function(a){for(var c=this.model.getChildCount(a),b=0,f=0;f<c;f++){var d=this.model.getChildAt(a,f);this.model.isVertex(d)&&(d=this.getCellGeometry(d),null==d||d.relative||b++)}return 0<b||this.isContainer(a)};
+Graph.prototype.isValidDropTarget=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(c,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(c,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this,arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var c=mxGraph.prototype.isExtendParentsOnAdd.apply(this,
+arguments);if(c&&null!=a&&null!=this.layoutManager){var b=this.model.getParent(a);null!=b&&(b=this.layoutManager.getLayout(b),null!=b&&b.constructor==mxStackLayout&&(c=!1))}return c};Graph.prototype.getPreferredSizeForCell=function(a){var c=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=c&&(c.width+=10,c.height+=4,this.gridEnabled&&(c.width=this.snap(c.width),c.height=this.snap(c.height)));return c};Graph.prototype.turnShapes=function(a){var c=this.getModel(),b=[];c.beginUpdate();
+try{for(var f=0;f<a.length;f++){var d=a[f];if(c.isEdge(d)){var e=c.getTerminal(d,!0),k=c.getTerminal(d,!1);c.setTerminal(d,k,!0);c.setTerminal(d,e,!1);var g=c.getGeometry(d);if(null!=g){g=g.clone();null!=g.points&&g.points.reverse();var p=g.getTerminalPoint(!0),n=g.getTerminalPoint(!1);g.setTerminalPoint(p,!1);g.setTerminalPoint(n,!0);c.setGeometry(d,g);var q=this.view.getState(d),t=this.view.getState(e),M=this.view.getState(k);if(null!=q){var B=null!=t?this.getConnectionConstraint(q,t,!0):null,l=
+null!=M?this.getConnectionConstraint(q,M,!1):null;this.setConnectionConstraint(d,e,!0,l);this.setConnectionConstraint(d,k,!1,B)}b.push(d)}}else if(c.isVertex(d)&&(g=this.getCellGeometry(d),null!=g)){g=g.clone();g.x+=g.width/2-g.height/2;g.y+=g.height/2-g.width/2;var y=g.width;g.width=g.height;g.height=y;c.setGeometry(d,g);var D=this.view.getState(d);if(null!=D){var v=D.style[mxConstants.STYLE_DIRECTION]||"east";"east"==v?v="south":"south"==v?v="west":"west"==v?v="north":"north"==v&&(v="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,
 v,[d])}b.push(d)}}}finally{c.endUpdate()}return b};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this,arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var c=this.model.getDescendants(a.cell);if(0<c.length)for(var b=
 0;b<c.length;b++){var f=this.view.getState(c[b]);null!=f&&null!=f.shape&&null!=f.shape.stencil&&this.stencilHasPlaceholders(f.shape.stencil)?this.removeStateForCell(c[b]):this.isReplacePlaceholders(c[b])&&this.view.invalidate(c[b],!1,!1)}}};Graph.prototype.replaceElement=function(a,c){for(var b=a.ownerDocument.createElement(null!=c?c:"span"),f=Array.prototype.slice.call(a.attributes);attr=f.pop();)b.setAttribute(attr.nodeName,attr.nodeValue);b.innerHTML=a.innerHTML;a.parentNode.replaceChild(b,a)};
 Graph.prototype.processElements=function(a,c){for(var b=a.getElementsByTagName("*"),f=0;f<b.length;f++)c(b[f])};Graph.prototype.updateLabelElements=function(a,c,b){a=null!=a?a:this.getSelectionCells();for(var f=document.createElement("div"),d=0;d<a.length;d++)if(this.isHtmlLabel(a[d])){var e=this.convertValueToString(a[d]);if(null!=e&&0<e.length){f.innerHTML=e;for(var k=f.getElementsByTagName(null!=b?b:"*"),g=0;g<k.length;g++)c(k[g]);f.innerHTML!=e&&this.cellLabelChanged(a[d],f.innerHTML)}}};Graph.prototype.cellLabelChanged=
diff --git a/src/main/webapp/templates/cloud/aws_1.png b/src/main/webapp/templates/cloud/aws_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa37cf42da8273b18ec6042ec37cafca58c52fc7
GIT binary patch
literal 6335
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
Bc{>0A

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/aws_1.xml b/src/main/webapp/templates/cloud/aws_1.xml
new file mode 100644
index 000000000..9ed31f1d5
--- /dev/null
+++ b/src/main/webapp/templates/cloud/aws_1.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-08T12:00:46.031Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="vHBDzW4MS3CWetA1GzMU" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7V1bc5w4Gv01frQLIa6Pbl8y2Y13suNMUrUvLgzqbo0BES6+/fqVBHQ3SG1jh1vH6lQ5IIQQOkdH0ifp4wieRY+fUi9ZX5EAhUe6FjwewfMjXdehDul/LOSpDAHA1cuQVYqDKmwbcI2fURWoVaEFDlDWiJgTEuY4aQb6JI6RnzfCvDQlD81oSxI2n5p4KyQEXPteKIb+wEG+rl/DcrcX/kB4ta4e7eh2eSHy6sjVm2RrLyAPO0Hw4giepYTk5VH0eIZCVnp1uZT3Xe65uslYiuK8yw3H//0nT//5+/mv84urv/5nXl065I9jYJTJ3HthUb3xaeQ9k5iGXdNXu/LuUFrlP3+qC+VhjXN0nXg+O3+gyB/BxTqPQnoG6OESh+EZCUlKz2MSIxZE4rwClz6yPK+jHOlQ4z8aHnjZGrEMa/VN1VPZuRfiVUyPffrGNFdwcY/SHFOsTqsLOWE5yfKU3KGd1M8dywKQXlmlXoDR9slV5jL6JjhefUHLvHpS6N2i8CvJcI6J9IlfWhFuSZ6TiEYQUamAYneix52gCqVPiEQoT59olOqqY+snZnlTXWtsow552JKQ1q4ybL3DP2BVdPMq4q826W+5QQ8qesipcn32/erb4kfy5T5//tfn9TMww6tjKFLl0Ilxxn+HQwynTQzdtGXEqMVzlxh2D7yQS8jrtCBFHuKYlnyt0ZqINP13yZ66D4td7rDotk1FWAC1itxgy6vQyNkikGqXyDus1WWEzJLyRZf4keVjkRDMUrm4p4llVSK0QUjYDdHjijWeJ95DZpwEhKQ3IfHv+qGMZbQZY2kSxtiOhDDOQITRFWF6JIzvpQNRBZrWtESBiii9EiVCqTcQVwwTTC0rHbonii2d2VLkOMT5Uz90AZbZ1hbNmpovpuJLn+pClkuEbhI2mu2HMlZbYsDkPRdLUaZHyoQMsdsivO2HMboF59fXtRVjemTMmhQZ6ostYG7dXUdxpUeu5GuURiTLvZ4aJJEwM+jzugJlgMCZlBRxwDFkZfUGCx03v9lni/N95GgR75L/WiC2QGYl3AsauiD2QIaGIbGEwaHQqM1uO3BcfaHn9bTIxSPyi9y7pQUzQsWmtfrcXPx+FTvzVihi0xI3ES/XXvhk2AKfDJnNfdTaDUTT6umPaxrwxYtuA48eXBaxz7FSDcX7u6G8MG+WdVEOxCdouJPzSbS8lnz6TL7Rv59ShGJaMFlGT85I2rNK0WuWdgqhvXPtHKeoKnVKpJSVSkfa0StL/psj96Q8S1FGitRHn31OMnpaHjVjrbYgDEREQzpnNC4RxYH0LhEV96bhHhfMGOU3ZHmTr3G86omDttE2/82g6wzEofkuB09jL3yiWGWKiBMQkeQ33gaAXjjobpvfGXFQHPKrAcNhDBgAbNunLXd6Pon2ANXBm6G2+azse6Kh3aKh7U5sxtRFK8h3HCDCOFdOQavB6iwm8UXuuBqcWsL0fTYPNTT4HYcG0GwvabSldtxxOfiynUQNDX6voYEJBQ5qzuQcFBe/7XKwaikUASchIKra6V6MI3p7XnEO7HtpW8h/rnvn3SU0DEd/G+8WZ4BN2X8U3mVxX5YQbY5yJ67G2xDu35RZGaZiZ4VsLv82pUcrdlQPK67zFHmRJELvPHUN8/zyjTw1T6G2MD8MT+9KtG7uGTg3WQVNP3MZTnvZsSPdGDUuc8W5jCtyi5nJTjtNkpAi1f8MLZNM07AN921UPLMBBJcfhopRiUM/zbTTnsNw7OkHy+Ichi4Q7bdc/2M47WlNYMmkYNT1P7pozocfAw5HWI4FbHNyOERruPEx4LCgsPrEla0+GRUOKNqFzY8Bh2M7M4RDNLRaHwMOydSddAA0LhyizdH+GHAYVns8almyzWHjwiGa35yPAYcjWEPnAIdoj3I/BhziBIljTt7RhaK1pl77/rvjYc0RD0McB37DOTdB0NfKBWR4YKP46QgaP/OFRuUwnE9I82yaiyOTAeEVOcmqgfvOGD/kvlH2OVwp/ad8Yyfnx0YTESgxeGzcvTSR/HXYTKHJl4EGoAQ1YyjHKYY4XLwubvMGcFuL5g5+1s+Cb7NlhXRcYnJKIwAredxe3GsDnQX4fMJoH/hD4A2AFHBNArg+GODigJRb1g4Qor7rp2DZlZtzzIHgkjq86uDYiFlwN41U7R9O32/xNHpit+AgDMrGk0CzJOUFhiovcQRT6xflWVzrUcX48gJ9zu61mVYEY8SKYBiCjy8g636PWhM6OOJBwQrV5cAmH8iKxF54sQ3dBRHFwSnzzcjiJohZ8FF4y09reHil8tK8jlZ1/OiNl5jlnWMvzGKYhrmwGFrbrqf2lhrIXuJFkGRNR4pCL8f3qJGSDIIqua+MsbsdfMHvkrsJqZMpZzuqO7dgCokZWofEaLmuUC4kxpmxedf3k6WDX5V6Tscv0vBpkXr+HcpfHyI0xxMDyKoB2nM8uiEzDOmyuucO1gzJfEj8oq4eUm0VG9f3198K6GPtRIN2E2ltf+fwF2u4KXRudPPdNdwR5EKS2J4avk2sjkiWywwNogKSrS2Tsbam4yusrck9EGv5s3ZSPjgWtzsmELTsGd05/GpSc2CwOFpTuntQjGVdH2370xsP3llM9Fb+2kBwfygmNgMGS3biKAYfEoMd6LzIYPu9DHZ1kcFCYnNgsGiDURaz8qrgH9G0J7cT1EM9ZQLqeX2COT20HWxAMx3W2912ao87qpfssKiXs+/Z26Na3hFbXtHbn23C97a2ULDpShKbQ2vbwXSnWDgiCw0DtmjTkqOuDDRrudmX0BzY18G7smLfiOyzdFG23sk/W2svSJ4lAzt4a1YMHHP8C4RW2Hj3mNdxBTqLic2BhaLlvLnRUXGyyUlKSa1eWlchu3GdOkjXsGmGcQF8HyEN4TtvNKkeCUnx8552YlTj5L0vBi3BH8wmP1uOl6n2y3iZpV1xfEKOm7Z5otnA0B2T/7UFWujbi+Y7p4FsYeH/tPy3HG0a/kt2Ri0KHAZCJZDuGd7nEKtprdpQV76gurn62rFd4DJj5mHsBqaZL+hr8X3WNwG6xz77YqzEqdav25JcgbPAli29MysF63v5t5w/opX8W+rhjnvOFX9G5I/YCdUtmTvmcfmjC/z5M8lxxApWUWhuFAKasENrDhxSa0SHWyPqmu0NxLr7bms00ECH1AZeJCrZQabo0htdxEYGWieGZdsGcOkbObDu0L953YCYstlM2R2KRvaf35+NBzt2754vvv54OjYWi7MuC9ObuL1tF+LF6cX5xXkTbr1uJGQbEKUtG/9m+MLz71Y8L62re+RfQqb9LQIwQQMUUxwZmjUyja0gvcwXS5ERpzfBC9DMZYPoCFBZbgMqCwpQDbV1VIqTqMMvVaGPhFPbGAac8Xb5SqES58cOwbvQFFBBbWKoxImkQ/A8NAVURr3MeiqoxNmWQ/BKNH5DZULxuwKjAiVOEhyCv6IRgLK1Zo9C0vsbFSjJZzAPwZXRKFWqPQNt2RNjJZqOD8HP0fi1ypm69yf5eOMhuEAao1Y150WBNnXvD8jMEpJl8CRFEUsryQr2f8DLhuKJ+bxmxGYzaQY0n8QZ8nOUF+yqF+AEZ2ypOrMuhbiKlFHUWRIsEBdZRNhpjqKEJ4ljHwc4KLgtp2B/KC78Uyoae0r5aHYWeauYfVjWC/HPwjuhR3+z6yjGEX82i4LLk3sayBajsKf/LJh/bi0mlDsFi4QeUerjvHJ9rBVh6EU+qZ9bRsYZrnPDH4cTfiP74/HXjuhbkLoAaHZylp/z8lFekbP84rTg+a7Ljk16aSlKUrRGtCakvCh54D0Ji4RmCPGs83LTUJaxU59Z76PdYkAF/bMsVthj0WKW/ZKUNKBIWTYuHn2U5KgoAePlSnzfQz6/wy8SHHh5eTcvgSQlOGCULtEqkeAZ84sw8coyZIksl9jH7DxAGUrLeBEJywx7ZdFjXsTZBsciOtm7neJVn+jiBoue9ku8XPVl4tSHHLC1Eq3l/rpkcsQwZPaw9jbU/iRBtIcpSVCSoCRhFEkA7X43cKTeqWU7qgAwh9IE2RyY0gSlCUoTptAEKP344R5NsIfSBNkmGKUJShOUJkyhCQaQ+umXasJL6zR+TRM6OgBTmqA0QWnC4OYEE0rd4cvtCcZQmtDRvZrSBKUJShOGNzGaUhujfOwwmI2xo8M6pQlKE5QmDK4JtnRTxp5+AhxIE7q6AFSaoDRBacLgmuA43ccO9ZLR/jVB9mELpQlKE5QmTKEJbL1S947CUJOR7P6WKBzEJ93GXwhNO2uaDK8xV5hJvXEqCVcSriR8DAlveyWjkiBZc9+XgNPTlLBv+m2ufWKOB65IgFiM/wM=</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_10.png b/src/main/webapp/templates/cloud/aws_10.png
new file mode 100644
index 0000000000000000000000000000000000000000..500942aa60ccc56c47349d49ff178a3c89014c9b
GIT binary patch
literal 4686
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
QD*ylh07*qoM6N<$g1~sF5C8xG

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/aws_10.xml b/src/main/webapp/templates/cloud/aws_10.xml
new file mode 100644
index 000000000..85b72fd79
--- /dev/null
+++ b/src/main/webapp/templates/cloud/aws_10.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-08T11:39:41.999Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="qHZMdm4_3q_E2cXBbMwO" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_2.png b/src/main/webapp/templates/cloud/aws_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b5773d55b741541e89b3c1a62694b14bfb9ef44
GIT binary patch
literal 5582
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

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/aws_2.xml b/src/main/webapp/templates/cloud/aws_2.xml
new file mode 100644
index 000000000..8a06eed71
--- /dev/null
+++ b/src/main/webapp/templates/cloud/aws_2.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-08T11:57:52.886Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="xGBckMkXVc-S_OdK4jOV" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_3.png b/src/main/webapp/templates/cloud/aws_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..a12ea8f7cbe8ff0ff1d408fdb08608a3e5004043
GIT binary patch
literal 3353
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

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/aws_3.xml b/src/main/webapp/templates/cloud/aws_3.xml
new file mode 100644
index 000000000..c20875d1c
--- /dev/null
+++ b/src/main/webapp/templates/cloud/aws_3.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-09T08:14:03.799Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="cSP34Bof1J8_9YzLPVK9" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_3d.png b/src/main/webapp/templates/cloud/aws_3d.png
new file mode 100644
index 0000000000000000000000000000000000000000..e96614c767e40ad8dea8e9043269ebd56f30e92a
GIT binary patch
literal 3298
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

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/aws_3d.xml b/src/main/webapp/templates/cloud/aws_3d.xml
new file mode 100644
index 000000000..169a7a75d
--- /dev/null
+++ b/src/main/webapp/templates/cloud/aws_3d.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="aaaa8250-4180-3840-79b5-4cada1eebb92">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_4.png b/src/main/webapp/templates/cloud/aws_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f0a3dc193c60a44c535fa7a3fe397e04174d2df
GIT binary patch
literal 4046
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
A>;M1&

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/aws_4.xml b/src/main/webapp/templates/cloud/aws_4.xml
new file mode 100644
index 000000000..f7373cb90
--- /dev/null
+++ b/src/main/webapp/templates/cloud/aws_4.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-09T09:32:47.348Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="scjDJZfrP7qzCHfwHRqR" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_5.png b/src/main/webapp/templates/cloud/aws_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef657a7888fbb3d842039900bba689c886f79cf2
GIT binary patch
literal 4641
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
Xa2_~r>R+r)00000NkvXXu0mjfa|>~8

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/aws_5.xml b/src/main/webapp/templates/cloud/aws_5.xml
new file mode 100644
index 000000000..cf75b743b
--- /dev/null
+++ b/src/main/webapp/templates/cloud/aws_5.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-09T07:01:59.451Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="lmfREGlSjDJdgJt8D1ag" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">7V1rc5s4G/01/hgPAnHxR9/S7TvNbrdptzPvl4wCiq0GIwoit1+/krgYkOw6WwJJSyaTWAIk8ZyjI+nRxRNruXt4l6B4e0EDHE5MI3iYWKuJaZqWafF/IuYxjwGmW8RsEhIUcfuIS/KEi0ijiM1IgNPGjYzSkJG4GenTKMI+a8ShJKH3zdtuaNjMNUYbrERc+ihUY7+SgG3zWM909/F/YLLZljkDZ5Zf2aHy5uJN0i0K6H0tylpPrGVCKcs/7R6WOBTWK+2SP3d+4GpVsARH7JQHvqyfPn6Zz/96n5yfkdTb2Ev3+5mZp3KHwqx44fnXSx6xDGkWFOVmj6UxYkoiJg1qL/gvz29pTGx+ZSlCU9NuRbTDbjMCqCGRRjOiHXabEaCdPGjlD9oFrEUooUbyRit/o1ZA/mstaMZCEuFlRT2DR24SFBAOyZKGNOFxEY249RZbtgt5CPCP91vC8GWMfGHVe15veNwNjVhBfmCW4cLwIlVOnlh83j1sREWbovsUTjcJzWKZ5XtOf+3VK/7xyhdgXqGQiYRYQm9xWbiJqKHmuSDM4oaEYavQdzhhhNeFeUg2In1GRXaoCIX4RqbI34REmw8ytLKMovS6LAKUbnFQvFLBPJ4FfjhIaVBVFC4xmO4wSx75LcUD0LIFxuKhUl/cIny/r6yOVdTAba2iQs8pRKIQiE2V+r4O8Q9FNXpGlQJKlVrSJKYJYlgIIWJIyBV/Q5yMFeztVzC/BPdKQHtVAKupaPbcWXLSvWRFq7LouqIBcEI9gwbss57ZSj1TqpOOCDWeNKzUMuV8vnAXnoYoLVD0yKkqCz0PQD34BwitgbsLJN22ZJoeUKCsul91KC3DeCEozROwxAHvlxVBmrAt3dAIhet97IJXxyio8Nzf84EKTCTi3zBjj4UMoIzRJh/UKgvthQOrK2UHUOgHjoJzIt5SZsZDc9HZFGWLcSSfQAkr4wpE83cSL3IcPP7eNEt8fMRiRaXimWwwO3KfpydDgkPEyF2zHN3D6oywPg9W90RYZ4PCOhtRPIoiACfCCKwhcSy7xSOOh+Ax+8JRPspfBD3WbigGA/uUP4qIfVPugHZTDmdOnRUnPGE5RotHeSn2rKpe5yeIBkaiHSeadSrR4KCCMTbfXeHoDIqjNeJ4HEf7bTTgcMSxIxwHHSdZ9ohjRzi6gw6MiuHbON49FdjZqbiaXXSwlf4wMJ0pBAYANu8Ie67tNjvHNnSmhuPNHNsGrgkBbKafv12R5JFet+larV63bc2mnmPu024mnJtDSbir7rjpjTR9Hk29U2l6wPf6szS1jtPU7oamnkJT2BNNz/7+xpJvX54+rdYXn/5vX5x79I9SG2osVYeRexIemvepEa7uep8Ib7a7XKwUIhbsaU0HnMuf1nQAmDTmlQR+i4MkU7z2h130ZX0sHfSwQLQx15JHNfzz3s+3a1okoNqufSYsFNOZ/JWYgoqMbJg+wSl5QtfVJEpznlOAIPQhLebnJqfOsuQzJJ+l4JzBJhq6+TFD/igodgFZAzGncrPUIAPaaegOplT0mKkif5ldswZsjlwRcJ000HO+Z2JFijTRWY7InN8AnPhhf5F/2rCK7a8NeuAcgb57tAHQwm1o4DY7gPty+c/F58XX+MMde/rf++0TsMMLzaIDBRoxk65tXOsSWTMi7MZYXtNW0NDaytEYC3RgLPevf57gvRvNbp/WH78+nsHFYnlm/dhYzd7N8xqW9Xy9Wq80bcOhNkXbAIXoGocL5N9uZFlaV7tgMbd6u8E3FWh4V1VFZlYucuscGvgmG/0esDJhCyunv06BFil1yv5YLfqdkLKailcugBkKKHUSXnX/jkCJ5S0DA6X2slX/7ggUt0rZixoKKLVrrTpwf0+g2o2UbbnDQqU6EZwRKglVeyWAo+n89QpV2d2vYeWOWOVYNZByHW9gpNTRpjcipa1V3tC9P6Ab7OaOnzRGUenI+UATvBNpxWkm/gfSOBxQIjzEiJdFLNGX26xS7DPMMnEVBSQmqXDE8AAOSXFTymEXSYhIkqU7GkiX0y6WSZLIJwEJMul7zsQfDgzPXtzNyqxFaIc2kdgrgULyPUNT/umLuI4jspN5i1tIHrjjkWiX5/49Iyn/F1FOHrGHycAPOPEJQ4zQSGQZhmjn0zLf/GaSkrI0MjsSywfFH7ldg+74W9DSALw4TJRnlWeFMrm1gySZLHdpOyJyS3Cc4C3mVSGRppSRdzTMYpZvCLnL7WbgNBVBn9eEPQLSKBn/c5NtCBK3RaL4OVF5RJaIYqwffBwznOWASbtS30fYl0/4WUzE1gT5tLRAnFASCJrnaOVIyIL5WRij3IYikZsb4hMRDnCKk/y+HQ3zAqPc9ESaOK1wzHbTkmCcsHWO1R2OJ7sPO/AGwh/WfZ06daIHrtNsYy2N8wtCjYcFgBcTBNXFMgrCKAijIPQjCK1tVJ6jUwRb5w0vF8F0rwi63TejIoyKMCpC/4pgGfB0RXBfShF0G7dGRRgVYVSE/hUBmropc70idLG0Va8IuqWtoyKMijAqQv9uBNtyT/cjwJdSBN0q4lERRkUYFWEAx6Kt9SzqRw0v5llUJ1tHRRgVYVSEIRTBdbzT+wjWCymCqU7pj4owKsKoCEMoguedPmooVx52vkVWdSyeI5/RIuU6Gtqz/w4dLHngCLXWshLTdYHcG6JdVtI4Da6E+oOA7iPlSkTkAYDXlDG6O8iFkjDVKYAH9laUuwEaB8ulcf6iN+RBlCPfKYOTNdcXuWFGbprUHVN4U5iwkwPiLN5uGPsfYDdZZJnGdFb/gQqlXE9llNtBp/PYiVk6Qv2wwo8Ue5UUg7bzqiimOjqWW8QpE46E+u+EIpRdoQiFj7xE6ZVfGLQTetWW2RwQLc9SGOXYPTJKHSjnp26/p5/530veH/hKRIesrWAFsUQH72XFbSIOBptbllu7tiIJTyinVCT2+59MVn7lRv68RsZq2ZngfNd8fuyv2MOqOwBYcJiXGd8LsLqhru22pFBdP9+r9mkWZZsK1V7fUt8uGimrPTHf30reo6dKHlCNpRywjSIwhAj4wvbdnGjv2c2+0XPbsX7VwTyxIRtp+fbbpuPUHL6lUjc61Lk4L/uaIxmHIWPV2T/sEKu/fsOr5nTDYMcDDfls9rVem2dDs1D/T8rwNaW3fQw8OT9X9uLXG3imaIN36BYnV1FpzcEI6RpgCuuUaxCy2qtaY6DuNA7YwcLwo8cu1hgYUP9WfG+NmIpgiFMu6YOLK8NeAvfX42JlxCtwGgm7EMHZbGocbsZbEjlTxzxQZaD5YhqozhfMd+hJTiT9nRH/9lIWousmfQbt1bn5vCbdnlvGwv5tmvTvwvppToEuaOnN3tTAR512qHh5+edl54Q8tyD0nknIxRJY9u/Tx0yjtA8mDj/OUacjKuqtl5+6p57rrQ34POodaK9/VephP+ljgGJDc2DqqfMWb+EoqQ6AgbB9sIPtqGD06g7WrK2CvwcYjq18hR3QbpHpFQ7VO/8WDoXqAg7lS1jNmfqNgv2Cofql38KxT12AoQgVdNS+cr9gqI7Zt3CuUxc9SQUMczY0GKpT8S0c3fQiYEBrYJlSsajNWLQXeLxLMI54pzP9tWYwdiQI5PdJtLv41YXWItyB+vibvfkLT13tJZLu/CCnfT+vjqb/4Sh5HkyoONC9uvZOvPEFDcRarPW/</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_6.png b/src/main/webapp/templates/cloud/aws_6.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4981292c4b9299f46d2261a8e3e6d21157938dc
GIT binary patch
literal 4940
zcmV-S6SM4zP)<h;3K|Lk000e1NJLTq004*p004{#0{{R3ko6IE0008?P)t-s|NsBi
z*xT#u?bO!U(9qEP`}_U<{mjqO`1$zV-QDBm=kP&)?LK|V9%1O|>cSXW#v5JEB4qOO
z^S%^V&(hY&%g@ct&FDIL#mLO%H+JDPbkfz>-{9lG7Fpch;qE^|?!VF9FmUr{na)sx
z+T7mv-RAG`@vpPEsjjs2)#19n!}3H%%FWT*dZ6k&d;a+Pk6G=)#mdvj?6I2P<)FLb
zm$dDGsN-yz*xTK+x4r6+veG7J{_pep>F}Y6)xg8Zx4XdUjIZU0tKNX6<8_|rgo)QF
zF_xU-;bW57Ep6vFJmKTz`MuM>zP|00wc%KcM`PvTPlfjL{Pp$r;f}B2dZOEQp7NBI
z*g$#C8YPjT?)&NK-iNB@fv4GVn(S1I+uHMoQsn&9;r7+n>$l7Kr^N2Jy5B^8)hcQ~
zN>@2VQh!a{`^nqy#nnGh(&&_$>r95_=jpz}#>B+L=cmB(oV@dtxAKUt=X9ReVvx{0
zbyQtx+$u8Q(fh#7`~CIzOmFYCpx>yF+x*njYCOih!NoT|!u!6zT{5`rh^_E=quEP=
z;dp-1G;!iGILQ?u>gM+O<Lcw&=5>bVoP*OeHoNG0qwQ{-*lU*Sh>hk*g4#B7$uDcs
zA}q-jAn@$@QDNBZxy|#i$vZ{K?3=mqj<TSpteBmo^q!!Eu6o{WbfU2Gx}oX2so{f)
z+v={y>z$$Rj*-|`iS0{I-!3&_HN3jgw5_eJ(nfq=XmiLWWkyh4*)~4p-t)+|?836-
zXLa84&)s!K&`VRxaYW1Sq`+l4!0f23=#P|?xs2p~gv~T><wQw&NY%W*#P+MLtH`8^
zvVmxDdeh?1$=t>Fw6*cBv7Wz{b9#h-t99*KUah$DwwCY0tn03h>D=hq@4V0Of`;Zn
zec(TPTVrqT^zC4K?V4`rTXW^+@8pSH+?amR^1{XLb$IAwXxBeTEjdTvJVMU5_2QDU
z-&kLwe&v&O(}ZHo-APbcl1y)*WXOG+o`IJ|000mZNkl<Zc-rjINo*2P7{Kulkm<B4
zDh?JZsZqx%A|84X(3sNd(Ac^LwYJ7+^x$$p#l$_vi#1x?7#kN<3<)kp6Rg${wLO^h
zpj4wEC?W^qQezX>qzCKCH_$Rm2N_TG&>vyG7lwKHXCCZ89>_*qIsEw8dFTO*I2mkz
z`R2h(kZCJ4*B#{=O%Y*&ksyN~hdv&90|cQUHMogz6=+Eq3FwV<c6Ppj5hp{R|HA(m
z(iaN`gDD)u9pTvo`E5SV13a^q@~|PPh(8{TMPuPeB8-8EPe-{LAiuUbTphr(cP!V&
zY)Hz_zKK{wG~`qA){vy6kh*D%uP^H6FjE*Z4%szh7c<Zz8xk9c!XS10H;DM$urjOR
zljM*WU#E4v_%=M`T5)ml$-U>V?JH(n%!c%Z!hU}w6bhkh)SoY;Ra!_*O-;wEwzqfc
z+R#cEqSI}hr_<@q@4fb3r(;8K<~T6C7iXg4;vtOBt*z*q{46!(*}Ixo9X08dAf%*Z
zUI}B>hvg+DTeBgM03<lj#~f1-M0i^pT8AXPQbO*uw6r{{Yq^6i%nEoar<+eqM^?;R
zWxjgp0~_K81doRNQ7jyHsDzeTyiRZOQAX113>4<G$4cKrzO}t}yIauWC-0_h(URp$
zko{HWbLOr4*RdfH4ASs$V!$679wPHPoz+fM6JVw@fajwh<35~5|4fgcI7i`_s%@3q
zkoi}ewpFfMe2EQ-_ref=Fa^UgA&;t^)!tiPCIs?x+wDCxO@E=0U-mBGsamku+|<-O
zf6amgl^dFy*^poih9p2tx6hXj>Auxn?ej?r@pSF%vNK<Me~&O^!=y>~58Q1wUua%@
zyJ-?9BpQZ6%At_jLM|r6*B$Vp$%Jrk$w3s|_4rh~r~TApd;gPDZaeTS8lQ20?S-{f
z2cNPby&*t&t37J2?#9OI#ztQwf@XkwYf7$=oAvH`y8fo8|9d?x44IfUbM=MGYzX#S
z2^qm4WbpTALIwp;2yo;I@wC%D^*waE=lc`-rbiGmfi-c$LpB7W34bUYjz<!4Og!W)
zmz0p6D_nw*xs$oLAxLj3)u+t0|E3IUW}KD~vVKe2vMm|Fvv4*KCj^H<a_VpU7Xm9!
z2>XNtY>0udYBVmbkuvIQbMCKI7_GK{3YlthX$>F(bCug{gvMwp&=#mTAxf2kRA|Ym
zdIwQT<=P)JX~{Fhzl9JAiwT3_RK!$LPZpVEE?dPJHiSXy9deaikLB3kq67*`ivZNP
zv=EF`X3iXwgBYa@PY?7jen|PT=M`34S&seHwH0Ny8_$nf4F<!p8&X0jxuL>fu$CFo
z6Sgw_@cS;8?YjQDO)m^lJ17cQJ951dnX0JNLQ$sOwMA-+q@%G=1%zHskhOY}DpiA!
zQlT=cFbm}ngh)I3DH4BUje&edLq<bJL;kR5K0RrJaRB~_p<`~6K_DV@O$Exo*clQ)
z!4XIB0CCfp(8dFlWO308iMk?V7fw5X@xTsh#EVAfk;IFJ8wXB)3BQBKUG_pNG_x4<
zW=50wTqsXT^W=RYp}#(d{4XId&yDw!q}%nNA-eN>N-c5^6H>7&`ErLW32Ymo1QM$0
z1K1(i*GdWsxmF3;U$qZTB$;NQ4HJj{e9~cuti5X!+O&6G3tjnobJM=Io3C_b?jj}O
z$U#5oVyc84GK$D&M=F)<$mr-z2zt9VvYXGM*@|73OyC9v)M0p$@CtPTFJwPkC=@me
zqt?(48m5$G8Or9Z<uCi67xzz2_9Yn*a}xC+s8LF%OMp1sYhs10l&y%670pq~J7XbP
zE*zD|<`+MHTd=nBR!O3T2(m02gsN)D)gA*9+H01;3R#RLl8IUpQLbfVS&NM&TIHkT
z<CWxOGIJBcMwuuNQ4v&NyL-Y2jtPvArOeiRhsjtnlFZ1m7F%g1j;pgfxz)&OFN6-#
zJUSB6aEmzF6R*5OY0Quq8sj8mh=plRmeY}?*;Z|SG7(G0rgyp_A}^v9NrRYE34w`J
z`u(!N0APiD&n#umIBwO@fs>_y+lpL8BCQrTyM$yfB*2#r*=FE6dOHMBb<_bcL$)~s
zf}fT{WN9!2FE0#+?d>hj&<iOpFE1DAxEK%vDb)~Q0XyW9J7_c-Tw}NcFU#TKMyeQ3
z@o`>~QivD*c)c|3b=0H(KIGsc-sX)2FU$6EBXyQ)^khJ!+casq<fz^bVWZs;Lcj`n
zt3*)BHy277J?xO9X`tbDNR$muNFmKV8ZbhN4kbZ#sie8bvMgT*8RdyX6jEga#G^mK
zstae=@%Q+DjL^L}p(P0A1VZonNv&&0t(HLNpa-R&ve}?76TiIx_#q~r$>K44!kVtp
zc`P#~8};IJChXq$0X;T;_{~1(&sRX;uZW8z$#uQU*bC9E8#Q|49A$LrhlZd>d*yVX
z&YaUZ=hT|a>)78B-ylWW#%-iVDTfB8Uf8CbCPMK!pLx(?8JyWL52#*!Dm;E_9G~%H
zhq%LG->J{!u_+}v=<%Og{2r}B>B5xTM13%!IanXa2Yc@8{ObxDxRXy9Avh3zw`b#*
z?(sulKu;Md;t7NRJdLe+4tWmw!>$?QHV8vu*e?!P%8((lB}+!0P^l1$H!{JFn0gAc
zr5%~MKn_8UfDm`cz|;feAT>*?6hvK-Y<!ZZXMTOs6Jp?BMOKkjWF(^Cxinx!gq}@~
z79h6E$UlB)#$#m77A<4@p!EImjFxZ+=KeZwa_e-ranT|gXD<CRJ=H_Q7vCfB7&Saz
z7lr`;g%}Ppbmn?Fo=y;&KC8BB`0fUgOV@P;LpFdpCcG=le>Hs504NYDYbr1S5HGPO
zW0sNBxfkjCwq@CY!G`$0;y!GICuQW*(47)7;kOng979Hq-Wxmlv5-+R)9{svtmP{?
ziS%6(mhv4{m{y$fUn1SDEZH8eiR1|e9;q`+1XNd0lOlx)?@`9nh!e#fUQx=zm`{on
zTI)~S)zsQRhZn<cHQMmKcgNyeV=FSgJTLOat{sFn4TS+5e=v*(m2HAZgB~jM;6)_W
z2AUaYj8H)qQdA1FZgaR6D%69WSwTihFIzjPP*&Ln!Qn2YK`9Kpq{UJ<+1S-nSH^Z2
ztUC$Yu6{3X>yi|97yQ#UkMi~PN83}<i^$r4$iEAr25jLIfZ7LJ)EVUC8*8u7X+}-e
zN2qSd)N5Ow^B|r}w%)+=f9~1}ok5lz|5hfA6m%n$uN9as$OHT4PtJv0w$*{`HJja#
z_hjf2Ih;UhUg~tw1-WB3JWP&D=R&UIipk`RxiBH4qob|n-My{7QJfWmN8Tovlef$T
z!Z9j3D&X3P(VY-;&k5g5atANYhq$1(K9@_G@WJW{f$TRip;~U*A=7wx2ClJ9Ocdc&
z2%-uI@r<tP3=a#<0deij&kq-OTszyzd6(-1;>neA391W1FAw5qS}GQ48bhk__~Bk0
z+K;#3Xobj2Fq%~8U3yTW=MltI;r;W5VQ2u!s}2bL(+4flG#&jJr3u7SnnGwShddtY
zzyi7L_DjmH+Yi^yXl2e#Acw8E32C-khgOJBR;GRK=o}0$Ov_OOr9*Jnd7iJPLn`7O
z5Vt?*m)!w3v@qx<klauL0BgBYsq`o}eg=8$msv?xWO+9V*Q`v)W_c60Rfbxd7Dz;9
z6-AkgD6ABXDkg+Ss`s>G-3fUN5VPPMY<>bsjOE}nq414L{O&+v0ZA0u2rEiKS%~2i
z_*?aI9apYy?w7rFD<sPXSt%QYq%R9$0?{-k4{3~cWH=$QfGmo!;DRWM0vr2EAmi&L
z3JoR9N@E=e7YGUwE)W(3f#o<8(%3Jj)9ItKx6$x=8y3j3EX%Uluvh^|j58r>9xyc+
zuksfR$_e3wu#^o8-0bXZjN=I8+ra>Z(7I;;H-$QoexVYnObY#^Z4Aj|GL3q@p?WhJ
z2ju&wXB9CklGzl3@?H}HzY#z%j04gyq$;WJr<)T9m0KGcTOUWHGsqR;3Iq>k1VRGD
zaXOu`K_+2l<0YA$ML1qV1^8k#t$;4HDLdq&ee-vSbnxrj5bA>T-JgW+^^q_{UnL#G
z?@!IFS|HC;@8I&*(@$h}1K~pLP))_vDBeI0NZ-R3(EUCVfsnc(y^ASmv6u82Lsm{|
z@P*Zt6)U9I+9ER3+6;vtqdkJ0kX~CINKX%(>hHOB<EjPn<EE{@)!R?V(qJ41a5r(!
zFcPxofu}ZBhvmi^#EQx#p+$~xk%Wg8l|e+E;?1DHybu*aL>Ng_R$jv1q?6WrhzO!X
zBo(ixI(W0r6;X$dJ-T6=c<@k9^+kOibc_%DJnXmU*${Fm5Fezt)E^HL;+|i>u<pY3
z^W>m$$kISYkm&IT2xU;3_dzzV4`kKg|F<>}?iXa$N`H<9)=MT{kE{vAJ;vLzSs*hq
z@W1iGDDI7gF-YLD`4<!>v4IUyfe<Vt72OXB$D>s-Cc=;xK?0-)ftUxXW+Z|T9wenC
z6V>(6iAxI#Ruwa?&S{e%X@+620F;qLlA~c+Vp%512#i$nK{(CCNSlLZ$cv$giU}4l
ze_ZC#7(_HM&^0VDBM8eX2-pZSvN!?4i8{mRxC#Qbi$b;(i@9I<Ac<j>rz=f~9Tb80
zR|eWP8$-wz?Fo<wDDZr|6fcae8)EgraefR^Qh|X?q$&Iq5RB$bC8H{t(T~-zp{Ynu
z>nfZ8DJWRUn5L@4LcVYuAL04X7$kw9Adrf|$P^G!5*X38qoVJm5stjc7@Aa?a4g1F
z6NwV{XWI!Dm9+#C09H{P3ObViR$pU-Fe*R@C7>h_ESHo2W`ninVj%AF{J}u3QGx7T
z9mqR(pWh;XPSJs^7^K&2_J<P>;y%K8!0nFcL7Zl@x1#BEACDk|KI-JD%lA*-CbJE6
zAi12=d;GXfKHhd$<Xp%x(i+`dM)Kh%X?CbV`n`U;U+Xt>-JA#6wS1TRDCdR~C-TcF
zK`Omw#c6(Wx=zLUTzT(8NT0LuUSr3{8-tCAH|Rj-owxJt_S;W2XZ~w*-h~{=zudU-
z<>`C*o%#KZJCq=^?XR;#NPD)@nsp(&^Nkz3Hs!Z(Z*1SvxU-E8#QNT{YT3`(nT}O^
zXnBy-)>LZ$rc`PhX?0SxAl8*1&t|eSuRmKY%Y&R<@?_(Z?PQDJwyllbODI9=_0AXT
zS+@4WvRd`}D;KhOaq-b&lDoxkXBQXgK=$mZcV;?Y>YdIjYtJ4R@`iLcXZD?WRNOk4
zQG<|tX=NXhVFYoTqO(tj<1H$XYgYqtA$OPhLkDv1a3I&*P3njIdGXKP@crWuSOvBm
zW)K(h!T}*HNDO&_vWBTaxCKqfD9A{UAk{KJb7?&z#Sk(KY7lV%C?vT^<nNXyDq~$S
zGlGKBrN0V^Kv`g-0+3|H{U^&L{{{rJ(?u9SAUkznh@{L;8~hVSa>4G3l(&xn0000<
KMNUMnLSTYD0=QZL

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/aws_6.xml b/src/main/webapp/templates/cloud/aws_6.xml
new file mode 100644
index 000000000..80b04fec6
--- /dev/null
+++ b/src/main/webapp/templates/cloud/aws_6.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-09T10:31:32.772Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="lfV3yr7EqK-SyugH_TSo" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_7.png b/src/main/webapp/templates/cloud/aws_7.png
new file mode 100644
index 0000000000000000000000000000000000000000..caecf00ec65bf7b6d33d3e95292883dfaea213c0
GIT binary patch
literal 3357
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

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/aws_7.xml b/src/main/webapp/templates/cloud/aws_7.xml
new file mode 100644
index 000000000..4f59bbcaf
--- /dev/null
+++ b/src/main/webapp/templates/cloud/aws_7.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-09T10:10:35.136Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="mEqdNmihtaJ3tAUzShUu" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_8.png b/src/main/webapp/templates/cloud/aws_8.png
new file mode 100644
index 0000000000000000000000000000000000000000..5dddb87737d6482dc9cacceb5345c409b859580b
GIT binary patch
literal 4999
zcmV;26L{>2P)<h;3K|Lk000e1NJLTq004{t003SH0{{R3#^?+v0008_P)t-s|NsB$
z?d|OD@6prK{r&y%^7XvFzR%Lq$I8ma$jH*w)ymAw%+Aj9^Yh{3<Id2~wYRt5-`~{M
z*4f+K&Ck#J`}?@NyVcj%$;->Wz`*M4?6bDE!NbGW+1k6ky~4%C#Ky+k-QM)|^~J}>
zx4F5^(9pWPy!-q7%FWHy*x0bMv)J0&ud%WC`T5@9;lIMd%gxQ@=IGhn-LkZ_=<Dm;
z-{0Tj<MZ?M;^gJ;@bPD^(jtw-)z{j<!otwg)~v6uh*Ra(*w_Gky`OpJ;qKYZ&(lPo
z&+6d(_V@U(iSv_i*D8|8n7fes{ry&_(G!Nk_4fDX=;@Zq<j2~=w9c)r%BQfC=&+pJ
zep|={e!f|qkJiTXzuxcV@8g<z+gz&BPNdR=Vaz$1%M60RxY4oo`u&br>$cV6-RawU
zx7Lho&oY(CezRittx!UTDL8*2@bdG}!0)4Z?%?I=tBmBNg5zSY*CUR`Z$`ssIl{fw
zwW!9R)J=hIrBrC3Q(~G>TAedblr8l5^X>EOr-AIer0SY+<fF^q*5uL}iNwO!y{fFN
zbF`*ut)F?WVRfuoTA4mkkvin^_}c9Doo(=-&*#G2=Eb$;e!bqMh~1XO+;+L#j%V7R
zgV}gZ&Bxul^mnA_d!wJem*iiN+Ej;zvvk5BU|N+)VWB_nmpd?d8{>Ew?t={9(E85i
z^UAvFwwmhL<>`}V<%Ct-z}wb!wbg8~)zjn4jL5_ReZ68fy<@kfU8<T&ubA#*mWYXr
zd3%1&H*w~dRpE$6?DqQK@Avom_T}sBs?_Sr<ld0N+t}sRhhWsX!OY6r#{zx6psTv5
zsHmaBn&?xBjIf1_w1VhFfQz_y@TOYei&JQ&M%j2d*lQi|=>5;&=-b}nj9lWjqu;HS
z-mRU`tkcb}(aK^rzVL~zn46x3kDfiFjFh>FJduBdu6i4JW^bci<cdA(h#%6|-mJ>S
zWj(xPJG}OmxRJH5s=lV7wxIgOf?H&7;ge!-twmh`01!(_L_t(&-p!h4VB16-#qC_s
zX<-RT(Xe)9Ig;(zjvbpo7AYh^LTM;%p+HLuEu)l{z4zXG@4ffld+)vX-h0CbPPP*q
z+5}RF;br)wzmoiNcY60ED>SaEuN#v>^{X}1*N4VQ_2JDop1e_*=YS1zoCK0O&yZ=I
zBLUP44Ae=#n@p2B%=sk8h3i5scXi!$DAke2pZ=(R9AH-5c!#zy13BBGI3Vb*<bpH=
zIBN4W;Yk(%yr9#3Rv<|P6N<&|yz@|a=hJsR-8ddF6Ax~S=Hn?Z9#_?vhj+zQ0$0Vn
zryiO&S=OR(7Nb%!79+z5W;}&p-Z=2UO{1EH(Yi^RgqC4C2uHMlrkJj!;Iu`!jOdsQ
z=t!4f>e0tI3Bi=a0NJM?2O-3Hm*G6g2OPz400Pn@Wf~VG-vJQ>(@f-3SQ5iSNaF+(
z6&MDmxU6ht%rv6`LZB%?5xOL6ltY<Wki&7!WDv}RWyecRLojR?A&PV=POB_SP--HD
zr!rz9WsoeUCNMc}WnwDJA(+T=<E7{j3@H<6a?nZIA>3{kbnrMuQhJ<WOq^h#XF&(&
zs2WV*l3YTjNsiZTowtk0qMZg3Po@jWg2dZ=x~La*JHiJr-#p&4%;>5M@gH^7ja@4Y
z^^5^x7GV{_qYJ@2_3=}6+Xi}btKyptp(SXUkoxOgExFcovAOi$mUL`?fB*fVQB@bf
zY<m6mr;LtJ4fFU@k2ei0GcYh=nWlk(`X$3?cYfTs+Q9N#4WO-uZ@>N4TW`Pprimv_
zyyCB6kOTL&g)_nQ#WakyFd`8n6)X`~MIn`nW1@o5tf>+)7BdjcGNI8Gz*Ntyhd;UL
z)?07-<fe(ePyQ{K$!oSntt_qME>7b);4nDy7@F`YngTe;`asSm2`MYv;iZ7N?zY2j
zJM8e=-kUOI%Dle;bIL{=Z5ZZs+15$GNL-R3C0&9Xw2|9zkn;5$N9LF`PqvN%V@HOh
zN65$@`u6a{4_oi>!+zu<L*iE(8K$IoMx_{5z!W7ei<-t_j1p4_O|%HD1E*M(mFd`$
zdglI9Pd#Z8dX0?OGoKxXXg+(tYS#+Oj}8;fV3-l}6j2ltx|YX92g}H8Opq}VQ?Z2T
zK+I4R_~I}R-8_5Zedx7)M3^tuJN&lwz8Dh>C-a<S3uKN0kWVw{8{~BcMH<-$uAU=x
zoukS05@2TR5WsBq^URSZ@OmX(HwKt6!*nwOFMu4)0KVJRvbqOwAtOWppn<?M5}6g`
z$l@?p%<i4t&@^|~8#mjf8m3w;&CP3}mofB=l2TJ_N8B=0w!@3#hMQ0|mSV9?iWLn<
zQSpRGVIxi8Lmt@miG3bed&w|cHK*H)17m{82r+`vBH>Xr63p76scRn+8UZGn>$Gz%
ze;4NJO*cIuY_}HdNb6cl2{ZGMUDw{X8fG*hn9&@#zb&jG2hL-f!a53`7dhm>1}h4Q
zgrOK2g=Q@k7h@PU(lG5hb)Tuz{v8+;$fH>Za#>OUZdwvJrdwx#zykmzSBJdMfC8Na
zFg;SwJTQ0P(9F5@{|3zUPtMpP3?$qpAtR7dQU+ua!MFv%qJT?~KF@(<)|Nn|3^Qro
zJY;jjb<o<I4Lh~x&6~G$FyRLuY>Bc)mr1K~EXJyiY8Z!#R6G&W;wq+LhGiyFc}Gs=
z$}qEU-gv{|zlH3f_0CRi!Vt_cH&33p!P3DXMP*GhH9%;ZW!N6(YJy2XO@V@?nTCcb
zS>RZhA(UWxckEsBFBZyUC+;v~ahT($OgUx<=AkK5j;$_K!!R@tn55@Q8by*mO?$c^
z(E>>NIB<cRgh?RCRI&{7<mA7Cxqsr0i}%c=i5qP^We8^S7L!k^6y~AA@zoA&5fHbM
zgrHLt!H^W@NEYolrkobCrX>fHTF&6*<=~hTHobbEP_<SmX=c@&x#EQPHVgIz$E{k@
z>j<W|e@bYdRaUw2AXJ#V;YKIDUM|g>*gLTrCYs6TQ><nXSc1)D4Z>g&tQn)au#QyB
zz^qKd$%~X&o-+qcJLjBf2UWwove#aFEx2ew_1SdeUKcGuyMr}in@s|(9;)A{zkh?!
znHMcsu;9qO&Ya!ffBfp3Y_rWan_M$#3sk6vF&Twsh}M?yprS}iG`)SN?(*oPn@!!f
z3g)60kKB8~5l0Mz+53pSk33@UxoG=<YgR(quTnkp{3Bo4eZi4u2JQV;4)oTr47~Z~
zr-YM5KUqjOheuTfX4>3mrd7i%d(_^$A9d93)i4cf?|$^&FCKN|R8&3fs_EMuaKQHE
zV$<B+_uhSvi;fClmR)(}?e^b(`)f<TW6<<&9-e{m(KGO7yPosRE>m}XA~K|&qZcmR
zV~-2JtZcSNIwST^dmMHC5$ErD4yr!3|Nh(0x~i{S%$>8x!i7h_xcju==lZ74nzj9Q
zXP{=08-zJ{!?vhH3rU>81=$7!!~y3Cgq{^VAd|FD$}~?%G*wP|Gp9ZO`SYJon^`qX
zdwzQK(O>SdNA)m0v1sA>yPm&j8rojB?~F5c-np+*-R0<oix%y<s1!K*=JfTQe)<{J
z!}Q1&TWlDXl2kz_0rVx5f&HWoIG6^w%K=YM+7fA_49rzB@F8=jPMv#5s7ebL?s?&!
zi}tLBS^JVp7Cpb{k^pAT2e%;2uT<w=vgd^tUU*3fX8s3r=FFKtXR&Z4Dhb?WX#+Dv
zJf?Ky4MAZsM~P`pMj>!D&*Gjsn1N>=^yth`wVqic(6nlpnQN@^>2qtW5u9{yuM_CR
zN_Dd})_4vTN~_0-rOMljIk2W+m`G;~!%&l^DvN}oQKBfwN*rUce4Ky^#^x&-INgay
zs{>2BZ8vkBdV71*A23awovn7U9bK|6-_EtC+etlCQEPi=Pr96M+B*wHu7}@hu?$S*
zB;R&}3=H@}IRpC;CT-jYu$+N~stnv%eYM`$*jV4t&@|9c{|8KceM3_n+K*bTx?Qx3
zYyEL}-SUl-%AVZNRNvST95j5GXjc-lJPml-Ws<&-p>zu3v_eM!q+B7%aHL1!#W7vP
zH8fZLNXzoet`MCtme`q4(JE~?n96Ed1INk^%qkrT<iJiwmGg0wfyW55w5xW9E8^Z?
zW#AgXlpHwMY6ls3{9!KN=D0wYk9grf1_%DfFzau#QlRxmy9?n6E^=U5plpB-IxsEJ
zfdhAwl)w|d;Mw7S17_vv+pm1>wbd|-Ij~=G;BKF1I2}2#1k)t$N+k#OD-Qe*VU|xv
zBHX*P_TTQb{ikm|+60a%3BqNwaU&kXStXM&1WYw7h1D!YAqX|01`hlWVWPpUkgfY>
z^*y%JPNTvE4jdOc3<FbnOO@leqIt-HDaBA&MJ+q9D*p>GSI*fv(5NsHWg`a`Ku(6_
zpaV+~lpWZwIB?-#fLVXex`9TTGbLpOj;44I@L5;rmI4QsA>oxASQcpHz<`qR;=cg1
ze6+5mE?PHXsT?>}c3}LUIPftWY;f!#OtWpbN7HuskYhL4;Jziz88<$D4!pzU9XA^4
znfCVP_D&Ktk#^j1@~OjN4qS81>yZQJa>em-;2nB*7=#(Fwl!z}31-E%*<}arTHJxV
zP@MS(4t(Y6CEYM%M(^dTuf88@u3A23%aVTCV#bV<emE=8heH{7c3V`#Wy$d@+2I+D
zb^su7lOu2fTCT^T4c{bjhaYp#T(#eRf%i8~npD63e%ow<nw2%_vWqX?^0Ldete-R~
zbjJ&K+;PVX&khdLh8u1k1`?s`0AxvqV;}$wL%K=9$pV1_91lQ}ws|;q2cCYw%F|aq
z;H}2M?5+u#*Q{TG`TC`=FTU)hpn2}O&pvzZ*)LR|+KMAW5QnB|Dl|smhDMs0<2e{b
z5l)tgiw4bLg)zc#`01xj-){e_PAe?~*KW7{^yw>~7zt!udg)6SUwr93sA-=2;n_&%
zR-a86O5!So#bRvAS5gF;Its3`G;Xl*1lAR^U|dY3h_S#R)t}tgck-<5PHPOD_p!cN
zXUsae(leLd`_(;{esxdKJny{oc02F9yQ^VbOJbND1$o((IXlaE-Lxdh6ldckO>jvl
zNx*?)b6}*?=g;qZ=bd#+F!SfkI`QO_E6c!Z_ul*3y)TzwcDs8wq-vNjNAe`FfmC3C
zl;)uYc}DU`6Se{l`mg|fpCPlYV}{vjr|;KY_qzb*#GQ89Y5x3mD=@FV{OW73zWiGW
z=7K=OdPYgH2{t2|26A9(@IJ5{8@vz9$_Y^(qXQ!~p|`yz)R*Fa18T0;h?;|?2?OOu
zP#Bmnp&G`Z@*07q|4q|F;(PQo`r0a320FRU*3QnME0*STOS#da_p}%7wJI>D^!Bb8
zF19qcuGNARMxSByiC&}OwOYdHqdC|J2fN1#)9mH&o*ujOH{G80PP%i@grlU_v(*xB
zy{_37He)g2P%M*)nF^I)Im}2ItVrj(L?xBcvMRw6A{$o_%vOzmr4>TahNV%o1T&+*
z4JAFy#gv#~KwRxGvK|WJu7QcNn8{`-Okq@7iA%vSH8%aFLX8uaMh&G)l^bq&B+7A=
zU*LEsF_7m-C;%RE&?6xrfyARY0}Hm)T&wrBacJ^7Au+T|K@&ntNYVr(voZ-FO#;Fs
zfMlj?0#k8dHgMp4B55Uv7|P)|%L=%WkLR&e+=20USBj_+j1>ns(X9}qX_-LMoDN2#
zsf<GL1WjZp(qUX#!}%Hw6MzivNwn{KP~as-1HQ-6B<ALDNI*!^q#y&Lxkf$XVU~&0
zXvUZt<Qz#(Vh)|*D33BtS%!?mnYcvNYR=?|Lq$!r!=tJOFen3W9<Jy=he5Yqhh<=5
zcm|FsMs)@rS5-2wDN~Y@b!38vrr-d8%a(-81augR1BBddlBiUxVIqAZsRKZh$b$hO
zA<DqKOVB`|NQno47YaORt(5~~R*V56)JhrHA>tiC!z{`&WZAJOSB%AJ7c0~NW(*m)
zMlg&cL1=q`ml;p8X-Mlrw@=Yh0Vf4q;-TaN0u*XAOeDzzU_+_k0xq3|Cd0cN1+*Xo
zGZJG%Uvfz=QmbJ~si`0X$Mb525{bBw$fFF*VhYN@aR+1ZR7}QdHfOS`i7Unb-1JH+
zt`&)(5d5FRJb3lh+x~BsgBxZ{?hog>Ih(YlZj$G7z)vTAog<TJ0C+CROGP~i(z+!1
zHCPUIJhd&%xG<+7=cl^`-xJahT7b^-lqGYf3v}71QJesv1~4-Y-Z7dt5?Q14q%_eL
zXG>2?(`r}VR9Q#HW0;phhRD@mn6^FPgg2rlp$JKbv~bgeCQif&U}=u)bWnnWGteL`
z2+U%w&L#%Px(B85lhTmPay}qEh66}hk}5wbO}5s^XJ|oiWRk)y#Z0>$z!5wd$WAvY
zD-`N23i1SzF_{{`EdHc)K0m^f(zSu%Jlw&9C-n$|(IL=sRF?CS285POKtL0Kkfm&`
z<_yFsSMqtCmw3CVr*mn@@t|PqHrh@W(tg_Ki+rutCK0llqZR&Z2d*2Feh0(@ncXp`
RgR}qu002ovPDHLkV1oAY5V8OO

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/aws_8.xml b/src/main/webapp/templates/cloud/aws_8.xml
new file mode 100644
index 000000000..20cdd71e2
--- /dev/null
+++ b/src/main/webapp/templates/cloud/aws_8.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-09T07:49:07.515Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="j26A23XCqk9Bsq3s0xcd" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/aws_9.png b/src/main/webapp/templates/cloud/aws_9.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7b359340a69125bdb8a3f65b3c25be7c066284c
GIT binary patch
literal 4473
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
LNkvXXu0mjf-9z^N

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/aws_9.xml b/src/main/webapp/templates/cloud/aws_9.xml
new file mode 100644
index 000000000..98936f7a9
--- /dev/null
+++ b/src/main/webapp/templates/cloud/aws_9.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-09T13:20:11.378Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="gytC0rO5vwvE4d40_YFd" version="@DRAWIO-VERSION@" type="device"><diagram id="Ht1M8jgEwFfnCIfOTk4-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/azure_1.png b/src/main/webapp/templates/cloud/azure_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d12ea428c88a178643e77ec724a81448639afe1
GIT binary patch
literal 2683
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

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/azure_1.xml b/src/main/webapp/templates/cloud/azure_1.xml
new file mode 100644
index 000000000..968c5fd97
--- /dev/null
+++ b/src/main/webapp/templates/cloud/azure_1.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="google"><diagram name="Page-1" id="7a6c530e-6e37-e111-ec74-82921da8cc10">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/azure_2.png b/src/main/webapp/templates/cloud/azure_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..1cf0a6d6e0d6263e2932e7f66abcac44a381a6c6
GIT binary patch
literal 5316
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
W?J5rBt3<f~0000<MNUMnLSTa2Qw>-E

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/azure_2.xml b/src/main/webapp/templates/cloud/azure_2.xml
new file mode 100644
index 000000000..cad26f836
--- /dev/null
+++ b/src/main/webapp/templates/cloud/azure_2.xml
@@ -0,0 +1 @@
+<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36" version="8.6.2" editor="www.draw.io" type="device"><diagram id="6a731a19-8d31-9384-78a2-239565b7b9f0" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/azure_3.png b/src/main/webapp/templates/cloud/azure_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d0cc453a0b0261200cb02dc73d3627dceabfcae
GIT binary patch
literal 4811
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

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/azure_3.xml b/src/main/webapp/templates/cloud/azure_3.xml
new file mode 100644
index 000000000..d2e84dac4
--- /dev/null
+++ b/src/main/webapp/templates/cloud/azure_3.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-12T12:49:27.382Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="w_0XNlqrKhMhUfQ9ph8w" version="@DRAWIO-VERSION@" type="device"><diagram id="WI9T0HZ2pTsCkuznbFz-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/azure_4.png b/src/main/webapp/templates/cloud/azure_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0182f949ebcdb77bc50957682536101b1bb8e21
GIT binary patch
literal 4723
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
B%fkQw

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/azure_4.xml b/src/main/webapp/templates/cloud/azure_4.xml
new file mode 100644
index 000000000..e941abb82
--- /dev/null
+++ b/src/main/webapp/templates/cloud/azure_4.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-12T10:39:26.557Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="jmRjqRrDTk7vXSQ8oMGr" version="@DRAWIO-VERSION@" type="device"><diagram id="WI9T0HZ2pTsCkuznbFz-" name="Page-1">7V1bd5re0/40vWwWR5VLo8aYVzCeYvSmC4EiCuIfUMRP/85sQEEwNU00ND/b1Sqw2Yd5Zp45cPAHW7O2TUdezURb1cwfDKVuf7D1HwzDsGUKPnBPEO6haYEJ9+iOoUb7Djv6xk6LdkYn6mtD1dxUQ8+2Tc9YpXcq9nKpKV5qn+w4tp9u9ts206OuZF3L7OgrspndOzJUbxYvoyQcDjxqhj6Lhq4w5fCAJceNo5W4M1m1/cQutvGDrTm27YXfrG1NM1F6sVzC8x5OHN1PzNGW3jkn9NrzYO7+ci2m9fj7XuqMqtPZT5qK1rGRzXW05Gi6XhDLwLHXS1XDbqgf7L0/Mzytv5IVPOoD7LBv5lkmbNHw1ZSnmnkvKwudnFazTdsh3bC/yR9o8tswzeR+Hv/Cftdz7IUWH1naSw0b20sv0Tj8A/uzy48kstEcT9smdkXiaGq2pXlOAE1i9WT48JRIOflyJdz2k0hH8M0SINNUtFOOtEvf930AAL5EGLwHD5r97+LBM5UUHhyTxUOI7SuJB1e6GB4cmxG/pgJDRJuaObX9xmHHfRob2/Fmtm4vZbNt26sIkbnmeUHEdPLas9N4pYUOEq5Q+PctCbv22lG0c7TKkx1d895oWeLChrjGNyFzNFP2jE2aJT9f/OxVxE+6gU1UVQO4/1xEtK3hvWKrO4qJNsc49B1P8dF2fRvNhWwEiY1nzTFASpoT7ft7eDnqTHS5oqHLvYnuAb6vg/gkKl8g7OjUZ9uAuRy8WIXK92JxF6H+RGcdIKs6jhwkmq2wgfuOcUqVdLxx1J479q7vbM+VU+3hSzjjg77tZfgRFeT/BYKh7iiqnGIYTrgqwzBnKv0+niwMxZT+BXzpDL48XSokvnEkURR8ObrI+H4AkXMjtgtY3F+5B5ZL03dZKF+BvmPF/e/CXzSDZMvfFBHu3LivXDBAKv9xQCqlYgHCU9cA5Lz4YwkrCgNMnuLiHeMo4uTjHYcQhGwFya3PC0L4c9NYnikYoIWOQRIYc0IK458IMlNUkOlChDU0dRTX8BHvXDauiVW8+CpVEY5po1xQjap8Om38nUYx/FdoFPd2re0qGrXXG2Qehk0rDsP/leJcIrQo8edG39Sns9QH0+EClLMS7MDwKYz/gO+XQlkqWJRIFzqocEGeXhWvr8MBxZRd11Di3Q+GGXdwErc/w1G5CFln2ZiN87X4DgWKuUz9nKZLad6n49z9whVuociKpC3VWI2iC8ywJ9KgD+aH5XNJnCmY6XNXSRCLh1icqH8FYvk2W6a4OyHxJ31/Qql0xBThxDNM8XkxXLEvZvytYpxR5LxMjTuDt1BKX+Os0BfyBdRRDlBhr3Gxkyt0bfYb6E8mmqhcKpg4TiKvpEBv15KLcMPGJbXoSjGpwAtpP8NeRomOxylTb9+hQdN86a0TLqV03zOALY6+0cfXbi+lcBnWuo4C8cW+ifCCCnSlMJmvsH/l9T4P4QIUN781wiXhrUSocmYilM2vBOpLFSfOtBN321cVRXOBw6jfjm0hBjPtB1MyAYX7qQPfdPwG09GcpYYr+Q1wg/y3niOTHcdNXUVbyo5huxkNld1V+MTKb2OLuphUplWiyh3pjGwa+hI2oT+y/37/QAnqkCq7s71CGxZ5qoXcqx+pMM0c9tcNSwdxmcYUheYqMqzw4VlzXHs5MrzZg2OAft65G/3H3zw+wNUFgXpTrd/xhMaRv+BiKk88EcDnPKDBCXf8aRX/UHUmvuEsoTKd5c9nR7MMV3Oz+A9dEOwN+49jz1dKd2UuwUFfrglMRhMa25VD2ONYC3r22tMKrgXR5H+RuRZCBTjqSAWE0l18l/gfcGepy+GefUTr5VmCHU3Z03w5yMAMMK1CoYegxPFDG4X7bLuGZ9iI69T2PPA5Z0k97qMa6YSHgct9RqHIkNV4b0Iz6qrsyT/YarjJPCDczP0W1I+pPT9KzCS456aj7VrZrebjHWXIjz1KqdubNiMFk9EDJb9OzDEjeNORsFYCfqNYyma6FOctY3/eInUee08rlr+esk/LNtObt5kXdzKizemyt2vvGmuxXzFajzNv2uR3Hctcy6w0H7/em8/9J1t97Pkdo7JRWZVtJ461LSGYBMJ6DP0oYDxj5mXXZg7HE3MJJs2x0LJmlPpYLbUDAXpS1upODOeza/CdwWIj1lsbWIGnWD2r/SrxMLeZVqNhfeJhbktpM2ma/pTprZJzUxhhIb/ew7HFGr7DWiVzgvNjhuup9UK1qd6wVxN2eJ7ShLZ9ym9bPWpSa+lak3ZBdiWFnSwz610qu3CdlUCsV/02i9jsz3ljTS0f2m+wz4QcuGkT5JPCBUYJeFaMMBQHC77TF8J2MI5qvQQKY26mc8oQ+9wW+lpN6pSB/YqDViDtqkareZB5ZzkxlaW0mgLztubVdWfQWotB1RbnXV8aDCnJ8HVxXt12apQvBtRW7C9AtgeZdqzeZszws+loKLSWE39qCsvxa89UmQe+vYzWDuOLj/cczIV/7rd85VGHPiaryatam7I6jquLtSrX6XNMp1/dghzW4qCB41DaaIs6ZU6tB2PaHHpj62EuM2owZV/Wk/pqPXlV8Fy/Vdf59nzMt+oNX6xxW3HghjpQX+2U5sN8MgAZPD6ZCvMSqNbQeDbGc63ZKD+n1oLreFmolmmqwb0BuCwmr0/zKbPdKCDP1m7MgNQYyWjpY8S4+QLzQD02KW2A8m7pE8uk2iN6pljqamrQ0EePmjIUrhHkPlmpNdobvz4t5REH+vliqSibWua8QB6p9olj1JStRv2p0A7735qK9bAeM4DBvOGDnJfqyIS59zYwRjAe8WT94oBgvwB5EhucEAyULdgQCxajyyPeURhppjSHpTELemS9rGG+7vjVNHH9J3XIkjjAlQb82M5gfHwMMQeZcaxUF3firnGkf/ezCfOyQYzk1x7RD9TZqeWBtB/8yWDlj0cq4DabTZoCC8eDo+MszHsxZRVPbr6sJsyMgjagQw32VLvp6IGTR/RKs14W2PZUO5UxF2oT9bPBi/NjuwEsQPfVgMa1e51aWn5w7hrn235dCC2D4o7GKE2Bi1Fm7Xlr2xmI8E+B/gVDtl7mwCdZ3B6JnA66yEws8hdwA9lsVAZ1oQv8MplNHyWzNeesFjubdfxFBTgoX8d3UZvddhnpRYjvHO2zh+PvkBOnMAf18Wk2XUou2vb/1YAHDC6Qar4nIl/MRRp0Yvd//Rb4pCdD4sYD9+n5sbdSm1sz6hk8UM+dDBoBMMuuNee7iGp70IDZhe1ii6wNDrNRLGDm+oISd10PrSuahQWW6WGfqPUKs52pzaEdzqTrQp8BSJVKzwZ6DWfQD/lQbZoU8AnqPiWRli/mfafVUKGvF3b8usjOq7uogJcN2RS0EVDmQaPp9qD1trSAkYCZgJFaMLfxFubGSPXuKoHQ27MLcHZDZmZOXrvAz92dNPA3UYvkCmF+YEWUXIvmiN/rRN78kfaBFvHryUgCJml5aOmq9UCpr09mZH079dF0UfOAedxp3Z53B/f34rARdIDNse/BYMy15122jf2DZXcex55U46jxrgqWwHFin9rBOkE7lDV46XgftuXAu+itWlUfBxRqvycZ1FYyyHFgcH0L8oT93aA9WKw79YcdbIP8Wrt2XYTthifOh2uQuwtsw4lDEcbpumAhIFeRader+B36GbLh9wbMU+TUeXctNf2thOcY/hbHUQ2KaoNnw7m0avdzsUbm44LX5ECHSJt2HSQO2g7nBeIIxhqIMHYDx6ZgvjSeDzKAOYxhvkPQv4c5yCGI5rGW5o2wv7ANtA3biIFP5i0RufgsjBV/3xIZvY4ZOB7PTQSLhHEVF62zPVc4zWhtknrZZpS0rscWtJObiDhaECLUOtKXSIt0whzLUN8JA4BOP5uSPRlBJDQnZ+fZA9j4PdiLHp1PvqPO0tIRG0LkiVHVXG0KQXsk0cpyMlMfXwLCbtBWYXs8zAPZazVt+qXWbsh3571GB714E/peAOPUOAbkA/84WlyIAZHZvLGGubpizUcPA7Lz/XZdgWONHWCOGFIHfH3CtqhHqAOkP8Pnw33ERgO5rqB9suPdGHUN+w2PD4Yx7gHgHp5rjsFrwpiM6EfHPWRF0B1i78efg4gH2nXkgGHwNxgqYC3nY6gcYai8C8NO/4MYUpNmbwH/5p4lj7ZueySAJ5dW6uOihBGadMCWEQPOl4IYWz3COuQJ8BZgg9Exgi/aRoPYmATHxIEEfNoAvHpnYoy22AU8xvBZZT+Ch078/tteqYGaEbQJu4whptb5I8/0FobzYzvU34Mh82E73GO4xwr0H7jP8Dngqx1yKmwzxCbwcxRtG9HnCCWENhNiqRIee7DbxC88MO0B2a6L80XI6cC34OtdEe263jqx3Su1GpCNYaTf53hpCcyGnDnSkTt94E6vE84rIHxKuBsjFchakY/JJ46toH9piQ9jjBbBs05KIVdU9cEA/Up1h/4N1kl3ovOJ/yGfTzZZF46FnyOdRV+A64O+8RglDv0d6jVwPWAB/mdg4ryRp1DX4zFb0gDWVJ8wcI4P54BsOcDN52Gbliwyf9hHhZ+vYw59esJvjULft2De1t/nmrDc5zzp7zvVwpaXLQ2xwtGVxPhNU8m6EJetC13sTTHx/fWJqlDbllXYcy+b8lLRnEvWhR54/HvdutAH6jvSPFnnGLNPJkS2K9XCfIT2IJrcxbWddO0F8uf5n2oXFV80KnAWjTUfT2HNtdp84NoQTbeCq9ZaDrWeQXLOh9ypvZQ2ECXPJ6MJzB+yF4s31ZrQeGl0k/UkT6zxkDd2L1EfYyav4H9GwhrzVvCCcT6PNsyJc5099tqpelCN44Fddq2aHkj1Kg3Mw7RrVZAdRMkDYDuIesE36Ym1lCCHnU+tBw89xLQpzCYPgjEebWdTSzIVg8dxYZ2YI9/7GtbGBvtaDyOPXtiuJXAkq6hXdWAq8MDiNqrR7DCjQ6w6SwkjA5SNr1gvO1gjM8Fs75B/79unc/zqGusJz/OtN3ntzSaQ8YyjDApyXGo86oEnBAYHxoRsq4J1wo751OjB9zEjll4YIZCDe9S70nj0BNiChyPx1TN4vI6FKNMztc6vpqOH5aRPmNLBGQNrgjWtiMcfv3bjM5Y9HmSuk3GWWGsK64qpuiN422kt1P9JU4R/kod1DzhvMwTPPm1un8LRgM3nWxwlygwrOEpNmMOeVxjXeZ77m+SK2gxtguUswDJneCZo6S7SDvIdfBDEQwcf8dwEH//YAxRDiWGuB7lv8LprGYlc3JoMISd+lUDrHtZda0sf2r88jl9fdqBds+niyVVfW6iBO6yOQRyx6DVfQAMgBw21NWgZlYM/gtlGo8/3NYiE/a2S9al9rQ2iFxcyVsBIDOtwc6w1PaEUTMXaR5eoL5laG/RBQdTjRRmuJb92sQ4UTMC+2qOtOVl2c2t0imUu5cf8Y9CfH/W3hHagq4ILuktsg+gn1u5Y0NfmS16NLtRTtK1Rj9hKp97iIMI4rp9BlPYEvAzzbT7wk1dYP9ZVd3rQqSuZzB5rrZClMmGVAbLz4Liuh/Lp7jAr7gy6tHTEF0oTdG+UlOVx3YvUoTAGxhoZHG+dqotB1BrLDuyX1Ldy24E8Z2BhZmky6kbY5bZjsdYpY010sAjEk/U2Pa/etq/pIT9B1Hk0xmoT1mgxO2/4nfqQRS2eMk//wypJHq6hnKQNcGIA++ZRNc7C6okM85iwT5GVPLgKM0xYlJ/0FaUk/nGb2Eay1RzE/OPVHNAeYwxcDMeQHbxWfQi83KDbe16+n7dqVBBWeKp6GyJUabdwwUdAxKrA9hiiWay0tWB/Qx+AD2nPFaxuMKQG3xB19DWdvk9D9MxLAfB+fQhthnwLs7YB1veH0ManpICDLBr9woJv17uQI4m7Vp3060JGgBUU7J+CSBqzfzIO9i9hJWU3dnEcyahiPxBB+/5hLVhhqu7XgNUV+IT5j3WIwEHvo76aPvQF++sLl3zi2iEyl3ZDrNywUri2ACtBYl3RsdoF2Q2sc0jhWmCb6tSqHplH4EOWpuuhXFpuOM692CJyUVyQ3VoyiGzBdysob2jXJfIV67pL+u5XvdT8Hm2jHddpg/iaRSbbQ+alpWNbf2+2l6gpkypfv8pj1g1rhwy6y7XqCoeVVciukV9gbmO904csMMA1jmHtDSbEcMgSjOYkc6dANogxDfqww0wN5IV6sZUM2Ib+Ww9jHbJVIl+5htW7FtNqAC6hnrhh9bAangtyEUkGdW+36guw16GuGtUt6AdkSUS2iAFmbqAfC51kmHPRJRU8kC3MF/USKwN+iA1W1LAKQOa9I3PZjaHfMeodR6pMMI40EOM5urgusAcc1yPrN+5d0BmsJhIdg3gKdQ8rkiypINZBFn1Yb+BDf2MK590ZLEiFUKy3sB+exEVNkeiOWCdVQwr02oPz/FCvYG6khoBzhSyzjzaF9WAdddvvkEpVdUdkUh9ipQoyzypWDXBOiBOs18cqLXzieFW6XaOic6ouqWwOcHzRDe0b7XxI5oIyhD6T6wUbwXVhRRvlrOudsDqH8912CIYwLul/waONiajjfd8nmWuoNwH0U0pFBXEk4EMMY0exC/mOnlGaD48942YKEfiY7W0Ug54D4zHQFiKuYei1DlcPSf2pY4iQx7eoSX0R1jIsaq9hsAKQpIioeVGN2EcrFWvEEkGKyi6xHX0SVkMpIAIsyfPD/cft6LCWTCJgkOzQDRlVTGxjbWpIh0iEfYZtuodjh/G96Dw9mfO/7TVg/h/0GrGH6zCELbzDlU+bMG7kTaSY7UKmvK/DNmohHbKvAjJvEYsUgQVIHbCPrA0sDZ6DMHWS2YMU8wfICiFL+uF+0n+VWFN4XjftVUJvwIReB8YdLFKeqZPyXArxZIg/WByL1xfAAhlS6w/ItQMKGEM+imMx59xxmNVftH7C88zd0b11XPmunL25pkTnFFEu9egjn70f81ZEuRVRbkWUWxHlVkS5FVFuRZRbEeVWRLkVUW5FlFsR5VZEuRVRbkWUWxHlK4soNM2W7njq8CdbUcl5XOm6FZVK9mElw/HWMp4paZ5vO4uCP5cWzfdXNNu3n0yLf6XqgqCzTCX1LPQR6CX27rxH1KCb5OOMglC6kA6UsrcmdX7/NhQQLsWWsm+MPA3fycfdI7GbR0W3vUb8sSp3ouSWo1mk2mdtdfzBwTuiI3eKaa/V8P9fNlnZL1xXRg3qDyx46/MesPuMGutBFSLlEOIH5ZN0kHOXGnepu9RitBOq0A+Wysyxl2iNmedWWyosH8DSso8w/3NaomtLzZHNOwW4x1iu7bX7SwkUM4cuynX8i2Rnkyf9GxsN32ty9g/qfYLulOnKkeZkn3yP38aU1Bz+YppTymhOVSFvlMgoTd1wwH3YTvZJ2GI5lnD+v/bTLcQzz2X6+H2klSxn5LmTyyGfDSGqu7WD3iN+WcaxBtQABcfGnvuasyGe5kgT8izrH2IUGQVwJ5Pl/1Ki1Wb0gqLKlXr5apwhcEwqoqgUTJHK2at7Gb1AAa3Ol8X+h3/ladwD9baMjoK39BvQ+Er2LvJyzg+OxmT8+eF69u0iBSfRODoXZWVmLD/hvREAu/fj1Ouj39arP1tKMu7KU/1LvTMiftPev4Nrv9v+VZfBrmRX+0VCJ0MpOLhx2E2nbDrnR4Tj1wenXhhyKejLZ5j0pVmPptnyHXWyUMFXmJyctZyTmPCVC0kp/sGTf8dAikB854cIX0V8pTN+z/w0LrnB3vGPm18/k7S9mebc+cYSpu3mhX10pVI/TxkyOn1RLYjfq5R+jSuTfZUWk5Naxs0+XUcqRWBIluZTwfMxQ35xYFi58eP7LaNSfH6snMGPxcK1KIHhO8AtZmBYydZir057ZV64OycWjOd6lViwki01FtwmisB1/AmdKBDXlb9tLAjHHI3UNLOgMlyZvq9eLRx8hyLEvMj9iRfZnEvW7KXKhJVsvfnqvMjz6Teal+Mg+8s48Z8rIBWBEysn9KE4nCicURO/ceKHOfF8RSgmJwoFSJFJrJioITLFYkjhliG/3zCE4mfIwvetIBaIId+hCAVlyOxNbldnSIGlUjXEtITyGPKq11iEMwoON4Y8pVcFZsgz6iX/KEMW5RrLO7SgmNdYhDNqL1e4xlJ641ekvp4fzyg83PjxlGIVmB/PqJ3c+PFj/Hi+FhSTH2mqCDcnvhk/7n+u9Q/8WEpfyI57uYDIskWJw43Bf7w1nKqFwrlR7J+M66Cbf7au/c2+RzpQzqjOVSmYjqtFNw6+GAe/R01OkDCbvn+c+2pOzpZ+YmKhTj9kErL0R5QiA3++llwyVKYqlTeeLD3XFZSPaeBiSJ1Rfbnx+kn9Pp/Xj337l/P6GTWlG69/kNfPV5MTvF4pGK+ffpYwyevQiqVRTXwD5glBZf2h/3Vs765kxVjqA/IL4ex56F/SQ7xdTDk7WSinH4e6nIc4owB18xAnLeV8D8EcAfrlHuKMqtrNQ3zQQ5yvJic8BJ/mki/2EKUzKnbXvgWsADfGcjcOfb9x7HWpuAXq0u0msCuw5DsUoZi3ONA0lVELTdW1frSpmVPbbxx23BNp7vXEdryZrdtLANwmQSzKbq55XhBZs7z2bNhFuoHNGP20Nmlbw3vFHvHVVuHmOBoAv9e3yY0gV0UB1wqFf9+PnWuvHUU7gyI92dG1t3qMG6IA39QFRzNlkpskfckFsM1WUEYaUCn14ADfwmdjqWbr6VFmVDdAwsZ07Wk5bWrAvdkXcIAJeGlkHc01dpF3JFSLVkvWyd//4DGaQQVxI+b/y8TpJ/eutOikaZbiVyTtvXPWOPcF0au8Womms6WQ6mplgkAIr57Crq/JjjL7dvjwaXzK5Ww+WsmB54LkmVN02MgG+B7DNLyAIJG9GPWvw8ClC8eVnLKAkAMDczkYsjFsv9v+WTV9OXBhf2dJZoemcWwwoyjdCt8qhL8FgfNjqP3+74UdZM7pt9OUuOw7wOjydY0o511Q396IaPiTJjM662yubEXZBPk/iMPXsxmTzdzOuEL57XCgsoWR3ODrgkBk70UJncRPz/65dxcDZ+1e1CxM7bd3bTCYtJfIfc8bzV4XDSaDhpARO3RkrFzMU/2Z4Wl9kA4e8R15lUYjk/ufKg6dfjfgyRcFfwICLJ2OsTiOzikUMmwOAJd6WwjNZO+coL8tACUmXczm2NJXiz+bzFe+rfg5Lk1AZZ7/ev3P5uLZ91x/FwBK5aM8Qch5s8l1xX/LtRGWr84SmGyunVdC/i5mwJSPX7fOF8ATZzPm0reFAIJ+tngIZHPl8vdFgBWOf9i1CBiw2TyZ/b4YUBR3hEGZ+3IEsgky950ROLp54/Ces69DIJsUM98XAbbM5/zA9PUwqNQNrStabvDKOA3utzzdbvo/z3iLSvqa+R9AOJJ5o9qoNzAqTdwig0Ii28kfmiZ/PoJNzu1NGbhOY8OXj3+YZq+Kyd8GYIUsNDRDfcJNX7ngZM0jvgQE4foyvgjUth3Nwq5W7ho/VSIegNDAi+SyhXkFjI93e7lgIJq3xqOyaqwMF2N+2NBMI2rk4vVy6AJ3GmvXsnHT06wV6dJYKoZqqGty+X2N/wE0MDy29uKhccuS9aWMo5jG/9byHXwb4nFtaVhkbGxihBsb2Clb4ej/Wxt4+WppgxqssZG21RzF8KLrxdTaNGVLseNxw8aGa8SzIcMZK3Ii/ieTZVuwCjsWAEzHw/nUw6EgW8L5Gk74lF4sOwNHc7SVo800UH6HiJLs3NjmegUT0sjUidwozXVxUwHdPyBAhLKG/36vdUPGZkucfqiXsGPt4DQaW0Vbedo6BIzI1VYUWVPIGcp6ZeAvp5OziQRWjm3gLxBFaIVIkIkpa3MlhzLETvBHnwzcVjVXc8J2lm2GE5ZD0RtExO4ex7V1FysY6GtSx7KXHjM0kc1V/7IEnLybjvuj9efx0Wcwwv7S4v5JsJyfG+Ly+ID+hJsdc+kg77U/Nzq40cGNDq5BB0yKDlg+W1Hn8n47aH8T1KfTQd4Dhjc6uNHBjQ6uTwdc/CTZn+mgfCE6yHvs9EYHNzq40cH16YCPr2r9kQ4+4/b5XDrIewPejQ5udHCjg+vXDspU9pHjE7WDT3jaPJcO8p6TvNHBjQ5udHB9OqgwOaXE/GThUqXEvDcQ3OjgRgc3Org+HQhs9q64E9HBpa4CZ+8HKvS90R+81itkrvWy17wXIv86fPZ2IOa/BAFbor4cguy9EIW+I+uzIeAq17wrLh8CJgMB970heOMHdoXKl8ORveJc6GcGLglHOaaHLwMje72v0LdNXxKMCpv35qnrwpG93lLoe6g/21sI3Ffbw63CfcthbznsV+WwXIoNaIov5TDyldPYnDepFPoh049y8vEzFYDC1yeyt9LijZZvtFwQWqYrOTciXJmUs8XFQr/54tNJma5kL/dclZJzXslzo+QbJd8o+Suu9tAslffQ35VJOeflUMV+D8Jnly9olr7gBQfYdGzbSxxr4nugRVvVsMX/Aw==</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/azure_5.png b/src/main/webapp/templates/cloud/azure_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..e8a76db5bf604429b92c19fb9d82b19f9379353f
GIT binary patch
literal 4510
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

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/azure_5.xml b/src/main/webapp/templates/cloud/azure_5.xml
new file mode 100644
index 000000000..4f70508b6
--- /dev/null
+++ b/src/main/webapp/templates/cloud/azure_5.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-12T10:25:03.395Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="_PJ8Q9hL6O08SQJAgdTC" version="@DRAWIO-VERSION@" type="device"><diagram id="WI9T0HZ2pTsCkuznbFz-" name="Page-1">7X1ZV+NItu6v6cfTS2MmPBpLkKKRXMIyIL/cBTIlPAEnbVLDr797CilkmzSGzM483Vm1qrBlDaGIHXve3/6H3V+WZ19vnx/Cp8n94h+WMSn/YXv/sCzLsE34g0cqPmIalhzJv04ncqw9MJzW9+pEOfoyndyvOieun54W6+lz92D29Ph4n607x26/fn0quqf9/bToPvX5Nr/fOjDMbhfbR6+nk/UDHz2yPrfHv9xP8wf1ZPPTMf+yvFUny5usHm4nT4V2yPb/Yfe/Pj2t+dOy7N8vcPbUvPB1p6/82gzs6/3j+i0X9LJyEt7+61/GcuTOx9Nv1uLx6/84cpvVulJvfD+BCZCv94u7p8JvD5x8fXp5nNzjHQ349vR1/fCUPz3eLi6enp7hoAkHZ/frdSULefuyfoJDdBv4+u3+63oKcwuHHtbLhVywWn99mt/3nxZPX2kE9pGB/8Iv26+ohvv08jW7/857Kbpb337N79ffO9HiE/GttUfIFJ7dPy3v118rOOHr/eJ2Pf3WJYtboa68Oa9dAPgga3DIenzeWo//M1NuvXXK7d9ryo/+C6bc+b2m/NPvzHVgGb5WN/iwfxrmkTqQ0gHXsNUBr5Tx8LdK//bX/dcpTNX9Vzn4gSW237rEn36vJT7+nZf4A+vhvHU93N9qPVzj37Ee2uRru8g1zO4uMqw9m2jP5vyB28v9P7q93P/Q7fXpjevhGL/Xelj/oevx+a37w/y91sP+D12Po7eux+ffaz2cX78ejUTakEbuu4XR+9dRsa/963j0W62j2ubfbhcv8qiz6frLy93W8q4ebp/x43RJHpYTtSYXt3f3i7+eVtP19OkRfr97Wq+flnDCAn84uc3mOS2+Nt9/0z/aPXqLaY7XrpEYTm5Xz+z5+XtaIsmc0CN76qihjsDnye369h92j79ap6tv+T+skxIoxOr/9SWyxtWJc3ddvmT18yytjentl0sj856+XVhRNb4+NW5vxovUOl7fXR+/ZJX7LVtm3+4ew1kwba6bd66zT8xsWbzc2eePF9bl7MK6Wo2vzcXd42V9Ufsv4fBoGnx5WN+dufVguXi5taNZenOy+Gt4/jT5clkMpkffJvbEvtB+u1geV+Pq+CWF+2RA36l1VV9Y7e/aWKrxWXocLB+MyZfep4vqGO6UvUzqkMdT++4gmX8LveAbvME6W14uL24iF8b2cN834f3CdmyP0bfx2aK4sy6f9bFl1vH89uYEfpu/wGd412gxxvFZo5e75ZVxYVyOLvvHNV6XncG5Q6O4WF4a436Q35+ZK5i7T5k9ftx638es5vc8qkKvV1zYuDbNNd95p6CA87/hPbV5cO7OYH466wJPqVw7lDUMk7k7GB7zefCcyfKqyqzFt7uZMQ2HTgn3eh57xhTvGyaZGc0yOna3XNepdVqMk2drfHNe3wJd/DUMiovZvLqYhfm/vMAIvZEZeekq8GBsSb4OvXAdJv4zXN/OS/I8v7MiWlOYi8fbm8unyXXwot4D75l9yWE95sfB7KS47+MYF4uJcf7tHsYV9ntF4MXmxSyw5a+L9598WazGiTEdX7sP6bJcXFyfA72sH7PlsXm3jD/BGsH5vRyuN6KhU0UV/x0kK15777nOzk5neI/sy/kis66qyXI0/Wuazu7P/M+wZxq6GCzdh7vrqzmNqzqZwnrMYU5md1b5LYN5DGCmgEKtaBrkKa7t2VV1R/S7MO4TnOcgHy8XxsW1+ZAtJ893UxPucWncWQa8c28anI2fJ31znd7A/Fw7QJdXywm9+9Z11e315OmV34w7uyf3m8B5eP9ykS1PX1JrBMf9AubtcXK9gLFffoNnVOm1S+8fJnjNYg7rQ+s0/jJ+Ht9kZVSPrKgO8bdmDw6WkZk9nsM+j2Gcp+74JjgOHoGGa9+OktTGd729dr9mVvSQnY0+pXYOzw6Bbnx74PWqaOv3ufrdjbywHGz8Dmv0OL4+LtLr6HlCNNLrjufx5GEMfOL27HR+Z2fwe7DxO8zN8vLbpDKfxteLx9svMc0F0Ppr58E6PDzfXS8+ja/p3NfOs3GOb3EtknmF66GPewJ8a3x2bF/cwPtPDWdjT8G1Lo53jfRxkeQbz3j+xrThw7z03CjxzQHc/846/9/xdWRMzo5XQH8Pd8CTYP+U+GyepwjW9biCY7Pxkv/FvXIL4xjb57TPx8vTVWa1dN5PCp3Xwb45XY+vL63b6yu72QtnGbwbzMVSaGI2hz10ifRTI0+8g3eYfIHxPEar9OZy8a++4V7MRlY4Gxkwz6uLZP4CtFGGNfCGmbMM7IeHQTE/mpwtjLuzEd/78fJ5clYumAeN3GDmxun1ZHGR+EcXNv/Wjrl8FHql/Z55QRUlvTXSnoxjCXt0Db8bSP+ZVT5MzkZPg6ED9w6LQb9Yw+c6qnNrMJy3cxF/b0xpCWP6AvwrAP61PSa4FmQs81LrAWmggvcvL5JAv//5X1/4Ohk/yN1L4GO0d6ywCkBmj6yHxfgmfgHJZYawOjIi+OV8GjlpsjrHZ8F6G7d9eR5+9vgeW/vLOkZ5NQOaqS6uce+OHyZfrira98hD4PokCYCnp/WF5zvA3424RrrzDfX9wuutwtn8JazDVdgvjHDqlNGwlwf9Xp5WBtKofeHNXwbefBXRb0U56Dsggwr47Bgw3yBxnSK8Dku4Lzynh2+3CnE9+nj9SH3G38u0hrXsO1Y4LQqYv5fQ8+G5Rg1jMeF5FsoAGNtL5PnrqMLz8Dcf5jp7iUDeh5VThu344J69Gu8TzUBGTR0zHOL5sfYZ9Bd6Tgo05BjhsMD3N4H28BnwbHwnvE8MY4PzZhkfmxZ4H3h3OFbPV/BcI6oKlI8unecFeAzeqwC5BXOHz5sWMP6Rg+MfJCGNMTgj/ofPLuF6+Jzi2Cq4Pz6zukjCl3AUlnh/mEsYs+PAGGFtglVE8x6sYL6rCy8m+SxrYtA7zeY4VnswNIwLpEcaa7CGdarCZUjzDL/BM3owPzCf8F4Den+giSR9CZO4HSPSwdBxQ9R1Zik8D37n9zJS0FMinmugF1mHoVPAu8NaODWuZVrH9GygC4vvj2PJVjSWqYHzZsPaw/uE9JyIxjGHMcc4DnyPiufPN2hM/ZMZ0g3S2QWuyRT2dIVrMq/5PcOVvCeMPYf5hvdDHQDoE+7lDIDe4G+N1+O6R9e4DnmJ9BnV/kruDePyK6K3BO4H58MYV0xjMD5vhPOG+8LC8Tfj6hcyRz2mIeQ3fRznyMJ7hcn5DHlQWCH9wfsmI7w/6E8w7mTE373RGvYJ0NGlB5+Z7tQ+rOF7gtfhe8HczJC+1ffLT8H0SOcYwEfGdct5L6ys/XXzG2qktYP2CRiIz7fZ9DFPyDR1vmcXogFzX37XjlO/ms4/xccnoXP72FRHijYS/UkMyQctCK2O/Xjrz9qy/s7vH+fTx9VPM/8enx7v/1h+fyy/38Hym8XOpubeOb8PXB+4a9DPq8jrmVESWxf9HrwHaAgJSle//Bdcr2uSoP3OSJsETeN2efVyC+sJ9FVPlqB5f8kba48spC8nqCGT1hkvj8kqROsNLAKUrPA3QykH10XG/XWJtLSAe09BL1qny9PZrTUBi+vqZew9v4DlkovViJzVhb82cPVqIHMN647WBN6jyJZXNWjS1ngYaBzwNX04ODuHmb0Em6rVs8nug/9g9Mou/IZ2Jeh1LurmcHx5ewO20vUpUNDiBezUb0AV3+6SnTYc7KSxQW+/ed0N6O/Wwyu/XX7LlE2Iev6XXfbdxAR7ZbHLdmDdXrNx68AAGfxGuw/P9TfPxRWsB0g1XlCHXr75O84N2AhhCTIPdJ4/Nl9r86WgB8wr0D/K6Pew+WDHZ+hzEVtqDHvAQNuI7D+gBWM8zFGPtEFf479JD7hwaES6bZWUbOsMmeuIVVOBTVgeZuv5Fur9+2y9znjeYuPNUL9GLjBUvKreaXvtHA/otNNgw0J77SkR8Zpx7RtREhh/9Y/FBmy0M/0ZSONAO/gM0A2rjWe8Yk3CjgNK/wt2yeQsLyMvtkLvFTsS7kBnySjpM66Ju0G7szvLfUE6vLODdWqjr+zUmNycL4Qftf645WJ15z3NwhlKisBErss2JtomKei+oYP6NNsoWUl2Rz1CW4HsLbAH2PZBm2TWM1mfVnbmyKbzcb7RviSbLCDbBca8JrvoOiSuT7bLLEU9HSQU6O+zuYM2wQBtvARtpvEMrwM6RVsI7DbD5vPALgR7i2zFBM+/muG4Bh7ReDEgezGjcYSgn4M9YbGdAnTcjtWgcXn8bmCjOmgDw/u7KClhfDCWKw/5I9h4IJ1isGdztOFssBFsttPIBnfFlnPEZsYxgG2NzxvJe49WZCtbIb1/RLZQz1K2FcylE5FthXZHjOPJlY3C75ChbVIMyA7vmWQ3JSnes2BbKkB7B87LV2Irynm4VnMcTw3vgGtVNbY230NsywLmIjRp/HBfnOsB2btpSTYwzQv6D0DSJxmul4ufo1mWt7YU2cI0x2xP0fjQbiv4veBYssDzDH5/9jGQHQlaC9hpJY8B7uud43liM8r98H3R/8B2LdvIsyvyCQzIZgPNDe2xWYzjq2EOHLb7wQbz5p35jPCZOLYp3is36P6zOa4N2ZCht7BQ+yKbFNeQ/Bj5in8P2V4fAm1Pcd4y99YDWp7FFa4B7ZMpzTfakUh7aF/D/AUm+T6+pMLvmA4DP0RfDfDhwmAfBvwFeoX5gHdwSvYXtHvyfnoShbjWMIaI1uByJnRQkM9C0RuOn+YK7Wy0ZSdCS/juRB+0JiHyadozeH2v3NrLdA6NGegWj8W0rwYezRfoxzhHgUX3Rn8RrFtE8xo6vL60J42BH4JNjxoq+aZMpFuimQq+V04Bx+k70iJ8t6IvT9OLWue3Hev4Ff4br6M9MgfWw77oI230DFgr3df5PYlQsewQL54B1F3tlAo7vX7A62fxpnb17W7pLlIbtMKpOQMubaU3l2DHjFiTanXo5e11uRpMo9PLUWzEs9Fn4OT41hFwb6S2FXPKaEbcllaIvHYGcwH0wuFOGa15h/aUpwioMzWYY9EOxJUpmdpD9lpUQI1L8gaa5C1ijmPhbovI1kAOCjaGF5QpeUhwR4e0A2ClK6BgE+6H3BS5C1OhcOpwltFuA4qq6B7k+fPX5Imj+/bqLiUGJVMYvYfBlD2SnURUXhIHRA8fSSbyCDnETWkc8Qo4fBGxN80hryVKkSFxP5Ry5GnkzwseI3N18oCBtkdcPSIPZ86Spc4VV/Hg3vB+scE7Jn0Z8C7GcYgnMbRxR4jXtOYdElvs0aN72/RM73Im92buTu+WCWcmCUzcUCSJyRwXpCaOsSaPJ85HTRFA2qWBGmOIa4e7DqVhgl7CGiXNhLgHS5aA6cGjean53j2HPKwz4sgle39Z0vE1PLZBErBkswrmOPQOwnHqFNekZG4biIQnTyF622Cso1aDqBuOZLEERSnp8z3Yw4uSSKRdtm4lTMzeaPbMlqw1EGesxVPsMpcnT7HB65/bfOyBpBc/LxZpQxLCiehYxpJ0lm9IO9JsXF7DEXm05ZiN3uBBQnNbE2em64krFyzVWLLCeq94/smba93h/Nc0Ny57OgObPLp9oqVCSc0oIY0C5lTfzyFzf4/2QME0lrKkIqmfi6YyN2h8SptAqUSfYY7QM8nPdTRJaWteahfOrXBOUvQjoUaH3HyI64jPx/sCzScodeN2viqiS5TSDnmkWZvEOS/b/ZzyuvL7F7yHeR3Yw5syrYFWKBGAkviCh7QfKM+9eJZx/iPFa9grTXMw5z2HXtypmtOsob+4Rou3J1EWlLqBI1EWOJ4Z/J3oAb7nNUtjn6IqwONh7BHTPNNZIfQjHn0ah2iZmX1HeylkKTw7XzGd87oOrgvmN0TPgd3ZH3WoaVZpyXuRNEr+nIxnYlkVzHfJy74WGoJn56a2P5ivKs991UpuyhbokyYokR6ibaPh36S10Jzyunthy2u6c/Ip8I2S6GRKUSYrXGp7rb7SeFDPFi1U+C29P/MT5kHCE0Xb9oQvT2Vv0Hn0Xi6PF7U7kX8Vamuxybwy0PeyzFVP8Qh6b75naDEfFb7M2n3FY4jF0sk1OZRacQ3ykrQrH3k+0k7JEboA/2JUTDR9iuixRjcT2TUD2eEtQqKfWbZhCfhK67eZD4Z1o51VsB8qjojxHmdtnrRR1u5K5r1I+6TJ1rzP52QBsezPHU0fcJhv9hza5yyjKqYzsQRprihCB7pGw4c0+cb8iKw0jm4VvP/wfrJPauLbJq896Qpqjl2hLfOOeROPXaJh/K6BRClHOF6x8HLSd8DSCDfm9JPaQ0CL8B40J6xpX5Msteh9MYrHPA/pEekF1o3nPqrpPUqJTNbMRzKMxiH/Qg1fWYIu7ymSTybLPeAhtOfofWGf6Xx75PCYA9a5iE6RPpBP+hjNKqJ5CDRHfNAQXQ10J4oCGhLl6r7TzVOeJKCVU2QOLYcY59Emukhkz2G0dyiWCepJaDlNia/weTimdk+DzQ76pneFexmfbWFkFfQ8B/hDxTyyx2NlvubyPedMm1aB82QxHeLaYPQRaLlG3fVhMxIWb0S/zndE7suI9nL2/SwHHIM3Mi9oTCP3X8M3e2dmXe9MdKB3Jvi4d6YOTdjbZeudQb6CXogYvbLVkHlV11PA9OWIrlWx7pYyPxuyrs006oscnIs1KFZwEnNE+BrXtMd6lJfRujI/zZAu17TfyPLLTN7HFA02xFNE+h7zK43PIs/hPcr0zlaqw3yZ5LdFkWXWvUjnEp3W4ahsLl6Lcw/eE85LVxFHsSkSC/IKviONziUyO6fIe1ifv5e+YI72ZNF4PmU14LsA78DMN/MAGquDLo3NDqOx0PgojV3OotNwFJ20NIbZg6j/xKS3aLKEbRT8O1S6Zc9t9Sa0EdELkpvsFUM+HIv+kZE+hF4dtqWIVlDXMMQ2Qt0aPSUOemsGdJ7Iob7SMTBjAemJPIg169BX4tEgvuyKvWBylgh5OequXRGL7ViwPElIb2I9hGiV9AaxmzOH9XPKNjFZ10RPaECeFMqu6bN8YhuTPI4lvSt6E8m2aTw8mBVSke1VAS3DvaIpyHDkn0jbqBP1yS4wyIa/eY/nI8Oszj20SlELzAgFWiXZYB/gAYGxb3hAnIM8IPX8gx6Q0Lr0xv1oHjceEKAYl6VbZolFSJQllqspUnUtmjiukNP1KgCXQ47SWNmhWJnoMchLzadaiYVUiQbFUpxzX2zxUDAnZE9BHepeC9ZyKtFeRHtDbUdppqRBmHyPQNek2V/JEtXgXUGat82cNAQNFDRsD+T0kLwXNfnYyCeMlgHuyB75QOk3fPbje6gL/ezhHurCXTevKJ6DGoj3ZsoyNn1rWXEIZQHn/ChlGSDjCrBXWt8a8QOQe/RWzI/YFgvZT8P+GfK7MG/wK42yRM/vcTYTy641e+BToZYR21tMeczniKeODOUnYz2R5OVK/BiNzw50GsroiuY5HDsVXTpTejPe0+WIyJx9RkRVm1GFdN36R3qSXRZqdmBuY4Yc7aAp+ShM9negrTeibLZIqJY834m/bsfp26IDr5StELY2F8hv1s0jj+c5JL2Bv0f0vTP/75XfOAfmnqhojbx4kIzI/oadXW1EIs9fj4rGdjBzC6CtJ9BHDLApd2Wc4vV0juwqPh+ofjOLel8WaGZfuvDc42A5fr47Kz4hT438FHbaCugfdtTckF3P+mHi+az/zNAPZXC2pCf+x0oiAGS/xu269AtjQLpeIb5jzMsgXwb6VoBGgQ4oMqTZTJSFGTJnYnkNcp19anwf8bmxzcY2/0x8GFZYKluVMuSmqGOw74BtCfJXNHI8oYiH/0G9bgR2nm/voQvySw080JMpUzo33q7XRUlHr7MPtR1GP0CvOz8N/dDVbAeWZGDDhewfqti3Eho897QeFvO4OWc/alJI9jX7vnGPUgQ0IP863Zf2OvvbxHdasE3MvuCBRxm/Fkc5fbFB8DefeCTREmUIz2uOipI+6JJt3vhbRq74NyV2QOMnPhdVja6lJLmrpDXubbJdxf8KfAwlYfkuSYhj3WsTEE1XFxQrGNmH0E3WpZsD7YHRh23O2EjrCPiKlhGAcs+IUC8le88vG182y6eKbVJYF9I6Mt2Xz9FA1rTYN8k6uBuK3/WO5ohtyCiZeOJjYh5EfnPiP+InZHsv9Caz1t/WE59wwDELti/Jx6T5pMQnQ/5q5mXsiyL7U8U04hrlGtqQSNMx8p9KvTtHyDP6LUJ/5vv4DsaSyj18h20BzoqxwuqtsiiturIoP0QWWVH/g7LIiEvYY0A5uizCLO3YQd4pOg/rAZJFHw5bfSpiHQfWvbWZ2NeAsixwpJKA+X6isiGATtCHmTS2XcF+j56jMj/IX6d86aLl81hi8mOzVp8p/Yh9JyS/wrK1bXukhwwSohd8J+Jh7J8IWEdJHmZk005FHrLvjGTcgPimZJlztLySmI7EuEL+TaLnkvEv9xL/Cmc/lO35FCto449TquTALAKbZSxV4WHM0+bPYev3IV1srj1jLr5MihuX0SjE7H3ea/h+pFPynuRqinZd76fBt07lTP/4sfNdZag9Rk+om8N7mKBbAt/Ykxk2I/0UswQoy2DwdmvC2rRT88OsidlH7dToNEqiPsxwa6eyt9SgvBqWaMKBehxN4YhnyREqidRXHY+6wVyUtWrxIhuRisAmnfwO1sIbDyCsLFsWpfL8imeOntPYoCThjbqJItYc8WCqFG7ZcN2covm695E94xRlYK984q84MqB2RCjP7vFOw9wRriWqLyiXa652H1AraygcDRitVHQ84mimM+CcMo5MJGwdRZokGuCzK8w949oc3QtEXm7m7CV7vnvK8y3j7zkcmUslgnIadtbvPd4ZXK/ZaL+nuo7RM0N5Wgd4ZuxN+zk/KDcFnvrx3JT5pR/XWUvxU5KbxmCUG23cOXa0HA6XYz4xV3CxfrfhnUnZhqTVZl7K8fWY+H/EO0NsFZ89LV6g9JKC+ZzE7Zi3FZITwzFB8dQMyDME1KRsIpJRevxxJLknsewAXddEmYY6CmYuopxIxadO2WtYzVxwnC0UX7rkFdA7jdjHnZA/vYgMzIrM0Pdasp49ouzIiLxYwI/VnL6LArFKaV+shPzXNu44zMyMvNFmVu539I+sYwuDnneI/mF/3BYGbXmeOlGrf1gS1yJbmH0yocTgKEPPGvQ5J4I9aJQP4IRdrsvZm0mo5RwFhvhJ2I72SUdFP7Z7RzI55ArBpYqrsf+IuXXBMWPFoVgPLjkOjteee2TzgKyN2F9s8W8oa9EWT4kbftD2xVyrfZniKNvJfiH/9OzNnMjZ4kTWIZxo8GFPXuSHRlyAFdN68rBGsSLtxYwMWi2iCF0mDBKqOcVaVpsjCCntOM71NSiL7Y6yXmLyzoGGhCtes2aFkbOQ6l/ZOvFXnWfa79mt2Roslb3e/BCjLrBK5N9+u7xwtjSkgzz5A+/DGpIfG7F76eWavCDd1iB77Jr2ovglgSfi/uRKTzgHV0NlCW94yVkuiK8g4xgj2542+ymULBiJRoOr2Vu3vteeJdnRjvizRPNIX1hGzG3MlRp4D7NWwxLblGWaVOXORc41fjVN9vhWgitHsUr0c129dx/jGOt9vk2SNeTbpFr1A3yb8449OUh6h/Bz9+P25MgMDaC1pOHnJmm/bMuIrI45d4XzACVXzze0nK+yk5fC1b0S+/NVHlXJciDmLG/WziVvayS2V6hl3+eVqgyW3E3J8+IcVKIF1pA5ZzCJPI6bIg+ncw3+3OYZYsxaz1BnvaP1mUj+jMlxBLZtVYw08iSyxBor54bWFMM3+NjprI0JsL5B3I7ir0jT7BcBzdyLWIs2OLs/phxN8oWgDsJV76jP1IMvTzLW3js4G+hc9T5NGHPslD9+foAOMu/qIMlB/nj3wzqIARwQztZ0EKleYInDfoSMZT/atH2S8y7n4KAUIT2y7EgmqqKgeApXULAFhFG2UtsHduMXRZ2CI49rzrfgyKREKG3hdyb74nts99dEl2Vc+8RDNR8L0cOgeV77Lu+w+y2Mx0d77X7kr5ktUURzkGRvz6cwQPvX/afuYX73yOt93O/uTXyQbh3/6UDlocweAvKjMo8xJOfabnTSPlW3lCq3rPGFsS7qtjmHPiM0NDnIXF0z8C45h5T5YRHNSdvB/FWH43PERxzOwUo5B9Sj3GxD4n1uJjQQMrIH5+Z7YAHzdUQLg/dUZqDPr96bS0NxS7Y/0H9/gO8c1j7rrv1BvnNY+w/7zqN5bMWzsd+ufa+Nvw0pb7Xk+G5AeYNkg3DlVc36xryNw1UNfyg4pxm1y1xVSqFm6QzIR4ryiPckeyuE1iifV/buezRQ4B+Rt08DxXy0wODcpwzl5Jv1C7j3hn5xiL86Ln+AfuFeJg+ng07sdK5sefuukb9dP2tIOUrkk2bdI5mz/Kb6BFqvGqyMzr3exSsrw9jrI6V4BXqMsLZkVL/dAojLDQsg6R3iIzUoAvYxC+AsnI+KWPOREsdhDlOH81DsNPElkm2VN5KKuVpodLK7OCJdSqZzJZkZFXNT9HGeihaOv0eivaWqyqZUO0iqbFzOIaK8mkIscskwG7n8fPHofzganYLGGu/LUgBOD1I7CdDeg9VOC9Bu3h6RNhAppOWOoyI8kDsGH5eM/pU38E83uCNma55ihEEyVkcbVV8UcZHM1Vz5fg3ltx0kC098v4bU5RZiJTi8Ts0z3rs2ICXjfZkCmHmNXkTOBH+ztySutnbh7krz13bhT4hUCA8zpAbI1PIwpfI2lhoWWi3dZrHEhrY5d0ByPtijLrV/l1LnoVeqBlqlak6IYRL/EhusJ37dXOUUFA06mXfqsR0uXGMqeUwcm1o17/Ief+ksBfm3N85fk/+ac8vfuur1ho8s6R3iIzPCD3vrQ/tydHoSa3mUXJ2leG9eaFV4DvPBjDPJE/KwmGwxj7rZtTzjbZSXV8yWyrY6rgOxKHP2pFeUxWtIfT1nAXzAuogqw9yHNxFhXTZnv1Kl69u1lVC3LE14t0O0lfrjluXV2aV/6WmWpcjHnnsnWghFPRr/Zs99zxyid22v1kEWY8h5noSDkh5goUUdC21UHoZ5AXr9x+XQaOxf+qGtySHKGxYZHorWXESjQrjZ+2kSZJW5rx6dqriTFGmSnnfIXGbduTxQpscfr1CZB1VUB5Y+l2jRwD5zBk31ahOjlSx6xpEUPU2rbPSVhWpwppkvVbwj1A9MjvlyhWjEmYYVe1tTzt4nXY6qgyXbZG421WSEU2hUgifpcLZ+Kl4RVZEWMK4kVaRnUnVMWIt12MkkCswGG5OxLFpPXSLHCDdizlkgtc/4HlTlghWkMVW1UAUAYxkKTkIg1bUUOZLqXvLQiZfHNxr9tMnalepjjz2LGxnI7IHkrDpX8twtrjhFL6CKxXPmTFNloaJbLJVL5t09rkTDahvMse/TGgtvR09njFXuWFXerv97pG7dW0d7K7oCpI1CKm4oG+YAncvclL7+QToXSMAPWz7RaFQBH2ul75Tr9lDDj5aSj+MFW7VdkjNbhqrG3JMaw6HKp/PNmHaHxAglRy/ifDq2Xlgzlhx0vc61J7FRibNXRmd3xjXHLDG+PWDfoCFjtjkHEGtnmQrewSkRJcgc7OOUhBwbs2+QsAviN/uGMZbdkeBJeogEN3+CBDfZt4bxjMtZkwdLvllDcCQwrxU/c4RxoNXSSWaO5AiqWltf1XmXfL8Hsl7Jb9/Weq6odqBCLY7yCUzm1JlCaBKUX6VL+5TrT3kPPuYHYMwslhgcoZ+uCPW0zjFGYFCOAvx9Fw1MDWsvYljNSK6884MD6pdia2vnHxL1NKKPI7hs7/wh7Ura+VIRL1mF6WalhmA9tRFHqS6WjECJBnHWvkTAFIKFIZWTeM2Vwj8iSuNjAXva+yoTECln4gm6CI2NZXVmyw43JIok2S4NVb7TxkbcpnRfJLOiapca3gPeByufQQ6+eeU37ezgIG/XD8gI3F55xrdgf7qKOXLOk+S4E1/n+DTJB00DUfmgTTZeUHJOPse62XfJSGoRYgnoz3qXVI7X0d7sNUKKdNgqgOe+mS9nVYcvzw6J2QH//7AfODUvk3MvnmmWlab1J5748L0OXkTBPDdmb2QbQ6tYNvuEkB0yP5dqRM49ijxBguN4LOOdiBdScGxcwWMoLvi4EXH+umid83V7rvhQeKfbg05eGmllDv/tkdbGcQFfocaxtb+nBqLDt/Xf6u5nwtLNCY7a+zEA1PbR8RYA9ecdANSq05YOQK1aqv54AGp7C4A6uf/69fbvp6/LPxDUfyCo/9MhqCOv5wy8TaDf8SJ7jJ7vLAfFH6qpL2HVQ/ZcRMkIVcI8nPUwzQbZJhiV6FbVG/dcfkstBDYeodCGe50/kIgZHgZDjVAi0RQbCOls/gpo5RzEjjlNr6OvY/v82+TanQ9AfE+qXve6P02H3tp0yAi9HFM9N5oEAd3AfMN4QSVYLPD9X6UZBp/GoFY9QPrz0l3g0wQYyb+PdoFL6yDexYYzq0CwYlQyEewZ7/Ua0PPt2ZUC7S5Dj8pCd553d33q3F6bz/fLq7mAhu88b2It5pMzpFnfDbdAsRuQanz/9eBVcOr5LnDqT3fAf2mcGIz0QN2qEaD6GKHbZ5NdgOJfaJ5aerQEfnqKMPAP3yYW0gMCSI8f7r5EC73xD/Cd3XTeiP0WZBnXmMby/YZDXKzCfzfBN3cq73RfL57+tcD3GK13t9ppYbAJYL4A08AOwUzYY1Loo9l0Ye9WV5HugZ/hmVdnSO2nbKTuMCZ2jmloVB2T5TtPAcqApyRnx493uyGud5lSCRrx+2AafHJ9khmFJThvdJ3RSgBF/fV48u3uy+IRuH0d1YeEruICdvHmLjw8yWYUglwdaZDVPoEEkimKLnsq/L28DmcICLRYUasWArTyyys0r2fvTLhNCF54nxGEwFmYhGWiC/mNRhCut8mA46AnrO6vJyB7Q/uQIBOvTvZhGIwQVimeaWYqzx6CihjhVYoQZOWAZxlmPbIQhimcFwjtV/PMx+Xhrp8RJtnvC7IXQLEVlpCDfvHmgBPSXFqggQkc0B2DcRjW2WFBJ1wda0vWHVyecuVF/tVp1KYzy5wRRV6H2IiKgncBpjm7VzOi4lDmn5ww75rXobGv1KOksvy3U6q1g1IPSLQlSp19mFLNuL48vUxGW5SKszq4SukvgdwyH7gmLe9MUWr2Eso5g5t3JzObUZ2+AXQJS0XigpMaMcT45iR8nG2QY63rCmd6d1nVm2gBde/pPhd7SOEDDpCHby4qYfkfqnAkSAZ/t2T4bdwL7ufPG+4F1zW2nQs7uls57s9yLjhbzoXx7fP0/ut/kGfhAx6CaKZbyql9voD99QzWKugQ5hr0iFp5B7rWO1hks33W71ERTsHaBitqfJauM3vxMjk7dS5gTwfVv9Va11ry6mNuNfGLx+gb8MfZ+Bq5+WRxgZZs/9i/8mPdI7EO+y5YIfHP8LDorYbR2aksRLTWjWi2LS1/ZJOq++VpAZZ/dQP0cVh7YtB5Z3MrIM1lVB7YntiKKCW0VxPI9D5PwaxcgyUNluepkQpPB+vJSK8vgTv6JafaIF//6wtS5/Pw0k/x21k0GywmsK6rHD1SA2yeZV+hZYr3hL3zTFw7vYnhbLBF0SYiCvqXjaMBnnkWfiIpdH1qyBXGPa4aP6ca3wj1JN/bhZezu+sFXXdhRgZK3CE/CyXkET5DZMC3v2bFt9QKP11Zx9Ut/HZhd96nf9zOQ4JXXi0z0avpM7ZPwrZcrYThv5VIhCH/VRqa/P19z43n3eMg4TauO1f3a/7++68Ba+dyMX4MtWZqaF1NwKKVnYxalgG7/O9uw6S/zsaLS+vUzOzoGfSd/t2X9orxaPIwuYmAL5y+xMvSzDDsVlPqbD05u/THN+Nn5NfsJQxaXQslvTz9j4et9bAhH90Kbr3qYUtBpw52edi4oNYLimjLW4e8Eu3UeYmFc5vP+u9u7+ZbmIw8wCKV6cm3dPmMtsmuNSUvI1iDqzs7gOdF0twtRZvl6c6egCzh/ZFel3WngSHqvpq0f9ZXvz1Ledp22FEpjHrLq3pwYPoyueyD7N1oKoMtakNV6GxJahiDMDFYm81paimXWSCwJIGAjwRc3MdkEIFHpXZSJRdQ+xUXNc65kGmqwOZiTpOj0g4soVdtv7ipA4MzpQzpUlEBOAPPCeTNgJsXSPON3G2aFxCgAyc3NakUDOIuwfbY1NobKYAGgX3lIk0OqmNjhVCl2RXc2CYwBOCslsYFbgOg3VewNyOnSUX0BKiYShgktZShXuWequSBi/8ExkdaKfmc5iftuhiITdplcyMQBL4yBWgRP9uU3ojNZip5HiZPybtjkBoB9wiMKulJSp8CyBLYGwZHsbBhELe14jZRClJHALZWDITMcLvcnCJTzTsKhkho20LJnFhxTQW+JTdCIMB+Rxqi1NKwwmEgFPyeO9wgIaeUE2p2lGSq1TWD+/VVU5VM5s7nZiBLHSBGisU5cULSXUaGNBUoFFigFC4IOGKPUy7VO1EzpMwWgBgG6+ekC4vhjUIGqxoqqCFulCDtwqnpihQpEOiINNaouEg3N7S2WgaDt3JqTsTF6wL3FBBYWcTp9SYDKmac3ulNPJonAmTMqfxpIA1nsJUYFnRKIiB+dzuFgZWSvdsesGiWWZuRisMTLcankQ82T+sBq3g/E/i1SzTtqUY/1CClWQ8CAq0aQME61BqARFz0LOD1DzNtbggaecCpxy61DqTmVngNnheqgmmTS4pSAn0gn05FIBIIvmIz7fOacOMWn5vheHPmRzT/sTRy6BlN85dpAzbEAOectltyMockefC+MwUYwtD4hylQ0XKPXAq1/aYFY8RF/BadN1Q8KJDmJrFqVGE0DVXqUGvOUTC9J02jI9UsiBNKrFAVFxcKhEn4fs00OBK+P5b0NL+Fw26bV1WqyRWCCAvokyXNLWouVA5QNjiyh0xKrpkqYM/UZp5Lc1kxiF7sMDABN61iQITQavbtlFryCb9GwI9JEM5CBmz0DaZ5BFtHb/ao6H6/Vrww1QqN5lXzflRMr3i0FCVxwVOlpdQJbcYOpWAnIoeGCuzKp0ZnkmRbRTzPAlwRuizLcr11HydgJufqfQtuSkTAD3xeJWDLvHckRV1koLQpZL4bVJxULIAVllbgJc24BNCEm8Awv4d5Ctt5kjaN2rxheVB3Hm/ezFPsLZ304zzFlAYmOCY74sYuDPhPsjZQa2s0TYU8v9kXA6FfkfPSsCyW+V4o0NyqSdPkJnkW0+ac9jkCc7TgtAgmFry0DYsamDuTZbhAukvDi7ApoGsBkltAkKIZiyR8uazbcOMNaXAg0HbafXQgEW8i/DGV0iych7kAAKfYAlUawElCMvNHm2EBuREeNRipCLwArm3mjpsuMKSgwQ38BOgZZFiEe5rocs4tT5OcG/ZQ00Asux1x4z9uSMQ8iPQMbtZFfHKqktwDAiUXYHRuVlhTwyJLWpKuGKxAytI44c2OlNz1NIBiSlyXRkRMG8JHfVtamEoDH577uB6ZDGWomoGNav5L3zEhWpoy8XfUWyLic7AupH8Fsj8ZLK4pMyZwUQEwpTnwVdM3o9OYSsBehD9Lo53YbWRDRYmJFYOqwlycMZASyxDk2aHSl2xOLA8ZumqWqnUsmqZXXkOX9UDxJ+ILDx4nRObyTiCfVYoyv+Oq+84bZdHftWh+AADYlkUjbZKwZSWn2nIqfMGzEYhWi9pzrjSOBnRTrIdSWuWsm3RPTr03BS5ISjLSqmnBQ3DWpCmbTftEZY1g2jyVZhSOgoMLvdNZI0G9pqWY7PpUNNdYqEfKXxmiUFZMIGC4ENAanEl7O7K6sI1NzCmg1DoKNZtMmhcrCJmeWE38PqrtnMA1cikvU6YqQiLK0LQYRam2tPpx5XvJXFEsp2khgGknAomnrKseF5c2rdxGYoVcScu3omzmwSMIHGlHN2JOPOPWMixZaS2RgtcD5nIFN7YVC3CquPxI4/KSSiuwTqKtqUYi5Q4ryWGtJiRuyFoNznNKY4gEXpB2D8Hp4o7HNqipyRYutm2NqWCsQ59vl57uh2PS29IToZ+wNWo5UO0nCSazsaKawnvSypGztC07BfJS455ciiIQx5nAD+d6i1FLb9mjGrUoeByRmrVAu63Fwse5l2OsBXKBG8Ij9tbRVFlbKK3m3PLirNHs9DR7swXGTWuBh6y1sdXt3pcm2qj9CpeUAmhDJAe9i+Ydsbhl3kgsGWWhFywtWq2jYBjqdv6kxaeh7QcTM15oXZhGLIHoonWKuE1fd93eTEN5sek9+wE0RI2zUSuMcG+xliPtYLl9MK+dtMKUloCi5bi8NnOb6S5fq4bbkbQxYR6k2tT6Cvi3td5rAQO+blPmI9WKcyrtQtm7wq3HOlAD0sQ6STUrM260MH6HkZIXBcOGi6dmqPiwarCuNPB0Lc2tGe6VrM6ctcam7KMQid1TsPMK2r4iXiHaf6g8KixjRKuRkhHeb402Jq2Lax0OSmQUf16KtVIpXpgrOVYomN6IvX+iLTdWFvFUlp/onenZqqWxwPAamhUl/D1W6ysQqtKmVHm+pgIaTe/Pjd8HWoPyiOlGWuFkbPXXlx6sq2gZIbcXw++wR3Bu4Z5dOnyzpyMvfoKnwxCr1m5hhhV8kAB/T6WIWEEVCxR+Y216qt0yl+QprTFivaHQi4FF42W+wmUphrSLFn3CV0A5RdNeOZmvBVKZ6YFa8JJ26UgJUuNB5f1G5UkM68GfHQbUzqW0NJayk5GAl4v1kgjYakuDpngUSt3DKV5PLuBmOhT4EZb30gZOrN+sZAhDpR8F0vZD5pEhSCzVQgD5DLewGVWN9au1tGM+znAjg1HRWTs9B0vFznZkOlrYNubDQAXzkRFj3nyT6YgwT6TDFcI7WotVeXaHRqnkr27ZhkNdj4lbPZZ5gyFrIQXfCko7W6s91ADVc+sYbvtDa+8rj3hJbQGSVpeNGgjuTPFfzYpQnoqetNYOdB7NwO9cZlyFc2w9B2tGrdRxfXAesKwpZS9cnb0wVHIX9OL76/MDAI221gfbHUrZ7lLK9GoVMVCQtD3ee/0NT5KUgA00mSPQtS7rV6GAq/SUZdjOdeMt6rV7o5lLX7UZn4UKvErpG6qdhCo45fXg4lIGWBCoHpFNzIfrAXtVpHUEt4dX6yfA/LJ+EViKPW7nNaSWtQbtY96zFreHlPl6fDN/rn+G3hsxMBh6JtmTwl7oovVCMwQs0rRqhzRQDRy81mMkXhpHeYwaz8JQRRR8gUIi/lUoeKROexT+rdQ8j5aypaRpodGc11fQjeLN9cQD0+jlFIEohNdLswluY8LRsp4b17GUmMekcyLkK5b4Rww525mbt++veLMe4wftL/K4VQMFidkXWZo0kOoGQxf0RAZkigeqkktuA8Rlmo4WZbGjTjRGdEHV0kzpSVbYzLXIWWmVJ/KcPe81e7uCFuKqkXNsY0irGY761Zqu39mz5Am2eL+kNayTePIomrCKPCnXr2gvGmyPoy708HaPiwOa34/3uKDGzrAtpWjirPXXyqomLV+Bz9JKNhq2iiHMlHZotDN5095LPB2lzL6tAZyaAwWYS1yI4GZsbq2SccEtn9c202lAwZu2LKXsckdiEQLRQs+UmLLPXgiwziL2EdbsO8fdRFJKoAG1uXi7ZWb+BN94R5O5mmXSGJCKlltriTmIzE2qLCJlrZZiIZMlxxqZL1ZWwL5iiqVm0rDLXwnotljXPjVtJu/QUvNkJUp6aFaYWHcDZXGzZaxiKqt23IHEK4LG+hEPkjSfjyXeSzte4m4omUKKoQxI0yYtD2MZNsPxYIMnBFjJtnfTEWV41s6Py0T+5GwWOhu7Cp0/fdrORVb1yD8+F9ndykXu1S9f7+FQePt4m99P/mHBeGwT04C96Wq++mlJyvCUv+mfP5nKv1Om8sF1xc3Y2sxe/ZlanbRb34F+kFpXmO36OB6C3nATf7s8vfQ7mdCwu8dfLufamDR9Y2tc7W9DqV3HjOKbCDPcFll1rP3+eg10cnbqUl4knEOZxVyL7LYZyJi/Nenf2Vj/SZnDJUG813OsY81DaqsTUk0rj7v4xFnWWPt8gvm5C+DsmGWt54bN76yI8sNgTWHuoq+ZeVyjJMDss4tHXket7hRhh7muFmGLtPpWbGAlY/lwDfeeLOc6THo21wr9t2c5hyXY0jVLke/ktr6eS3h2DrN1uchQN4NVh5maUc4r5k5Pm5xYvRq63JO3SHmJQEEruO7hbhktqKoY81ptoJazq13XbFVXd/Jsd+WP3kRPQA3fJsAltmoCmjzNyTPs4id8PlDd5nO+W6VNFIe7+PqS0ABAGy4iapuzM/fyOzm7PyQHeCOveFdeKUGfEpzydvU87lysFZvXYHXU27m/VBGOkS0bgYKjrdzVD1WWv7XKHe2BanztwnuXD/fXV0CL5yHlIi+Oyp1WR1MjTqsz21sjbkboS5z1CtQAERQzosZ8WsVcUs7H1+Na7kuf8d7YVkSrgTvKUFsWu3Rkjr8MR5d/h+aR4EmMKEaIcpB4OVIwWhagYcIb6xnGoPX3FL/WM5kpptetJAZOQKPRRjoD6VeMNAtZjSQ6PeqMdgKcHzSBFa7ZYPkAc5wiD0iAO5xfnh7VN5Wu4x9jDc4SeIENnPsZJNUUjqs8cjOzRsh9qdnGvdCq2qOalCjCPl7zsGhoOukV50OtyjRBvlc+Z6dkl2xU3NMvfZMsSXrqsngKzAhmbuHf1Jd//4sg87ACPsPRWNF0o8J+5ypi04FOJeMX0J7smO+0UHe/+lvqfnRqkfofRTGdd8UG3sUrEtGFvaJX1m7XR5x/dyUXRxsjvgJucyL60fMT0OESOXZz/tWRbkV/Q11jvCyBSz5bINufsRJJcTekCp6VUOi2J2+Jf1vOCXS82KBPWt2Lbq1l+w6edlws0O2a5cuHwXVKbeqJ0w57NsYZL7wAs6sqsLZybk2TmwFlA3GsH9slXCQ5w0RiO4Rhbx0xyHMB5zkU35PMFe17TRmAX9KcwfqzfNjn5wWnT0Cl0er2prdm/xLOy/nqX/1md1g31XyqezZ4zrYwRb7r2ejM1WtzYp2CtpEXcOetOaHciupkFnBmjyPvXTCYbVw278pZjTlnp6KfkfIUXGl1a+J1zfcKY2a9gucL5pmyGgn+kOZZOw/n2eBs+p46jjFH9Vnm971zeZiX6G1zGU2x6TlKKplLi2J3mBGM2UtJnqdVjzNeOe8j5xyPucRkkebimj0NeX7X7xkKfh7j/nBtQVnfnNFVBXzeSjwIOcWW+Tfn3fOSHFaB8c55sSW/pkJ5FCVpzi0rs5XAhvI8oS9YMnuDvpZrAe/KPk8GhwzOQJfnrFPMZDRpH+McN/MUrsTfn0ecA0WenQEBPJ4QD7m4obGDzXJV3fXzmcYLnxu8KK5ZB950KOrHUZfzst9yGwOgGHiTRUi7HKWMkUfk08pXIUvnWjgU+oKMgP0/Ktcx5zzIEeeGT3uc8TEkDlUJqH/BrYP171g/2ltJxDyXiCr7Lz2+H3mih71Sci5zgq0ccv2BOofOfzfFHZYh9yaKq7F6fzFPd3B69p2+xtUwZ7vlasz5d3I1kCIdrgbc6sTiuQ3swM/zCJvZ9E9u30lhB0Zb30hhZXiNlt6opTAaJexDb445DsxjhN/wniR/PPLsdct3ifc3vFnJRs7iH2nfWS6E/WItM80yVclGrz0PZ7qRqXIc93DzmWf4vft10zr4MbNZD66jxZiwP9R+DTnPWWnesF+5GTRnJjB9zNlnW/XWUZORmTnIxbguRDQQ2uvEASWjosccUHF4gkIvxLf93plJD4xqvXtmaslPxFjTrOeKfiV601xmirz1ksPY01tgOsztAqlkOlkFFL2gJufAjXA30yyrmaovpIoJ9YtI+D/K1Husqv2unj9u9XzB/kBd/8AYbUf7lnjidrMBLzRD5OocZVoHXmqz9z8oBgQ9LVyKYm09Ld9lbjVcvOH+PsfO+pzbInNh0Dy231EyFCIJmIKSWHF4XSrkjfRoOTzeq33mu/diemCewoY92qCrbHxGrAY48x/2yer5Nps+5gl60j3nx4Q0jrZCGtbx5+2Ahrkd0HCdnxXQ+PRqQONq+nX9cgt3+LSAUZzcfYVPOX4Kb7OH6SOeMsxuF/T3fr0d6NgKPzyslzA2z4SPz/dfp/AC9xrayq3ELjKYXzx+snq4nTwVEqiY3K4e8CZ61OLk76fH9XBa4/NMS4tmTJdglJ+C8Y9TsspuMaRxFf4/Gu3/g7H+E+Mbbwqs/BQq+Gx0AXacXWEtdwfEjjr246ng8xYVXE1XtPjGcP0ymT5pYa3+0+T+D/TOn4DWn4BWJ6BlkqLhYRAJ1HZOKPouHM7rYL/j58y+erg7BXH05Wp+e338NygK83ED/Ns4uPRndlyWzfN/bjDLAGXBGfwJZi2zOgYFL7f/BLN+djAL1PCSYI9/22AW7rywCOtevamiIifBUijYbebWbwS8EriYxowBih8H3vJGIJklmh/nIOlimBvkfkCfcw5m3dT+doJWA+SbERfYB6GInWkQnhndZuguiJJ5B+Z4945KbR1mcXfQI1JBjzrkbkAcxqdwAEjC2cjBAAcmjrWBjxGagWY3NKCO/aahK5xlazD8TUJXvOb9faEr3K0EgPn20NVPWEWC0CSa0oGo0cl4EmvJn5qDcQNGd99amu9YS0wC+dhaUkiufYu3OQt8e3ANs9g4C0J0ElCRSoj9qrwgx7J02qVDgrlZN9/p78k1GPxFNDy5Dc6MPKTuhOTcq4PTNB94CEMzwqADQsBSauiAimp6pRTDuFiIEZzlOaexnnzC+1wkGIoMTXbqxeSW5tL1OTlcLpIRO2amjs3PScnZB88xKbG8z90JA4LOQTgTDFDHOQeqgxXfPzcCgs7BvrsjTKXNJ9MeJd8PhicreSbCwJjkfn2HK5rp/d1BoS7g9ua3H5xgaZrHHTv0s3u8bYXu8kWYP8sKPdqyQv3HfPp4/x8F9fqnicyfJjI7m8gALwXNNtwM2eiwsgVB3wDf+hemSnkjEwtKAw/T2fM1Fdwm/vP3kiTHQGcglwq0baNDG8kgTPdsnlOnai/TkzUWd2jfnY3W6RKsE4taO7yMvWew57OcYWaR/wZuQL23etRlGOcc1p/scuSf2fKqhnFZHTjAIx3wVrcD3mkvLW9vYkzmAkpavFxcn3+j9iDJTl0fdtTYkDKc7nU358pO2fEbcHllO9jnaPfsALacmLfXl4tdthnrV3pbkbCE1a23ym9fAb18hYrI9ggZMLCGXbkVeqaVR+gGWKHQm2/+/uNsweuORlO+auvAOtyfLda3N88L3CHh8GO2Jdter9pG7q7kwPvlMdMGpV1gV01MV/2lwJdNA46x0AUmRH7f7sIUEZjnOsP/uHjIC41uq4jdbSLwCWnF/p0Rru/QKHfA17djwjZSNz07RFDpxO9aQ7t6UBLQcVgGM9dvOVOQB/VoF5z/ZvMRfA4CJ+1r7IIpVTaW23J4K63CWfz8hoYzYH/6VojWyyICC+MK+1QXQDm7Ww1sFyzJ9aODtEGtjz2mq9t3CPkgIKDU0x4LkTClaklAniV3YsywN+lmA5fNpgIbzQ+wTQ3CHe1thIGAFEnP2Gou8r01dWBNk9uzq8UEi5+81N7d9mBH90q6/uNlktEorC69uVYmKfPkjWcEzjmVwimC1Eg5XEydgH0BefK13uZS2lg3naabkkUB96oZ0iOTHrT+qn0GAXcqwEWDz8Ny/Z4qApNS4zmDWBG8TE/KZvW+tgJyNVV94SW0TTAvMZcW14H0ZTdaAC8qIjMUFEgDqxDXCMBGZaxYGFZxyFj12cXGQQxiGNHcUOmoQBFQ6WzFYwNZy90/Pbmvup/QL4J/NfP+Dvoc9A1rD31ieWEZYuE7B+uBVrER2HzD5/AqfzNCsvZH1sNifIOAu/DU1xrh7Cjq5XtEH+2DXV954Tx2tbLEkksIqae0gtQ1uDC9J1CeXFTdrgDMPiW4qNkPm9kP6ytV6F4KdZkNqFZyKr/5LfUq0C1VwDs7nVECQKUANjIB8UGgrhMGNmhAuoIW9lIgccEu1vr0+lIYLjBtXPxvDBqoyVwoVkA28L1Vf1/agc3u451nFJ252mgItNnEaqthDfL0Ocn+78lRhKGCPYorgIlasOqhfQhHjDc5onsYRxx9mCOCFmAP/NhuOWJGTZQGDHspKUAaUMYsRJ+PFJNzCwoENuh04J6llPbGkHsImzliKMchQcWaCMKTVUYLdsTlsAw9CTTVgA4xgFjJZaajFy5Lls+2ACsMC/YRIf2gvwq5pyXAdRVDWfK9kPuhj0frDU2gJpQ0JKBqMA4631cQkyXd51pgQpMcS3cVGJOjQNYQ+nGARfPL0FFwgiidBwxMUXN6Y47gHpTOJ6BdlcCRcrk07C/Yp3K/nFqxRfVIjVUBTBjc85qTa8JEoEcJ1ILeHRuO2dziDe2xd0h/OyQotj2tjyqS/hZ72ECeJj33ELof1V26z3b3GH+d7rciJR+n+0BK0GneGPqTAFvwDRFum5KdLE57bXpbI6Q0tcni5KmRxfQUCihZyvRUX0p5PNJM5vIaZwy4RzSf20Rb9WKGENQRQYiO3AuCjmS4zwHReY9AsaJEwDISX8FaN3xaQIFKAcCyOvuSoZ6NQQOO4is4eOTTNYG71QKFO1UQ7wihO4Lx0rMQLMptQTh6DInJgFgoOyyeA06gG2D5v/AQLmv3W5DEKb1nwSB5OEexti97tcAwK+jRVrNivlCHvMcdtccHzR4H2e+p9800CIWerXhT2ADbBQK01xPY5liDCp2zLKkcW+9lHhFkaKC0wTUBfvRlLhDC01MaVk4SgX8DPQRTfRX4GcPyGwJuJfTAcNUR7fHAZbCNEFsDlA3wWgsmVfE6hA4DZsJ6kaYn/MIvhGbZr0KQ8AKGh7C10TXCb1MxAMHhMtCmT8mMIfNFgU33G/BIAmAhwA20rpDno37QQOe246N5J6gEhvumhN9wHTGkesm0PmIY1Xa9ZW0CDaqAYZ8ZYCRUdKnTtqnRg6naBDCQCwNSCSy9o8EwCEhPz2iBgtS89nSATqG5XnftW1AhLqxAIBQCpUGQPZBx9QPDD5PFEMpzc2rvoMZA898C6ZUtqGEmkNzavkK+MSTIZF4fgqOmNXA7ciwRiOsWlKpugImmRD9MZ1wspMDwTAXYM6C09MwSWGSNblE+pwps0uTz5rJnGBAmYgAlXKdKAPPwM8q8RnZFBP2O/AUBkBj2FoH+4H42jyEk4DLmGyOSm82+IbmZs1UzRBDY0Ek8BkVEHTbytlqUvkXGDfe390NgZJD2yKHXDIweVwfJuA3dLtvlJfmOjDs0fXoHKFAyPo2MkaPrdgjWJjIuIPCdpSQ2k2zKHWoDWSO40SXBzQvIltLvwqgiyBjWD3WgwM0GhTs9M9hy19/nWzCo2BTlZN+osWQRrrMOmfl0U7uoDpz5D2sX2zOPFJuqmQ9Dhoqq7jCFfBYzvNWSpC35HjBKKZxcJLDi5AdbMQgsm6R7vGEYn/UdhIoBHkHAq+H0zbaytGfTbGU7fLUN8yu2sv1xcNWRdZlMTgfeSveW0azd0ixP2J5gOjfuuNUK2ikWN5MNCbBX6Pz6/fozag/77EbQ8ig9P0TeUqN2Bde9fcbtLe+EHR3qnbA/7J3YnnGTYfV41u/68j05FShbpOsFSkORfNhoSLgKQ8K+l6sgJHKxh6tgU2s3Qg0auAo1PvDig7hKtsnPzcO4Sv4DbPWTPlCNoYG8kY4WEbijAuNWfhIFQhtrsPy+2eozRgsRJSCXg76uJ6t2Jbn+m9Potn2l9/oKFL3WfhOQRbHvWUcQnUsHa1f3U7oZt3bpjpFAA5VeXjRtY0RfaEFhtfdhfUXGQG20dlwfd44JEGupfEsKWo1BUMW7Wm2Mpyq0+7HeOJBWS6E30vVIR9ctGVA1dMTnViv/HQEyK33Y0/TYXffojsnWvMFyvq+Pq4y+KA/ypv5b6NdrwIyhAH2PKvHFMQ2RzhfgOBmUr9LpKNTmXdFDx2Ou5p5BOzVPdqTa4rBu7CqwZQGpL9geO1E+SR1Yn32MCuhxxiD4oQJU7bzjCX3e1ul9U7MRykgBQNIzrgTMOtNAmkNpeSEAhgzYKzTkuxpdqhYZrt4UYTBSbY2woTmBL9IeZiBostHANm48+lKkVcg1vgLJFKD/HrWJE99rQf6xNirhsv6WsV2kgGP7mg9X2qAIQKnyKSuaE7rIeV64KLrq+hTU9S3Ap/jzmuekCnRTizQ0UYizsD23oVeNpsGeVjSr2XvFQKdbBj2u1X7S/uo2piHHWz7Q8sei8SV7it6EfuX3po1ItWucipYMfV7X+ryKfdvdCzyeSqABBUxWYB+XzXi0fSa8mf0aCPBeNsDlCYOuso9UAacykLW0wDO09VZ0X2p8pmxoTnwj2lqqdn+2Zms6kfA6AeQ0RKpX8mweD9meqdit0qCAwTplrL0qBg0I76n2QMRgrwZmPXMjBeTLvFfuJdKFLaoYhpEiokJjEjdowPJj7XOuwNfF/yW/8Z7hdlJMR2XLjwNtL0jzEeEH0uDCEhB4W4N1FADvVO0T2pcbskN8GA2PZNv9Oi8035ryd601OVK3NEo0qfZAO04lIxo5FCv+t+EHafiLziNrbU8rmjO4DWWg8UZp/sL811G6RVxTxJLtcmm1RNHEigCNO+tFPqkh8Xnmd9fhDn7dE5+GTpeZ6AwjAVpQ4OcNsLfAqEqrn5kCNqfIpLS043aN4Rz3D74L0tZI/KEh02E9X3XGd/OUJwScPmJ9a5Zre5nB5IXfbX9u5D2CP8dK5pdNc4Y6Z9DjDnyn0ivmGs+Sxg2JxEgUn1WguprPU7XHek2XGih+m5x61H6vT/vN5nVCiAKcExX5Ve/8gK3hKm43h+sobSxZp9NArltZI632Kj4v21xbAYnekMde8x6tz43e7bJ9D403Rh3eOFExKOHPxMfED9zsQxUnbH1/mg6H7RNb2avLnliXjVobseachrdq+13xdCUP9TZylTRFKsJGrmjyZ0NfYbnOjT4E8FwAxTOla5QM7ys6GtEY6W8rpb8p+R7qvKIZ22nIrcZ0mlc2BmaTNPKrA/Q8UG0l28+Oapcq8L+8P5nP1cxXUktrw6bm1NX4ioK4rbTWZAK1G7hafEBaNMZo07e6uv6ejS7nq4wOkn1Z3ehpok8o+6HxbTu6fRQqOc3naHxd6b+5Doot2SHcLndrH27dV+0baupR6m07JWYhvFf8xdzsiVvntnDLhvbZGfihybHAjJsngT6o+C8BmDfrev4eP8fUqPb5ULHZIWiPJcXHa/TkhnbUf7Ofw9nh55gd6OdwPu7nSKvIOO1HumeJwJFxJkmr0PJyhILZGmWqm25wE8V5pA1BTFQ4l3wYttYGLDUFULt9VuLp577LO1UZ1b7swAG+DchFguvBhhH1qD7AO+Vs+wOjQ/2B7sf9gdEp2FnmZSd3BuMJ7J2Ka45RSt6ysru4SQjJPtD+2j1bir0u7WPZDg4x3lOp+Eyo4jM1x2fIVi0bO19dR61HHzy5Tj2zoriYjE1Acj4QwwdJUEX74hvYasnzLfZBznH0bvT2DCl3e28enCHlfnxvbq2yyRFgBJb32ZqlJqckGanp5SAJOVeS4IbmdStdffLRcxR5zm3K0GdJ0ax5TdbDlDKpWHNDCCOOZLv8+coTy6UecONyNZaSo/4jjuhSM/bL96zq0Kj2ZiRhjkIS2FSbRTlZwSG+fHd77w6Sw1Y1+wGN0rZWtSCIet6XYuuFyp9QN/4EsteY2xJXZRuSf2/0WfG1zCLZn76Kg5cqDh4myucgOU/sXxL7XBqecXM10f20vxSxacd6eMRmgG9V9/blL6MWboQEP4QA/ASU+9b8ZRuu6+QvwzMPyV+G6w/MX95uhOFdJgsvGo2aRhhhX1aLPAa8UqRlTlUGYaprdwzR11rpymsprUVO37a6TS6samHXXs/a2FxZEcqzgM21i0SoKNxs2PqWfexgi+C9mhP6/JIMddU1t8WYgxb11n2cFVv72AkP3cflh/dxHdThKK3Cbc3JaXI1RH8Np5vaU1Bu6MzS6ljlHjRalhOLbcl+h1zJcpvlLWpOC5UH64qer8l91rbeF3nKsU3w/lx5zBHyqB4Vm0/WgyQ7JJOg9jfi2flh8eza/3i2HHC/y1lQ6PFs1kNzle2jMohVW9/2c61FAOi3sGmpFs7YYuLPDx7fB1eMsnxbTxKvHq60WCycHdpqTJ3xvGdPVka9T2Pq6sUILtozO2Db39+T5Y49eaBenFU/RbaSrMrKFBEYlC6r/dX9D8r3K75b9jOjjdvkQoUW+gHDRn9tGh7jCnIcQ573HtkYox25RzbmL2Q7zhB+LsQsOaxif7tsnG3Kxvgw2Tj7sGzsx8mDD9y/lY3KWgBdU+zNSln+LKPYK9JyTPruSLtK9gYwLLJ4CGCvcZs15nyV4pRppfZdmCxmu2Qf79XFTHnUVKQgYq8Ny2uyZqidrOYl5Yy+TpvumgFepbmUiR6ZqJPlJw3usRKioggUVzNQNlks3mTfUtYXyuROW+i3cXHMztyXP4AZcmaYjEzi4hh9A0l2CBcPNvIH8sPyB+rwBzSJG5/hfy0X58aRGhc3lf910Pib8RzO6+v4IROVY9n61cn/NVRxwp7kBYwU9bhNE0B+LvvdfKIMS/xSqj1WyzuG1GD9vfIZm7lXB60sZf1l9SErG27KZ+vAlf2wfI7nQRl5pyedlZ218lk8x6LLpmWrSeXStGyj0oBXytS0rHWrI/vGphc91KOivuIl0kBO2vdJVF2838rDy8/RPO0qersZGSib9ude06aaW/+JLsBRcFUBNS+b5wxV47vT72UG1N3og3ilrztZE7rnfiNCv50Z0snMaDJsxMvNehHbLT5GocSnx9DEVlOBQxUigXuxkckdKv8gt1h0tYwTqaLhbH3Rdnltv5Bd5Wjzb/EuV7aOijwQDOtaXc/SPND9k47yR6q1eLc/EmsijL3+SASMrWP0hoIthL6xuHi7Fzmrt/WuQ/2RmfFxvev8ZODHZlR3avlspe02XmTeYZy/QKviS47Ad3OQJOdkxPdQORUcl5X8XpLU61YCn8+aHdvXbCqOXXCMYdmJr5l6vlWTu8PavsTkVTyadv8uDd4YnOEOO/EUX6djqjak0fyVXML87oewc+6Xg2UAvFe8r14UY5kFyLmSZADWlSSb1fDflwHxpgxwDpMB8cdzjufj/iDpaTZaSjwuwsqEhFoaIwoS89cptr0vuGozCXXezzrdVgRVSX2qDlDRaIMq3YS3RYTS1DPiOn4ZcH4zrRrwCRpDyG1yHa7I9G3OLvNVxI98qwOVjUVVTpq/hygwr5sxsAVSqIyygWSeCeUjn60bLUVVK6jKnIbPBUp+YSVeIf5djqhR9ctcfMGxS78NqcKJsxioOi9k3zJVPmRttKDj6c9XbRTgxItIC+IGmlwt1RNfNf7trNc7eClIU2OffzjkGC1KujV7ojPz7bGdzNjmpQf7h82P89LxWTybF12/0tzW/EpKIlt6XqLUyXU0nVZz4bow0XYkH0DlwKp8Nv2ekmspeW+Z4sv6+fxbtRX5a+PGeo4Z5zEmyir6Dr9P2G+WtRpG8xvFwJtctnhbM/mi1VupGlu+D8fjh41mp+WXkHUmzdC1mm3R1BpPLHpozzSNSdOkJFeparS7adE+R3Jc5BxLy0sotd9LyTOqO3kDem5Tq/ko3yF6lNzGfmDN0Na9RoPW/gk75xrhd86lsbnvt0vmsD6jN1icvjXwAmzLgG2Ty4HnH1JdXm9W2c4Pq7KtP15luy2TcBZHoi8K+kAilMMyxdqgsm52qNohSdpmIE+37gE2CGbSjcohxQ0mGuaFymoLmLLY5y8IB2O98lxlv1l6Fp6qMuxmwOoZO6091GSg6JmxXpsZ2+zUblaq3Y5LUTr7Q8THKZyM/SUsz2C96Dl6Rt+OrCTO/tF+89Vfo8lgbXayXkEp2CeUfSXz3bxPru9myTDsVHZ2M6c616arhiO1NlZNkXnR/gaq6ZCyd9gnJH6f3HyHBxFrdveiA80xU8UYUNOow6Nr2G6y40FM/IM8iNEmivDhHkR/MAqAh6VadI3iIW2ETfL6WDthRBb24W7kWjJF2ypfMFI1Ch1LWMtfljbnnLOl6gEK1raafDBuUR9RJE7ttEzfaXYjH+iZqWZfqFxgbqs+0GO8NN53x12TYE0No75LGVipHpqUMzHDKsngEEvU2sqZcMMD85lAZ/oBdVvhaFRplqhxoddtkR46wopt945a6SDOEeY3nFPdImE/iHaSUIu99P1xFxfW3twXdyEtux6hbQa2K1bOHYQ7Vacbntd5fZgczD7ueR3FxmVydaJXbmnztooYDQHzRQyOLWOeShRG/Y/Uxc1BG6X2VN/TMkizw+pkQtIl3gvc7u00vV2L6B5ai5j9gFrE16Jal2SjRYxcYN8xvVLVZ3RGmD2IWYXV+raK6UdC2+/hILBrZvsyN0K0SmH3UXQK5QNa/2+XLfWmbNmJiveqbBl4H5Ytp9F8ZF8muS5bapItKKkpLyat2SpPuQ3elGKFLnkbJB9W11YkX9WS+pEm/y3kmhK0rsXjnLIe7o246dtUzidrPOXzR02dDuUwSy6uxV4H9liiVY627yB5B3aAC29j7cUOwMoHLy1ZTiCCQly/PQsr2857dQ/Ne81+QN4raREbGZToP8J9NScJP2Cd2mE/dShWErdOk4oPLSZJfm1loTmRluEMegDFF8iHr6r66PqmohOP2axdRLMm34fijr6OCsLn15eaZiGezVqvjJDzNiuyEskrkudGHLuQKr7YTZus+0ZTscSnpH2m8Rm6VsSegLjUqk/MAWf+G4OmEshX9yl5x+TVRgVl+55ahUWokLRIe2LkIqkSMBitRlBivEx8bISwZnMuRSrxE9KiJEcK19evE9QQpRrmnTulMqx9vn1q4Ii6Yp3aB+RSbOcYuwf79H9GjnHFeEbIa2Kuy5wJwiNHxS2uARIcJvImzt1ufkUgvJByjmvmdynjmXH+v6myYISSStGBTamNIA/iAOt68D6M5ljys7AWJJbmmgFlr5K30XtHFpuLKIx7NTfU5Ou5iehmQJeYX1BHnv9maTdINnIxkvwwaZf8+DxF6nigdDJLecZQYkUrQjZCqwfbmhKqBPm6FQpX2Ln2cH0OnpPu0+dK9hrF9jtxDur5prZ8ECYh6Bc/AbemJzR9hbhBlSCyVneY9UFRh7lzx70eas7ingQsgZSV0lx/MJ1jxw3D3ouHxwhkjANZU0z6AE8dzFnXU5f0DvLUwfUfzyAwRm5cX512okfES7AW8mrFUiWmOoZwTpSNGHXGHemzPvKnqrUKO9e+Z86HMOf7eAuNKHC5fgG1uR7YEW+VIPlWhiw89cBIRv7xDNltDBWsHhHtlOPyEVd/iRadE9Il5VRMET2Q9QpdgjTaNGfoOaxNs9bNGvhE08Vy9TsjClSkbXM+lxd5Efv7uBqQYnkiXdDzU2EnFpImh2fylegJBbtnX5Z7jXV0oBsg/eHIirfrCLA61dYKH6hF5+VP0KJryegwycPbRCf9l7aWnDQv1ZS30rHUQqnxi7g+VjI8pC6ffWLlQI/kIk4eUsVQ6hLInyY4e0vdPycYiJ5k6RFljexWq+ypmuumflKrcxY836wTSQ513EXRvlUGYcR1joIYLVgDNWnyZqTqLchHeIV6TE112A0mJXqQuUZL1XNwzaYjOAsjlaNasM3nM3bgsM1hC9saS1uLdUmNpcKteZiJpVKpuRjwzjM5JpZzJDiZzAhHccr5r4ylGDCSNx2LOY+uHocovwaik4WHagAJWgnZvlyGkuxer8caAMoTkJWHSCPf2ZBGB/nLBt5Wv4UfII16XMFKvEcwyBXqSyJa9rBBHTIZLVGPQ4SCjqpQUchbXMlOo2wbRuUZ1VpuliWeC6nSJ6+DFY4wXyureQdnnIPmiSadKORgWmEnejx4hRFFdK+OR56WOiT8XfQ1DA7KVoEV2tQ3jANX+CfoG9wzrIOQh/iD1xSfWBMWyJIyWJhXqiiTT3aNhnV6uCQarckrtrdfBKISoiQKKScE5vytdowDFp9ux+AzD7FjHKoH+8Feu4h9NAYhQBIaJ85uT/yg6O8frwgNgCzRFCSi33J4H3NXYkLO+P6Mv6mt+g/oW2Yff97oov7ZNXZ00LY+b/cu+3T0k3qXOcarfdQvnnL4f+/xdlGtp9l2n/T/u63M/rTO/n57MK2djz5mrbX1ozQxvkbmP1lcwEaf9I/9Kz/WW6CBuuLOJ2fxz2jpprcXQ4eCameIW9YZJL672RSp08IM4dumTh308yoC0zRKQFXr92DuyBFLLQOwaajexGt8djyjRl4wJ3dAzCD8DHx+Zh6vgSk/jK2r9fjaNW7syAQmu7ixjtdZdVirMmwwC4wX16QMPGwfSmYzrEvxiecB22yfYBPpBaj1OA/27fUltXjUrq27rUX5PkgXbG78dWYugLLmQLkPMmtak+gUjBlqdo1U+Gk0vzyDz7O0fr4Bivkqbawf0uWxia2wQLwcdVpeLxdrbCXFFLjGkR/hrhoskVLMh4kn7au/LAoQQ/QMbKDGDdVHOqUW2LRSKGGe4n+W+czXHScgulZ3Pj9LmlefwVNEhcAm2RdW08qbG2Fr71N805qB87WL8WMoTczoMwjSsNCEZ6eJcH/If5UIkb9/zv2F5262PP7rDMzbL5eLTFoVolo3OcOm0EFrniflcjyaPExuIuAlpy/xsjTb86++pDdXNfCMh7v5+WpyEzgDb26iuQ0mNNDRFexf5gGwf6uOCwmoT56uKKguX2uSlqdI49hqr2m/FlrSElBrr36MDQeB/ufSArvbFhzuYYDBv97Z2g/UrPFjvLOdeLZUXGL7N7hfIfd7V0v2zRboMHsonfa3737EhrG5C1Jxs2W4tAMMMexVgcq6sx1gRMY0zF+SbrYy/69uB4jAGxGFKMhA/5XtANWeqNAgExlEnwde7oKpLBITG0DlLjXQVpKzpiYDLCF3tU9LFtPoLHY7khEdLbM53acrGbHhBTXsBu2rNRGaFp7oRFMON/zs5Y7MHUpsm5t24X1jafiNzXXmtdxvB9jAyE1nl3P8rW2Y3RlDDgavatGJZQkV33++3cZ+2wxD7uREHwZEaMdIRu+wZ3P6DWgP6IKdzQlYcNjvYVMZ2IN43M+vpj1MfHKDszDnUBO5Gdxw2OOGQnQeuikQwDDLpdkIHsMUzpqaa+uFM817ak3XH+kzvqeL+5J5AQKnh2ptkf5NakZD4w12mJmhObgOjLGHTdqbPdeZa715eZd2jt5EwUSdQsE+tkNqKIK404ygKn/ZyPLvjCxHJ+Ov2lsuQj3J3ioJ9L6Wt6a9xc5UosPpz95bO2gu6REoWafxfZ0jzIN6918wX2H1Oi9K0flb/ZpxUam6I7rDb7Ino4bye7+AonZw66RHaaU/klvfbXDriLg1aJhVT1yQqBn5OQEV1IojU8udnGa1OYYh0wy5ukWJANOTIKB2jHPm2NOT250zv+WMpZmfxR90DWr0wQGqnMKD9JY9LDWuMbkkpFFiWDJXo7QCSg/O6wBmn9OXfJyNdRv4GJUBl9BJk58gp5JBBBrj1aSSwLA6+XQArdXBqxpMRIWDNMKfvzu3Qoa4Oz/e5kEbI3kPAgq1ZzatyLCwoiGm9Zw8BV4z41gkvpJ2TDlqDjD71MYpqnok/S86KxXjvHUSXL/PcXLndcnx79TKdkoON1LaSk2tqmiPCWe0KAz4S/iPX3xcW5ws06VPcHrCfxhCh3YmaoAnM9hdZSSFOgEHg0xpBQnnwk6cSVAK/w57xQVBwY5yLAbmc/FYYNJOZfjccsCt3opAjl94vTykhHUMlPXUM9YhJxXm6hkXSXsfbPOESY04PmrjiokxPIb1xvlvp8PEVxK5xnI4TJOBeRA6DKi13Ot0iIBAvp2+bb2JzmH93jiuQElkLI6wmfcrTSGwOHHth4zLhXcsmTPHb9wfPkFG4v7Y4I0uvScmdnhqP29JBiw/LCPLf5PmECZzBOl7XXPYJb9K2LU/Vn4tQX61nACoN0P5Y6DthEnjRLloS1GDPeaagyRlCV0prkmyrSQQOuGYYE8dQKmx8TpFjDBxyvl1urZvhq9zzF+vS5ZcQpF39jR6gH65fVe2vpNt+w7LwTQt4uOaR5K/dT3tRgKyRqrb6/8mCbhzXE5j0+0Y16Df+Dd+0WoOkuB1Ovs36JE/OgR+5B5thsCdo60A+Gd7OwCujn0kAH55Matmq/+3WlrBl79PosF17+7hf8yt+Le9FemG20yfVxikLh6m6/vh822GvxRfbzFE/bBewhM9c1e0+u/pYqHi3P+wbMc7PjYwZr1af32a329EwL8fH/8B0w+zvTH9jrkzA2HHAlg/awHsrQUw/4MXwO5S/2f7V0+/8180/aZtb9C/e/TLF8DdWgDnP3YBnKNNBmR/+vyrF+DT1gK4/0UL4Hw+/tUL8Pm/aAd8tj916d90fu3kH/0XUf/m5LufrF87+cf/RZR/dLTBeJxfLnrN7eTXT//B8+905v/Tr5e85rbx9fk/dv4/2UZn/v+9uv//PtzWl/nN/bMXWKfWtPfJKK522L5bs0+TgbNJqdZ7VmBjwv2e7/keHn96XA+nNV6EM0TftfNO6Z+PLMzWKuxYq9etAsPoroy5Qyy49vH2whw5P21ldi3Np8UaJ+n59hE+5/j54unr/RLv9bx6wb8TmhxYwOkaRwVj+YcFAzCyp8cV7I379Qv+ejuZPk9X2fQR8/vvF1M5aQXLjLfAg9OX1fIJv67vl890y+ljNp1MJy+PeOcX/B8szBMVCuBT+NH4bXmbP97iUxbT/325/Sd8GuHv94/TJT0bT5nyl29w8HbJT//fl+kK/jw+ARG84En35f3XbLq+pSoCeORicbvMntRz+eTpaqpGQ4+bPtOF+L9beu0lvMWTmgAYzhrH4/Gjbl/WON7pVy53UHM3xad9vX/+ev9wD6T/laaSDn57Wrw8w4Duaeg0b8b9aoVfM6D8dgVoUl7gf3+/5NNbPO0Rh89UCQdevuIw/DK7f17fv/CC0bw+ZdntfUZXZC/PU6xooKtpBp6/Pk0nSNO8WrwSNLDsZfF8y3OIN/n772k2xe+T+9X9Vz5v+bTgAd/y1E9pilfNOr4s/6kIDGsnNBpTh+++tkc2mATsvfUGL5YijsX93+tXazvgKUiECX7x/sfpMgrT2bv3d3GjH8IPPh1vGEnmTl7tODt4gmn+gFKd3TzB+sMT/vCEPzzhF/GEzciFdfxpF09wjV08wf1ZPGHbe/6HJ/zhCX94wq/hCY7pvJ0nfP5ZPGE7pPOHJ/zhCX94wq/hCa69K8S+myeoB/54nrAdZfzDE/7whD884df4Ez45u3zvr/gTnJ/FE7YD3394wh+e8Icn/Bqe8PnTTh/jbtvhp/kYt3Mx/vCEPzzhD0/4NTzh6PPR2/WEnxWLtLbjDr91iugHF8Ey/mlo/5idBTGPjK3l+LeG7K1th6/137oYtvr+yxZj29P2WxcP/MzFcBQd/rLF+D+WSP3BxTCP/3ms/fO5sxhNtsovW4z/Y0nVP3MxPrnmr070srbV+t860fFnLsdnVYPzyxZjO+X6t856/JlS4+joJ+4N+Pr16Wmt/XYG0/cQPk3u8Yz/Dw==</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/azure_6.png b/src/main/webapp/templates/cloud/azure_6.png
new file mode 100644
index 0000000000000000000000000000000000000000..c75ba725e0e7d264850af86ea1322cbc1ed75d85
GIT binary patch
literal 2666
zcmV-w3YGPVP)<h;3K|Lk000e1NJLTq004{t002P<0{{R3G-$kL00093P)t-s|NsB>
z_4VxR?Ee1$_V)Jh@$vio{OIWDKUZb>`T1G2+4uMN^YrxO<mB(~@9pjG%gf6-na0`K
z+1%XR*VotT>g)3I^3Bc7wzs#`)YQ?@(W$Aa-rnBU*4D?z$NKvF+uPgF(9p=q$-=_I
z{r&ym;Na5I(#6HbzP`S^yu7uwwe<V_&(F`n!NK_W`RC{7;o;$W!{OiG-(j!P#>U3E
zxw)2>mg(v0<KyGv;^NcO)1S7%w6wIbva;sp=5fE@yu{JKz`(q|z>cf8uCA`EtgMNc
zp+#M4>Fn;N*z1tZ<$}lK+TP*U+up&+)iaLLw7tu;!N^^j$fc#GO=NLGT4(wE{^|Al
z*X{Ph<nrd}?!n*f<L2ky;p2YA;my?DXS&<X($>?{)NQiPy~M}{bj78yxuL7Fp`xOO
zm7bfNoNa%KlH>Wy=JBrD?3K{x;N<3w%;jvo-O<<DTeaHf^3Jrz&cVsed#K0&a>m5O
z#GI(Ft*xzKm#vGLqMe<cfRCAwkdSD5hGuz%fPjElYj#m*bLI2-|Ni*z^Y!ZS^zHER
z-0Shw=<&GU@3r3Uqt@zl!Qk)r-)g+wWVzg3w%W(e(!|TqNTJKHy1!eXyqT`Hu&}U}
zqpFjjsLbP;jE;_AbAL)<ZvEU$q|Qn1`1{=N_bbQr<L>gk;qb)a?*9Dk=jrRW+Uc9p
z=!nVWkH+84)7^Qv)rr2;Sgg)cr_LIG%dNP_x4^|@rNB6Yx{Ro_{_dx8k)L*lk#dBN
zhlhuKeSLg<e74waPhV!M(pUZ3L;Th<kHaAR{Qcqg{jlo$nB@A0-}(Ff_iowuKg{(o
z$n^O8@}Sh|sMY7A)8@|J<kQ*Qc)#0(z}Wux)}qGN_3zYcv(#s?)H03IU98buuFqDe
z&!4@?L!Qa3zsUac#kar2LW;kuw!Gc!yRf#qldrpjq`TYfxc>3CS(&q@t+A!7vF+`z
ztgWrp=&E0mrjnqgs;r@Tk$=M6edf<>u+?HjSYVmRG?Bz3D5N!S000LiNkl<ZXx`1&
zb+pn@9Ki9r%?-p2<~BN{OYH9M?(XjH?(XjH?(XjH?(S{}sM{0)Js^J1dz}0D13vHG
z9|J(>92xvgph4^_CXwW?Dv?NPR0pvRLW*S>vbaE#Ci!EDNdo&)QpF@$MvRQ{&cHv8
zDNC{;BbqmF{(oR3jjJXrP@q7BFi2cqiT@5$^I;BO6R3z_6f25pG#aG}`zs8BVe0MM
z6&MC0Qoj{9TDQKHVZz^GfVBO~5+zg~5Shv(OO`AP`+6vi@CuEIPG$TS$pD@7M@0A-
z)Ty@_DFTTUW>`xvW}yT2CxZz%e2fA$B(f(WBegSri=;H~slvxdJv41fPEoqZV333f
z`}a?nFd_IWjLd9KZ!vh3xj>{cQrtRROjJS%A~Rv5GBb3X*kkBK21mwpu8dAq(pY2C
zsztaQwZ$=|k)!e?P;4=3O(t{Bv`)H&Bay?ED?yAfTyfc-1pmnZdy5x0Yz*d4iv6~K
zhe04gC=RjV5U)6~!lcopa%OX-qN0m&Vqsx$BVi;6oh+)Diyv->zzB;b=J1RsyB7q(
z;Dy*K3JCoN<v%qr8kpg`W^CO3zLjrntvLo;JNhR~!BW#pmMk@yXPG;)alUe82MRFD
zvKIEXW*^`uB}sVzLFqE317mhfS+M8){h7Y?II*~^SX@znsadCFhni5EQZP3=<ysCd
zJ#W;gxqM7ffcQ-10WU=fGg$%#T<KKaE?izUc2Pjg%vOD8^gaH?x2~3_<hVS&6@1K{
z?qadHM~g~g?w|%Xp4Df>(0s`n3o!>9CIq000Hap{U{M0Dq;9wS*@hHX<HwIbDDci~
z+|&25Z)a-e?%rTa_XZu#bO63^6oN{My-nt01`P&{B$C;uPYN*&=NvtN@G*Fw%4eJ9
zuUd6B@Q0$PR61a3iWJw!vY4d-XJ+q|7q9mEW~N7PvA5}Yx{7?!Y6xmtsZ#fXmE=u%
zn0`acHClWwN8L<@pD@P`C9F~i{*kG5mdg1~RFy0e`C}6G?AdcuiWIBjdt08_cW2VL
zK%n{fd6&-uMza`SxdkunNivyyTq!xkX)33fm!`gBYEA_N!LaN*=E(k^j;U<^vXz^c
zty~U#&uX>KPm$tge7}a<8GbS{v47#mOlu&(;3f0qnck~5#H;n2O&jXx)lMb6I|F~i
zuoLq$Cd;sVLq|zCO!{u!rmjmd){nXLD<&-t0BoRba)kY(L+8%*I(NPouNn`dXj-oz
z3<*n>vRl&nJ-20oI85QJzSblFT(g=qThgpRfj;1SkY2B68a1lmZGOUEF@{tnGMZC%
z%%uJHC@AvFMXwr)L&DN#)Zns-nPDCVAV>l-^w+_}R`w>YD4oJ@5MtsbMyyr@iwAoj
zhBl?tbyTXAN`}MWQufJZC=@sj14AGlf$;YwT{fMC&@yHXttPmG%IM5gm(n{j5&<xJ
zOGa%jtucwVt{DIwVUtouCW#T|FdDb2V;2vTNy{hXB$cFwB>5P-Hdjt<&YY=|a+9c3
z>eGn`rAhDMuEH3O#)Ygnn!x%ihCoq8JSa{QBrz%lzHlHsCRCq3O=g&u5`0W@n?;+_
zU=r+%5f|Y&&Om^RvL`p{(=+ivkQjzrYIC}BS<+f^Ia86j0?&-Y?9S%y;tq98B1YwQ
zt6Ubqi#FNGl#DXSn`zuGT_&ck5Bw!XrH~wz+Tgef85|g+qtnvqbn;M`1e78Pl|&&0
zTyj!J5j4Zl@NY4)rz@|md>!bcULXutFihaj?Q%3DNp@6ew6fo0#^+0zzY~ZPeGF!&
z(-RD7w<~^+SvMqKvrcK8Fc<z?Oq@^!#bmR%JY+U=N;JsM3~sWdlMLpUPJjs#l@|Px
z5ED8frsYUUCm<|bj66<+F}-%a`?T{fF(?vQOyc@m-)>DEX$*$4C1rnc@aIJulP<Nd
zZrf6WFvASW<Yq#ZN@-wHIZ`qy<A(Kg1;?~$GiE>tOq%C)>eR{P*4CXE_P7xC^vO}R
z#;CEuN!96%AS}%0UekK?%F`k^Mqa!~ks<}zMIsP>CQ+jH29G(ONlk@!5CtdoXfP=r
zvZdZ{G2W{LNwAnJh5isj$w@n@amdvUQ&^a4xy5X?LGG?WCn|ZGw#AFzeblyX+XvAb
z;LP>J-tq*;_>XCIyY=nbwW}RTj8(+XyfAOxI<@oW1-Uo-?*PBWtgcmSeXUxxSWGk<
z-2%hV2K7MD6o%~nJRqt~E>(*C`qC8q4<&B1HgDntAXM$ulp(p6v}6X+3~f;j1tCk2
zTy3Id8p<RBQ4F&p>@5O9mQCr=+dU|VX1Lp>OPR?T`X8nlQk|;30z@-~h)9w&tq29N
zFM%ZyRoCTmCURO5fS6~LK~NG~8e4K524Y=e%HUFGBkf9+D=vt27^Bm{HW5YZY4C6R
Y3eD<%-^AUA*8l(j07*qoM6N<$f=bA##Q*>R

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/azure_6.xml b/src/main/webapp/templates/cloud/azure_6.xml
new file mode 100644
index 000000000..3f689739d
--- /dev/null
+++ b/src/main/webapp/templates/cloud/azure_6.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-10T11:29:34.712Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="ciBsy-NoayNiOe7SqlQA" version="@DRAWIO-VERSION@"><diagram id="WI9T0HZ2pTsCkuznbFz-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/azure_7.png b/src/main/webapp/templates/cloud/azure_7.png
new file mode 100644
index 0000000000000000000000000000000000000000..15adaf48732f9952f6b42a325a3bee88b0dafd7f
GIT binary patch
literal 2565
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
bB#_|)JH>Y1jgm}C00000NkvXXu0mjfpd4}a

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/azure_7.xml b/src/main/webapp/templates/cloud/azure_7.xml
new file mode 100644
index 000000000..db590f4bd
--- /dev/null
+++ b/src/main/webapp/templates/cloud/azure_7.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-11T06:52:32.632Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="-IVDzTJsnfXJOutBnB0V" version="@DRAWIO-VERSION@" type="device"><diagram id="WI9T0HZ2pTsCkuznbFz-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/azure_8.png b/src/main/webapp/templates/cloud/azure_8.png
new file mode 100644
index 0000000000000000000000000000000000000000..91c592b72086ca178d54c3da53e57cf6a1bb2f19
GIT binary patch
literal 4007
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
N002ovPDHLkV1oN)M2i3b

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/azure_8.xml b/src/main/webapp/templates/cloud/azure_8.xml
new file mode 100644
index 000000000..4e7e41957
--- /dev/null
+++ b/src/main/webapp/templates/cloud/azure_8.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-12T10:41:27.734Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="mwonfn4UzjVYmfwNJ1nl" version="@DRAWIO-VERSION@" type="device"><diagram id="WI9T0HZ2pTsCkuznbFz-" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/azure_9.png b/src/main/webapp/templates/cloud/azure_9.png
new file mode 100644
index 0000000000000000000000000000000000000000..6c927a3203dd757a7d79b94ca31a7fed0f905586
GIT binary patch
literal 1991
zcmV;&2RQhNP)<h;3K|Lk000e1NJLTq004{t002k`0{{R36KCzN00090P)t-s|NsB#
z>FM|P_w@Ai{r>*g*x2jq>-+uw>gwv_<KxuS)VjO7{{R2l+S<;}&hPK<xw*Nwx3{#k
zwenvw^78WS?d|C3=;7hv($dk&%E`sW#jC5U`uqCv@$u&8=iS}io}Qla`TW)G_SV+c
zz`($nnVGoMGTYnR)z#HJo5#GoysoaUk-;hh1pxp4{Q3F$+U)ht=JHvz*}lHMv$M0X
zu&|7bjIz~c?olw|EiZAV0MO<5)9Cc9(($3q@xtKlvfS;n*y)<m=Y+`Pe8l2+!rzd^
z-O$j`$H&K~r>Cj4c5ZHNx6?M1#Vq7BEE5wGjJ^u|{QTkY_{!q<_V)J3<Mfrq?x)!6
zpw#OB`{|F&=H=z(-{0Se!rflB+W+?0lE2c9z0JbH!m_fmsHmu<q@<6JkHy+w{oh-h
z$35^@G3Gojj=U`3C@glZ0CTAT{{Q~R;P(If^|jma#^mn3+wQE|?R~oIj>74v(&ok7
z;769<W4YXPz}srP+jqIxbGO%$%hs2~)6nL_;_tlL>ao-2t^Mk&{^*{|;+?v~lkbp|
zi;IhfhK8-TgudK?eSLlQifH}YP5sbByVX4MUNY=UFZ{|B6ciNw!xMwD4GRkkd$j;%
zl>l9c07PT}HBJET_WbGf_|)k5{q*(k_VT67@%-)X%Hr+!`s<|4>)r3_lEdfG=;r(6
z<<#cnzuDxX&*YZL;W(Axi^tz^u;16}-ul|xVx`yb_11^M)BN1hIFZuc?a|85(Wk}H
zFO1Ob^v}B2&EMn9_sYwJzspCU%E-vb`_sn%@5Scu#H-H3bg#qy^T74Lz-PI@`^mYJ
z%eeNrwr;z$g1)o*zpeDIt;*P{sMDz5?4tLuqVb@jsI8grl$Vs0l*QkXk&%(Z-Hg-a
ziv8z=@QZ`~-GH{ye5|*8e0+S5#(VC6dFyp~@`-l1*>SAWal_YVn#yOk)>-!0RHx8T
zuhLKSc2D9tJ^a`_;W9V<$u|7b9EraagSifYy9R%{0Ka;z#sB~Wg-Jv~RA}Dq*i~%X
zU=)Vo&oLx(XxXyh(kyARcI}v%nVFfHnVFfHnVFfHnVFec%d$<o@kytt^Lmlz!m@Ov
z->;733mdPB6lvVJaf533d;3S6Neap=C4d%L%W6OnRDK~WfFez&BuSEFVtvr&x)yG3
z1InfmapT5)bDYR=t!lU7La#E&3Q8Qm$OIyQ#2NiDM?mYej9Z)qgp=vxe%J6eG0)T|
z;qzm8N@fA2XUFQ*tJkQpZMi?@%je0>ic_0Wa7rZ(W#KqTDuJUJil&d-uu+pikP;v9
zUne}3vP*jnr~`7jbGqGma+S;Ok4fAh<K*Hm8EH0K*&4kMuLsNgruu!G#+>wGqb5b0
z6n)%MU?da}W~O{l_(k3&a4?ec8FIPHx6PUSSIpF@O&gG#iLc3w7CR3nrxu5^W5+aX
zls<0yhmcYlWxA$(+H-Ylkeko#cDvkVGFSA+G@CxX*}3AkKu~T^kttKDPN3|5n_=vj
z^hGmVf~1nI7M;)ABd1aWO71-6bCyq$GG%uE+ca(3*SnvZgTSq64+R34J?MRg43Cx)
z(=3`yW#=qFyR39f=dNwbb*@^q6@X#szI)OfG<^XCH1EnfP)cPjg=D}CB`C_DG>8(H
zFWeMn6SNi{e~kf&EA79sp^9Yj5hWqEIzsfC@{0l_u~vo;(F!4E6$=URLK%~ZVN5zp
zD5QjW45?D5=2JzAx>^yb5jBU=WCTSO5y$RLQ`2sU9R>-!wsstkr$8Ka9qA|OD`~?8
zr(Q4`^?ay^sM!p)y&NbU7mwo*9~?F2!1^w}d9+|ziy1V|pjO)rENBd(Q{dCY{FZQ)
zF^0ta5R3`N1Y@G*G$#{CEO}$1cw8_>QZR-RjG+W$D00Vy>;p~i7$Xmw%rO<-edq^*
zGqzu?G@Lv!Df*8al|n-d^CkGsJ0z_<G1;<>oX~$)2k9D4Yl`P1s8U5+OeF=aO|}Xj
z$4xj;a)rQ1u-h!6Xt7$YsiQ4M!P4e;NZNAb9c0b{DT4M{y?Uby7cM-MgB()is4yz2
zuSJ@6;J|wYeJ*p5Me=^tkQ`J@z0nE3^KC{R)j*5oQTur~$V5Plz`{pi`F<B4l6Y$@
z#%u~9rqPMDt8J;gVSH?RO?4W(1rls_LxfkIAQb<c!=cm0<BbYY<uq#p{8Fl10)HYV
zeB=dVBn4wA!5G;%m_VF}L1NV2f-#hQF{x&&9syNWKrXJ8iMl680OIw!btCnVL+ibX
zeDZ>pKNP6sO`AZ59%YqYTU<G^MG*rYj=}i%HVznowKs0=AjS$uxLM(e9IrxJ{Cj(@
z4eOov^obtv7)j<xYpU_X3l$5IC8lGazJ057tJp;Y!jM9f?#mS8*R6ZS++>WQ&LrPv
zVsV2Zk1C0(<^e61{c15?T`Oeba%m7y1P3_?dIe|Hmre$XLk}NLj?X;7po_zbx>{CH
zY&K8LG?7dJ9{-#|<aJJSWtED~O~!|rwaIkx@c;2TK1`=`I(a@E|D9;96CtW&8){p^
Z@eS3~>bR#~OK$)G002ovPDHLkV1j7YUM~Ou

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/azure_9.xml b/src/main/webapp/templates/cloud/azure_9.xml
new file mode 100644
index 000000000..9759f84ce
--- /dev/null
+++ b/src/main/webapp/templates/cloud/azure_9.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-13T06:12:05.308Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="bmjLRYHhKmQXilC2sub4" version="@DRAWIO-VERSION@" type="device"><diagram id="7gcUSTIZ7YSJ5vT40chW" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/gcp_backup_and_archive_api_hosting.png b/src/main/webapp/templates/cloud/gcp_backup_and_archive_api_hosting.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb3de01c03e0e322724c967ddf2834202c016504
GIT binary patch
literal 3689
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
Hu0mjfRPM^e

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/gcp_backup_and_archive_api_hosting.xml b/src/main/webapp/templates/cloud/gcp_backup_and_archive_api_hosting.xml
new file mode 100644
index 000000000..8dedff874
--- /dev/null
+++ b/src/main/webapp/templates/cloud/gcp_backup_and_archive_api_hosting.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-14T09:21:20.792Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="LOL246OiueiQhi32g1Ml" version="@DRAWIO-VERSION@" type="device"><diagram id="f106602c-feb2-e66a-4537-3a34d633f6aa" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/gcp_big_data_complex_event_processing.png b/src/main/webapp/templates/cloud/gcp_big_data_complex_event_processing.png
new file mode 100644
index 0000000000000000000000000000000000000000..4907d300fcb9191f235f7104c29152f39a19a618
GIT binary patch
literal 5541
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

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/gcp_big_data_complex_event_processing.xml b/src/main/webapp/templates/cloud/gcp_big_data_complex_event_processing.xml
new file mode 100644
index 000000000..dce52bf68
--- /dev/null
+++ b/src/main/webapp/templates/cloud/gcp_big_data_complex_event_processing.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-14T07:28:58.499Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="yiBfmpRGhgAflVsmv0S2" version="@DRAWIO-VERSION@" type="device"><diagram id="d1ab7348-05c3-a1e3-ca4d-12c340fd6b49" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/gcp_dev_test_continuous_delivery_with_spinnaker.png b/src/main/webapp/templates/cloud/gcp_dev_test_continuous_delivery_with_spinnaker.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ad74dc2bf072a63a259be30daedb2f3929c622a
GIT binary patch
literal 4388
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

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/gcp_dev_test_continuous_delivery_with_spinnaker.xml b/src/main/webapp/templates/cloud/gcp_dev_test_continuous_delivery_with_spinnaker.xml
new file mode 100644
index 000000000..ec9a03b4a
--- /dev/null
+++ b/src/main/webapp/templates/cloud/gcp_dev_test_continuous_delivery_with_spinnaker.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-14T07:49:54.170Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="NH2il3PLQ4_elvHiV3ut" version="@DRAWIO-VERSION@" type="device"><diagram id="f106602c-feb2-e66a-4537-3a34d633f6aa" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/gcp_digital_marketing_dmp_data_warehouse.png b/src/main/webapp/templates/cloud/gcp_digital_marketing_dmp_data_warehouse.png
new file mode 100644
index 0000000000000000000000000000000000000000..c1c135b1409a344d2d74a564bc5a8524758b4b33
GIT binary patch
literal 4212
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
KMNUMnLSTZJcCm2)

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/gcp_digital_marketing_dmp_data_warehouse.xml b/src/main/webapp/templates/cloud/gcp_digital_marketing_dmp_data_warehouse.xml
new file mode 100644
index 000000000..dbb360e55
--- /dev/null
+++ b/src/main/webapp/templates/cloud/gcp_digital_marketing_dmp_data_warehouse.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-14T08:01:55.495Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="jBwprG4rrysYBXsZo9F3" version="@DRAWIO-VERSION@" type="device"><diagram id="f106602c-feb2-e66a-4537-3a34d633f6aa" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/gcp_financial_services_monte_carlo_simulations.png b/src/main/webapp/templates/cloud/gcp_financial_services_monte_carlo_simulations.png
new file mode 100644
index 0000000000000000000000000000000000000000..e3e3d439e7b0690931c7ed44b64398fbfd5ea229
GIT binary patch
literal 3955
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
N002ovPDHLkV1i2VOV<DZ

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/gcp_financial_services_monte_carlo_simulations.xml b/src/main/webapp/templates/cloud/gcp_financial_services_monte_carlo_simulations.xml
new file mode 100644
index 000000000..68f069739
--- /dev/null
+++ b/src/main/webapp/templates/cloud/gcp_financial_services_monte_carlo_simulations.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-14T08:17:49.588Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="CtMQcRg2qp9xFhhdsiy7" version="@DRAWIO-VERSION@" type="device"><diagram id="f106602c-feb2-e66a-4537-3a34d633f6aa" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/gcp_gaming_backend_database.png b/src/main/webapp/templates/cloud/gcp_gaming_backend_database.png
new file mode 100644
index 0000000000000000000000000000000000000000..5c0ce4924c0137e69b3df709f70301edaaea25fe
GIT binary patch
literal 3112
zcmV+@4A=9CP)<h;3K|Lk000e1NJLTq004{t002)20{{R34r1LF0008<P)t-s00001
z0RjL30ZpOxKZMCmq4i9l^Yrxe0s;dkCnxv!_xASo{{H{^`}@qy%-h@B8yg(i+1Wsa
z$q*ko{r&!FX=&u-<g&7|WUcm7r1c;`cO5%y$jHbTFjzr_$=cf57%^N995ez12y3wQ
zb+z_TqxJjy`%a?u7c5WK)zylMiWVa~zP`S2v-OmeluJxZ6&fb7v9TgRaagDJoSd9?
zc6P|f$Oa1)UaIz}sHje%_37#9G;XFVP>n-EK@}Gp>hAV%aB%te^Q5Gt_xJeX;o#@z
z=T~x?Cta~_Zf+-1mrI}XPp19C!oq!heVw-7;@{iS($dPx%FoWrCt|%yS7|#sIe@G5
zmzS4Jp!4J7<Fm7~ySux_$<LIOls<5)J6(i`h=?CQbuce2W}5P^n7B=$^--z+|NsB=
z^z`@l_f4VoLW|Mk<KxWG*UQVxy}iBB(b2@j#6X73uCA_jgq+OG%%7j1wzjsGmX<m@
zJ5o|o_V)Jw|Nl*)_4W1j_xAQsr~mc#_W1Yr`}_Oz^!DcF=HTGq`}y|Z_5Zuj_3ZHW
z;Pd>w()IuU{o?ccOQ7}U_Wkhi@Z$FV`1$zn_W9!Y|Lpbp{r&yN*4@nB=j-e1OQrww
z^Yh%?+)1SV^78W6>hk6J|45(p=IH6v-{a2C&h72(wY9a<($dAn#X5BI=;`UXxw-ZD
z{_6Jp==A#D-rmH|)5^-qjEs!5*!!i>`r_i^p3M5(@AyrD^F@5~tE;O>qyDnU_=TzW
zz`(%z{Qv3i{KnY)tke6>-1?Wc_}}OEZJ703jP$OquGr-L|Ni>*_xPy7_`}1)prD}U
z`u~&0`Hipl!q)b>&h?YE^i+rRowx6Zr|eID<#Tg$<m~*7#Q1=`_j{uCXOr}fvG94F
z>(b-u+ve%_?&xWf=s<JfudlD8qoawc@~pw|LwD!a;N?nr;WljE%Gce;$H(^Mz~aoC
z<A!^Ad3m6^<n!U-(AwYewXpx*c}Ui%b^rhXd~{MyQvd=E@7MnQ{RA8J@BaS5(<J`a
zDE*B7%l`gUOwK;n(?KN%{{H^@?>YW`F8=+SW*`1v{{H^_5&r(~@3U)M75@JH{rUOs
zrj&_%{`~y=*VE3<z@~dp{{HRj%*(`@my~*DNB#Zs@bB#9;MmjC&dbQi#K5<;rk|Wh
zMujN9LI3~=YDq*vRA}Dqn00s(VHm){M7>i{L}okObUM4cySux)`#x{V4U7ryhKeGH
zHDY5roz9ru-QC^Y{^fgjI8YBk#eDePci&#_V?4j-{p#)ngHt*v2&EEJLCn>aDlrjz
zjSC7w0O7BpWB=}gep4JQn=@w_98dtLIi^f;T!U&Ev~%H<UqIujRRk$hJCFsHmQ|1i
z1waW13Xlf`l`dTxqB#}hK|vJ)fC@5MkSsvPv<9X2J!u%3DXAH+WwN#FPpn_NcHN0}
zfJ}aQ{VwLyWm$nMyLPQxzjpolT_>)b*tK@u+VyMK?UF5<;&T|8j%ipLmzK$8@}foM
za(Mx{ymUa(0tIA6<yS5T1yq0#uE`3>Wby(93KT60C7^K{-_xXupvhE@MT-_gfpgL3
zMT@3RUA%cSd}13GZ(a=7pczhxnKJbk&;&9wI+cSg40*T{KIO>+5!V1=9!C=kwEqf*
z^biE5_<IoiRS16`pLzJ;R|FG==FQZiMT<<C@^WN?h%In|3p|szI{c6?WJV%fJ%4u;
z!jJ<DBCc>yI?5ARIv>eol$hxD*ZbaHUQU&$l8QrOrN(%r86s<<F<L5(SCVNxlEG&(
z>bMs#(X02jk}L=A)lMq2E#A1zc66IKB*Y$Svps)qB|MYfXEG>ltq(6>-9D_O&GZ^8
zO`G(z*=(i>g`PH<O$NhnmN|U;#ao=jwOTDjX%z~s0wM)LKn0%^zgdPj9EXzxdys?^
zNBp~G7zrN!j11tH@yqyS{4#zSzl>kz&&mkh@gp)}y!@fe%;ja8w=%-a?hyTeOyrDt
zGXSVvh?+)B^FjvNOQgpnv_yhq5{hCA&QS-S1g+mK6R{*BA|eXv4G|lnm=N$rMhJ+6
znK5O;>jWiI>T#T=a0P)lFjNg%0jM)#X-RLGMn-N}uo}4eY&FAz)i;+$@XPR%E^UHk
zjXgoJ%~tYWQW;A{F~W5irqkhAJHaPfqgvCwBXY))B}+EI!2%)ll4lucDW4-}j+_m;
zha@CjJdmIw4YZk#)#^>3GIOYYgPaWTrRF<l&i2gAQ+v*6qE@Y3#juivjWs+nLXi_8
zBa<~}it^?27g8o1=x`vxw9Rt#o;^BLY_)_&uZa#_gR9%-ECHlTQ9ec2xEiy(Vej5Z
z%^|fK!QsNK2rn{|wU7WP5!|#{vt~_kqtsHa+#0L6ZfIyoxpH<}onS6ARjaezr0@pl
zCJlvl?%A{FAi~fmR(vS~!Q{d{3$wuA%mN|E<c3<986m=`MLck0CU;hW*RzQvA~otA
z8)G)c?AwkVHc&{X<&_Z$#v>=i1tN!xAVtG$4I4Jh#xXXV3q{zOlrO)xGC&x}oZPf$
z=GK@kYH7SxY?UI6SEgHVdI?9J;A9!W=d?-jRcC&ZA>HF56SZ>h#*JHcpL?`Fjx^CU
z?JhILP_TGSG#p9^a+MJ#BNCNLA#}l2#z2zc0I!U};F6iReVdM4y8iS5mKd*6BIH)4
zZW-HAn{C@M+$r-#8gc}>%M6J=1LIB(Dp8v(6QSO{Y5$EUPj(=^RHec(w=&{T#86Rz
ziVFip!tay8w(r@xb?XicLtlZboH80pee&%73lEWwb!KoQV`slmkwDehN$s6XR-q7N
z!qJwPO&eoQBFt<e%?2e&=#2^!O~AlNmYEg?GHl8|Gk(k~BQ2>1lu1ZkzfGx9r5fe)
zHZ!deJ$=Xivk%T(+jQ_yNy~xzp-J|mYmVKwTaH<h#7L_;tY8U;sU5p~d2B3H$ta&i
z@yRrOUGw6_i!~F(sBIxwT623Ple1B;Ud@m6*}Em?>bdjhW47vO1Fh5(w1Lp;%?7;!
zCJgna{p^{*sWaC#Gj1;Yk|n${VzH4yEakc>zjxhKBrvdR+}^NDXZN3bc>eCrL)Q3s
zRbsqRiaW=Qu|_ycjT(_NmL6Za6wZiw@E2fWUKvU9R45Ls8Q%cTDRMJ_YlWjDF&i)3
zy@4pDRIHS$lu9kefG}nNPY+{JC?aQYY*+yMwSx#=nP7}U3^@Nf16ygM@=)`xGvT_p
ztNZrd*^B9%)B6+JPqS$n-05jF8n~y@xDdr7(+vyOtBk66u?ffAt-uZ3ufXUVd^WWy
zHG@t^Q91@ncZ+8>O+<*$C#qsqBy!D6x>2oKwrrUz*YH-ka^)J9%So#u(3~totK5=k
zG-}CY86CQ`bLY-D#Nu`ZE?l`&y?T`^SFTsDQ{`%$j8FtiA41!X9Ys9AZKrdiG$`F8
zr4@uzCT>6M+FKDuQA}6z$pC?wos<^{Ki$t%4=z)-L)kJCo2BG|&~g<mCB-;S0l|{q
z0)|4|ErbI92H@h{4vuWvdgSV+-D;^yoM=>HI*{?=<|=>HLb(f7ty;IN-DWSVS6QP&
z#ITP>(}+cKs7IqhKvhq>Hb6LKR_@riZ}#pj7p`qLnIUNgH<|hBX;GB5NRc9?O4TiE
zv02KR6UEASm01-cg{ez2GU~RaiU6=1Ffw6YK)}?F+;R5W>C;;-+}SRTHR<WtSb|rE
zALyq0H4|zcqoPZeu~)Q*)UItys%?Uv3Z@)S2e7AR#7yDdFl!cc)0Ry)&fU4Y8;L`r
zA=%NfUdlj**a2)UX+=ELZ<E78^HZm1dgk=0Gbc3~YWu#JM^Dc)tB^s5@y;gqBd7Y9
z>|I85$(}uXXE<Hy+&hr_Z*RMa2n!E~+fEdB@ZiDi{JXYi0!6$8e*d#}m?Ba`hKIq!
z96<sGlC9r4WqtzT4?OrsEnM&=3z_ZUPrRRjw-8@517!Zl`<eNCczi$OnScJx)qnMZ
z(J$kd@yqySeiYJ|G6v#jspBh|aRUZs_*n)qG9Lk0%Hzg;V<t!d0000<MNUMnLSTX#
C9ePy&

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/gcp_gaming_backend_database.xml b/src/main/webapp/templates/cloud/gcp_gaming_backend_database.xml
new file mode 100644
index 000000000..a2eb3c636
--- /dev/null
+++ b/src/main/webapp/templates/cloud/gcp_gaming_backend_database.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-14T08:23:01.704Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="AN0eZMUTviYOKFKOiC26" version="@DRAWIO-VERSION@" type="device"><diagram id="f106602c-feb2-e66a-4537-3a34d633f6aa" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/gcp_general_app_engine_and_cloud_endpoints.png b/src/main/webapp/templates/cloud/gcp_general_app_engine_and_cloud_endpoints.png
new file mode 100644
index 0000000000000000000000000000000000000000..c842f24b3ce95a84b497c14cbd7ec27e6e26968d
GIT binary patch
literal 2925
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
Xl2#LrDa2Du00000NkvXXu0mjfR0$=6

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/gcp_general_app_engine_and_cloud_endpoints.xml b/src/main/webapp/templates/cloud/gcp_general_app_engine_and_cloud_endpoints.xml
new file mode 100644
index 000000000..3d75d0b45
--- /dev/null
+++ b/src/main/webapp/templates/cloud/gcp_general_app_engine_and_cloud_endpoints.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-14T08:30:07.194Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="fgPX_x5qwApdTGJC36a6" version="@DRAWIO-VERSION@" type="device"><diagram id="f106602c-feb2-e66a-4537-3a34d633f6aa" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/gcp_internet_of_things_mqtt_to_pubsub_broker.png b/src/main/webapp/templates/cloud/gcp_internet_of_things_mqtt_to_pubsub_broker.png
new file mode 100644
index 0000000000000000000000000000000000000000..146f8a40045592f4714cca41489e077f47089ab9
GIT binary patch
literal 3786
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
AjsO4v

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/gcp_internet_of_things_mqtt_to_pubsub_broker.xml b/src/main/webapp/templates/cloud/gcp_internet_of_things_mqtt_to_pubsub_broker.xml
new file mode 100644
index 000000000..8a3ac7bd6
--- /dev/null
+++ b/src/main/webapp/templates/cloud/gcp_internet_of_things_mqtt_to_pubsub_broker.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-14T08:37:53.043Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="93-06ZnemS9f5Bwps-Ei" version="@DRAWIO-VERSION@" type="device"><diagram id="f106602c-feb2-e66a-4537-3a34d633f6aa" name="Page-1">7Vtbc5s6EP41fkyGm8F+tGO7pzPNTNtkpo8ZATLWKUYUROKcX39WIGFAcoMbkjiN404Dq6t3v91vF5GRfbXdfcpQurmmIY5HlhHuRvZiZFmmY1kj/s8IHyuJZ44rQZSRUHTaC27If1gIDSEtSIjzVkdGacxI2hYGNElwwFoylGX0od1tTeP2qimKsCK4CVCsSn+QkG2E1HSn+4Z/MIk2YumJ5VUNPgp+RhktErHeyLLX5U/VvEVyLvFF8w0K6UNDZC9H9lVGKauutrsrHHPdSrVV41YHWut9ZzhhvQY41Yh7FBdYbtmNYezch4uIX3yiNALF8JmqFpiubryKaRFC29cYsTXNtuJrsUepyjWJ4ysa06y8tVcu/8DAnGX0J5YtCU0wF0p1GHATZSgk8D06fdY0YQIxsHt7jmISJXAT4zXfUJ6igCQRbzVE78bynsk/IJ8u+Qcu7nHGCFh+JqZhNN3PcstvFheOXFZ8LWPf40u56sLhog3bxnzdUkVdOwjT8OXwriESdvmE6Raz7BG6iFbbml4Kr3mU3iFQ87DHpCtdZtOAozMRQiT8IKpn32MBLgQcDkBjrIFGx7hgr5RfbncRDwSXUZBal1GJl7uAI+MulbgADQ6NBI2Snd5abujQslUVSgfNMHwBct+OCzq1ihW+UgKbqY0op6kt2J6Artc5ZopV6m32MtTYnfSwVEvJoP6w/FHNIsJVwwJmbSMZC7mkDHI4FHfIz2lcMDzLAumbXFrfWR3H1bhm7ZHSoQMwK86e9Kv+Jpetk5ZNaqM0EGFKDTYh4Q7gVGPJIA1byRD6hSL45YIqSvWAHlBShrKuLUOUb0rN826CApFfR6aGujq2HZsTZ2X/xuVUZ97g3WdYAprTrLpYVI4dw27v/HqP0I4yJpaNkY/jrzQnjJQjskqJdaz90mnfkjDk2+/G8m5srvu1g+9YA6bypwM6Swugvfs8jSABGUMG5gZkHEdFjD0dJIi0WeDCrHlh2DAyGStIwyGkReIWxz59WO4FjQjAUVc2w7W0WRuIJSLmdXLURR4D7Mx43gYyP6bBz9sNSWTDisRymvJemJOTMk5C3TAQNwbBXWPIv5ixR3GPCkZBRDO2oRFNAJi0JHxTcRGAlGO1nEfGwm5ks1QwGuWPLrK1PPlgzpDTIguwtJKIQqCJCEsIewJ83F6/BXBvJPYOaHI/jYA2A7XmPJnmUW3OlZXBxS3hv0Rumcn8UUq4ylrYc38VVDZc5KVyZ9Bhmu72bXUSWuSMQuppXH+7va0SVbTlaVw59UV9K1Y06qS1gDx2dcP/N3yxzzrFrXbU3mVz3x1XOZ4PG+6hjccHsp5WZtQCkHaWJ7CpsO6B0NtKiyWDa7LkNuEszdV4tRwmHx4r+bA10TD3VJMPm84A1G2pOM+CDWFAvkUm0PmZ+3XCQ7FB1xzzEI+ivIlICUGBVIg/JQwrDEpf+X0J5SxmoNYnE2fzuSWUZFdNrlYnicOWPODeHRM7qoW9sa7iGSI3m6hp85kAT44AXVdDgDKHewMClPtpBIbKubuUscD3JMB5Dy45gWKtm8LXFuudwysjJJX4lHG27sYZXUl4KIt/4HH3BoZzyQNUK/vZ5mL2LsUOEZ5UBppq4pOOgIxBakdPQdpwtaE35p+jasMt9UmM70KB61YJqKuz3GMVrquzdNHfdmXHZ1ZaF51ay3QvvZeptZwz1bwDqploqEYmnW9ANZ5aa6ncofPUkBYQA76XRyWqtp/LLi/0YO/oAsHuhmfbUuOHOZ6oAcSbDGEdU2OdVnUb1ErZV7ASsUpRKyqE+XF16RXdpkDtMHCZRAQ8XvTYHKi42zLg0KRPFW6aujL8O/J9wq6/NTZbTdhZpEj/tPof65a9vX5CO3wf6ppK5xN7yloZ8g5XZnyV56utIv8PHq62nwdM9GlAHcSOOqN5tcer3ovQvXum+9One8/S0P0bPlqV+/mY53rH0r/nKtWZqaN/Tf0wyMmeZw9K/58pZ/9Zmsbg8mUc75sCwJgG/Z8Wq6E0fVVGe5kTw9oxP/qJoXcStNaUCXIyzozWJK82o7lvx2i6183OjNab0Wzduyovx2i6N8Cey2hQHJCgfzmrntSeFqGJt9wKP4e9vWdK6/8a1d9NaZMzpZ02pemO/7y3O/7z1OO/M6UdQWmO8apFmu4I7c8p7YZlGPEXj2bgPI/g8vnRzLZADK1jsPVJElsod/eeqa3/ueNfTW3eh35NfIBINX3VSKW+KP785PsHaGRDixz3DlNzEn0rsNj7CYUnn0S/yn2958D0IV88h9v937dV3fd/RGgv/wc=</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/gcp_lifesciences_genomics_secondary_analysis.png b/src/main/webapp/templates/cloud/gcp_lifesciences_genomics_secondary_analysis.png
new file mode 100644
index 0000000000000000000000000000000000000000..7c5809ca23e47c5c395b9ceee594376bf1a0319f
GIT binary patch
literal 4032
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

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/gcp_lifesciences_genomics_secondary_analysis.xml b/src/main/webapp/templates/cloud/gcp_lifesciences_genomics_secondary_analysis.xml
new file mode 100644
index 000000000..581f24e34
--- /dev/null
+++ b/src/main/webapp/templates/cloud/gcp_lifesciences_genomics_secondary_analysis.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-14T09:17:50.729Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="8Pl98xkQBMosHqb3Yxjx" version="@DRAWIO-VERSION@"><diagram id="d1ab7348-05c3-a1e3-ca4d-12c340fd6b49" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/gcp_media_hybrid_rendering.png b/src/main/webapp/templates/cloud/gcp_media_hybrid_rendering.png
new file mode 100644
index 0000000000000000000000000000000000000000..c9d207b998c41bd37fb5d735e4c90d449df93a8f
GIT binary patch
literal 2941
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

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/gcp_media_hybrid_rendering.xml b/src/main/webapp/templates/cloud/gcp_media_hybrid_rendering.xml
new file mode 100644
index 000000000..6df474357
--- /dev/null
+++ b/src/main/webapp/templates/cloud/gcp_media_hybrid_rendering.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-14T09:09:08.467Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="6T6ahdA4_Q3bgRC2vK8_" version="@DRAWIO-VERSION@" type="device"><diagram id="f106602c-feb2-e66a-4537-3a34d633f6aa" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/gcp_retail_beacons_and_targeted_marketing.png b/src/main/webapp/templates/cloud/gcp_retail_beacons_and_targeted_marketing.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e54a7a6af68662a330131040205df243fdf06da
GIT binary patch
literal 3997
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
DaDQxv

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/gcp_retail_beacons_and_targeted_marketing.xml b/src/main/webapp/templates/cloud/gcp_retail_beacons_and_targeted_marketing.xml
new file mode 100644
index 000000000..ccd31813c
--- /dev/null
+++ b/src/main/webapp/templates/cloud/gcp_retail_beacons_and_targeted_marketing.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-14T09:11:41.065Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="7ZGTOOnRL709FlnMmNbg" version="@DRAWIO-VERSION@" type="device"><diagram id="d1ab7348-05c3-a1e3-ca4d-12c340fd6b49" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/gcp_websites_content_hosting.png b/src/main/webapp/templates/cloud/gcp_websites_content_hosting.png
new file mode 100644
index 0000000000000000000000000000000000000000..1be164aea6b31dc9347a15a583e7eabe971186ed
GIT binary patch
literal 2716
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
WfRJ(r#V(fs0000<MNUMnLSTXvNUbaY

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/gcp_websites_content_hosting.xml b/src/main/webapp/templates/cloud/gcp_websites_content_hosting.xml
new file mode 100644
index 000000000..595a510b5
--- /dev/null
+++ b/src/main/webapp/templates/cloud/gcp_websites_content_hosting.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-07-14T09:12:33.682Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" etag="tOkZ9LCShfkOJWVUypH4" version="@DRAWIO-VERSION@" type="device"><diagram id="f106602c-feb2-e66a-4537-3a34d633f6aa" name="Page-1">7VnbcuI4EP0aHpPyHXgMJGSmKlubmkzVPFLCFrYH2fLIcoD9+m1Zku8EsvHsZC6YB6t1dffpcyR7Yi+Twz1DWfQXDTCZWEZwmNi3E8syHcuaiL8RHKVlarrSELI4UI1qw1P8D1ZGQ1mLOMB5qyGnlPA4axt9mqbY5y0bYozu2822lLRnzVCIe4YnH5G+9Usc8EhZTW9eV3zAcRipqWfWVFZskL8LGS1SNd/EsrflT1YnSI+lHjSPUED3DZN9N7GXjFIu75LDEhPhW+022W91orZaN8Mpv6iDI3s8I1JgvWSPQN/FBm5CcXNPaQiOESPJGhiuqlwSWgRQ90gQ31KWqMfiR+3KbUzIkhLKyqK98sQFHXPO6A7rmpSmWBi1OwwohAwFMTxHp82WplwhBlZvLxCJwxQKBG/FgvIM+XEailpDtW5MPzXFBfb5nbjg5hkzHkPkb9QwnGb1KJ9F4fbK0dOqxzLqFg/lrLeOMEU8IWLe0kXdOKjQiOnwoWFScbnHNMGcHaGJqvUMhRGVQ3OFvX0NSGuqmkQNLNpVIqgkCKuhayDAjcLCCVy4A7joRBaClYnb5BAKFrgO/cy6DkuwrH0Bi3WmQQHuGxsGAx52LnZx04d234U6OxmGB4if26Qw5FY1wyONYTFVBK12ADW56QHodptj3otKtcyLAjUzZ71I3TA/ijnwYsHAcgOVX/AmB0sukxglAuKhTGVjCcDG5bI/0JyL1DmTws7tjblyz8bOfGsKq9RyB9JYcerYKWfZ7Yg5Ri/lptZAyjnGaWhcnHGG4/U8jwOQJVWkjEc0pCkid7V1UWoNDlSuNNxB0AaTRSVH3ShxxPgqJrp1WVYhERHBaXAjdBSKG0L93ecoTqW50QlKjS5fMedHVUYFp2Cql/xASyY1e6gReLJmzsquarTgWh2gWH0YGOWvD6AA5VHlk5O4yGnB/GrjYSvvgyNCzKuYqMiKQLyIoNdRBfgWHRsNMkEc+WkmcS3j2m1BU7NJjS455n/lkdoBDSJZxSwXq/iEvxU4530F6IYyKH99uq/ytcUO7XibLTSLEtrklBQcA59pEAhrVbI0zB8psFtMBQJ8iDJmDV1/6DRI4iAoM0djptdD7wQ2lHOa9PhogI7m5W8Ar3vBw0/QXVj2oJL1aAs1evkU49KY7bodtJjeAJMNEJlpjMJk9vT87qGVo2ofjzbV9qrhkQ6Wpq64XpCf/qYEzhI72NetURqsE7qJy/iDi/lpn9fpcLHbqxRtONkd2qDZo+wurqxOjGd6/lE3GMCB099Tl6ojwo/VpdlPpUu2PbouDWxwg6Ckc0RqccqrcyvTZ9M/evWz6pU1+3/1av4L6NXstW7/ZfVq9nvq1Xc+R5WPNvQwFwqZlqyOkDljC9krDtzG+bR/B5LRDJ45QOZ6m9ITiHFZ2vF6LD3wfsQ0BxjE9UYJl9kLl341DePb5etekdLibfTfjz+UwNVb0BTzPWW7tQD32kd+1OHx7maASZddvhdQedrdCVTtOm/SXsj8LkMMSUyVL+cxczwtMbY1IDHWKBLThueV2YHdWPoy9M3kknfjAS0Ab5/KD1Z9+n4rsbwTmvA6b71Bl/ok4c36GNC2N5LE0IcLeTAQDpmIb4baJ963gspzgs6DhkkeIT6mIHupj/PGty85jj5idA8dS5pkQOgw0V0axkARo/GQa7b0/RIeivDhoy+oY5ExeXPry/WtsVzdO+OjkyeTQT66/IPPC3ykR2nx0fy78NF8jB0vFOvvw7J5/RHevvsX</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/ibm_bda_reference_architecture.png b/src/main/webapp/templates/cloud/ibm_bda_reference_architecture.png
new file mode 100644
index 0000000000000000000000000000000000000000..9a889fe052b7c60ced8049e731a48169292af174
GIT binary patch
literal 4639
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
Vk(~dV^sfK_002ovPDHLkV1oKkMjikF

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/ibm_bda_reference_architecture.xml b/src/main/webapp/templates/cloud/ibm_bda_reference_architecture.xml
new file mode 100644
index 000000000..d7d79b1a2
--- /dev/null
+++ b/src/main/webapp/templates/cloud/ibm_bda_reference_architecture.xml
@@ -0,0 +1 @@
+<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="device"><diagram id="2f404044-711c-603c-8f00-f6bb4c023d3c" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/ibm_blockchain.png b/src/main/webapp/templates/cloud/ibm_blockchain.png
new file mode 100644
index 0000000000000000000000000000000000000000..08cd97aead8edaa20b21b6f08efd0ddc1f26489f
GIT binary patch
literal 13303
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
ByD9(x

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/ibm_blockchain.xml b/src/main/webapp/templates/cloud/ibm_blockchain.xml
new file mode 100644
index 000000000..e27085499
--- /dev/null
+++ b/src/main/webapp/templates/cloud/ibm_blockchain.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-04-19T13:11:52.693Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36" etag="DJXPJYrTTw1msulxKAA5" version="@DRAWIO-VERSION@"><diagram id="eIo0H9kK7ql945uVP1NC" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/ibm_cognitive_conversation.png b/src/main/webapp/templates/cloud/ibm_cognitive_conversation.png
new file mode 100644
index 0000000000000000000000000000000000000000..b168f5f3eabfbd18874d1e3abd5ca6d134b8e76f
GIT binary patch
literal 4438
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

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/ibm_cognitive_conversation.xml b/src/main/webapp/templates/cloud/ibm_cognitive_conversation.xml
new file mode 100644
index 000000000..f28cd217b
--- /dev/null
+++ b/src/main/webapp/templates/cloud/ibm_cognitive_conversation.xml
@@ -0,0 +1 @@
+<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="device"><diagram id="2f404044-711c-603c-8f00-f6bb4c023d3c" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/ibm_cognitive_discovery.png b/src/main/webapp/templates/cloud/ibm_cognitive_discovery.png
new file mode 100644
index 0000000000000000000000000000000000000000..fdc2142ac2faa7200e9b29a8ed024b5180151056
GIT binary patch
literal 5148
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
KMNUMnLSTX#Oh&{2

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/ibm_cognitive_discovery.xml b/src/main/webapp/templates/cloud/ibm_cognitive_discovery.xml
new file mode 100644
index 000000000..239f9fdfd
--- /dev/null
+++ b/src/main/webapp/templates/cloud/ibm_cognitive_discovery.xml
@@ -0,0 +1 @@
+<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="device"><diagram id="2f404044-711c-603c-8f00-f6bb4c023d3c" name="Page-1">7Z1bk6K6FoB/jVXnvExxBx+90L2tbavlZXrmaSotac3ZCBTQt/Prd4IBgYRubRGwG6eqlSQgZn2srKy1kunIg93rrQ+87Z1rQbsjCdZrRx52JElUJA2/kZK3fYnWVfcFGx9ZtNGhYIH+D2mhQEufkAWDTMPQde0QednCtes4cB1myoDvuy/ZZo+unf1WD2wgU7BYA5stvUdWuKWlotY9VPwF0WZLv9qQ9H3FA1j/s/HdJ4d+X0eSH6PXvnoH4mvRHxpsgeW+pIpksyMPfNcN9592rwNok76Nu21/3k1BbXLfPnTCY07Q5P0Zz8B+gvEtRzcWvsWdEbygnQ0cfNRPblcgB6Hv/gMHru36UUNZkXS938c1j8i2U+W0B3C564RxueNGVwQ22jj40N93Jr4o8EMKBPmStWvbwAvQgx2XOO4YPGDe5KGY3EQsJBmXsF1Ae+UZ+iF8TRXRLrmF7g6G/htuQmsNSiulV1b2hy8HFLpdKvBtigJdo1IFFL9NcuWDCPAHKgW+RCRNZCQALUwnPXT9cOtuXAfY5qG0HyEHLdpF23AX949N+qqfUMmTStTlPfLU4Iq1DYIArePiG2QfevogGQUfQ8diT8KFqVPwUeqE/8EwfKPH4Cl0cdHhx4xd18uIlMdVVtgSJYpeUpRyhKXPZKGIyQ/cJ38dP/Yifb7xT91A2lBSqPiJFN6lx4c2CNFzVoecx4LaslA6CxgB/+0X7Z7o4Dc5+KEezQkGhceJXjYn0am4Y8FbqoHnIicMUleekYKU8hL0jPbStewIcFJz/GH//Qdekx9yJMJamQjDVxT+Sn0+SO49qbbgn6AEC+A2mgG3mqXVMN6HO9dcNMqmW7883XqL9+Xx7jYDbznHqyC+z3euvSwI5fKtsNOBNN/QfnBfitGOqvFnYnkjPLvi0y40T5fTycmBdOEKSRd1hSU9KazBmtW7rTVbl9ZTZA4LYula7/iZzfuKpWXhkixw9IKkqPWxIJfJAt+IklpD6WRMVA4msfVUs6Gk5gyfWL8VGUr59tR9V948QCkV4dj+SQ4+b/9QUyYNsPBdANYapueMOse8bwyCypvyqVJ9INRqCH9nECQeCHJ9MyKhThC+79RYUnkmcJ0gtNOhZrFQo5mglzodalk4Xy/UyEK584ri+EKLyfmYNCP+q0rZqa5Cb7Zwapxrr0piDtEz58b69SW0fBEjhzf/VWv0/19fNssXAUHngaA1Ql3p8qXVT6kJKO04eb4GakgqiWjkxsmywSs1N6RVd2dSV1+sU2/9vjWBwEvnjZO0qwdBFKiXJ5VtP1v1xyN8pjAxl/fT+d8MKSF8DbMAxCnzNnwkNXFyTY8W75BlRQQVdV4mid8CwTahLCsqCk46mZ8WFSAYn0CESH+AmBOqRr7FA2vkbMbR7Q/fz7o9Pmc/Xjrylj1M5eyLsbc1nbMvlZCyLwpHrKKwEX0M8+sVLOTDdYhcIjtMLylPSzsjrQ86npXUxgcWgsyqi2OfM3Z1RtGzXIoIu9l1FyIrQo4EjW4ZEtRaCZYgQT1OM/pAZkopT53OyGwwnq6GrTI9W46SkLWNedq0ezFtajByNSdLcz6bjxZmK9zzH9I4zhUvzmRki4fKS8m2y8i253k2lkqkP8mKzp2HO4dM1HLiLTSIT9CvXLFxzNDs+kWzPxDEXnm6mOIY3erMDRAdOmIVHWM6ztUnuBZyfCHLKjsqq10OMBxdIJbBS3yRFC8j59EHWGZP6/DJh4QR6D+jNQwaRIwxHGiK1BJDLyBWSYzIEHMHHLCBu2YpFWHYl7vDFpH4AlUiwk7DhyAEERkuUSmNgUSW1aEhtpDQC6hVQsLO6XsOsN/w72/SSKMritzttoTQC+hVEqKwagQSS4SYscADD8jG3dMou6SnS4YutLTQC1RqyaoMLQu4fvJR+NYgQExVEmWlBWR/qFdquLLurLF5a06GDB5fy9GhMNIULjRx1VhpiuqlvFgi6+kwh7dmR9JsIiILPeOPG/JxYc5/jgbmIq7Cl07VMtIHgbff8uoRvRIx9T3oI3x/kPQ3vgnkBXB2KOJhssadGtVl5I520a5Y8fsQ7Tb4Vmz0gP+ihx35m5t635AY2p94/v0jeN4Uk5CNT35qUi2Qf+frpqx2zT8rIQlcctQLLVlGcU3+PlOfIFTPRq3iXaVShGocQMvYZypZCP6Zrb+KZSwI+s3NDSPjot3BPg5yZK5NXh02qLFmNgnLbyN2zDZhn3CTS1nxaQrrJ1d58Q9RKGOnMI4BujAHq/lo+bs6rZEZLT5WIUFi8yQfz1YgH+QUlB5TO0IVHJ6u42GScxFsNvx5MV3QZd2sDEFt+PNjdZ4LYKsSJ27GMzjKiIdKQivEMoSYxLBrESLHfb2c9yaLm+n8rrccTSccAxK/gx2xWvZ/8dmD6WRiDpajn9FQUK9ZeeIAwdiYoQ+c4NH1d1GI8A/d8hU945HjCw0Yn+A0l7+qGj+E9IvjUb/U+JHsLpOidoWnNY2F7AmbHAF9vxaIymBGy+2Cof3opl/VzT6SPWjSztPRYjD9ac5/c1RcbzYbjwaRAqx9nnwia+CQ30CQiy7p+SiAf9I110LhRVSZktuDNF4hUAmIrF/2PRCps+baGDxErg6fW+RSyPHSoC7HHJtt+vdkej8uchAuV8PRtAg5pvnUIxoF2FfMqAVC8MeHHokIuD66HtdAGWiqGoNmzrKrkFQ2KPEeqebkdjQxieF3Veh9V3PQMHJLxavUgWyWb3+1wPQssIEn9OaDv0ZLPIXlQDac3vVGeB4smL9m5nzZsnaVrImcZJ7LwcYG44bmT3M8nbWT1MaTkuySVQUp6medqFLnZIdp5r/GuZjXNGExwU+kBzMQ4hrSBs+BBJUHjxa9zhVsvDs555EXBYEbHytDlKwrNV5tyY4pvWXvaAN7MV3NGxCvP1GdWFGK69603q+S/VZWdc6oVioMryXbDl5PLsi5TvtSEkOuEbN8Rke1nLFu+NHk1lwUxI1STtUr4+1r+VTL4C7ZNbAW7lhn/mA6HpMIJEGroRBlBsQrU1WV+ESrZYj1ww9W897SHF7YXGPa/2cWLSs0HR+tMU//vTLd+M3tPCaWJFQYTFJZx36bvXHt2RtlUJlP1qhWtbJO/DPNQlbH4vETwyMJC2TB4zVtzyYOCBASfRu6BH0fvNjQvzad29qjTBCrm7MlulUCz8YWygZ+YKNoPXkLfAv8XsMbuXQ8pUrgOfGNlImc5nbeux9fXYC2zQ0oithWaUdobGwkvTHTSbO0hoJGJ08pfUZKvjNhqlohYUa7hKGUsSi3hEHkRFC5SxjkUoTIxt1aIZawGyYnPZsrxDg/7DwhckJWZCm6sM/rF+aryXJ0x9P6N+Pp/ZFav3ghe6LMj13KngSqq1zKLuTgUToVLWWX40fqo6XsslIGC6xrdrXPTcnJs759KwZSV5Xa3bTifSsq3E1LMjgrOSLDT0jHgKiP03kIPP7UOFEoQqtAPlQg4smA5LbHVgSORVCSAsGHvuuGqbpbH3jbO9eCpMW/</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/ibm_iot_architecture.png b/src/main/webapp/templates/cloud/ibm_iot_architecture.png
new file mode 100644
index 0000000000000000000000000000000000000000..601eadc9894aebdf620325424674e3cb551a26d2
GIT binary patch
literal 4909
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

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/ibm_iot_architecture.xml b/src/main/webapp/templates/cloud/ibm_iot_architecture.xml
new file mode 100644
index 000000000..c681d0e22
--- /dev/null
+++ b/src/main/webapp/templates/cloud/ibm_iot_architecture.xml
@@ -0,0 +1 @@
+<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="device"><diagram id="2f404044-711c-603c-8f00-f6bb4c023d3c" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/ibm_microservices.png b/src/main/webapp/templates/cloud/ibm_microservices.png
new file mode 100644
index 0000000000000000000000000000000000000000..05a9f229e75678994eb01dbdaefc083c4f5db069
GIT binary patch
literal 4968
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

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/ibm_microservices.xml b/src/main/webapp/templates/cloud/ibm_microservices.xml
new file mode 100644
index 000000000..1e91f2614
--- /dev/null
+++ b/src/main/webapp/templates/cloud/ibm_microservices.xml
@@ -0,0 +1 @@
+<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="device"><diagram id="31b32b95-0358-9bc7-6ba0-a27c054ed1a7" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/ibm_private_cloud.png b/src/main/webapp/templates/cloud/ibm_private_cloud.png
new file mode 100644
index 0000000000000000000000000000000000000000..38037207cfac3f9ba9ef49bf01c56c8d88cac9f0
GIT binary patch
literal 4850
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
Y4Wz1;gJ_q?T>t<807*qoM6N<$g75jwvj6}9

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/ibm_private_cloud.xml b/src/main/webapp/templates/cloud/ibm_private_cloud.xml
new file mode 100644
index 000000000..2fdd27e88
--- /dev/null
+++ b/src/main/webapp/templates/cloud/ibm_private_cloud.xml
@@ -0,0 +1 @@
+<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io" type="device"><diagram id="2f404044-711c-603c-8f00-f6bb4c023d3c" name="Page-1">7V1bc6LKFv41qTrn4UxxU+ARkWSs7SWFZvae82KhEuVstC3EXPavP91AI7Bag4ookUxNIo0C9vex7qt5EPXlx5NnrRc9NLPdB4GbfTyI7QdBEDhRxn/IyGc4oqpiODD3nFk4xO8Ghs4/djTIRaNbZ2ZvUm/0EXJ9Z50enKLVyp76qTHL89B7+m2vyE2fdW3NbTAwnFouHP3TmfmLcFQR5N34T9uZL+iZ+aYa7plY07/nHtquovM9COJr8BPuXlr0WNEX3SysGXpPDInGg6h7CPnhq+WHbrtkbum0hZ973LM3vm7PXvl5PtCMcHmz3K1NLzm4MP+TTsbm3Vm61gpvteLL5ciG76G/bR25yAveKEqCLLdaeM+r47qJ8WgG8Dha+XR8hYIjWq4zX+FNL5xNfFDL8yNCkJNMketa640zcenICnWtCeab2Obji6AgiXgETkE0K2+259sfiaFoSp5stLR97xO/JdpL6ftJ4Y3Qet9xgW8o0eAiQQS1QUkYEXAeH3sHAn4R4cDGRFVOx8QlU9OKSZgAgePkx8fH3LBF8Mw9a+bYALUkkMGxyQ8DTYheFt88+MUkzQ2gIiopBGWZhwhKAgSQb6jnA8hTaiQQfDYHvzrDzqAPoLQ261CEvTofNj5Ca217Dj6nTSYXHxjLPPt5N9Ra+EtKfjrdUzxVwb4UF2bWZkEOGGw4y0Dk0b9tZznHX8N1Jvi3M1ni3zP7DWHxKjyuPfTmbBy0+rF5m+/nVESF/XRKQyscTbCIJbwACRefA5Ilvntyk4XyIOKKJAGqNBm3Oh07jygSIEqn/2hqw5H5oo9eTONBaLrkRpo5b/jlnLzUXkaDnjYKqBTuJODt9gOC4Wnw2bxx7Veyh0yVg5WfFg0vndnMZdzmO2T30izNBgomhP0wpwL0oy/AM9iwWVtTZzXvBpffbhTEg4zQZ8h8QYQ8EIrgASdAgfHS6nbwJzm9O3hpf3NQmzlBPUITHICxwbidi4ExhzXlOgmxmdR7M8fDegCLXby9QVsynoQ3j5rfD82ZYhZaafuEfhHam5cb6VsRQshAMLbBz4OwWUNYBIQS68ZjoCaJhdx4MtSjrd5OeHLPZueXNjJqMXoqnir3pXa8nFiFDpHRHxkmBnVYQ3r6LSp8jal0MUxVgKm2XrsYl0B+ktDOco2nB3+/LMDBFMYQnCZfmcAddlgwI4yWzvFacbI4ImRwqc9o40Sqg4poStRuZn9M2L1MvhBj0mpZVqBiFliKuQi+8NCl7qxePQtjtp36W88mHLG9N2dqb26IMUpbb0pCzZhwU+HKZAwPGNOzVtbcXt6WUOHaLVFt1xSJKMKw9i9HEeh2ty3fCpiBiEi5GZKIYqOt8DVJIpJIZZIEOvXaynI/8fe/JU0jS5KoqjVDIoY0y2QIjOK2bWKJEDPWWlsTx8XTc1N2iSYLiszVbInYUqol2wBsGdrTref4nzdEEKMh8KJUEyTcVEs1XGEwq2s8Gf02oMf3CnVIAE3uQo5rgxFRvlj0SlEBbvZsbtNZQJ6/QHOELQpjN9rae+PvT/DHVRZBil0jVTB4x9S1NhtnSocfHXdXObHLxJOpt1ezxNb/bN//jLatrY/w0O5Kuwit46Mckf49OalLIceXPLfjoptoYslsHmSBZ7uW77wl38TGNProM3KIh0jZI8jpOJnAqz9kXhKURvRbSR9xg7be1I4OsiMKRsT6TLxtTd6wOXDaRua02VKe496PX4RXsGNtPEX5iCycUStU16UwqSTDkKvCqivC36QASSRAy+O+AdxROr8qSQPYgAAyDQNBKgJAFeJVmKKIDcOdlshO621pCXwlmWvHI4krZ8Ed3QChhKaDHEO30GKQ4nRLfpDFg/ZC9F2vgPvB2b4dXpyHu3I13AWY4eh1dHMwNMxfHR3mOW+lbtDape1I9WBwyLXnbOxxcs/hWsI0O08rKDzSaeUOUCjrNvmEsIeIdUSxYcaxhMWGIlP/FyFYpFqwlCJYlNtSKAIsn6gFy7cTLHxDTEkWXmqWJ1oEGLKqKfbtKSaq5TFMgtYRre3ra6POr+9eB0YYkyfUfQKszRSoyg8u8UOPVkqkVMhRe1vHJ76IMGW6WVgBCrHJALCQAAUFLJkrf35mNLEQxWCYORtYblRb4M0xKTmzvYs2ShWYjMuvG5rH8o7qAqoaZEC7izVRCbDQq9Ud6H/oP7XO7bbbTVw0/Xu6sJxVaqOmEtb1ytW4JEIujUytP3wcmOmeu5S8alpL8u3D3/jT+qDfN3RslXRGvysm45xMUe2j71mrzSvyloHcG0cd986b43/WXM2KPZ72HZfCVahsB6OfO62aoNufA/OP7kBrDyvGxllQjRn8GdPq7pp1QEKWSjsJikgs70ZY1xpm578G8ch6nXa7a/ypmbVXdjLGmQo16IapjQu5YSJ0tWs37Ngwv8p/5YbFS00U74aJsFJD1/SfxvDWBf3Umi6qI+EZTInvndxMuZ7fJDLKlrWR1tKGt0+USloEhfBFuSJhYP2Q1te6v0cd/XYJY+16NXav74oxUmZhk1KNReijEBmDRxIuSW0ingZsGleGiXi5mmYZoHZGTbP94fh/keEfciPa/P1As//40pL7yDbdefO10EZb53mdLTDOlwCpogN6o6WKDujgFYoOxDqXc7YT0Wx+7USol3MiYE4fLj2WCCKNBoNu1eJL2YwOvrmjOCdZbrTSZsLRAYeMOinVsIQVSoNnoz8cvJg6awm8b0A1tLZX41CC3yHX4t6dK5BNgsGRtvFr8IwJxcFUTkS12kQ9DegrmqjQALkXl0PKi+cJ5SWZJaPKbKTkoZbQB0/9Tlj9xSwx6ejG1fXE16ph6Wym+AzYEkZbohumaL5yiDl+ToQr9wpFHPl3vl5Ie3fs5NdlerUzJfW8yqVK2DhYB3u59XwVwKu61/fEXt+Ue0vthXQD8PWadej1JJckbD9VWwyB0g8yr7UIymXPZnqv4+UySzFoYR4H0OquQi0n4Mc300qEriWcWu+DkXAXuSKkiQQTK9glMbrYCTbxcDLsUhuuKcqfWOROF35LRdKkC9mtEvRE4r4YoC5a5uCPqhdGRypjPCF8qUxxdCE0i1eipnIEOkiX0wPQP6qfOnLjfKE1nHFuFgqmy/EF2rBxIR9DMunaSOsOniommpaJJV+xY42PuPLHu8G7IltWOPFqiWFXaiHvWcQd0C1ZQ1opxhXRU3rLxDtlpfnM0wNEuUzi1S0d36+loxBaikra6ZMk2O16OVoKx8nDsGyqUsSLajUTEpCM3BXFspKvIZQp+aCBFzwVB3CLPmuMzS5oCYaN97cez8ymVfDoeL2dYBU8nrpoO6sjmvmTKiJjpUIWb2ms4yzeNqGp2EGjmoiVI2J2ted4Avct9zxBvo+Wl6GwJOd7sGcxFIZG5y4RdDvMTDWh15me40nVKDPR04QmIyATK9FzOJdcmUQP/WqPe54uXgS8gpKx1xSIb5zcS638XkjNLeNx7OZLf9TpVWYJLW+78vE5y+nNKubJmJA3uzstv6WfWbOiRE+yCfO/5euac1Y/uTuu0OcEX4EsCjRMni2L1L7+69m1fBIVCk+Bf+H/wxCafwMifa/Es5DTXjgB7MyjJ6A2uVi9ZPPE5d5rcyE/uEqmQ4dhLjRZC/oXZC6wKmL3Z/AGJlkDYGSmot5ViSXSPLFnu7a1scvK4V1ObRy9TqOYSaLkc2eLMTEYqeLuy3DEpFlP62tPRs/ojyrGsXSu2N1u8CHvkGd8thOsRKLJMPR3SKINDf3FrF5GLmX9Tomh9EpcKHtsbf0F8i6dh7shrmUbSkrlGjSFOz2NWcRtGs+DYWc0MKvGtCgFh9G3x569JpFW5N0Nu8RrsgsG68zBy6jTf2LKsdtoEji3ssBF1mw8sbDZTVypMaaVj//eC92kzHMGS6UbjBwmV+Afsuw0Y/iz6oRbOlMP0fjReGlvFvdCtgZwB67X9QZFnR7FlHQ8BdjMwcDfX1CJ1KDkCyodD76Qwr7MqJJcdxud/xTITFBQhl0CkszoNoores5DEMYFjb86wz2mCSxK+7I+aPh7ODJ6VTNmUk6Z/eFsiOkyThSvbT43vr2saJZCPrpaPGM7S2UaM7BjqtN/NLXhyHzRRy/mLffZnmvRpAcqnkc9nnU8L16PdnDFq2TVbZJswcpEVeNaau3UoLv+bmgVN+9eg1YwS1NHAr453VTlenQ7rq2vDqFXnGuiej1DTYFRp6yh9q1dfCGvi388rGkBUuZj+GhXVL24b/mL+7IXP2I9UPiKix+pMEkLGOM6jIpwMVA9Hmk2DMr98bck40m65IkX7b+Tz5TH2QDRfu2wH7kjXJ1MGEjkGLXGLMndKOIub0DRDUCs43iHrbxMsbjEwUCswhLT8QNazkMQRmL7xl8jPPJkYFsvqvLikuU4tTJOUf/U1YMYz1SVLvU0pgaM1qba3r5h4RXazr7HEh3HEy1eCfmT8qo8Y74Bo67dwdNTEKe4UeLAfDBakQoXEnJw0Xx+6ZDDrdFHpCUH16APjJ72Bn1SNFVRBt0VcySRvx5zYIC0rQ1/tgaa2a4OccjnJ8jyTmnnri5vGplARZm8UQ8/hSiajv2RiTj8kIo9/GjsB29v9CFGdRd6yPohUegh8wk8knh/5dZlpg8hTYUm1MiQuEZoIk/P08Jak5f4y/mO5ZpYnFireeDWvC8c3x5iH4Lsf/esdZoxoVcUIBX5nsGwHyNB1y8IfRPo3ERpED0QQIR6/wnpltO7TnCveMSBdNxPgSPUSjPtIjcY64gILA+5GAGR5yFU57KBT7CBq9lwUFnQPqJDbOAvxobDi/Pb7gS9X2Rd/uOVwy6YvdMP/E3ph1h58j84TkwrUKkp0YGEJRYqODLJ+DUNLOXXNDTWltI0NK1SnKaJPvqMHBKMiB9jk4n0KXLmEOFVRZ/KcDK+jJw0Vc+hKWOCWSYPQU3IoCYL+1CrCZ+bphIrVyNezSASuDpXU4Tm4iU+Y8hIsMCelayROOloFEmXM0J+UoRg42PRQzObvOP/</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/ibm_vcenter_server_platform.png b/src/main/webapp/templates/cloud/ibm_vcenter_server_platform.png
new file mode 100644
index 0000000000000000000000000000000000000000..6fa07847600deb11195718e75e1ed662320bf96c
GIT binary patch
literal 3812
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
aG4dzAAs8(5sO}&D0000<MNUMnLSTZ<Y`Sy+

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/ibm_vcenter_server_platform.xml b/src/main/webapp/templates/cloud/ibm_vcenter_server_platform.xml
new file mode 100644
index 000000000..343ec8fec
--- /dev/null
+++ b/src/main/webapp/templates/cloud/ibm_vcenter_server_platform.xml
@@ -0,0 +1 @@
+<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" version="@DRAWIO-VERSION@" editor="www.draw.io"><diagram id="0d7cefc2-ccd6-e077-73ed-a8e48b0cddf6" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/cloud/ibm_vpc_architecture.png b/src/main/webapp/templates/cloud/ibm_vpc_architecture.png
new file mode 100644
index 0000000000000000000000000000000000000000..bca73efdbed256cc782b4cfe70d686073eba901b
GIT binary patch
literal 5044
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
KMNUMnLSTZMa=A+Y

literal 0
HcmV?d00001

diff --git a/src/main/webapp/templates/cloud/ibm_vpc_architecture.xml b/src/main/webapp/templates/cloud/ibm_vpc_architecture.xml
new file mode 100644
index 000000000..8f2718f4a
--- /dev/null
+++ b/src/main/webapp/templates/cloud/ibm_vpc_architecture.xml
@@ -0,0 +1 @@
+<mxfile modified="2019-06-14T10:17:01.477Z" host="localhost" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36" etag="dY-RyaEvI0M7g6cvaE8M" version="@DRAWIO-VERSION@" type="device"><diagram id="gla63Dk0FSsQ5Y3dld1r" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
diff --git a/src/main/webapp/templates/index.xml b/src/main/webapp/templates/index.xml
index bfae35ea3..154c57c45 100644
--- a/src/main/webapp/templates/index.xml
+++ b/src/main/webapp/templates/index.xml
@@ -18,6 +18,49 @@
 <template url="charts/org_chart_1.xml" libs="general"/>
 <template url="charts/org_chart_2.xml" libs="general"/>
 <template url="charts/work_breakdown_structure.xml" libs="general"/>
+
+<template url="cloud/aws_1.xml" libs="general;aws4"/>
+<template url="cloud/aws_2.xml" libs="general;aws4"/>
+<template url="cloud/aws_3.xml" libs="general;aws4"/>
+<template url="cloud/aws_4.xml" libs="general;aws4"/>
+<template url="cloud/aws_5.xml" libs="general;aws4"/>
+<template url="cloud/aws_6.xml" libs="general;aws4"/>
+<template url="cloud/aws_7.xml" libs="general;aws4"/>
+<template url="cloud/aws_8.xml" libs="general;aws4"/>
+<template url="cloud/aws_9.xml" libs="general;aws4"/>
+<template url="cloud/aws_10.xml" libs="general;aws4"/>
+<template url="cloud/aws_3d.xml" libs="general;aws3d"/>
+<template url="cloud/azure_1.xml" libs="general;azure;mscae"/>
+<template url="cloud/azure_2.xml" libs="general;azure;mscae"/>
+<template url="cloud/azure_3.xml" libs="general;azure;mscae"/>
+<template url="cloud/azure_4.xml" libs="general;azure;mscae"/>
+<template url="cloud/azure_5.xml" libs="general;azure;mscae"/>
+<template url="cloud/azure_6.xml" libs="general;azure;mscae"/>
+<template url="cloud/azure_7.xml" libs="general;azure;mscae"/>
+<template url="cloud/azure_8.xml" libs="general;azure;mscae"/>
+<template url="cloud/azure_9.xml" libs="general;azure;mscae"/>
+<template url="cloud/gcp_backup_and_archive_api_hosting.xml" libs="gcp2"/>
+<template url="cloud/gcp_big_data_complex_event_processing.xml" libs="gcp2"/>
+<template url="cloud/gcp_dev_test_continuous_delivery_with_spinnaker.xml" libs="gcp2"/>
+<template url="cloud/gcp_digital_marketing_dmp_data_warehouse.xml" libs="gcp2"/>
+<template url="cloud/gcp_financial_services_monte_carlo_simulations.xml" libs="gcp2"/>
+<template url="cloud/gcp_gaming_backend_database.xml" libs="gcp2"/>
+<template url="cloud/gcp_general_app_engine_and_cloud_endpoints.xml" libs="gcp2"/>
+<template url="cloud/gcp_internet_of_things_mqtt_to_pubsub_broker.xml" libs="gcp2"/>
+<template url="cloud/gcp_lifesciences_genomics_secondary_analysis.xml" libs="gcp2"/>
+<template url="cloud/gcp_media_hybrid_rendering.xml" libs="gcp2"/>
+<template url="cloud/gcp_retail_beacons_and_targeted_marketing.xml" libs="gcp2"/>
+<template url="cloud/gcp_websites_content_hosting.xml" libs="gcp2"/>
+<template url="cloud/ibm_bda_reference_architecture.xml" libs="general;ibm"/>
+<template url="cloud/ibm_blockchain.xml" libs="general;ibm"/>
+<template url="cloud/ibm_cognitive_conversation.xml" libs="general;ibm"/>
+<template url="cloud/ibm_cognitive_discovery.xml" libs="general;ibm"/>
+<template url="cloud/ibm_iot_architecture.xml" libs="general;ibm"/>
+<template url="cloud/ibm_microservices.xml" libs="general;ibm"/>
+<template url="cloud/ibm_private_cloud.xml" libs="general;ibm"/>
+<template url="cloud/ibm_vcenter_server_platform.xml" libs="general;ibm"/>
+<template url="cloud/ibm_vpc_architecture.xml" libs="general;ibm"/>
+
 <template url="engineering/cabinet.xml" libs="general;cabinets"/>
 <template url="engineering/electrical_1.xml" libs="general;electrical"/>
 <template url="engineering/electrical_2.xml" libs="general;electrical"/>
@@ -30,61 +73,8 @@
 <template url="flowcharts/flowchart_1.xml" libs="general;flowchart"/>
 <template url="flowcharts/flowchart_2.xml" libs="general;flowchart"/>
 <template url="flowcharts/workflow_1.xml" libs="general;flowchart"/>
-<template url="gcp/backup_and_archive_api_hosting.xml" libs="gcp2"/>
-<template url="gcp/backup_and_archive_disaster_recovery_cold_standby_server.xml" libs="gcp2"/>
-<template url="gcp/backup_and_archive_disaster_recovery_warm_static_site.xml" libs="gcp2"/>
-<template url="gcp/backup_and_archive_disaster_recovery_with_application_replication.xml" libs="gcp2"/>
-<template url="gcp/backup_and_archive_hosting_filers.xml" libs="gcp2"/>
-<template url="gcp/big_data_complex_event_processing.xml" libs="gcp2"/>
-<template url="gcp/big_data_dmp_data_warehouse.xml" libs="gcp2"/>
-<template url="gcp/big_data_log_processing.xml" libs="gcp2"/>
-<template url="gcp/big_data_time_series_analysis.xml" libs="gcp2"/>
-<template url="gcp/dev_test_continuous_delivery_with_spinnaker.xml" libs="gcp2"/>
-<template url="gcp/dev_test_jenkins_in_k8s.xml" libs="gcp2"/>
-<template url="gcp/dev_test_scale_testing_with_kubernetes_locust.xml" libs="gcp2"/>
-<template url="gcp/dev_test_ui_testing_with_kubernetes.xml" libs="gcp2"/>
-<template url="gcp/digital_marketing_dmp_data_warehouse.xml" libs="gcp2"/>
-<template url="gcp/digital_marketing_publisher_side_analysis.xml" libs="gcp2"/>
-<template url="gcp/digital_marketing_real_time_bidding.xml" libs="gcp2"/>
-<template url="gcp/financial_services_monte_carlo_simulations.xml" libs="gcp2"/>
-<template url="gcp/financial_services_time_series_analysis.xml" libs="gcp2"/>
-<template url="gcp/gaming_backend_database.xml" libs="gcp2"/>
-<template url="gcp/gaming_gaming_analytics.xml" libs="gcp2"/>
-<template url="gcp/gaming_mobile_game_backend.xml" libs="gcp2"/>
-<template url="gcp/gaming_real_time_aaa_game_servers.xml" libs="gcp2"/>
-<template url="gcp/general_app_engine_and_cloud_endpoints.xml" libs="gcp2"/>
-<template url="gcp/general_compute_engine_and_rest_or_grpc.xml" libs="gcp2"/>
-<template url="gcp/general_content_management.xml" libs="gcp2"/>
-<template url="gcp/general_digital_asset_management_and_sharing.xml" libs="gcp2"/>
-<template url="gcp/general_firebase.xml" libs="gcp2"/>
-<template url="gcp/general_firebase_and_google_app_engine.xml" libs="gcp2"/>
-<template url="gcp/general_firebase_and_managed_vms.xml" libs="gcp2"/>
-<template url="gcp/general_gitlabclonegke.xml" libs="gcp2"/>
-<template url="gcp/general_hadoop_on_google_cloud_platform.xml" libs="gcp2"/>
-<template url="gcp/general_high_performance_computing.xml" libs="gcp2"/>
-<template url="gcp/general_real_time_bidding.xml" libs="gcp2"/>
-<template url="gcp/general_real_time_stream_processing_iot.xml" libs="gcp2"/>
-<template url="gcp/general_web_application_on_google_app_engine.xml" libs="gcp2"/>
-<template url="gcp/internet_of_things_mqtt_to_pubsub_broker.xml" libs="gcp2"/>
-<template url="gcp/internet_of_things_sensor_stream_ingest_and_processing.xml" libs="gcp2"/>
-<template url="gcp/lifesciences_genomics_secondary_analysis.xml" libs="gcp2"/>
-<template url="gcp/lifesciences_patient_monitoring.xml" libs="gcp2"/>
-<template url="gcp/lifesciences_variant_analysis.xml" libs="gcp2"/>
-<template url="gcp/media_hybrid_rendering.xml" libs="gcp2"/>
-<template url="gcp/media_live_streaming.xml" libs="gcp2"/>
-<template url="gcp/media_rendering.xml" libs="gcp2"/>
-<template url="gcp/media_transcoding.xml" libs="gcp2"/>
-<template url="gcp/retail_beacons_and_targeted_marketing.xml" libs="gcp2"/>
-<template url="gcp/retail_fraud_detection.xml" libs="gcp2"/>
-<template url="gcp/retail_pci.xml" libs="gcp2"/>
-<template url="gcp/retail_real_time_inventory.xml" libs="gcp2"/>
-<template url="gcp/retail_recommendation_engines.xml" libs="gcp2"/>
-<template url="gcp/retail_shopping_cart_analysis.xml" libs="gcp2"/>
-<template url="gcp/websites_content_hosting.xml" libs="gcp2"/>
-<template url="gcp/websites_dynamic_hosting.xml" libs="gcp2"/>
-<template url="gcp/websites_mobile_site_hosting.xml" libs="gcp2"/>
-<template url="gcp/websites_multiple_network_interfaces.xml" libs="gcp2"/>
-<template url="gcp/websites_static_hosting.xml" libs="gcp2"/>
+
+
 <template url="layout/blog_wireframe.xml" libs="general;mockups"/>
 <template url="layout/bootstrap.xml" libs="general;bootstrap"/>
 <template url="layout/wireframe_1.xml" libs="general;mockups"/>
@@ -95,23 +85,10 @@
 <template url="maps/mind_map.xml" libs="general"/>
 <template url="maps/site_map.xml" libs="general"/>
 <template url="network/active_directory.xml" libs="general;citrix"/>
-<template url="network/aws.xml" libs="general;aws3"/>
-<template url="network/aws_3d.xml" libs="general;aws3d"/>
-<template url="network/azure_1.xml" libs="general;azure;mscae"/>
-<template url="network/azure_2.xml" libs="general;azure;mscae"/>
 <template url="network/cisco_1.xml" libs="general;cisco"/>
 <template url="network/cisco_2.xml" libs="general;cisco"/>
 <template url="network/citrix.xml" libs="general;citrix"/>
 <template url="network/enterprise_1.xml" libs="general;citrix"/>
-<template url="network/ibm_bda_reference_architecture.xml" libs="general;ibm"/>
-<template url="network/ibm_blockchain.xml" libs="general;ibm"/>
-<template url="network/ibm_cognitive_conversation.xml" libs="general;ibm"/>
-<template url="network/ibm_cognitive_discovery.xml" libs="general;ibm"/>
-<template url="network/ibm_iot_architecture.xml" libs="general;ibm"/>
-<template url="network/ibm_microservices.xml" libs="general;ibm"/>
-<template url="network/ibm_private_cloud.xml" libs="general;ibm"/>
-<template url="network/ibm_vcenter_server_platform.xml" libs="general;ibm"/>
-<template url="network/ibm_vpc_architecture.xml" libs="general;ibm"/>
 <template url="network/internet.xml" libs="general;network"/>
 <template url="network/lan.xml" libs="general;network"/>
 <template url="network/telecomm.xml" libs="general;network"/>
-- 
GitLab